Word2Vec의 2가지 형태 - CBOW와 skip-gram 모델
1. CBOW(continuous bag of words)
Word2Vec의 첫번째 방법으로 주변의 단어를 가지고 중심단어를 예측하는 과정이다.
‘I am going to school’이라는 문장에서 window size=2라면 중심단어는 going이고 주변단어는 I,am, to, school
CBOW는 주변단어를 모두 써서 중심단어 하나를 예측하는 것
CBOW의 중간에 SUM과정이 있는데 input vector들의 평균을 구하는 과정으로 skip gram과 차이점이다.
근데 논문에서 처음 제시한 모형은 sum을 구하는 것이라고 한다.
그런데 큰 차이는 없는것같다.
그냥 sum보다 평균이 안정적인 느낌이라 변했다고 생각이 든다
------------------------------------------------------------------------------------------------------------------------------------------------------------
**projection layer
위에서 CBOW의 중간 layer가 Projection layer라고 썼는데 왜 그럴까?
일반적으로 Word2Vec의 hidden layer에서는 활성화함수를 쓰지 않는다고 한다.
그것과 구별하기 위해 Projection layer라고 하는데 행렬 선형변환으로 내적 계산이 이루어지니까 그런것 같다.
그러니까 활성화함수를 쓰기 전 행렬변환한 것이 projection layer이고 이것을 non linear activate function하면 hidden layer가 된다..
근데 여기서 의문이 드는건 softmax로 쓰던데 그건 활성화함수가 아니야?
하긴 근데 이해가 되는게 softmax를 쓰지 않아도 softmax값은 선형변환한 값과 비례하니까 안써도 되긴해 이건것 같은데?
내 생각이 맞는듯 이미 배운대로 softmax는 근본이 선형모델이라 그런가봄
word2vec 이전에 hidden layer를 거치고 softmax를 해서 language model인 NPLM을 bengio 교수가 만들었다.
word2vec이 불필요한 hidden layer를 제거하고 concatenation 대신 평균을 사용했다고 언급했는데 이러한 의미에서 projection layer가 되었나봄
softmax는 근본이 language model이라 남았다는데…
아무튼 큰 의미 둘 필요는 없는듯
--------------------------------------------------------------------------------------------------------------------------------------------------------
2. skip-gram
Word2Vec의 두번째 방법으로 CBOW와 반대로 중심단어를 가지고 주변단어를 예측하는 과정이다.
‘I am going to school’이라는 문장에서 window size=2라면 중심단어는 going이고 주변단어는 I,am, to, school
그리고 그림이 중심단어 하나 넣고 나머지 주변단어가 모두 나오는 것처럼 그렸는데
CBOW와는 달리 실제로는 중심단어 하나에 주변단어 하나만 나오게 하는 경우가 보통이다. 그래도 되거든
그러니까 위의 경우 (going, I), (going, am), (going, to), (going, school)
CBOW보다 성능이 좋다고 알려져있다.
얼핏보면 CBOW가 4개의 단어로 하나의 단어를 예측하므로 성능이 더 좋아보이지만
Skip-gram은 하나의 중심단어가 window size가 2이면 4번의 업데이트 기회를 확보하므로 좋다고 한다.
그러나 계산량이 많다는 단점이 있다. 이를 극복하기 위해 negative sampling 등이 제안되었다.
'딥러닝 > NLP' 카테고리의 다른 글
Word2Vec의 sliding window 완벽하게 이해하기 (0) | 2022.02.28 |
---|---|
RNN의 기본 구조 이해하기 (0) | 2022.02.19 |
text를 embedding시키는 Word2Vec의 성질 이해하기 (0) | 2022.02.11 |
Word2Vec의 기본 알고리즘 (0) | 2022.02.06 |
Word2Vec의 핵심 아이디어 (0) | 2022.02.05 |