분산표상 방법론인 Word2Vec
NNLM vs Word2Vec
NNLM: 순차적으로 단어가 주어질 때 다음 단어 예측
Word2Vec: 중심단어로 주변단어 예측(CBow) or 주변단어로 중심단어 예측(Skip-gram)
Word2Vec: Skip-gram
Neural Network이긴 하지만 가장 기본적인 구조라 activation function도 없다.
Objective Function(목적함수):
Maximize the log probability of any context word given the current center word
(K번째 단어가 주어질 때 K 앞뒤로 주어지는 단어의 생성확률 높이기)
Input: 1 x 10000 >> 10000개의 단어
Hidden Layer Linear Neurons: 300차원
Hidden Layer Weight: 10000x300의 Matrix
Lookup table개념으로 가져온 Weight Matrix의 한 행(Center) x Output마다 Lookup table에서 가져온 한 행 T(주변단어) 로 내적해 Softmax한다.
즉, W와 W'에 대해 계속 업데이트하며 학습 진행한다.
dim(W) = V x N
dim(W') = N x V
v는 W에서 가져온 row, u는 W'에서 가져온 column.
Gradient Ascent
그 후. A와 B를 합쳐서 Gradient 계산 후 Maximize하기 때문에 Gradient Descent가 아닌, Gradient Ascent로 계산해 Gradient를 더하며 update한다.
Learning strategy
1. 모든 근처의 단어를 한번에 사용하는 것이 아닌, 하나의 단어씩 사용해서 Train 한다.
2. V x N x 2의 큰 규모의 Weight를 학습하기때문에
- 빈번하게 나타나는 word pair는 하나의 단어로 취급해라. ex) Big Data
- 너무 많이 단어나타나는단어는 Subsampling을 진행해라. ex) 관사 등의 단어들
- Negative sampling: Output단어의 확률을 계산하기 위해서는 corpus에 존재하는 모든 단어의 softmax를 계산해야 한다. 이게 비효율적이니 Negative sampling을 바탕으로 몇개만 진행하자.
해당 게시글은 유튜브 고려대학교 산업경경공학부 강필성 교수님의 DSBA 연구실 유튜브 영상을 바탕으로 작성된 글입니다.
https://www.youtube.com/watch?v=s2KePv-OxZM&list=PLetSlH8YjIfVzHuSXtG4jAC2zbEAErXWm&index=9