[text mining] word embedding ์ด๊ฑฐ๋ฉด ๋!
ํ ์คํธ ๋ฐ์ดํฐ ํํ ๋ฐฉ์
ํ ์คํธ ๊ธฐ๋ฐ์ ๋ชจ๋ธ์ ๋ง๋ค๊ธฐ ์ํด์๋ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์ซ์๋ก ํํํด์ผํจ
ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ๋ฐฉ์(feature representation)์ผ๋ก sparse representation์ด ๋จผ์ ๋ฑ์ฅํ์๊ณ sparse representaion์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด dense representation๊ฐ ๋ฑ์ฅ
sparse representation์ ๋ํ์ ์ธ ๊ธฐ๋ฒ์ one-hot encoding์ด๊ณ dense representation์ ๋ํ์ ์ธ ๊ธฐ๋ฒ์ word embedding
one-hot encoding
์ปดํจํฐ๋ ๋ฌธ์๋ฅผ ์ดํดํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์ซ์๋ก ํํํด์ค์ผํ๋ฉฐ one-hot encoding์ ์ฌ๋ฌ ํํ๊ธฐ๋ฒ๋ค ์ค ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ
sparse representation์์ ๊ฐ์ฅ ์ ๋ช ํ ๊ธฐ๋ฒ (sparse representation์ ๊ดํ์ฌ ํ์ ์ค๋ช )
๊ณผ์
1. ๋จ์ด์งํฉ ์์ฑ
๋จ์ด ์งํฉ (=vocabulary)
: ํ ์คํธ๋ด ๋ชจ๋ ๋จ์ด๋ฅผ ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ ๋ชจ์ ์งํฉ
์๋ก ๋ค๋ฅธ ๋จ์ด๋ค์ ์งํฉ์ ๋งํ๋ฉฐ apple๊ณผ apples๊ณผ ๊ฐ์ด ๋จ์ด์ ๋ณํํํ ๋ํ ๋ค๋ฅธ ๋จ์ด๋ก ๊ฐ์ฃผ
2. ๊ณ ์ ํ ์ ์ ๋ถ์ฌ
๋จ์ด์งํฉ์ด ๋ง๋ค์ด์ง๊ณ ๋๋ฉด ์ด ๋จ์ด ์งํฉ์ ๊ณ ์ ํ ๋ฒํธ(index)๋ฅผ ๋ถ์ฌ(encoding๊ณผ์ )
์) ๋จ์ด์งํฉ์ ํฌ๊ธฐ๊ฐ 5000์ผ ๋
apple : 1
banana : 2
car : 3
โฎ
is : 2000
โฎ
zoo : 5000
3. one-hot encoding
: ๋ฒกํฐ์ ์ฐจ์์ ๋จ์ด์งํฉ์ ํฌ๊ธฐ์ด๋ฉฐ ํํํ๊ณ ์ํ๋ ๋จ์ด์ index์๋ 1๋ถ์ฌ, ๊ทธ ์ธ index์๋ 0์ ๋ถ์ฌํ๋ vectorํํ๋ฐฉ์
์) 2๋ฒ์ ๊ณ ์ ํ ์ ์๋ถ์ฌ์์ ์ฌ์ฉ๋ ์์์ ์ฐ์ฅ์
๋จ์ด \ index | 1 | 2 | 3 | ... | 2000 | ... | 5000 |
apple | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
banana | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
car | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
โฎ | 0 | 0 | 0 | โฑ | 0 | 0 | 0 |
is | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
โฎ | 0 | 0 | 0 | 0 | 0 | โฑ | 0 |
zoo | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
ํ๊ณ / ๋จ์
- ๋จ์ด์ ๊ฐ์๊ฐ ์ฆ๊ฐํ ์๋ก ๋ฒกํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ํ์ํ ๊ณต๊ฐ ๋ํ ์ปค์ง ⇒ ๋ฒกํฐ์ ์ฐจ์ ์ฆ๊ฐ
- ์ ๋ ฅ ๋ฐ์ดํฐ์ ์ฐจ์์ด ํฌ๋ฉด ์ฐจ์์ ์ ์ฃผ๋ผ๋ ๋ฌธ์ ๊ฐ ์๊น
- → ์ ๋ ฅ๋ฐ์ดํฐ์ 0์ด ๋๋ฌด ๋ง์ผ๋ฉด ๋ฐ์ดํฐ์์ ์ ๋ณด๋ฅผ ๋ฝ์๋ด๊ธฐ ์ด๋ ค์์ง → ๋ชจ๋ธ์ ํ์ต์ด ์ ์๋์ด ์ฑ๋ฅ์ด ๋จ์ด์ง
- ๋จ์ด ๋ฒกํฐ๊ฐ ์ ์ฌ๋๋ฅผ ํํํ์ง ๋ชปํจ โญ
์) ๋๋, ํธ๋์ด, ๊ฐ์์ง, ๊ณ ์์ด๋ผ๋ 4๊ฐ์ ๋จ์ด์ ๋ํด์ one-hot encoding์ ํด์ ๊ฐ๊ฐ [1,0,0,0], [0,1,0,0], [0,0,1,0], [0,0,0,1] ์ด๋ผ๋ one-hot vector๋ฅผ ๋ถ์ฌ๋ฐ์๋ค๊ณ ๊ฐ์
์ด๋ one-hot vector๋ก๋ ๊ฐ์์ง์ ๋๋๊ฐ ์ ์ฌํ๊ณ , ํธ๋์ด์ ๊ณ ์์ด๊ฐ ์ ์ฌํ๋ค๋ ๊ฒ์ ํํํ ์๊ฐ ์์
์ข ๋ ๊ทน๋จ์ ์ผ๋ก๋ ๊ฐ์์ง, ๊ฐ, ๋์ฅ๊ณ ๋ผ๋ ๋จ์ด๊ฐ ์์ ๋ ๊ฐ์์ง๋ผ๋ ๋จ์ด๊ฐ ๊ฐ์ ๋์ฅ๊ณ ๋ผ๋ ๋จ์ด ์ค ์ด๋ค ๋จ์ด์ ๋ ์ ์ฌํ์ง๋ ์ ์ ์์
โ ๋จ์ด๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐ์ํ์ง ๋ชปํจ- ํด๊ฒฐ๋ฐฉ๋ฒ
⇒ ๋จ์ด์ ์ ์ฌ ์๋ฏธ๋ฅผ ๋ฐ์ํ์ฌ ๋ค์ฐจ์ ๊ณต๊ฐ์ ๋ฒกํฐํ ํ๋ ๊ธฐ๋ฒ : word embedding์ ํตํ dense representation
1. count๊ธฐ๋ฐ ๋ฒกํฐํ ๋ฐฉ๋ฒ
- LSA(์ ์ฌ์๋ฏธ๋ถ์), HAL ๋ฑ
2. ์์ธก๊ธฐ๋ฐ ๋ฒกํฐํ ๋ฐฉ๋ฒ
- RNNLM, Word2Vec, FastText ๋ฑ
3. count&์์ธก๊ธฐ๋ฐ ๋ฒกํฐํ ๋ชจ๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- GloVe
- ํด๊ฒฐ๋ฐฉ๋ฒ
Sparse Representation (ํฌ์ ํํ)
- ์์ one-hot encoding์ ํตํด ๋์จ one-hot vector๋ ํํํ๊ณ ์ํ๋ ๋จ์ด์ index๋ง 1์ด๊ณ ์ด์ธ ๋๋จธ์ง index๋ ์ ๋ถ 0์ผ๋ก ํํ๋์ด ์์
⇒ ์ด๋ ๊ฒ ํ๋ ฌ/๋ฒกํฐ์ ๊ฐ ์ค ๋๋ถ๋ถ์ด 0์ผ๋ก ์ฑ์์ ธ ์๋ ๋ฐฉ๋ฒ์ **ํฌ์ ํํ(sparse representation)**์ด๋ผ๊ณ ํจ (one-hot vector๋ ๋ฐ๋ผ์ sparse vector) - one-hot encoding์ธ์๋ ์ฌ๋ฌ ํฌ์ํํ ๋ฐฉ์(DTM ๋ฑ..)์ด ์กด์ฌํ๋ one-hot encoding์ด ๊ฐ์ฅ ์ ๋ช
Dense Representation (๋ฐ์ง ํํ)
- sparse representation๊ณผ ๋ฐ๋๋๋ ํํ
- distributed representation์ด๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํจ
- sparse representation์ ๋จ์ด ์งํฉ ํฌ๊ธฐ = ๋ฒกํฐ์ ์ฐจ์
dense representation์ ์ฌ์ฉ์๊ฐ ์ค์ ํ ๊ฐ์ผ๋ก ๋ฒกํฐ์ ์ฐจ์ ์ค์ - sparse representation์ 0๊ณผ 1๋ง ๊ฐ์ง
dense representation์ ์ค์๊ฐ์ ๊ฐ์ง
→ sparse representation์ ๋ฒกํฐ์ ๋๋ถ๋ถ์ ๊ฐ์ด 0์ ๊ฐ์ง๊ณ ์์ด sparseํ์ง๋ง dense representation์ ๋ชจ๋ ์ฐจ์์ด ๊ฐ์ ๊ฐ๊ณ ์๋ ๋ฒกํฐ๋ก ํํ๋๋ฏ๋ก sparse์ ๋ฐ๋๋ง์ธ dense๋ฅผ ์จ์ dense representation์ด๋ผ ํจ
์์ ) 1000๊ฐ์ ๋จ์ด๊ฐ ์๋ ๋จ์ด์งํฉ์์ ์ฌ๊ณผ๋ฅผ ํํํ๊ณ ์ ํ ๋ ์ฌ๊ณผ๋ฅผ ๊ธฐ์กด์ sparse representation์ผ๋ก ํํํ๋ฉด
- sparse representation : ์ฌ๊ณผ = [ 0 0 0 1 0 0 ... 0 0 ]
1๊ฐ์ 1๊ณผ 999๊ฐ์ 0์ผ๋ก ์ด๋ฃจ์ด์ง ์ฐจ์์ ํฌ๊ธฐ๊ฐ 1000์ธ ๋ฒกํฐ๋ก ํํ๋จ
์ฌ๊ณผ๋ฅผ ์ฐจ์์ ํฌ๊ธฐ๊ฐ 64์ธ dense representation์ผ๋ก ํํํ๋ฉด
- dense representation : ์ฌ๊ณผ = [ 0.15 1.2 0 1.8 -1.1 0.7 ... -3 -1.7 ]
1000์ด์๋ ์ฐจ์์ ํฌ๊ธฐ๊ฐ 64๋ก ์ค์ด๋ค๋ฉด์ ๋ชจ๋ ๊ฐ์ ์ค์๊ฐ ๋จ
→ ‘๋ฒกํฐ์ ์ฐจ์์ด ์กฐ๋ฐํด์ก๋ค’ํ์ฌ dense vector(๋ฐ์ง ๋ฒกํฐ)๋ผ ํจ
⇒ ๋จ์ด ๋ฒกํฐ์ ๊ฐ๋ค์ ๋จธ์ ๋ฌ๋์ ํตํด ํ์ต๋จ
์ฅ์
- ์ ์ ์ฐจ์์ผ๋ก ๋์์ ํํํ ์ ์์
- ์ผ๋ฐ์ ์ผ๋ก 20 ~ 200 ์ฐจ์ ์ ๋๋ฅผ ์ฌ์ฉํ๋ฉฐ 0์ด ๊ฑฐ์ ์๊ณ ๊ฐ๊ฐ์ ์ฐจ์๋ค์ด ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ค๊ณ ์์ (sparse representation์ ๋ช ์ฒ ์ฐจ์์ ๋นํด ํจ์ฌ ์์ ์ฐจ์)
→ ๋ชจ๋ธ ํ์ต์ด ๋ ์๋จ - ๋ ํฐ ์ผ๋ฐํ ๋ฅ๋ ฅ
์์ ์ฅ์ ๋ค์ word embedding์ด ์ ํ์ต๋์๋ค๋ ์ ์ ํ์ ์ฑ๋ฆฝ
word embedding์ ๋ํ ์ค๋ช ๊ณผ ์ด๋ป๊ฒ ํ์ต์ํค๋?
word embedding
- embedding = ๋ผ์๋ฃ๋ค
⇒ ๋จ์ด/๋ฌธ์ฅ ๊ฐ๊ฐ์ ์ฌ์ฉ์๊ฐ ์ง์ ํ N์ฐจ์์ ๋ฒกํฐ๋ก ๋ณํํ์ฌ ๋ฒกํฐ๊ณต๊ฐ์ ๋ผ์๋ฃ๋๋ค
์ฝ๊ฒ ๋งํด, NLP์์ word embedding์ ๋จ์ด๋ฅผ ๋ฒกํฐ๋ก ํํ/mapping/๋ณํํ๋ค ๋ผ๋ ๋งฅ๋ฝ - word embedding์ ํ๊ฒ๋๋ฉด sparsity๋ ์ฌ๋ผ์ง
one-hot encoding์ฒ๋ผ ๋๋ถ๋ถ์ ๊ฐ์ด 0์ธ ๋ฒกํฐ๊ฐ ์๋ ๋ชจ๋ ์ฐจ์์ด ๊ฐ์ ๊ฐ๊ณ ์๋ ๋ฒกํฐ
one-hot vector vs embedding vector
one-hot vector | embedding vector | |
์ฐจ์ | ๊ณ ์ฐจ์ | ์ ์ฐจ์ |
๋ค๋ฅธ ํํ | sparse vector | dense vector |
ํํ๋ฐฉ๋ฒ | ์๋ | train data๋ก๋ถํฐ ํ์ต |
๊ฐ | 0 ๋๋ 1 | ์ค์ |
์์ one-hot vector์ ๋จ์ ์ผ๋ก ๋จ์ด ๋ฒกํฐ๊ฐ ์ ์ฌ๋ ๊ณ์ฐ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ์ ์ด ์์์
embedding vector๋ ์ด ๋จ์ ์ ํด๊ฒฐํด์ค
word embedding์ ํ์ตํ๋ ์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก LSA, Word2Vec, FastText, Glove ... ๋ฑ์ด ์์ผ๋ฉฐ word embedding์ ํ์ตํ๋ ๊ธฐ๋ฒ์ 2๊ฐ์ง๋ก ๋๋จ
2๊ฐ์ง ๊ธฐ๋ฒ
- count based method
: ํน์ ๋จ์ด๊ฐ ์ด์ ๋จ์ด๋ค๊ณผ ๊ฐ์ด ๋ฑ์ฅํ ํ์ ๊ณ์ฐ → ์ด ํต๊ณ๋ฅผ dense vector๋ก mapping
LSA๋ฑ - predicitive method
: dense embedding vector๋ก ํํ๋ ์ด์ ๋จ์ด๋ฅผ ์ด์ฉํ์ฌ ์ง์ ์ ์ผ๋ก ๋จ์ด๋ฅผ ์์ธก
word2vec๋ฑ
word embedding ์ผ๋ก ๊ฐ์ฅ ์ ๋ช ํ word2vec์ predictive method์ ํด๋น
Word2Vec
: word embedding ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ์ ๋ช (๊ตฌ๊ธ์ด ๊ฐ๋ฐ)
- Korean Word2Vec
ํด๋น ์ฌ์ดํธ๋ ์ฐ๋ฆฌ๋ง์ word2vec ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ๊ฒ๋ค์ ๋ณด์ฌ์ค
์์ ) ํ๊ตญ - ์์ธ + ๋์ฟ- ์์๋ฅผ ๋ณด๋ฉด ๋ฒกํฐ๊ฐ์ ๋ง์ ๋บ์ ์ ํจ\
- ๋ฒกํฐ๊ฐ์ ๋ง์ ๋บ์ ์ ํด๋นํ๋ ๋จ์ด๊ฐ์ ์๋ฏธ์ ํฉ๊ณผ ์ฐจ๋ก ๋ฐ์๋จ
- ๋ฒกํฐ์ ๋จ์ด์ ์๋ฏธ๊ฐ ์ ๋ด๊ฒจ์์์ ํ์ธํ ์ ์์
ํต์ฌ ์์ด๋์ด
๋จ์ด์ ์ฃผ๋ณ์ ๋ณด๋ฉด ๊ทธ ๋จ์ด๋ฅผ ์๋ค
word2vec์ ์ง๋ํ์ต์ ๋ฎ์์ง๋ง ๋น์ง๋ํ์ต์
word2vec์ ํ ์คํธ๋ก๋ถํฐ word embedding์ ํ์ตํ๋ ๊ณ์ฐ ํจ์จ์ฑ์ด ์ข์ predictive modelk์ด๋ฉฐ 2๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํ
- CBOW(Continuous Bag-Of-Words) : ๋งฅ๋ฝ์ผ๋ก ๋จ์ด ์์ธก
- Skip-Gram : ๋จ์ด๋ก ๋งฅ๋ฝ ์์ธก
(CBOW ๋ชจ๋ธ์ ๋ฐ๋๋ก ๋ค์ง์๊ฒ skip-gram)
CBOW
: ์ฃผ๋ณ๋จ์ด(์ฆ ๋งฅ๋ฝ)์ผ๋ก target ๋จ์ด๋ฅผ ์์ธกํ๋๋ก ํ์ต
*์ฃผ๋ณ๋จ์ด : ์ผ๋ฐ์ ์ผ๋ก target ๋จ์ด์ ์ง์ ๋ช ๋จ์ด์ ์งํ ๋ช ๋จ์ด๋ฅผ ๋ปํ๋ฉฐ ์ด ์ฃผ๋ณ ๋จ์ด์ ๋ฒ์๋ฅผ window๋ผ ํจ
window ์ ๊ทผ๋ฒ
์์ )
“green”์ด target ๋จ์ด์ผ๋ “colorless”๋ถํฐ “ideas”๊น์ง ์ฐฝ๋ฌธ์ด๋ผ๊ณ ์๊ฐํ๊ณ ์ด ๋จ์ด๋ค๋ง ๋ณด๋ ๊ฒ์ด window ์ ๊ทผ๋ฒ
์๊ณผ ๋ค์์ ๋ช ๋จ์ด๊น์ง ๋ณผ์ง๋ ์ง์ ํด์ค ์ ์์ (=window size)
sliding window
“green”์ target๋จ์ด๋ก ๋๊ณ “colorless”๋ถํฐ “ideas”๊น์ง ํ๋ฒ ๋ณธ ๋ค์,
window๋ฅผ ๋ฐ์ด์ target๋จ์ด๋ฅผ “ideas”๋ก ๋๊ณ ๋ณธ ๋ค์,
๋ค์ window๋ฅผ ๋ฐ์ด์ target๋จ์ด๋ฅผ “sleep”์ผ๋ก ๋๊ณ ๋ด
⇒ ์ด๋ ๊ฒ window๋ฅผ ์ ์ฐจ ์์ผ๋ก ๋ฐ๋ฉด์ target๋จ์ด๋ฅผ ๊ณ์ ๋ฐ๊พธ๋ ๋ฐฉ์์ sliding window๋ผ ํจ
๊ทธ๋ฆฌ๊ณ ์ด๋ ๊ฒ ๋ง๋ค์ด์ง window ํ๋ํ๋๊ฐ ํ์ต๋ฐ์ดํฐ๊ฐ ๋จ
CBOW๋ ๋งฅ๋ฝ์ผ๋ก ๋จ์ด๋ฅผ ์์ธกํ๋ ๋ฌธ์ ๋ฅผ ํ
์ฆ, input์ผ๋ก ์ฃผ๋ณ ๋จ์ด๊ฐ ์ ๋ ฅ๋๊ณ , ์์ธกํด์ผํ๋ output์ target๋จ์ด๊ฐ ๋จ
์ด ๊ณผ์ ์์ ๋ชจ๋ธ์ parameter๋ฅผ ํ์ตํ๊ณ ์ด๋ ๊ฒ ํ์ต๋ parameter๊ฐ ๋จ์ด๋ค์ ๋ฒกํฐ ํํ์ด ๋จ
ํ๋ผ๋ฏธํฐ ํ์ต ๋ฐฉ๋ฒ
- ์ผ๋ฐ์ ์ธ ๋จธ์ ๋ฌ๋, ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ํ์ต๋ฐฉ์๊ณผ ๋์ผ
- ์ฒ์ parameter๋ ๋๋ค์ผ๋ก ์ด๊ธฐํ๋ ์ํ๋ก ์์ (random initialization)
์ด parameter๋ก ์์ธก → ์ค์ ๊ฐ๊ณผ ์ฐจ์ด๊ฐ ์๊ธด๋งํผ parameter๋ค์ ์กฐ์
์ ๊ณผ์ ์ ํ์ต ๋ฐ์ดํฐ์ ์ ๋์๊ฐ๋ฉฐ ๋ฐ๋ณต (backpropagation)
์๋ฆฌ : gradient descent (cost function์ด ์ต์ํ๋๋ ์ชฝ์ผ๋ก parameter ์ ๋ฐ์ดํธ)
์์ )
V = ์ฌ์ ์ ํฌ๊ธฐ (vocab size = ๋จ์ด ๊ฐ์)
N = hidden layer size ( = ์ฌ์ฉ์๊ฐ ์ ํ ์ฐจ์ N )
input : one-hot encoding๋ ๋ฒกํฐ
input์ผ๋ก ์ฃผ๋ณ๋จ์ด ์ฆ, target๋จ์ด์ ์ ๋จ์ด๊ฐ ๋ค์ด๊ฐ. ์ด ๋จ์ด๋ V๊ฐ์ ์์๊ฐ ์ค ํ๋๋ง 1์ด๊ณ ๋๋จธ์ง๋ ๋ชจ๋ 0์ธ ๋ฒกํฐ๋ก ํํ๋จ
→ ์ด๋ ๊ฒ ๋จ์ด์ ๊ฐ์๋งํผ์ ์ฐจ์์ ๊ฐ๋ input layer๊ฐ hidden layer์์ embedding ํฌ๊ธฐ๋งํผ์ ์ฐจ์์ ๋ฒกํฐ๋ก mapping๋จ
output layer์์๋ ๋ค์ ๋จ์ด์ ๊ฐ์๋งํผ์ ์ฐจ์์ ๊ฐ์ง
output์ target๋จ์ด์ด๋ฏ๋ก ๋จ์ด์ ๊ฐ์๋งํผ์ ๊ฒฝ์ฐ์ ์๊ฐ ์๊ธฐ ๋๋ฌธ (?)