자연어처리

[자연어처리 CS224N] #2-3. GloVe

ima9ine4 2024. 3. 24. 14:50
728x90

GloVe는 Global Vectors for Word Representation의 약자로 카운트 기반(Count-based)과 예측 기반(Prediction-based)를 모두 사용하는 방법론이다. 통계정보를 포함한 Direct prediction embedding 방식이다. 어떻게 카운트 기반과 예측 기반 모두를 사용해서 두 개의 장점들을 취했을까? 손실함수를 보면서 이해해보자. (이 부분은 위키독스의 <딥 러닝을 이용한 자연어 처리 입문>을 참고하여 작성했습니다.)

먼저 용어를 정리해보자면, X는 동시 등장 행렬(Co-occurrence Matrix)이다. Xij는 중심 단어 i가 등장했을 때 윈도우 내 주변 단어 j가 등장하는 횟수이다. P( i | j )는 중심 단어 j가 등장했을 때 윈도우 내 주변 단어 i가 등장할 확률이다. 예를 들어 소방관이 나왔을 때 소방차가 등장한 확률은 P( 소방차 | 소방관) 이다. wi는 중심 단어 i의 임베딩 벡터이고, wk(~)는 주변 단어 k의 임베딩 벡터이다. 

GloVe의 아이디어를 한 줄로 요약하면 '임베딩 된 중심 단어와 주변 단어 벡터의 내적이 전체 코퍼스에서 동시 등장 확률이 되도록 만드는 것'이라고 한다. 이를 수식으로 표현하면 아래와 같다.

출처&nbsp; https://wikidocs.net/22885

그렇다면 loss 함수를 살펴보자.

이 식에서 좌변은 중심 단어 i의 임베딩 벡터와 주변 단어 k의 임베딩 벡터를 내적한 값에 learnable parameter인 bias들을 더한 것이다. 우변은 동시 등장 행렬의 값이다.
좌변은 단어 간의 유사도를 나타내고, 우변은 실제 동시 등장 확률을 나타낸다. 아까 말했기를 GloVe의 아이디어는 '임베딩 된 중심 단어와 주변 단어 벡터의 내적이 전체 코퍼스에서 동시 등장 확률이 되도록 만드는 것'. 따라서 좌변과 우변의 값의 차이를 최소화하는 방향으로 학습한다면 GloVe의 아이디어에 부합한다. 따라서 이를 이용해 오차를 계산하고 이를 최소화하는 위와 같은 Loss 함수가 나온 것이다. 

 

...

작성중입니다 ㅠㅠ

 

 

 

반응형
LIST