Tokenization - ํ ํฐํ
1. ํ ํฐํ๋?
๐ก ๋ฌธ์ฅ์ ํ ํฐ ์ํ์ค๋ก ๋๋๋ ๊ณผ์ → ๋ฌธ์, ๋จ์ด, ์๋ธ์๋๋ฑ 3๊ฐ์ง ๋ฐฉ๋ฒ
- ํ ๊ทผํ๋ฅผ ์ํํ๋ ํ๋ก๊ทธ๋จ์(Tokenizer)๋ผ๊ณ ํ๋ค.
- ํ ๊ทผํ ๋ฐฉ์์๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ → ๋จ์ด(์ด์ ), ๋ฌธ์, ์๋ธ์๋(Subword) ๋จ์
๋จ์ด ๋จ์ ํ ํฐํ
๊ณต๋ฐฑ์ผ๋ก ๋ถ๋ฆฌ
- ์ฅ์ : Tokenizer๋ฅผ ์ฌ์ฉํ๋ฉด ์ดํ ์งํฉ์ด ์ปค์ง๋๊ฑฐ ์ํ
๐ก Example
- ์์ ํ๋ข์ผ๋ก ํ ํฐํ → ๊ทธ๋ ๋ค๊ณ ์์ ํ๋ข ๊ฐ์ Tokenizer ์ฌ์ฉํด์
- ์ดํ์งํฉ ํฌ๊ธฐ๊ฐ ์ปค์ง๋๊ฑด ๋ง๊ธฐ ์ด๋ ค์ (์ดํ ์งํฉ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก..)
๋ฌธ์ ๋จ์ ํ ๊ทผํ
๐ก ๋ฌธ์ ๋จ์ → ๋ชจ๋ ๋ฌธ์๋ฅผ ์ดํ ์งํฉ์ ํฌํจํจ์ผ๋ก ๋ฏธ๋ฑ๋ก ํ ํฐ ๋ฌธ์๋ก๋ถํฐ ์์ ๋กญ๋ค.
๋ฏธ๋ฑ๋ก ํ ํฐ: ์ดํ ์งํฉ์ ์๋ ํ ํฐ - ์ ์กฐ์ด๋ฑ ์์ ๋ฐ์
- ๋จ์ : ๊ฐ ๋ฌธ์ Token์ด ์๋ฏธ์๋ ๋จ์๊ฐ ๋๊ธฐ ์ด๋ ค์.
- ํ ํฐ ์ํ์ค์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง → ๋ชจ๋ธ์ด ํ์ตํ๊ธฐ ์ด๋ ค์ & ์ฑ๋ฅ ์ ํ
์๋ธ์๋ ๋จ์ ํ ํฐํ
๐ก๋จ์ ํ ํฐํ๋ ๋จ์ด์ ๋ฌธ์ ๋จ์ ํ ํฐํ์ ์ค๊ฐ์ ์๋ ํํ → ๋จ์ด, ๋ฌธ์ ๋จ์๋ค์ ์ฅ์ ๋ง ๊ฐ์ ธ์ด
- ์ดํ ์งํฉ ํฌ๊ธฐ๊ฐ ์ปค์ง์ง ์์ & ๋ฏธ๋ฑ๋ก ํ ํฐ ๋ฌธ์ ํํผ & ํ ํฐ ์ํ์ค๊ฐ ์๊ธธ์ด ์ง๊ฒํจ
2. Byte Pair Encoding
๐ก ๋ฐ์ดํธ ํ์ด ์ธ์ฝ๋ฉ(Byte Pair Encoding, BPE)์ ์ฒ์์ ์ ๋ณด๋ฅผ ์์ถํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ ์
- But, ์ต๊ทผ์๋ ์์ฐ์ด ์ฒ๋ฆฌ ๋ชจ๋ธ์ ๋๋ฆฌ ์ฐ์ด๊ณ ์๋ ํ ํฐํ ๊ธฐ๋ฒ์ ๋๋ค.
- GPT ๋ชจ๋ธ์ BPE ๊ธฐ๋ฒ์ผ๋ก ํ ํฐํ๋ฅผ ์ํํ๋ฉฐ, BERT ๋ชจ๋ธ์ BPE์ ์ ์ฌํ ์๋ํผ์ค(wordpiece)๋ฅผ ํ ํฌ๋์ด์ ๋ก ์ฌ์ฉ
๋ฐ์ดํฐ์์ ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ ๋ฌธ์์ด์ ๋ณํฉํด์ ๋ฐ์ดํฐ๋ฅผ ์์ถํ๋ ๊ธฐ๋ฒ
Example) aaabdaabac → aa(Z) → ZabdZabac
๐ก BPE ํ์ฉํ Tokenizer ์ ์ฐจ → 1. ์ดํ ์งํฉ ๊ตฌ์ถ, 2. ํ ํฐํ
BPE ์ดํ ์งํฉ ๊ตฌ์ถํ๊ธฐ
- ์ดํ์งํฉ์ ๋ง๋๋ฌ๋ฉด ๋ง๋ญ์น ํ์ → ๋ง๋ญ์น์ ๋ชจ๋ ๊ณต๋ฐฑ์ ๊ณต๋ฐฑ์ผ๋ก ๋๋ ์ค: Pre-Tokenize ๋ผ๊ณ ํจ
- ์์ → BPE ๋ฌธ์ ๋จ์ํ: b,g,h,n,p,s,u, ์ฌ๊ธฐ ๋ฌธ์ 7๊ฐ๋ก๋ ๋ชจ๋ ํ ํฐ ํํ ๊ฐ๋ฅ
- b,g,h,n,p,s,u, ์ฌ๊ธฐ ๋ฌธ์ 7๊ฐ๋ก๋ ๋ชจ๋ ํ ํฐ ํํ ๊ฐ๋ฅ
๐ก ๋ชฉ์ ์ ๋ฐ๋ผ ๋น๋์๊ฐ ๋ฌ๋ผ์ง์๋, ํ ํฐ์ 2๊ฐ๋ ์๋๋ฉด ๋ฐ์ด๊ทธ๋จ ์์ด ๊ฐ์๊ฒ ๋ผ๋ฆฌ ๋น๋๋ฅผ ํฉ์ณ์ค์ ์ดํ ์งํฉ์ ๋ง์ถฐ์ ํ ํฐํ ํด์ ๋น๋ ์ธก์ ๊ฐ๋ฅ
- ๋ฐ์ด๊ทธ๋จ ์ ๋ณํฉ ์ด๋ ฅ, ๋น๋๊ฐ ์ ์ผ ๋ง์๊ฒ๋ค๋ง ๋ด์ฉ ๊ทธ๋๋ merges.txt ํํ๋ก ์ ์ฅ
BPE ํ ํฐํ
- ์ดํ ์งํฉ & ๋ณํฉ ์ฐ์ ์์๊ฐ ์์ผ๋ฉด ํ ํฐํ๊ฐ ๊ฐ๋ฅ. ๋ถ๋ฆฌ๋ ํ ํฐ์ ๊ฐ์ง๊ณ BPE ํ ํฐํ๋ฅผ ์ํ
- ex) pug
ํ ํฐํ ์์ ์์
pug๋ฅผ ๋ฌธ์๋จ์๋ก ๋ถ๋ฆฌ. pug → p, u, g
merges.txt (๋ณํฉ ์ฐ์ ์์)์ฐธ๊ณ ํด์ ์ฐ์ ์์ ๋ถ์ฌ
- p, u : merges.txt์ ์กด์ฌํ์ง ์์ (=์ฐ์ ์์ ์์)
- u, g : merges.txt์์ ์ฒซ๋ฒ์งธ ์ฐ์ ์์. u, g์ ์ฐ์ ์์๊ฐ ๋์ผ๋ฏ๋ก ๋์ ํฉ์ณ์ค๋ค.
- p, u, g → p, ug
- merges.txt (๋ณํฉ ์ฐ์ ์์) ์ฐธ๊ณ ํด์ ๋ค์ ์ฐ์ ์์ ๋ถ์ฌ
- p, ug : ํด๋น ๋ฐ์ด๊ทธ๋จ ์์ด merges.txt์ ์กด์ฌํ์ง ์์ (=์ฐ์ ์์ ์์) → ๊ทธ๋ฌ๋ฉด ๋ณํฉ ๊ทธ๋ง๋ .
- ๊ทธ๋ฆฌ๊ณ , ์ดํ ์งํฉ(vocab.json)์ด ์๋์ง๋ฅผ ๊ฒ์ฌ. ๋๋ค ์์ผ๋ฉด pug์ ํ ํฐํ ์ต์ข ๊ฒฐ๊ณผ๋ p, ug
์๋ํผ์ค
๐ก ๋ง๋ญ์น์์ ์์ฃผ ๋ฑ์ฅํ ๋ฌธ์์ด์ ํ ํฐ์ผ๋ก ์ธ์ํ๋ค๋ ์ ์์ BPE์ ๋ณธ์ง์ ์ผ๋ก ์ ์ฌ. ๋ค๋ง, ์ดํ ์งํฉ์ ๊ตฌ์ถํ ๋ ๋ฌธ์์ด์ ๋ณํฉํ๋ ๊ธฐ์ค์ด ๋ค๋ฆ
- ์๋ ํผ์ค → BPE์ฒ๋ผ ๋จ์ํ ๋น๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณํฉํ๋ ๊ฒ์ด ์๋๋ผ, ๋ณํฉํ์ ๋ ๋ง๋ญ์น์ **์ฐ๋(likelihood)**๋ฅผ ๊ฐ์ฅ ๋์ด๋ ์์ ๋ณํฉ
- ๋ณํฉ ํ๋ณด๊ฐ a,b์ผ๋ ํ๋จ์ ๊ทผ๊ฑฐ๊ฐ ๋๋ ๊ฐ์ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ
๐ก #a, #b, #ab๋ ๊ฐ๊ฐ a,b,ab๋ผ๋ ๋ฌธ์์ด์ ๋น๋์, n์ ์ ์ฒด ๊ธ์์๋ฅผ ๊ฐ๋ฆฌํด. ๋ถ์๋ ab๊ฐ ์ฐ์ด์ด ๋ฑ์ฅํ ํ๋ฅ , ๋ถ๋ชจ๋ a,b๊ฐ ๊ฐ๊ฐ ๋ฑ์ฅํ ํ๋ฅ ์ ๊ณฑ
- ์ด ์์ ๊ฐ์ด ์ปค์ง๋ ค๋ฉด? a,b๊ฐ ๋ ๋ฆฝ & ์์ฃผ ๋์์ ๋ฑ์ฅํด์ผํจ
- ์๋ํผ์ค๋ ๋ณํฉ ํ๋ณด์ ์ค๋ฅธ ์์ ๋ฏธ๋ฆฌ ๋ณํฉํด๋ณด๊ณ ์๋๊ฒ & ๊ฐ์น ๋ฑ์ ํ๋จํ ๋ณํฉ → ๊ณ์ฐ ๊ฐ์ด ๊ฐ์ฅ ๋์ ์์ ํฉ์นจ.
- ๊ทผ๋ฐ, BPE์๋ ๋ฌ๋ฆฌ, ์๋ํผ์ค๋ ์ดํ ์งํฉ(vocab.txt)๋ง ๊ฐ์ง๊ณ ํ ํฐํ.
- ์๋ํผ์ค๋ ๋ถ์๋์์ค ์ดํ์งํฉ์ ์๋ ์๋ธ์๋๊ฐ ํฌํจ์ ํด๋น ์๋ธ์๋๋ฅผ ์ด์ ์์ ๋ถ๋ฆฌ→ ๊ณ์ ๋ฐ๋ณต.
- ๋จ ์๋ธ์๋ ํ๋ณด๊ฐ ์ฌ๋ฌ๊ฐ๋ฉด, ์ ์ผ ๊ธด๊ฑธ ์ ํ. ๊ทธํ, ๋๋จธ์ง ์ดํ์งํฉ์ ์๋ ์๋ธ์๋์ค ์ ์ผ ๊ธด๊ฑฐ ์ฐพ๊ณ ๋ถ๋ฆฌ
- (๋ง์ฝ ์๋ธ์๋ ํ๋ณด๊ฐ ํ๋๋ ์์ผ๋ฉด ํด๋น ๋ฌธ์์ด ์ ์ฒด๋ฅผ ๋ฏธ๋ฑ๋ก ๋จ์ด๋ก ์ทจ๊ธ)
'๐ NLP (์์ฐ์ด์ฒ๋ฆฌ) > ๐ Natural Language Processing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NLP] Seq2Seq, Encoder & Decoder (0) | 2024.01.19 |
---|---|
[NLP] Pre-Trained Language Model - ๋ฏธ๋ฆฌ ํ์ต๋ ์ธ์ด๋ชจ๋ธ (0) | 2024.01.18 |
[NLP} Tokenization - ํ ํฐํํ๊ธฐ (0) | 2024.01.18 |
[NLP] Building a vocabulary set - ์ดํ ์งํฉ ๊ตฌ์ถํ๊ธฐ (0) | 2024.01.18 |
[NLP] ์ฒ์ ๋ง๋๋ ์์ฐ์ด ์ฒ๋ฆฌ & Transfer Learning (0) | 2024.01.16 |