본문 바로가기
IT 와 Social 이야기/NLP 자연어처리

[딥러닝을이용한 자연어 처리 입문] 1002 워드투벡터(Word2Vec)

by manga0713 2021. 5. 21.

단어 간 유사도를 반영할 수 있도록 단어의 의미를 벡터화 할 수 있는 대표적인 방법

 

 

2. 분산 표현(Distributed Representation)

 

- 단어의 '의미'를 다차원 공간에 벡터화하는 방법

- '비슷한 위치에 등장하는 단어들은 비슷한 의미를 가진다'라는 분포 가설(distributional hypothesis) 기반

 

[ http://w.elnn.kr/search/ ]

- 벡터의 차원이 단어 집합(vocabulary)의 크기일 필요가 없으므로, 벡터의 차원이 상대적으로 저차원

- 두 가지 방식이 있음

  • CBOW : 주변에 있는 단어들을 가지고 중간에 있는 단어들을 예측하는 방법
  • kip-Gram : 중간에 있는 단어들을 가지고 주변에 있는 단어들을 예측하는 방법

 

3. CBOW(Continuous Bag of Words)

 

- 중심 단어(center word) : 예측해야하는 단어

- 주변 단어(context word) : 예측에 사용되는 단어

- 윈도우(window) : 중심 단어에 예측에 사용될 주변 단어 범위(중심 단어 앞, 뒤 단어 갯수)

 

- 슬라이딩 윈도우(sliding window) : 중심 단어의 선택을 바꿔가며(윈도우를 움직이며) 학습을 위한 데이터 셋을 만들어 가는 과정

- 입력은 모두 원-핫 벡터여야 하므로 위 그림은 결국 CBOW를 위한 전체 데이터 셋

 

 

 

- Word2Vec의 은닉층은 일반적인 은닉층과는 달리 활성화 함수가 존재하지 않으며 룩업 테이블이라는 연산을 담당하는 층으로 일반적인 은닉층과 구분하기 위해 투사층(projection layer)으로 부르기도 함

- CBOW에서 투사층의 크기 M은 임베딩하고 난 벡터의 차원

 

4. Skip-gram

 

 

- 중심 단어에 대해서 주변 단어를 예측하므로 투사층에서 벡터들의 평균을 구하는 과정은 없음

- 전반적으로 Skip-gram이 CBOW보다 성능이 좋다고 알려짐

 

 

- 출처 : [딥러닝을이용한 자연어 처리 입문] 1002 워드투벡터(Word2Vec)