2편의 CBOW와 Skip-gram 임베딩 알고리즘에 이어서 3편에서는 GloVe 임베딩 알고리즘에 대해서 다루도록 하겠습니다.
2. GloVe
이 알고리즘은 Global Vector word representation로 1편에서 다뤘던 count기반의 알고리즘이나 2편에서 다뤘던 Word2Vec 알고리즘의 한계를 지적하며 제시한 새로운 알고리즘입니다.
Count기반의 알고리즘은 벡터화된 단어 벡터가 각 단어간의 의미적 유사성을 반영할 수 없다는 한계가 있었습니다.
반면, Word2Vec 알고리즘은 단어간의 의미적 유사도를 반영할 수 있지만 주변 단어들만 고려하는 방식이므로 단어의 Global한 특성을 반영하지 못한다는 한계가 있었습니다. 여기서 언급되는 "Global한 특성"은 문맥상의 유사도가 아닌 단어가 자체적으로 가진 특성을 의미합니다.
예를 들어, 얼음은 고체라는 특성이 있고 수증기는 기체라는 특성이 있습니다. 이것은 문맥적으로 알려주지 않더라도 상식적으로 알고 있는 내용들이며 GloVe알고리즘은 이런 단어의 "Global한 특성"을 벡터에 반영하고자 합니다.
Global한 특성을 반영하기 위한 idea
그렇다면 어떻게 글로벌 한 특성을 반영할 수 있을까요? 이 논문(링크 걸기)에서는 window를 기반으로 지역적인(context) 문맥정보만 반영하는 것이 아니라 글로벌 동시 발생(co-occurrence) 통계를 이용합니다. 즉, 일반적으로 함께 쓰이는 단어의 정보를 포함했습니다.
위의 표를 보면, solid라는 단어가 등장할 때 ice라는 단어가 등장할 확률은 gas라는 단어가 등장할 때 ice라는 단어가 등장할 확률보다 8.9배(빨간 네모) 큰 것을 볼 수 있습니다.( => P(ice | solid) >> P(ice | gas) )
반대로 gas라는 단어가 등장할 확률은 ice라는 단어가 등장할 때보다 steam이라는 단어와 함께 쓰일 확률이 0.085배(파란 네모) 인 것을 확인 할 수 있습니다.
이처럼 Glove알고리즘은 유사한 속성을 공유하는 단어끼리 함께 나타날 확률이 높다는 특성을 반영해서 만들어진 알고리즘입니다.
$$ P_ij = P(j|i) = X_i j/X_i $$
논문의 저자는 i 단어가 등장할때 j 단어가 등장할 확률을 위의 식처럼 계산하는데, P_ik / P_jk 비율을 단어 임베딩 계산에 통합하려고 했습니다.
그들은 아래의 수식을 만족하는 최적화 문제를 제안합니다. 이때 b는 bias이고 X_ik는 w_i가 w_k와 동시에 등장할 확률입니다.
이 최적화 문제를 풀기 위해 수식을 완전제곱식 형태로 바꿉니다.
이는 드물게 같이 나오는 단어가 모델에 노이즈를 추가하고, 빈번하게 함께 쓰이는 단어들보다 적은 정보를 추가하기 때문입니다.
그래서 이런 수식 형태로 loss가 작아지는 방향으로 학습합니다.
이런 특성을 임베딩에 이용하여 반영해서 만들어진 알고리즘이므로 비슷한 단어를 찾아내는 NLP 성능 체크 지표인 Word Analogy Task에서 기존의 알고리즘들에 비해 월등한 성능을 보였습니다.
하지만 이런 GloVe알고리즘이 모든 부분에서 최고의 성능을 낸다고 장담할 수 없고 상황에 따라서 다른 알고리즘들이 더 좋은 성능을 낼 수 있습니다. 그렇기에 어떤 임베딩 알고리즘을 사용할 것인지는 여러 알고리즘을 사용해보고 제일 성능이 좋은 것을 사용하는 것이 바람직 하다고 할 수 있습니다.
이어지는 4편에서는 FastText 알고리즘에 대해서 다루도록 하겠습니다.
'오성연 > Natural Language Processing' 카테고리의 다른 글
[NLP - 기초 #4] Word Embedding - FastText (0) | 2023.01.05 |
---|---|
[NLP - 기초 #2] Word Embedding (0) | 2022.12.15 |
[NLP - 기초 #1] Word Embedding (2) | 2022.12.01 |