
์ด์ํ๊ฒ ์ด ๋ถ๋ถ์ ๋ณผ ๋๋ง๋ค ์ฌ๋ฏธ๊ฐ ์๋ค. ํ์ง๋ง ๊ฒฐ๊ตญ ํ๊ฒ ๋๋ค. ์๋ ๋งํผ ๋ณด์ธ๋ค..
๋ฐ๋ ธ์ง๋ง ์๋ฌดํผ ์ ๋ฆฌ ๋.. ์ด์ ์ผ Tokenization๊ณผ Word Embedding์ ๊ฐ๋ ์ ํ์คํ ์ก์ ๊ฒ ๊ฐ๋ค.
์์ผ๋ก๋ ์ฌ๋ด์ ์ค์ด๊ณ ์ข ๋ ์ฒด๊ณ์ ์ธ ๊ธฐ๋ก์ ๋จ๊ธฐ๋ ค๊ณ ํ๋ค. ๋์ !
Tokenization, Tokenizing์ด๋, ์ฃผ์ด์ง text๋ฅผ token ๋จ์๋ก ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค. ์ด๋ token์ ์์ฐ์ด์ฒ๋ฆฌ ๋ชจ๋ธ์ด ๊ฐ timestep๋ง๋ค ์ฒ๋ฆฌํ ์ ์๋ ํ๋์ ๋จ์๋ฅผ ๋งํ๋ค. ์ด token์ ์ํฉ์ ๋ฐ๋ผ ํํ๊ฐ ๋ฌ๋ผ์ง์ง๋ง, ๋ณดํต ์๋ฏธ๋ฅผ ๋จ์๋ก ๊ตฌ๋ถํ๋ค.
Word-level Tokenization
๋จ์ด ๋จ์๋ก ๊ตฌ๋ถํ๊ธฐ ์ํด ์์ด๋ฅผ ์๊ฐํด๋ณด๋ฉด, ์ผ๋ฐ์ ์ผ๋ก ๋์ด์ฐ๊ธฐ ๋จ์๋ก ๊ตฌ๋ถํ๋ค.
I love AI โ ['I', 'love', 'AI']
ํ๊ตญ์ด๋ ์กฐ์ฌ, ์ด๊ทผ, ์ ์ฌ ๋ฑ์ด ์๊ธฐ ๋๋ฌธ์ ํํ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋จ์ด๋ฅผ ๊ตฌ๋ถํ๊ธฐ๋ ํ๋ค.
๋๋ ์ธ๊ณต์ง๋ฅ์ด ์ข๋ค โ ['๋', '๋', '์ธ๊ณต์ง๋ฅ', '์ด', '์ข๋ค']
ํ์ง๋ง ์ฌ์ ์ ์๋ vocab์ ํน์ ๋จ์ด๊ฐ ์์ ๊ฒฝ์ฐ ๋ชจ๋ UNK token์ผ๋ก ์ฒ๋ฆฌ๋๋ Out-of-Vocabulary ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
Character-level Tokenization
token์ ์ฒ ์ ๋จ์๋ก ๊ตฌ๋ถํ๋ค. ๋ค๋ฅธ ์ธ์ด๋ผ๋ ๊ฐ์ ์ฒ ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์ฒ ์ ๋จ์ token์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
๋ํ ๋ชจ๋ ์ฒ ์๋ฅผ ๋ฑ๋กํด๋์ผ๋ฉด, ๋ฑ์ฅํ์ง ์์ ๋จ์ด๋ผ๋ ์ฒ ์๋ค์ ์กฐํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ OOV ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
ํ์ง๋ง ์ฃผ์ด์ง text์ ๋ํ token์ ์๊ฐ ์ง๋์น๊ฒ ๋ง์์ง๋ค.
์ฒ ์๋ง์ผ๋ก ์๋ฏธ๋ฅผ ๊ฐ์ง ์ ์๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฐฉ์์ผ๋ก tokenization์ ์ํํ ๊ฒฝ์ฐ, ๋ชจ๋ธ์ด ๋ฎ์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
Subword-level Tokenization
subword๋ ํ๋์ ๋จ์ด์กฐ์ฐจ ์๋ฏธ๋ฅผ ๊ฐ๋ ๋ ์์ ๋จ์๋ฅผ ๋งํ๋ค.
์๋ฅผ ๋ค๋ฉด preprocessing์ด๋ผ๋ ๋จ์ด๋ pre-, process, -ing๋ก ๊ตฌ๋ถํ ์ ์๋ค.
ํ์ง๋ง ์ธ์ ๋ชจ๋ subword๋ฅผ ์ฌ์ ์ ๋ฑ๋กํด๋๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ tokenization์ ์ํํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋๋ฐ, BPE(Byte-Pair Encoding), WordPiece, SentencePiece ๋ฑ subword tokenization ๋ฐฉ๋ฒ๋ก ์ ๋ฐ๋ผ subword์ ๋จ์๋ ๋ค์ํ๊ฒ ๊ฒฐ์ ๋๋ค.
์ด๋ฌํ Subword Tokenization์ Character-level Tokenization์ ๋นํด ์ฌ์ฉ๋๋ token์ ํ๊ท ๊ฐ์๊ฐ ์ ๊ณ , OOV ๋ฌธ์ ๊ฐ ์์ด ์์ ๋ ์ข ๋ฅ์ ๋จ์ ์ ํด๊ฒฐํ ๋ฐฉ์์ด๋ค. ๋ํ ์๋ฏธ๋ฅผ ๊ธฐ์ค์ผ๋ก tokenization์ ์ํํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ธ์ด ์๋ฏธ๋ฅผ ์ดํดํ ์ ์์ด ๋์ ์ ํ๋๋ฅผ ๋ณด์ธ๋ค.
Subword-level Tokenization์ ๋ํ์ ์ธ ์์์ด๋ค. ์์ ํจ๊ป ๊ณผ์ ์ ์ดํด๋ณด๋๋ก ํ์.
['low', 'lower', 'newest', 'widest']๋ผ๋ ๋จ์ด ๋ชฉ๋ก์ด ์๋ค๊ณ ํ์.
์ฒ ์ ๋จ์์ subword ๋ชฉ๋ก์ ๋ง๋ ๋ค.
['l', 'o', 'w', 'e', 'r', 'n', 's', 't', 'i', 'd']
์ฐ์ํด์ ๋ฑ์ฅํ๋ ์ฒ ์๋ค์ pair ์ค ๊ฐ์ฅ ๋น๋์๊ฐ ๋์ pair๋ฅผ token์ผ๋ก ์ถ๊ฐํ๋ค.
์ ๊ฒฝ์ฐ์์ lo๊ฐ ๋ ๋ฒ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ๋ค. ์ด pair๋ฅผ subword ๋ชฉ๋ก์ token์ผ๋ก ์ถ๊ฐํ๋ค.
['l', 'o', 'w', 'e', 'r', 'n', 's', 't', 'lo']
์ถ๊ฐ๋ pair๋ฅผ ์ฒ ์๋ก ํฌํจํ์ฌ ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
์ข
๋ฃ ์กฐ๊ฑด์ ํน์ ํ์๋งํผ loop๋ฅผ ๋ฐ๋ณตํ๊ฑฐ๋, subword ๋ชฉ๋ก์ด ์ผ์ ํฌ๊ธฐ์ ๋๋ฌํ์ ๋๋ก ์ค์ ํ ์ ์๋ค.
Byte-Pair Encoding ๋ฐฉ์๊ณผ ์ ์ฌํ๋ฐ, ์ฐ์ํด์ ๋ฑ์ฅํ๋ token์ pair๋ฅผ ์ ํํ ๋ ๋ฑ์ฅํ๋ ๋น๋์๊ฐ ์๋๋ผ, ๊ทธ์ ๊ธฐ๋ฐํ likelihood๋ฅผ ์ฌ์ฉํ๋ค. Google์์ ๋ง๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, BERT๋ฅผ ํ์ตํ ๋ ์ฌ์ฉ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ, ์ฝ๋๊ฐ ๊ณต๊ฐ๋์ง ์์ ์ด๋ก ์ ์ผ๋ก ์ค๋ช ํ๋ ๊ณณ์ด ๋ง๋ค.
์ฌ๊ธฐ์๋ ['low', 'lower', 'newest', 'widest']๋ผ๋ ๋จ์ด ๋ชฉ๋ก์ด ์๋ค๊ณ ํ์.
['l', '##o', '##w', '##e', '##r', 'n', '##s', '##t', 'w', '##i', '##d']##๊ณผ ๊ฐ์ ํ์๋ฅผ ํ๋ค๋ ๊ฒ์ด๋ค.WordPiece ์๊ณ ๋ฆฌ์ฆ์ score๋ฅผ ๊ณ์ฐํ๋ ๋ถ๋ถ์์ BPE์ ์ฐจ์ด๊ฐ ์๋ค. ์์๋ง ๋ดค์ ๋๋ low๋ผ๋ ์ํ์ด lower, lowest๋ผ๋ ๋น๊ต๊ธ, ์ต์๊ธ๋ณด๋ค score๊ฐ ๋๊ฒ ํ ๋น๋ ๊ฒ ๊ฐ์ ๋๋์ด ๋ค์ง๋ง ์ ํํ๋ ๋ชจ๋ฅด๊ฒ ๋ค..
์ฌ๊ธฐ์๋ ๊ณ์ฐ์ ํธ์๋ฅผ ์ํด ์๋์ ๊ฐ์ corpus๋ฅผ ์๋ก ๋ค๊ฒ ๋ค.
{"hugs bun": 4, "hugs pug": 1, "hug pug pun": 4, "hug pun": 6, "pun": 2}
key๋ ์์ ๋ฌธ์ฅ์ด๊ณ , value๋ ๋น๋ ์์ด๋ค.
๋์ด์ฐ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋จ์ด๋ฅผ ๊ตฌ๋ถํ๋ค. Word-level Tokenization์ ์ํํ๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉํ๋ค. ํ์ง๋ง ์ด๋ฅผ token์ผ๋ก ์ฌ์ฉํ์ง๋ ์๋๋ค.
{"hug": 10, "pug": 5, "pun": 12, "bun":4, "hugs":5}
๊ฐ ๋จ์ด์ ๋ชจ๋ substring์ vocab์ ์ถ๊ฐํ๋ค.
์๋ฅผ ๋ค์ด hug์ ๋ํ์ฌ h, u, g, hu, ug, hug๊ฐ ๋ชจ๋ token์ด ๋๋ ๊ฒ์ด๋ค.
['h', 'u', 'g', 'p', 'n', 's', 'hu', 'ug', 'pu', 'un', 'gs', 'hug', 'pug', 'pun', 'bun', 'ugs', 'hugs']
๊ฐ token๋ค์ ๋ฑ์ฅ ๋น๋์๋ฅผ ๊ตฌํ๋ค.
{'h': 15, 'u': 36, 'g': 20, 'hu': 15, 'ug': 20, 'p': 17, 'pu': 17, 'n': 16, 'un': 16, 'b': 4, 'bu': 4, 's': 5, 'hug': 15, 'gs': 5, 'ugs': 5}
token๋ค์ ์กฐํฉํด์ ๊ฐ ๋จ์ด๊ฐ ์์ฑ๋ probability๋ฅผ ๊ตฌํ๋ค. ์ด๋ ๊ฐ token๋ค์ ํ๋ฅ ์ ๋
๋ฆฝ์ด๋ผ๊ณ ๊ฐ์ ํ๊ณ ํ๋ฅ ์ ๊ณฑํด์ ํด๋น probability๋ฅผ ๊ตฌํ๋ค.
์๋ฅผ ๋ค์ด pug๋ฅผ ๋ง๋ค๊ธฐ ์ํด ๋ชจ๋ ๊ฐ๋ฅํ ์กฐํฉ์ ํ๋ฅ ์,
['p', 'u', 'g'] = 0.000389, ['pu', 'g'] = 0.0022676, ['p', 'ug'] = 0.0022676์ด๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก pug๋ pu g ๋๋ p ug๋ก tokenization ํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
๋ชจ๋ ๋จ์ด์ ๋ํด ํ๋ฅ ์ ๊ตฌํ๋ฉด ์๋์ ๊ฐ๋ค.
'hug': ['hug'] (prob 0.071428)
'pug': ['pu', 'g'] (prob 0.002267)
'pun': ['pu', 'n'] (prob 0.006168)
'bun': ['bu', 'n'] (prob 0.001451)
'hugs': ['hug', 's'] (prob 0.001701)
๊ฐ ๋จ์ด๋ค์ probability๋ฅผ ์ฌ์ฉํด์ ํ์ฌ์ score๋ฅผ ๊ณ์ฐํ๋ค. score๋ negative log likelihood๋ฅผ ์ฌ์ฉํ๋ค.
๋ฐ๋ผ์ ํ์ฌ์ score๋ ์ด๋ค.
ํ์ฌ์ vocab์์ ํ์ํ์ง ์์ p%์ token์ ์ ๊ฑฐํ๋ค. token์ ์ ๊ฑฐํ๋ ๊ธฐ์ค์, ํด๋น token์ด ์ ๊ฑฐ๋์์ ๋ ํ์ฌ์ score์์ ๋ฐ์ํ๋ loss๊ฐ ์ต์ํ๋๋ token์ด๋ค.
์๋ฅผ ๋ค์ด, 4๋ฒ์์ p ug๋ก tokenization์ ์ํํด๋ ๊ฐ์ score๋ฅผ ๊ฐ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ํ์ฌ์ vocab์์ pu๋ ์ญ์ ๋์ด๋ ๊ด์ฐฎ๋ค๊ณ ํ๋จํ๋ค.
์ด๋ p%์ p๋ ํ์ดํผํ๋ผ๋ฏธํฐ๋ก, ์ ์ ํ ์ค์ ํ๋ค.
์ด ๊ณผ์ ์ ์ํ๋ vocab size๊ฐ ๋ ๋๊น์ง, ํน์ ์ํ๋ ๋ฐ๋ณต ํ์๋งํผ ๋ฐ๋ณตํ๋ค.
๊ณผ์ ์ด ๊ธธ๊ณ ๋ณต์กํ๊ธฐ์ ์ฅ๋จ์ ์ ์ดํด๋ณด์.
pros ๋ชจ๋ substring์ ์ ๋ถ ๊ณ ๋ คํ vocab์ผ๋ก๋ถํฐ ์์ํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ token๋ค์ ๋ชจ๋ ์กฐํฉํ ์ ์๋ค.
cons ๋ชจ๋ ์กฐํฉ์ ๋ค ๊ณ ๋ คํ๊ธฐ ๋๋ฌธ์ ๊ณ์ฐ ๊ณผ์ ์ด ๋ง๊ณ , ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ๋ํ ๊ฐ token์ ์กฐํฉํ์ฌ ๋จ์ด๋ฅผ ์์ฑํ ๋ token๋ค์ด ๋
๋ฆฝ์ด๋ผ๊ณ ๊ฐ์ ํ๋๋ฐ, ์ด๋ ํ์ค ์ธ๊ณ์ ๋ถํฉํ์ง ์๋๋ค. (Ex. ์์ด์์๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ q ๋ค์ u๊ฐ ์์ผ ํจ)
๋น์ง๋ํ์ต ๋ฐฉ์์ผ๋ก ์ํ๋๋ tokenizer์ด๋ค. BPE ๋ฐฉ์๊ณผ Unigram ๋ฐฉ์์ ํฌํจํ๊ณ ์์ผ๋ฉฐ, ์ธ์ด์ ์ข
๋ฅ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ tokenization์ ์ํํ ์ ์๋ค๊ณ ํ๋ค.
SentencePiece ํ์ต๋ฒ์ ๋ถํฌ ์ถ์ (Variational Inference)์ ์ผ์ข
์ผ๋ก, ๊ด์ธก ๋ฐ์ดํฐ(evidence)์ ๋ชจ๋ธ ํ๋ผ๋ฏธํฐ(theta)๊ฐ ์์ ๋ ๊ฐ์ค์ ๋ํ ๋ถํฌ P๋ฅผ virational parameter๋ฅผ ๋์
ํด Q๋ก ๊ทผ์ฌํ๋ ๊ฒ์ด๋ค. ๊ทผ์ฌ๋ฅผ ํ๋ ์ด์ ๋ ๋ถํฌ P ์์ฒด๋ฅผ ์ฐพ์๋ด๋ ๊ฒ์ด ๋งค์ฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ด๋ค.
๋ถํฌ ์ถ์ ์ด๋, ์ฃผ์ฌ์๋ฅผ ๊ตด๋ ธ์ ๋ ์ด๋ค ์ซ์๊ฐ ๋์ฌ ํ๋ฅ ์ ๋ชจ๋ ์คํ์ ํตํด ๊ตฌํ ์ ์์ ๋ ์ด๋ฅผ ์ผ๋ก ์ถ์ ํ๋ ๊ณผ์ ์ ์๊ฐํ๋ฉด ๋๋ค. MLE, MAP ๋ํ ๋ถํฌ ์ถ์ ์ ๋ฐฉ์์ด๋ค.
์ด๋ ค์ฐ๋๊น ์ฝ๋๋ก ์ํํ๋ ๋ฐฉ์์ ์์๋ณด์...
์ํ ๋ฐ์ดํฐ๋ ๋ค์ด๋ฒ ์ํ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ์ ์ ์ฌ์ฉํ๋ค. ๋งํฌ
pip install sentencepiceimport sentencepice as spm
spm.SentencePiece.Trainer.train(input={txt_file_path}, model_prefix='mymodel', vocab_size=8000, model_type='bpe')
sp = spm.SentencePieceProcessor(model_file='mymodel.model')
ํ์ํ ์ธ์๋ ์๋์ ๊ฐ๋ค.
input: txt ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์
๋ ฅํ๋ค. ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์ ์ฒ๋ฆฌ ์์ด ๋ฐ๋ก ์
๋ ฅํด์ฃผ๊ธฐ๋ง ํด๋ ์์์ tokenization์ ์ํํ๋ค.
model_prefix: tokenization์ ์ํ ํ ์์ฑํ ๋ชจ๋ธ์ ์ด๋ฆ์ด๋ค. ์ง์ ํ ์ด๋ฆ์ .model๊ณผ .vocab์ด ์์ฑ๋๋ค.

vocab_size: ์์ฑํ vocab์ ํฌ๊ธฐ์ด๋ค. ์ .vocab์ ํฌํจ๋ token์ ๊ฐ์๋ฅผ ์ง์ ํ๋ค.
model_type: ์ ์ฉํ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ํ๋ค. bpe, unigram, char, word๊ฐ ์๋ค.
sentences = ["์์ ๋ฌธ์ฅ 1", "์์ ๋ฌธ์ฅ 2", ...]
# sentences to tokens
tokens = sp.encode(sentences, out_type=str)
# tokens to sentences
backToSentences = sp.decode(tokens)
์ง์ ์ธ์ฝ๋ฉํ๊ณ ๋์ฝ๋ฉํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ๋ค.
์ผ์ชฝ๋ถํฐ ์์๋๋ก ์๋ ๋ฌธ์ฅ, token, ๋ณต์ํ ๋ฌธ์ฅ์ด๋ค.

์ฐธ๊ณ
๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์ ๋ฌธ: 13-01 ๋ฐ์ดํธ ํ์ด ์ธ์ฝ๋ฉ
Hugging Face: WordPiece tokenization
Hugging Face: Unigram tokenization
velog.io/@gibonki77/SentencePiece
Naver Sentiment Movie Corpus v1.0
์์ ๊ณต๋ถํ Tokenization์ ์ํ ํ ๊ฐ token์ ๋ถ์ฌ๋ index๋ฅผ ๊ธฐ๋ฐ์ผ๋ก One-Hot Vector๋ก ํํํ๋ ๊ฒ์๋ ๋ ๊ฐ์ง ํน์ง์ด ์๋ค.
1 ๋จ์ํ index๋ฅผ One-Hot์ผ๋ก ํํํ๊ธฐ ๋๋ฌธ์ ๋จ์ํ๋ค.
2 token ๊ฐ์๋งํผ์ dimension์ด ํ์ํ๊ณ , token ๊ฐ ๊ฑฐ๋ฆฌ๊ฐ ๋ชจ๋ ๋์ผํ๋ค.
๋จ์ ์ ์ค๋ช
ํ 2 ๋๋ฌธ์ Word Embedding ๋ฐฉ์์ด ์ ์๋์๋ค. ์ฌ๊ธฐ์ One-Hot Vector๋ก ํํํ๋ ๋ฐฉ์์ Sparse Representation์ด๋ผ๊ณ ํ๋๋ฐ, Word Embedding์ผ๋ก ํํํ๋ ๋ฐฉ์์ ๋ค์ฐจ์์ผ๋ก ์์ถํ์ฌ ํํํ๊ธฐ ๋๋ฌธ์ Dense Representation์ด๋ผ๊ณ ํ๋ค.
Word Embedding ๋ฐฉ๋ฒ๋ก ์ผ๋ก๋ LSA, Word2Vec, FastText, Glove ๋ฑ์ด ์๋ค. ๊ฐ์ฅ ๋ํ์ ์ธ Word2Vec์ ์ดํ๋ณด๋๋ก ํ์.
Distributed Representation
์์ ๋จ์ด๋ฅผ One-Hot Vector๋ก ํํํ์ง ์๊ณ ์์๋ค์ด ๋ฐ์งํ ํํ์ ๋ฒกํฐ๋ก ํํํ๋ ๋ฐฉ์์ Dense Representation์ด๋ผ๊ณ ํ๋ค. ์ด Dense Representation ๋ด์์ ๋จ์ด์ ์๋ฏธ๋ฅผ ์ฌ๋ฌ ์ฐจ์์ ๋ถ์ฐํ๋ ๊ฒ์ Distributed Representation์ด๋ผ๊ณ ํ๋ค.
Distributed Representation์ด ๋๊ธฐ ์ํด์๋ ๋น์ทํ ๋ฌธ๋งฅ์์ ๋ฑ์ฅํ๋ ๋จ์ด๋ค์ ๋น์ทํ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค๋ ๊ฐ์ ์์ ์์ํ๋ค. ์๋ฅผ ๋ค์ด, ์์ด์ (์ฌ์ฌ ON)๋ ์์๋ค, ๊ท์ฝ๋ค๋ผ๋ ๋จ์ด์ ์์ฃผ ๋ฑ์ฅํจ์ ๋ฐ๋ผ ์์๋ค์ ๊ท์ฝ๋ค๋ฅผ ๋ฒกํฐํํ์ ๋ ๋์ ๊ฑฐ๋ฆฌ๋ ๊ฐ๊น์ธ ๊ฒ์ด๋ค.
Word2Vec์ ํ์ต ๋ฐฉ์์๋ CBOW์ Skip-Gram ๋ ๊ฐ์ง๊ฐ ์๋ค. CBOW๋ ์ฃผ๋ณ ๋จ์ด๋ฅผ ์ ๋ ฅ์ผ๋ก ์ค๊ฐ์ ๋จ์ด๋ฅผ ์์ธกํ๋ ํ์ต ๋ฐฉ์์ด๊ณ , Skip-Gram์ ์ค๊ฐ ๋จ์ด๋ค์ ์ ๋ ฅ์ผ๋ก ์ฃผ๋ณ ๋จ์ด๋ค์ ์์ธกํ๋ ๋ฐฉ๋ฒ์ด๋ค.
CBOW
์์๋ก The cat sits on the mat๋ผ๋ ๋ฌธ์ฅ์ด ์๋ค๊ณ ํ์. ์ด๋ window_size=2๋ผ๋ฉด, target์ด ๋๋ ๋จ์ด์ ์๋ค๋ก 2๊ฐ์ฉ์ด ์ฃผ๋ณ ๋จ์ด(context)๊ฐ ๋๋ค. ์ฆ, ์ฃผ๋ณ ๋จ์ด๋ 2*window_size๊ฐ๊ฐ ๋๋ ๊ฒ์ด๋ค. center word์ context word๋ฅผ ์ง์ง์ด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
The: [[pad], [pad], cat, sits]
cat: [[pad], The, sits, on]
sits: [The, cat, on, the]
on: [cat, sits, the, mat]
the: [sits, on, mat, [pad]]
mat: [on, the, [pad], [pad]]
์ด๋ ๊ฒ window_size๋งํผ window๋ฅผ ์์ผ๋ก ์ด๋ํด๊ฐ๋ฉฐ ๋ฐ์ดํฐ์
์ ๋ง๋๋ ๊ฒ์ sliding window๋ผ๊ณ ํ๋ค.
์ด๋ window_size๋ฅผ ์ถฉ์กฑํ์ง ๋ชปํ๋ ์ค์ฌ ๋จ์ด์ ๋ํด์๋ ์ง์ ์ง์ด padding์ ์ฃผ์์ง๋ง, corpus๊ฐ ์ถฉ๋ถํ ํฌ๋ค๋ฉด ์ด ๋จ์ด๋ค์ ์ญ์ ํด๋ ๋ฌด๋ฐฉํ๊ณ , ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ชจ๋ ์ค์ฌ ๋จ์ด์ ๊ธธ์ด๋ฅผ ๋์ผํ๊ฒ ํ๊ธฐ ์ํด The: [cat sits on the]์ ๊ฐ์ด ๋จ์ด๋ฅผ ์ถ๊ฐํด์ค๋ ๋๋ค.
์ด๋ ๊ฒ ๋ฐ์ดํฐ์
์ ์ฒ๋ฆฌ๋ฅผ ๋ง์น๊ณ ๋ชจ๋ธ์ ์
๋ ฅํ๋ค.

projectionํ๋ ๊ณผ์ ์ ๋ ์์ธํ ๋ณด๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.

v๋ projection layer์์์ ๋ฒกํฐ์ ํํ์ด๋ค. 1xd์ shape(d๋ ์์์ ์ค๋ช
ํ๋ M)์ ๊ฐ์ง๋ฉฐ, ์๋์ธต์ด ํ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ shallow neural network๋ผ๊ณ ํ๋ค. ๋ํ ์์ธกํ ๋จ์ด์ ๋งคํ๋๋ look-up table์ด๋ผ๊ณ ํ๋ค. ์ด๋ ํ์ฑํ ํจ์๊ฐ ์ฌ์ฉ๋์ง ์๋๋ฐ, ์ด๋ ๋จ์ด ๊ฐ ์ ํ์ฑ์ ์ ์งํ๊ธฐ ์ํจ์ด๊ธฐ๋ ํ๊ณ , ๋น์ ํ์ ์ถ๊ฐํจ์ผ๋ก์จ ๋จ์ด ๊ฐ ๊ฑฐ๋ฆฌ ์ ๋ณด๊ฐ ์ฌ๋ผ์ง์ง ์๋๋ก ํ๊ธฐ ์ํจ์ด๊ธฐ๋ ํ๋ค.

z๋ 1xV์ shape์ ๊ฐ์ง๋ฉฐ, softmax๋ฅผ ํตํด ์๋์ ์ธ ํ๋ฅ ๊ฐ์ผ๋ก ๋ณํ๋๋ค. ์ด๋ฅผ ์ค์ ์ ๋ต๊ฐ๊ณผ ๋น๊ตํ์ฌ cross entropy loss๋ฅผ ์์คํจ์๋ก ํ์ฌ ์ ๋ฅผ ํ์ตํ๋ค.
ํ์ต์ด ์๋ฃ๋ ์ ๋ฅผ ๋ชจ๋ embedding vector๋ก ์ฌ์ฉํ๊ธฐ๋ ํ๊ณ , M์ฐจ์์ ํฌ๊ธฐ๋ฅผ ๊ฐ๋ ํ๋ ฌ์ ํ๋ง์ ์ฌ์ฉํ๊ธฐ๋ ํ๋ค.
Skip-Gram
Skip-Gram์ ์ค์ฌ ๋จ์ด๋ก๋ถํฐ ์ฃผ๋ณ ๋จ์ด๋ฅผ ์์ธกํ๋ค.
์์ ์๋ฌธ The cat sits on the mat๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ์ฌ ์ง์ ์ง์ด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
sits: [The]
sits: [cat]
sits: [sits]
sits: [on]
on: [cat]
on: [sits]
on: [the]
on: [mat]
CBOW์ ๋นํด์ ์ฃผ๋ณ ๋จ์ด๋ค์ ๊ธธ์ด๊ฐ ๋ํญ ์ค์๋ค. ๋ฐ๋ผ์ projection layer์์ ํ๊ท ์ ๊ตฌํ๋ ๊ณผ์ ์ด ์๋ค.
์ฐ๊ตฌ ๊ฒฐ๊ณผ Skip-Gram์ด CBOW๋ณด๋ค ์ฑ๋ฅ์ด ์ข๋ค๊ณ ์๋ ค์ ธ ์๋ค. ์ด๋ Skip-Gram์ด ๋ณด๋ค ๋ณต์กํจ์ ๋ฐ๋ผ ๋จ์ด ํ๋๊ฐ ๋ค๋ฅธ ๋จ์ด์์ ๊ด๊ณ๋ฅผ ๋ ๋ง์ด ๋ฐฐ์์๋ผ๊ณ ์๊ฐํด๋ณผ ์ ์๋ค.
์ฐธ๊ณ
๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์ ๋ฌธ: 09-02 ์๋ํฌ๋ฒกํฐ