Word2Vec (Skip-gram) 모델이란?
개요
이 글에서는 단어 벡터화의 새로운 지평을 연 Word2Vec 모델, 그 중에서도 Skip-gram 모델에 대한 이론적인 이해를 도모해보고자 한다. Word2vec 모델은 T. Mikolov 및 그 외 연구진에 의해 쓰인 Efficient Estimation of Word Representations in vector space (2013) 논문에서 처음 소개되었다. Word2Vec 모델은 주변 단어를 토대로 중심 단어를 예측하는 CBOW(Continuous Bag-of-Words)와 그 반대인 Skip-gram 방식으로 나뉘며, 일반적으로 Skip-gram 방식이 더 성능이 좋기에 널리 사용된다. 따라서 본 글에서는 Skip-gram 모델에 한정하여 논의하고자 한다.
단어를 벡터화하는 가장 간단한 방법은 원-핫-벡터를 이용하여 각 단어를 단위 벡터(

[image source](https://miro.medium.com/max/1838/1*YvOdGp73pOHmYGHKqkx5wQ.png)
Skip-gram은 단어들을 정해진 차원의 벡터 공간에 임베딩하는 모델이다(일반적으로 벡터 공간의 차원 « 단어의 갯수). 먼저 임의의 값으로 벡터들을 초기화한 후, 특정 단어가 주어졌을 때 그 주변 단어들의 등장 확률을 증가시키는 방향으로 학습하는 알고리즘이다. 가령 I love him but he hates me.
라는 문장을 생각해보자. 여기서 him
이라는 단어를 기준으로 앞 뒤 두 단어들인 I
,love
,but
,he
의 발생 확률을 증가시키는 방향으로 학습하게 된다.
잘 학습된 Skip-gram 모델은 단어에 대응되는 벡터들의 연산이 실제 단어 간의 의미 및 형태를 보존하게 되어, 텍스트 모델링에 큰 도움을 줄 수 있다. 다만 모델을 훈련하는 과정에서 계산량이 어마어마하기에 이를 개선하기 위해 계층적 소프트맥스, 네거티브 샘플링 등의 기법이 도입된다. 모델 최적화에 대한 내용은 다음 포스팅에서 소개하겠다.
Skip-gram 모델의 구조
주어진 훈련 텍스트에 등장하는 단어들의 집합을 Vocab
이라 하고, 이 집합의 크기를 WINDOW SIZE
), 그리고 단어들을 임베딩할 벡터 공간의 차원
먼저 크기가 (
임의의 중심 단어
따라서 중심 단어
주어진 텍스트가
이는 다시 말해, 텍스트에서 주어진 중심 단어마다 문맥에 등장하는 단어의 확률을 최대한 증가시키는 방향으로 학습을 진행한다는 의미이다(원 논문에서 Word2vec 모델의 손실 함수는 위에 적힌 함수에
참고로 이는 원-핫-벡터
와 같다. 또한 위 식에서 첫 번째 식과 두 번째 식이 같은 이유는 단어 모델에서는 일반적으로 문맥에 등장하는 단어들끼리는 서로 독립이라고 가정하기 때문이다.
위 손실 함수의 정의로부터 계산을 통해 다음을 확인할 수 있다.
따라서 그래디언트 업데이트를 다음 식을 통해 수행할 수 있다(
이제 중심 벡터에 대해 해당 학습을 반복하며 단어
Skip-gram모델의 장단점
잘 학습된 Word2Vec 모델의 경우 각 단어에 대응되는 벡터는 원 단어들 사이의 형태적, 의미적 관계를 모두 보존하게 된다. 예를 들면 다음 대응들을 내포하고 있다.
- king : man = queen : ??
- 이 경우는 단어의 의미(왕권/성별)에 대한 추론으로 woman을 답한다.
- do : did = play : ??
- 이 경우는 단어의 형태(현재형:과거형)에 대한 추론으로 played를 답한다.

[image source](https://cdn.shortpixel.ai/client/to_webp,q_lossy,ret_img,w_600/https://www.depends-on-the-definition.com/wp-content/uploads/2018/03/word2vec-king-queen-vectors.png)
위 대응 관계는 각 단어의 벡터 표현을 통한 다음 계산을 통해 확인할 수 있다.
여기서 기호
따라서 Word2Vec 모델을 사용하면 단어들을 훨씬 작은 공간에 임베딩하여 메모리를 효율화하는 것 뿐 아니라, 단어들 사이의 의미적, 형태적 관계까지 담아낼 수 있으며 이를 통해 언어 모델링에 큰 도움을 줄 수 있다.
그러나 이런 vanilla skip-gram 모델의 경우 치명적인 단점이 있다. 실제 언어를 모델링하는 경우 단어의 갯수
다음 포스팅 : Word2Vec (Skip-gram) 모델의 개선 기법
Leave a comment