단어 간 유사도를 반영할 수 있도록 단어의 의미를 벡터화 할 수 있는 대표적인 방법
2. 분산 표현(Distributed Representation)
- 단어의 '의미'를 다차원 공간에 벡터화하는 방법
- '비슷한 위치에 등장하는 단어들은 비슷한 의미를 가진다'라는 분포 가설(distributional hypothesis) 기반
- 벡터의 차원이 단어 집합(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보다 성능이 좋다고 알려짐
'IT 와 Social 이야기 > NLP 자연어처리' 카테고리의 다른 글
[딥러닝을이용한 자연어 처리 입문] 1004 네거티브 샘플링을 이용한 Word2Vec 구현(Skip-Gram with Negative Sampling, SGNS) (0) | 2021.05.21 |
---|---|
[딥러닝을이용한 자연어 처리 입문] 1003 영어/한국어 Word2Vec 실습 (0) | 2021.05.21 |
[딥러닝을이용한 자연어 처리 입문] 1001 워드 임베딩(Word Embedding) (0) | 2021.05.21 |
[딥러닝을이용한 자연어 처리 입문] 0907 글자 단위 RNN(Char RNN) (0) | 2021.05.20 |
[딥러닝을이용한 자연어 처리 입문] 0906 RNN을 이용한 텍스트 생성(Text Generation using RNN) (0) | 2021.05.20 |