Word2Vec(이하 W2V)은 현재(2019.10.14) SOTA에서 사용되는 모델은 아니지만 Motivation이나 학습 방법, NLP에 필요한 기술들을 많이 다루고 있어 꼭 공부하고 넘어가야 하는 모델이 아닌가 싶습니다.

W2V에서 알아둬야 하는 내용들을 체크리스트 형식으로 정리하고 짧은 답변을 달아 보았습니다. 이 글은 Ratsgo님의 글[1], [2]과 Quora글[3]을 참고하여 적었습니다.


1. W2V의 기본 가정은 뭐가 있을까?

distributional hypothesis : 비슷한 맥락에서 나온 단어는 비슷한 의미를 지닌다.

 

2. W2V와 단어 빈도수는 어떤 관련이 있는가?

→ Window Size 안에 있는 단어들을 Context로 사용한다. 이 때문에 함께 많이 나온 단어끼리 학습이 자주 일어난다. 같이 나온 단어는 임베딩 벡터끼리 유사도가 높게 만들고 아닌 단어는 낮게 만든다.

 

3. W2V의 Objective Function을 쓸 수 있는가? 분모와 분자는 어떤 의미를 지니는가?

→ 중심 단어가 주어졌을 때 Context Word가 나올 조건부 확률로 정의된다. 분모는 Train Corpus 전체의 유사도 합이고 분자는 Context와의 유사도를 나타낸다. 분자는 높이고 분모는 낮추는 식으로 Maximizing 하는 게 목표다.

 

4. CBOW와 Skip-Gram의 차이와 장단점은 무엇일까? Rare Words를 잘 학습하려면 어떤 방식이 좋을까?

→ CBOW는 문맥이 주어지면 중심 단어를 맞추고 Skip-Gram은 중심 단어가 주어지면 문맥을 맞추는 식으로 학습한다. CBOW에서 Rare Words의 경우 자주 나오는 단어에 비해 확률이 낮게 계산되므로 학습이 잘 안된다.

 

5. Sub-Sampling과 Negative-Sampling은 왜 필요하고 어떻게 다른가?

→ 원래대로 계산하려면 (단어수) * (임베딩 차원수) * 2 만큼의 Parameter가 필요하다. 단어 수가 엄청 많기 때문에 계산량이 폭증하여 계산을 줄일 필요가 있다.
Sub-Sampling은 자주 등장하는 단어를 학습에서 제외하는 방법이다. 제외 확률을 sqrt(빈도수)에 반비례하게 만들어 드물게 나오는 단어는 기회가 있을 때 꼭 학습하고 자주 나오는 단어는 드물게 학습하는 방법이다.
Negative-Sampling은 모든 단어 쌍의 유사도를 계산하는 대신 후보군을 추려서 계산하는 식으로 소프트맥스 계산량 자체를 줄이는 방법이다. 컨텍스트에 등장하는 단어(Positive Sample)와 등장하지 않는 단어(Negative Sample) 5~20개 정도를 빈도수^r 에 비례하게 확률적 뽑아 이 단어들에 대해서만 소프트맥스를 계산하는 방법이다.

 

6. Glove, fastText와의 차이점은 무엇인가?

→ 큰 구조는 같다. 대신 Glove는 유사도 대신 동시 등장 확률 보존을 Objective로 삼고 fastText는 Token을 subword단위로 사용한다.

 

7. W2V의 한계점은 무엇인가? 이 한계점을 극복하는 다른 모델은 무엇이 있을까?

→ distributional hypothesis의 한계점과 유사하다. 반의어 관계에 있는 두 단어가 비슷한 맥락에서 사용할 경우 두 단어를 비슷한 벡터로 임베딩 한다.


[1] Word2Vec의 학습 방식 : https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/03/30/word2vec/

[2] 빈도수 세기의 놀라운 마법 Word2Vec, Glove, Fasttext : https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/03/11/embedding/

[3] In Word2vec, why is the skip-gram model preferred over CBOW? : https://www.quora.com/In-Word2vec-why-is-the-skip-gram-model-preferred-over-CBOW

+ Recent posts