[개발이야기] 나랏말싸미 NLP를 만나다 - 단어 임베딩 편 2

"블루펭귄 개발 과정"

Posted by 예띠 on January 6, 2020

블루펭귄 개발 과정

주식회사 와들의 첫 iOS 앱인 블루펭귄을 개발하는 과정을 담은 글이다.

1편을 이으며

2편에서는 Glove를 다룬다.

GloVe란

GloVe(Global Word Vectors)LSA(Latent Semantic Analysis)Word2Vec의 단점을 극복하고자 개발된 단어 임베딩 기법이다. LSA는 각 문서에서의 각 단어의 빈도를 센 행려를 축소(truncated SVD)하여 의미를 이끌어내는 방법이며, Word2Vec은 주변 단어로 중심 단어를 예측하는 방법이다. LSA에 대한 자세한 설명은 이곳, Word2Vec은 이곳을 참고하면 좋을 것이다.

LSA는 말뭉치 전체의 통계 정보를 활용하지만 결과물에서 단어/문서 간의 유사도를 측정하기는 어렵다. 한편 Word2Vec는 단어 벡터 사이이의 유사도를 측정하는 데 좋지만 윈도우 크기 내에서만 학습이 이루어지기 때문에 말뭉치 전체에서의 등장 정보 (co-occurence)를 얻을 수 없다. GloVe는 이 둘의 약점을 보완하여 단어 벡터 간 유사도 측정이 수월하면서도 말뭉치 전체의 통계 정보를 잘 반영하기 위해 새로운 목적함수를 정의하였다.

목적함수

GloVe의 목적함수는 임베딩된 두 단어 벡터의 내적이 말뭉치 전체에서의 동시 등장확률 로그값이 되도록 한다. GloVe을 연구한 스탠포드 대학의 논문에서는 다음과 같은 표를 예시로 들어 목적함수를 설명한다.

표가 있는 사진