Word2Vec - BD-SEARCH/MLtutorial GitHub Wiki
1. Word2vec์ ํ์์ฑ
NLP (Natural Language Processing, ์์ฐ์ด์ฒ๋ฆฌ) : ์ปดํจํฐ๊ฐ ์ธ๊ฐ์ด ์ฌ์ฉํ๋ ์ธ์ด๋ฅผ ์ดํดํ๊ณ ๋ถ์ํ ์ ์๊ฒ ํ๋ ๋ถ์ผ
ex) 'Naive Bayes'๋ฅผ ์ฌ์ฉํ ์คํธ ๋ฉ์ผ ๋ถ๋ฅ๊ธฐ
- ์ฑ๋ฅ ์์ฒด๋ ์ข์ง๋ง, ๋จ์ด๊ฐ ๋ค๋ฅธ ๋จ์ด์ ์ด๋ค ์ฐจ์ด์ ์ ๊ฐ์ง๋์ง๋ ์ดํดํ ์ ์๋ค -> ๋ฒกํฐํ ๊ณ ์
2. One-hot Encoding
- One-hot vector: ๋ฒกํฐ์ ์์ ์ค ํ๋๋ง 1์ด๊ณ ๋๋จธ์ง๋ ์ ๋ถ 0์ธ ๋ฒกํฐ
- One-hot encoding
- ๋จ์ด๋ฅผ ๊ณ ์ ๊ธธ์ด์ one-hot vector๋ก ๋ณํํ์ฌ ์ฌ์ฉ.
- ๋จ์ด ํ ๊ฐ๋น ์ฐจ์ ํ๋์ฉ ๊ฐ์ง. ๋จ์ด ๊ฐ์๊ฐ ๋ง์์ง๋ฉด ๋ฒกํฐ ์ฐจ์ ์๋ ๋น๋กํด์ ๋ง์์ง๋ค.
- ๊ณ ์ ๊ธธ์ด์ vector๋ ์ ๊ฒฝ๋ง ํ์ต์ ์ฌ์ฉํ ์ ์๋ค.
- Word2Vec ํ์ต ์์๋ Input layer์ Output layer๋ฅผ One-hot vector๋ก ์ฌ์ฉ
- ๋จ์ด ๊ฐ์ ์ฐ๊ด์ฑ์ ๊ณ ๋ คํ์ง ์๋ ์ธ์ฝ๋ฉ.
- ๊ฐ๊ฐ์ ๋จ์ด vector๊ฐ ๋ชจ๋ orthogonal(์ง๊ต).
- ๋ชจ๋ ๋จ์ด์ ์ฝ์ฌ์ธ ์ ์ฌ๋๋ 0. ๋จ์ด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฒกํฐ๋ก ๋ํ๋ผ ์ ์์.
example: "You say goodbye and I say hello."๋ผ๋ ๋ฌธ์ฅ์ด ์์ ๋ one-hot vector์ ์์
- you = [1, 0, 0, 0, 0, 0, 0]
- goodbye = [0, 0, 1, 0, 0, 0, 0]
3. Word2vec ํ๋ จํ๊ธฐ
Distributional Hypothesis : ๋น์ทํ ๋ถํฌ๋ฅผ ๊ฐ์ง ๋จ์ด๋ ๋น์ทํ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค
Word2vec(2013)
- ๊ธฐ์กด Neural net๊ธฐ๋ฐ ํ์ต ๋ฐฉ๋ฒ์์ ํฌ๊ฒ ๋ฒ์ด๋ ๊ฒ์ ์๋์ง๋ง ์ฐ์ฐ๋์ ์์ฒญ ์ค์๋ค.
Word2vec์ ํ์ต์ํค๊ธฐ ์ํ ๋คํธ์ํฌ ๋ชจ๋ธ 2๊ฐ์ง
- CBOW (Continuous Bag-of-words)
- Skip-gram
1) CBOW
'์ง ์์์ ์์ด์คํฌ๋ฆผ์ ์ฌ ๋จน์๋๋ฐ, ___ ์๋ ค์ ๋๋ฌด ๋จน๊ธฐ๊ฐ ํ๋ค์๋ค.'
์ฃผ์ด์ง ๋จ์ด์ ๋ํด ์๋ค๋ก C/2๊ฐ ์ฉ, ์ด C๊ฐ์ ๋จ์ด๋ฅผ Input์ผ๋ก ์ฌ์ฉํ์ฌ ์ฃผ์ด์ง ๋จ์ด๋ฅผ ๋ง์ถ๊ธฐ ์ํ ๋คํธ์ํฌ๋ฅผ ๋ง๋ ๋ค.
a. ๊ตฌ์ฑ
Input layer, projection layer(๊ทธ๋ฆผ ์์์ hidden layer), output layer
- Input layer์์ projection layer๋ก ๊ฐ ๋ VxNํฌ๊ธฐ์ projection Matrix W๋ฅผ ๋ง๋ ๋ค
- N = projection layer์ ๊ธธ์ด / ์ฌ์ฉํ vector์ ํฌ๊ธฐ
- projection layer์์ output layer๋ก ๊ฐ ๋ NxVํฌ๊ธฐ์ weight Matrix W'๋ฅผ ๋ง๋ ๋ค.
- W, W'๋ ๋ณ๊ฐ์ ํ๋ ฌ
- Input์์ ๋จ์ด๋ฅผ one-hot encoding์ผ๋ก ๋ฃ์ด์ค๋ค.
- ์ฌ๋ฌ๊ฐ์ ๋จ์ด๋ฅผ proejctionํด ๊ทธ ๋ฒกํฐ์ ํ๊ท ์ ๊ตฌํด์ projection layer์ ๋ณด๋ธ๋ค
- W'๋ฅผ ๊ณฑํด์ output layer๋ก ๋ณด๋ด softmax๊ณ์ฐ์ ํ๋ค.
- 5.์ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ต์ one-hot encoding๊ณผ ๋น๊ตํ์ฌ error๋ฅผ ๊ณ์ฐํ๋ค.
b. CBOW์ ์ฐ์ฐ๋
- C๊ฐ์ ๋จ์ด๋ฅผ Projection : CxN
- projection layer์์ output layer๋ก ๊ฐ๋ ๊ฒ : NxV
์ ์ฒด ์ฐ์ฐ๋ : CxN + NxV
V -> ln(V)๋ก ๊ฐ์ ํ๋ฉด ์ ์ฒด ์ฐ์ฐ๋ : CxN + Nxln(V)
c. CBOW๊ฐ ๋น ๋ฅธ ์ด์
๋ณดํต C๋ฅผ 10๋ด์ธ์ ํฌ๊ธฐ๋ก ์ก๋๋ค.
์ ์ฒด ์ฐ์ฐ๋ : (projection layer์ ํฌ๊ธฐ N) * (ln(V)์ ํฌ๊ธฐ) ์ ๋น๋ก
C = 10, N=500, V=1,000,000๋ก ํด๋ 10,000 ๋ฐ์ ๋์ง ์๋๋ค.
2) Skip-gram
์ฃผ์ด์ง ๋จ์ด ํ๋๋ฅผ ๊ฐ์ง๊ณ ์ฃผ์์ ๋ฑ์ฅํ๋ ๋๋จธ์ง ๋ช ๊ฐ์ง์ ๋จ์ด๋ค์ ๋ฑ์ฅ ์ฌ๋ถ๋ฅผ ์ ์ถ
- ๊ฐ๊น์ด ์์นํด ์๋ ๋จ์ด์ผ ์๋ก ํ์ฌ ๋จ์ด์ ๊ด๋ จ์ด ๋ ๋ง์ ๋จ์ด์ผ ๊ฒ
- ๋ฉ๋ฆฌ ๋จ์ด์ ธ์๋ ๋จ์ด์ผ์๋ก ๋ฎ์ ํ๋ฅ ๋ก ํํ๋ค
CBOW์ ๋ฐฉํฅ๋ง ๋ฐ๋์ผ ๋ฟ ๋์ํ๋ ๋ฐฉ์์ ์ ์ฌ
a. Skip-gram์ ์ฐ์ฐ๋
C๊ฐ์ ๋จ์ด๋ฅผ ์ํ๋งํ ๋
- ํ์ฌ ๋จ์ด๋ฅผ projectionํ๋ ๋ฐ N
- output์ ๊ณ์ฐํ๋ ๋ฐ NxV (๊ฐ์ ํ๋ฉด Nxln(V))
- ์ด C๊ฐ์ ๋จ์ด์ ๋ํด ์งํํ๋ฏ๋ก *C
์ฐ์ฐ๋ : C(N + Nxln(V))
- ๋ช ๊ฐ์ ๋จ์ด๋ฅผ ์ํ๋งํ๋์ ๋ฐ๋ผ ๊ณ์ฐ๋์ด ๋น๋กํ๋ฏ๋ก CBOW๋ณด๋ค๋ ํ์ต์ด ๋๋ฆฌ๋ค
- ์คํ์์๋ Skip-gram์ด ๋ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ธ๋ค
3) V to ln(V)
CBOW, Skip-gram์ ๊ทธ๋๋ก ๋๋ฆฌ๋ฉด ํ์ต์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค : V ๋๋ฌธ.
๋คํธ์ํฌ์ output layer์์ softmax๋ฅผ ํ๊ธฐ ์ํด์
- ๊ฐ ๋จ์ด์ ๋ํด ์ ๋ถ ๊ณ์ฐ์ ํด์ normalization์ ํด์ผ ํ๋ค
- ์ถ๊ฐ์ ์ธ ์ฐ์ฐ์ด ์์ฒญ๋๊ฒ ๋์ด๋๋ค
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ด ๋ถ๋ถ์ ์ฐ์ฐ๋์ ์ค์ด๋ ค๋ ์๋ ๋ฑ์ฅ
a. Hierarchical Softmax
a-1. ๊ตฌ์ฑ
softmax ๋์ multinomial distribution function์ ์ฌ์ฉ
- ๋จ์ด ํ๋์ฉ์ leave๋ก ๊ฐ์ง๋ binary tree๋ฅผ ๋ง๋ ๋ค
- completeํ ํ์๋ ์์ง๋ง, full์ด๋ฉด ์ข๋ค
- complete : ๋ง์ง๋ง ๋ ๋ฒจ ์ ์ธ ๋ชจ๋ ๊ฝ์ฑ์์๊ณ , ์ผ์ชฝ๋ถํฐ ์ฑ์์ง๋ค
- full : ๋ชจ๋ ๋ ธ๋๊ฐ 0๊ฐ/2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง
- completeํ ํ์๋ ์์ง๋ง, full์ด๋ฉด ์ข๋ค
- ํด๋นํ๋ ๋จ์ด w1์ ํ๋ฅ ์ ๊ณ์ฐํ ๋, root์์๋ถํฐ ๊ทธ leaf๊น์ง ๊ฐ๋ path์ ๋ฐ๋ผ ํ๋ฅ ์ ๊ณฑํ๋ค
w : ๋จ์ด. leaf์ ๋ชจ๋ ๋จ์ด๊ฐ ํ๋์ฉ ์กด์ฌํ๋ค
L(w) : w๋ผ๋ leaf์ ๋๋ฌํ๊ธฐ ๊น์ง์ path์ ๊ธธ์ด
n(w,i) : root์์๋ถํฐ w๋ผ๋ leaf์ ๋๋ฌํ๋ path์์ i๋ฒ์งธ ๋ง๋๋ ๋ ธ๋
n(w,1) : root
n(w, L(w)) : w
์ด ๋ ธ๋ ํ๋ํ๋์ vector v_n(w,i)๊ฐ ๋ธ๋ ค์๋ค.
ch(node) : node์ ๊ณ ์ ๋ ์์์ ํ child - ์ฌ๊ธฐ์๋ ์ผ์ชฝ์ด child
x : if x: 1, else: -1
h : hidden layer์ ๊ฐ ๋ฒกํฐ
sigma(x) : sigmoid function 1/(1+exp(-x))
hierarchial softmax๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ CBOW/Skip-gram์ ์๋ W' matrix๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
๋์ V-1๊ฐ์ internal node๊ฐ ๊ฐ๊ฐ ๊ธธ์ด N์ง๋ฆฌ weight vector๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค. : v'_i ๋ผ ํ๊ณ ํ์ต์์ update
- P(w|wi) : input word๊ฐ wi์ผ ๋ output word๊ฐ w์ผ ์กฐ๊ฑด๋ถ ํ๋ฅ
์ด๋ฅผ ๊ตฌํ๋ฉด P(w|wi)๋ฅผ maximizeํ๊ธฐ ์ํด -log๋ฅผ ์ทจํด์ objection function ์์ฑ
a-2. p(w) ์ ์ฐ์ฐ๋
-
step๋ง๋ค ๊ธธ์ด N์ง๋ฆฌ vector 2๊ฐ์ ๋ด์ ์ด ์ผ์ด๋๋ค : N
-
binary tree๋ฅผ ์ ๋ง๋ค์์ ๊ฒฝ์ฐ ํ๊ท ์ ์ผ๋ก root๋ก๋ถํฐ leaf๊น์ง์ ํ๊ท ๊ฑฐ๋ฆฌ : O(ln(V))
์ด ์ฐ์ฐ๋ : Nxln(V)
error function์ categorical cross-entropy๋ก ์ธ ๊ฒฝ์ฐ ์ต์ข error๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด ํด๋นํ๋ ๋จ์ด์ ๋ํด์๋ง ํ๋ฅ ์ ๊ณ์ฐํ๋ฉด ๋๋ฏ๋ก, ๋ค๋ฅธ ์ถ๊ฐ์ ์ธ ์ฐ์ฐ ์์ด O(Nxln(V))๋ง์ผ๋ก ๋๋๋ค
a-3. ์์ ๊ณ์ฐ
ํน์ hidden layer์ ๋ํด ๋ชจ๋ ๋จ์ด๋ค์ ํ๋ฅ ์ ๋ํ sigma{ p(wi|hidden layer) }
full binary tree๋ผ ๊ฐ์ ํ๊ณ , v_node์ h์ ๋ด์ ๊ฐ์ x๋ผ ํ ๋,
- ํน์ node์์ ์ผ์ชฝ child๋ก ๊ฐ ํ๋ฅ : sigmoid(x)
- ํน์ node์์ ์ค๋ฅธ์ชฝ child๋ก ๊ฐ ํ๋ฅ : sigmoid(-x) = 1-sigmoid(x)
- ์ ๋๊ฐ๋ฅผ ๋ํ๋ฉด 1
์ฆ, sigma{ p(wi|hidden layer) } = 1
softmax ๊ณ์ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์ด์ : ํ๋ฅ ๊ณ์ฐ์ ์ํด ๋ชจ๋ ๊ฒฐ๊ณผ ํฉ์ 1๋ก ๋ง๋ค๊ธฐ ์ํจ
- output์ ๋ํด ์ผ์ผ์ด ๊ณ์ฐ์ ํด ์ ์ฒด ํฉ์ผ๋ก normalizeํ๊ธฐ ๋๋ฌธ์ V๋งํผ์ ๊ณ์ฐ์ด ๋ ํ์ํ๋ ๊ฒ
- Hierarchical softmax๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ฒด ํ๋ฅ ์ ๋ํ ๊ณ์ฐ ์์ด ์ ์ฒด ํฉ์ 1๋ก ๋ง๋ค ์ ์๋ค.
a-4. ๋ง๋ฌด๋ฆฌ
- word2vec์์๋ Binary Tree๋ก Binary Huffman Tree ์ฌ์ฉ
- ์์ฃผ ๋ฑ์ฅํ๋ ๋จ์ด๋ฅผ ์งง์ path๋ก ๋๋ฌํ ์ ์๊ธฐ ๋๋ฌธ
- full binary tree๋ค
b. Negative Sampling
Hierarchical softmax์ ๋์ฒด์ฌ๋ก ์ฌ์ฉ
์์ด๋์ด : softmax๋ ๋๋ฌด ๋ง์ ๋จ์ด๋ค์ ๋ํด์ ๊ณ์ฐํ๋ฏ๋ก, ๋ช ๊ฐ๋ง ์ํ๋งํด๋ณด์
- ์ ์ฒด ๋จ์ด์ ๋ํด ๊ณ์ฐํ์ง ์๊ณ , ์ผ๋ถ๋ง ๋ฝ์์ softmax ๊ณ์ฐ์ ํ ํ normalization
- ์ฐ์ฐ๋ : NxV -> NxK (K=๋ฝ์ sample์ ์)
- ์ด ๋, target ๋จ์ด๋ ๋ฐ๋์ ๊ณ์ฐ์ ํด์ผํ๋ฏ๋ก : positive sample
- ๋๋จธ์ง : negative sample
- negative sample์ ์ด๋ป๊ฒ ๊ฒฐ์ ํ๋์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง๋ค.
- ๋ณดํต ์ฑ๋ฅ์ ์ผ๋ก ๊ฒฐ์
b-1. error function
์๋ก์ด error function
์์ ๊ฐ์ ์์ maximizeํ๋๋ก weight๋ฅผ ์กฐ์ ํ๋ค
- postivie sample
- negative sample
- ํ์ฌ ๋ณด๊ณ ์๋ ๋จ์ด w, ๋ชฉํ๋ก ํ๊ณ ์๋ ๋จ์ด c๋ฅผ ์ ์ -> (w,c)
- positive sample : (w,c)์ด ์ด corpus์ ์์ ํ๋ฅ
- negative sample : (w,c)์ด ์ด corpus์ ์์ ํ๋ฅ
- ๊ฐ๊ฐ์ ๋ํด log๋ฅผ ์ทจํ๋ค.
๋ณดํต negative sampling์์ sample์ ๋ฝ๋ ๊ฒ์ noise distribution์ ์ ์ํ๊ณ ๊ทธ ๋ถํฌ๋ฅผ ์ด์ฉํ์ฌ ๋จ์ด๋ค์ ์ผ์ ๊ฐฏ์ ๋ฝ์์ ์ฌ์ฉํ๋ค.
- ๊ทผ๋ฐ ๋
ผ๋ฌธ์์๋ ์ฌ๋ฌ ๋ถํฌ๋ฅผ ์คํ์ ์ผ๋ก ์ฌ์ฉํด๋ณธ ๊ฒฐ๊ณผ unigram distribution์ 3/4์น์ ์ด์ฉํ๋ฉด unigram, uniform๋ณด๋ค ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ธ๋ค
- unigram distribution : ๋จ์ด๊ฐ ๋ฑ์ฅํ๋ ๋น์จ์ ๋น๋กํ๊ฒ ํ๋ฅ ์ ์ค์ ํ๋ ๋ถํฌ
- ๊ฐ ํ๋ฅ ์ 3/4์น ํ๊ณ normalization factor๋ก ๋๋์ด ๋จ์ด๊ฐ ๋ฑ์ฅํ ํ๋ฅ ๋ก ์ฌ์ฉ
c. Subsampling frequent words
Hierachical softmax, negative sampling์ ๋ชจ๋ธ ์์ฒด์ ๊ณ์ฐ๋ณต์ก๋๋ฅผ ์ค์ด๊ธฐ ์ํจ
์ถ๊ฐ์ ์ผ๋ก 'the', 'a', 'in'๊ณผ ๊ฐ์ด ์์ฃผ ๋ฑ์ฅํ๋ ๋จ์ด๋ค์ ํ๋ฅ ์ ์ผ๋ก ์ ์ธ
- ํ์ต ์๋, ์ฑ๋ฅ ํฅ์
c-1. how to
- f(w) : ๋จ์ด w์ ๋ฑ์ฅ ๋น๋
- t : ๋น๋๊ฐ ์ผ์ ๊ฐ ์ด์์ผ ๋๋ง ์ ์ธํ๊ฒ ๋ค๋ threshold
- ๋ ผ๋ฌธ์์๋ t = 10^-5์ผ ๋ ๊ฐ์ฅ ๊ฒฐ๊ณผ ์ข์๋ค
ํ์ตํ ๋ ๊ฐ ๋จ์ด๋ P(wi)ํ๋ฅ ๋ก ์ ์ธ๋๋ค.
reference :