Skip to content

[Q&A for CMU Neural Networks for NLP 2018]

kwj962004 edited this page Aug 2, 2018 · 14 revisions

Lecture 1: A Simple (?) Exercise: Predicting the Next Word in a Sentence

Q. What is perplexity?

Perplexity(이하 PPL)는 어떤 시점에서 정답을 선택하기 위해 선택해야 하는 후보의 평균 갯수를 의미합니다. PPL이 60이라면 매 순간마다 60개의 후보를 내야 정답을 고를 수 있다는 말이죠. 정보 이론에서, PPL은 어떤 확률 분포나 확률 모델이 하나의 실제 관측치를 얼마나 잘 예측하는 지를 보여주는 척도로 쓰입니다.

우리가 해결해야 할 문제가 문장을 읽고 다음에 나올 단어를 예측하는 문제이고, 우리가 가진 단어의 갯수가 20,000개라고 가정해 봅시다. 만약 모든 단어의 출현 확률이 같다면(그럴리는 없겠지만) 다음 단어의 선택 가능의 수는 모두 동일하므로 20,000개를 후보로 둬야 정답이 나오게 됩니다. 이 때의 PPL은 20,000이 되는 것이죠. 다만 우리가 좀더 나은 Language model을 만들어서 다음에 선택할 수 있는 단어의 갯수가 평균적으로 30개정도 나왔을 때 정답을 찾을 수 있다면, PPL은 30이 되고, 더 나은 모델이라고 평가할 수 있죠.

수식으로 생각하면 더 쉬워집니다. PPL은 다음과 같은 식인데요,

여기서 는 선택가능한 하나의 경우의 수이고, 는 해당 probability model이 예측하는 의 확률입니다. 모든 가 단순 random picking인 이라면 PPL은 가 되지만, 완벽한 모델이 만들어져서 가 1개 빼고 다 0이 된다면 1이 됩니다.

  • perplexity vs cross-entropy?

    간단합니다. 위의 식에서 $H(p)$가 곧 cross-entropy 값입니다. 즉 다음과 같습니다.

  • perplexity가 낮다 == 모델의 성능이 좋다?

    이는 probability distribution의 PPL을 볼 것이냐와 probability model의 PPL을 볼 것이냐에 따라 조금 달라집니다. 해당 task 자체의 난이도를 평가하기 위해서 probability distribution의 PPL을 보게 되는데, 예를 들면 "다음 주사위의 숫자를 맞추기" vs "다음 동전의 면을 맞추기" 라고 두 개의 task를 비교할 때, 전자는 PPL이 최대 6이고, 후자는 PPL이 최대 2이므로 후자가 더 쉬운 task입니다. 다른 관점에서, 같은 task 내에 여러 probability model들이 있을 때, A라는 모델이 B라는 모델보다 PPL이 더 낮다면, A라는 모델이 B라는 모델보다는 성능이 좋다고 할 수 있죠.

[Section 1] Models of Words

Lecture 2: Distributional Semantics and Word Vectors

Q. What is PMI?

Pointwise Mutual Information(PMI)는 두 단어 사이의 관계 정도를 재는 척도입니다.

두 단어가 독립적이라면 결합확률은 개별확률의 곱과 같아지기 때문에 PMI(x, y) = 0이 됩니다. 반대로 두 단어가 함께 출현하는 빈도가 잦다면 PMI는 1보다 커집니다. 예컨대, ("ice", "cream"), ("New, York") 같은 단어쌍들은 PMI가 높죠.

PMI는 Information theory의 Mutual information에서 온 개념인데요. Mutual Information이 모든 가능한 경우의 평균을 말한다면 Pointwise Mutual Information은 하나의 경우만을 말합니다.

더 알아보고 싶으시다면 다음 자료를 참고해주세요.

PMI.pdf

Q. How is PMI related to Word2Vec?

Lecture 3: Convolutional Neural Nets for Text

Q. How can wide convolution be used?

convolution wide convolution이란 input size에 비하여 큰 사이즈의 filter를 쓰고 싶을 때, 앞뒤로 padding을 함으로써 원래의 input size보다 더 큰 size의 output을 만드는 것입니다. 위의 그림은 1d narrow convolution과 wide convolution의 예시를 보여줍니다. 이 때 output size를 구하는 공식은 다음과 같습니다. CMU 강의에서 wide convolution의 장점에 대해서 언급하였는데, padding을 문장의 시작과 끝을 나타내는 token으로 줌으로써 문장의 경계에 있는 단어를 잘 포착할 수 있다고 합니다. 위의 wide convolution 그림을 예로 들었을 때, 맨 앞에 문장의 시작을 나타내는 임의의 token을 padding을 주면 output vector의 제일 첫번째 element는 시작 token과 첫 단어에 convolution을 취한 결과로 계산됩니다. 이렇게 경계에 있는 feature를 잘 파악할 수 있기 때문에 wide convolution을 사용한다고 합니다.

Q. What is dynamic k-max pooling?

k-max pooling은 주어진 k 값에 대해 sequence P에서 상위 k개의 값을 추출하는 pooling 방식입니다. P에서 제일 큰 하나만 추출하는 max-pooling과는 다릅니다. 상위 k개의 값을 추출할 때 그 순서는 원래 P 안에서의 순서와 같습니다. k-max pooling을 통하여 떨어져 있는 p개의 active position을 추출할 수 있습니다. 이는 feature의 순서는 유지하지만, 그 각각의 특정 position은 무시하게 됩니다. dynamic k-max pooling은 중간 단계의 convolution layers에서 k 값이 고정되어있지 않고, 현재 layer의 depth와 문장의 길이에 따라 dynamic하게 결정되는 방식을 말합니다. 대표적으로 Kalchbrenner at el의 A Convolutional Neural Network for Modelling Sentences에서 dynamic k-max pooling을 사용하였는데 pooling parameter k를 다음과 같은 식으로 결정하였습니다. l은 현재 convolution layer의 depth, L은 network 안의 전체 convolution layer의 개수, k_top은 가장 상위 convolution layer의 k 값으로 고정되어 있습니다.

Clone this wiki locally