์๋ ํ์ธ์, ์ค๋์ ์์ฐ์ด์ฒ๋ฆฌ์ ๊ฐ์ฅ ๊ธฐ์ด์ ํด๋นํ๋ Tokenization ์ ๋ํด ์ดํด๋ณด๊ณ ๊ฐ ๋ฐฉ๋ฒ๋ก ๋ค์ ํต์ฌ ์์ด๋์ด๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค! ํ ์คํธ๋ฅผ ์๊ฒ ์ชผ๊ฐ๋ ๊ธฐ์ ์ด ์ด๋ป๊ฒ ์ปดํจํฐ๊ฐ ์ธ๊ฐ์ ์ธ์ด๋ฅผ ์ดํดํ๋๋ก ๋๋์ง ํจ๊ป ํ์ธํด๋ด ์๋ค.
ํ ํฐํ๋ ๋ฌด์์ผ๊น์? ๐ค
ํ ํฐํ๋ ๊ธด ๋ฌธ์ฅ์ ์์ ์กฐ๊ฐ์ผ๋ก ๋๋๋ ๊ณผ์ ์ด์์. ๋ง์น ํฐ ์ผ์ดํฌ๋ฅผ ๋จน๊ธฐ ์ข๊ฒ ์๋ฅด๋ ๊ฒ์ฒ๋ผ์! ์ด๋ ๊ฒ ๋๋ ์กฐ๊ฐ๋ค์ 'ํ ํฐ'์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
์๋ฅผ ๋ค์ด๋ณผ๊น์?
"์๋
ํ์ธ์, ์ค๋ ๋ ์จ๊ฐ ์ฐธ ์ข๋ค์!"
→ ["์๋
ํ์ธ์", ",", "์ค๋", "๋ ์จ๊ฐ", "์ฐธ", "์ข๋ค์", "!"]
Tokenization์ ๋ฌธ์ฅ์ด๋ ๋ฌธ์๋ฅผ ๋ชจ๋ธ์ด ์ฒ๋ฆฌํ ์ ์๋ ์์ ๋จ์, ์ฆ ํ ํฐ๋ค๋ก ๋ถํ ํ๋ ๊ณผ์ ์ ๋งํฉ๋๋ค. ์ด ๊ณผ์ ์ ํ๋ฅ ๋ชจ๋ธ์ด๋ ์ ๊ฒฝ๋ง ๋ชจ๋ธ์ด๋ ๊ฐ์, ๊ธฐ๊ณ๊ฐ ์ดํดํ ์ ์๋ ํํ๋ก ์ฌ๋ณผ ์ํ์ค๋ฅผ ์ ๋ ฅ์ผ๋ก ์ ๊ณตํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
ํ ํฐํ ๋ฐฉ๋ฒ๋ค ๐ญ
ํ ํฐํ๋ฅผ ํตํด ๋ฌธ์ฅ ๋๋ ๋ฌธ์๋ฅผ ์ด๋ป๊ฒ ๋ถ์ ํํ์ฌ ๋ชจ๋ธ๋งํ ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ ์์ฐ์ด ์ฒ๋ฆฌ ๋ถ์ผ์์ ์ค๋ซ๋์ ๊ณ ๋ฏผ๋์ด ์จ ์ฃผ์ ์ ๋๋ค. ์ด์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ฐ์ง ํ ํฌ๋์ด์ ์ด์ ๋ฐฉ๋ฒ์ด ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ๊ฐ ๋ฐฉ๋ฒ์ ํน์ ์ํฉ์ด๋ ์ธ์ด์ ๋ ์ ํฉํ ์ ์์ต๋๋ค. ๊ณผ๊ฑฐ๋ถํฐ ์ฌ์ฉ๋์ด ์จ ๋ค์ํ ํ ํฌ๋์ด์ ์ด์ ๋ฐฉ๋ฒ๋ค์ ๊ฐ๋จํ ์ ๋ฆฌํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
1. N-gram: ์ฐ์๋ ๋จ์ด๋ค์ ๋ฌถ์
N-gram์ ์ฐ์๋ N๊ฐ์ ๋จ์ด๋ฅผ ํ๋์ ํ ํฐ์ผ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ด์์.
์: "๋๋ ์ฌ๊ณผ๋ฅผ ์ข์ํด์"
- 1-gram: ["๋๋", "์ฌ๊ณผ๋ฅผ", "์ข์ํด์"]
- 2-gram: ["๋๋ ์ฌ๊ณผ๋ฅผ", "์ฌ๊ณผ๋ฅผ ์ข์ํด์"]
์ด๋ ํ ์คํธ ๋ด์์ ์์ดํ ์ ์ฐ์์ฑ์ ํฌ์ฐฉํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
2. Character: ํ ๊ธ์์ฉ ์ชผ๊ฐ๊ธฐ
์ด ๋ฐฉ๋ฒ์ ํ
์คํธ๋ฅผ ๊ฐ์ฅ ์์ ๋จ์์ธ ๋ฌธ์๋ก ๋๋ ์.
์: "์๋
" → ["์", "๋
"]
์ด๋ ๊ฐ๋ณ ๋ฌธ์๋ฅผ ๋
๋ฆฝ์ ์ธ ํ ํฐ์ผ๋ก ์ทจ๊ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ์ธ์ด์ ๊ตฌ์กฐ์ ํน์ฑ์ ๋ ๊ณ ๋ คํ๋ฉฐ, ๋งค์ฐ ์ธ๋ฐํ ์์ค์ ๋ถ์์ด ๊ฐ๋ฅํฉ๋๋ค.
3. Word: ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๋๋๊ธฐ
๊ฐ์ฅ ์ง๊ด์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก, ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๋จ์ด๋ฅผ ๋๋ ์.
์: "๋๋ ํ์์
๋๋ค" → ["๋๋", "ํ์์
๋๋ค"]
4. Morpheme: ์๋ฏธ์ ์ต์ ๋จ์๋ก ๋๋๊ธฐ
๋ฌธ์ฅ์ ๊ฐ์ฅ ์์ ์๋ฏธ ๋จ์์ธ ํํ์๋ก ๋๋๋ ๋ฐฉ๋ฒ์ด์์.
์: "๋๋ ํ์์
๋๋ค" → ["๋", "๋", "ํ์", "์ด๋ค"]
์ด๋ ํนํ ๊ตด์ ์ธ์ด ์ฒ๋ฆฌ์ ์ ํฉํฉ๋๋ค.
5. Subword: ์์ ์๋ฏธ ๋จ์๋ก ๋๋๊ธฐ
์์ฃผ ์ฌ์ฉ๋๋ ๋จ์ด์ ์ผ๋ถ๋ถ์ ํ ํฐ์ผ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ด์์.
์: "unbelievable" → ["un", "believe", "able"]
‘Byte Pair Encoding (BPE)’ ๋๋ ‘WordPiece’์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฌธ์์ ์กฐํฉ์ด๋ ๋จ์ด์ ๋ถ๋ถ์ ํ ํฐ์ผ๋ก ๋ถ๋ฆฌํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ด๋ ํจ์จ์ ์ธ ์ดํ ํฌ๊ธฐ ๊ด๋ฆฌ์ ๋ ๋์ ์ผ๋ฐํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์ ๋ฐฉ๋ฒ๋ก ์ ๊ฐ๋จํ ์๋ฅผ ๋ค์ด๋ณด๋ฉด ์๋์ ํ ์ด๋ธ๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ ํ ํฌ๋์ด์ ์ด์ ๋ฐฉ์์ ํน์ ์ธ์ด๋ ๋ฌธ์ ์ ๋ฐ๋ผ ๊ทธ ํจ์จ์ฑ์ด ๋ฌ๋ผ์ง ์ ์์ผ๋ฉฐ, ์ ์ ํ ๋ฐฉ์์ ์ ํํ๋ ๊ฒ์ด ์์ฐ์ด ์ฒ๋ฆฌ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
๊ณผ๊ฑฐ ์ฐ๊ตฌ์์๋ ๋๋ผ๋ณ, ๋ฌธํ๋ณ, ์ธ์ด๊ถ๋ณ๋ก ์ ํธ๋๋ ํ ํฌ๋์ด์ ์ด์ ๋ฐฉ์์ด ๋ค์ํ์ต๋๋ค:
- ๋ก๋ง ์ธ์ด๊ถ: ๋จ์ด(word) ๊ธฐ๋ฐ ํ ํฌ๋์ด์ ์ด์ ์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋์์ต๋๋ค. ์ด๋ ๋ผํด๊ณ ์ธ์ด์ ๊ตฌ์กฐ์ ๋จ์ด ๊ฐ ๊ตฌ๋ถ์ด ๋ช ํํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์ค๊ตญ์ด ์ธ์ด๊ถ: ๋ฌธ์(character) ๊ธฐ๋ฐ ํ ํฌ๋์ด์ ์ด์ ์ด ์ฃผ๋ก ์ฌ์ฉ๋์์ต๋๋ค. ์ค๊ตญ์ด๋ ๊ฐ ๋ฌธ์๊ฐ ๊ณ ์ ํ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฐฉ์์ด ํจ๊ณผ์ ์ ๋๋ค.
- ํ๊ตญ์ด: ํํ์(morpheme) ๊ธฐ๋ฐ ํ ํฌ๋์ด์ ์ด์ ์ด ์ ํธ๋์์ต๋๋ค. ํ๊ตญ์ด๋ ๊ตด์ ์ธ์ด์ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ด ํํ์ ๋ถ์์ด ์ค์ํฉ๋๋ค.
- ์ผ๋ณธ์ด: ์ญ์ ํํ์ ๊ธฐ๋ฐ ํ ํฌ๋์ด์ ์ด์ ์ด ํํ ์ฌ์ฉ๋์์ต๋๋ค. ์ผ๋ณธ์ด ์ญ์ ๋ณต์กํ ๊ตด์ ์ ๊ฐ์ง ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์๋์ด ์ธ์ด๊ถ: ์คํ (stem) ๊ธฐ๋ฐ ํ ํฌ๋์ด์ ์ด์ ์ด ์ฌ์ฉ๋๊ธฐ๋ ํ์ต๋๋ค. ์๋์ด๋ ๊ทผ๋ณธ์ ์ผ๋ก ๊ฐ ๋จ์ด๊ฐ ๋ณํ๋๋ ๊ท์น์ ์ธ ํจํด์ ๋ฐ๋ฅด๋ฏ๋ก, ๋จ์ด์ ๊ทผ๋ณธ ํํ๋ฅผ ์ค์ฌ์ผ๋ก ํ ํฐํํ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ต๊ทผ์๋ ์๋ธ์๋(subword) ํ ํฌ๋์ด์ ์ด์ , ํนํ ‘Byte Pair Encoding (BPE)’ ๋ฐฉ์์ด ๋ค์ํ ์ธ์ด์ ๊ฑธ์ณ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ์ด ๋ฐฉ์์ ์ดํ์ ํฌ๊ธฐ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ , ์ผ๊ด๋ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ์ธ์ด๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฌํ Subword ํ ํฌ๋์ด์ ์ด์ ๋ฐฉ์์ ์ฒ์ ์ ์ํ ๊ฒ์ Google์ Neural Machine Translation of Rare Words with Subword Units ๋ ผ๋ฌธ์์์์ต๋๋ค. ์ด ๋ ผ๋ฌธ์์๋ ๋ชจ๋ธ ๊ตฌ์กฐ๋ ๊ทธ๋๋ก ์ ์งํ๋ฉด์ ํ ํฌ๋์ด์ ์ด์ ๋ฐฉ์๋ง BPE ๋ฐฉ์์ผ๋ก ๋ฐ๊ฟ์ ์ฑ๋ฅ ํฅ์์ ๋ฌ์ฑํ ์ฐ๊ตฌ์์ต๋๋ค.
์๋ธ์๋ ํ ํฐํ: ์ธ์ด์ ๋ ๊ณ ๋ธ๋ก ๐งฑ
์๋ธ์๋ ํ ํฐํ๋ ๋ง์น ๋ ๊ณ ๋ธ๋ก์ฒ๋ผ ์์ ๋จ์๋ก ๋จ์ด๋ฅผ ๋๋๊ณ ๋ค์ ์กฐ๋ฆฝํ ์ ์๊ฒ ํด์ค์. Subword ํ ํฌ๋์ด์ ์ด์ ์ ํนํ ์์ฐ์ด ์ฒ๋ฆฌ์์ ์ดํ ๋ค์์ฑ๊ณผ ํฌ๊ท ๋จ์ด์ ๋ณํ์ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ ์ฒด ๋จ์ด๋ฅผ ๋ ์์ ์๋ฏธ ๋จ์๋ก ๋ถํ ํ์ฌ ์์ฃผ ๋ฐ์ํ์ง ์๋ ๋จ์ด๋ค์ด ๋ชจ๋ธ์ ์ํด ๋ ์ ์ฒ๋ฆฌ๋ ์ ์๋๋ก ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋จ์ด “unbelievable”์ “un”, “believ”, “able”๋ก ๋ถํ ๋ ์ ์์ผ๋ฉฐ, ์ด๋ฌํ ๊ฐ๊ฐ์ subword๋ ๋ค๋ฅธ ๋จ์ด์์๋ ์ฌ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ธ ์์น์ ์์ฃผ ์ฌ์ฉ๋๋ ๋จ์ด๋ ์์ subword๋ก ๋ถํ ๋์ง ์๊ณ , ํฌ๊ท ๋จ์ด๋ ์๋ฏธ ์๋ subword๋ก ๋ถํด๋์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
์ด์ ๊ตฌ์ฒด์ ์ผ๋ก ์ด subword๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ๋ก ์ ๋ํด์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํฌ๊ฒ 4๊ฐ์ง ๋ฐฉ๋ฒ๋ก ์ด ์์ต๋๋ค.
- Byte-Pair Encoding (BPE)
- Byte-Level BPE
- WordPiece
- Unigram
์ด ๊ธ์์๋ ์ ๋ด์ฉ์ ๋ํด์ ๊ฐ๊ฐ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
BPE (Byte Pair Encoding): ์์ฃผ ๋์ค๋ ๊ธ์ ์ ํฉ์น๊ธฐ
BPE๋ ์์ฃผ ๋ฑ์ฅํ๋ ๊ธ์ ์์ ํ๋์ ์๋ก์ด ํ ํฐ์ผ๋ก ๋ง๋ค์ด์. ๋ง์น ์์ฃผ ๋จน๋ ์์ ์กฐํฉ์ ์ธํธ ๋ฉ๋ด๋ก ๋ง๋๋ ๊ฒ๊ณผ ๋น์ทํด์! ์ฆ, BPE(Byte Pair Encoding) ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ ์์ด๋์ด๋ ์์ฃผ ๋ฑ์ฅํ๋ ๋ฌธ์ ์์ ๋ฐ๋ณต์ ์ผ๋ก ๋ณํฉํ์ฌ ์๋ก์ด ๋จ์ด๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ดํ ํฌ๊ธฐ๋ฅผ ์ค์ด๋ฉด์๋ ์๋ณธ ํ ์คํธ์ ํํ๋ ฅ์ ์ต๋ํ ์ ์งํ ์ ์์ต๋๋ค.
BPE๋ ์๋ 1994๋ Philip Gage๊ฐ ๋ฐ์ดํฐ ์์ถ์ ์ํด ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ์ดํฐ ๋ด์์ ๊ฐ์ฅ ์์ฃผ ๋ฑ์ฅํ๋ ๋ฐ์ดํธ ์์ ๋ฐ๋ณต์ ์ผ๋ก ๋ณํฉํ์ฌ ์์ถํ๋ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ ์คํธ๋ฆผ์์ ๊ฐ์ฅ ๋น๋ฒํ๊ฒ ๋ํ๋๋ ๋ฐ์ดํธ ์ ‘AB’๋ฅผ ‘Z’๋ก ์นํํ๊ณ , ๋ค์ ๊ฐ์ฅ ๋น๋ฒํ ๋ฐ์ดํธ ์์ ์ฐพ์ ์นํํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค.
- ABABABCCCABDE
- ZZZCCCZDE
์ด ๊ณผ์ ์ ํต๊ณผํ๋ฉด ๊ธฐ์กด์๋ 13๊ฐ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๋ฌธ์๊ฐ 10๊ฐ์ ๋ฐ์ดํธ๋ก ์์ถ์ด ๋๋ ๊ฑฐ์ฃ .
Byte-Level BPE: ๋ฐ์ดํธ ๋จ์๋ก ์ชผ๊ฐ๊ธฐ
Byte-Level BPE๋ ๊ธฐ์กด BPE ์๊ณ ๋ฆฌ์ฆ์ ํ์ฅํ์ ๋๋ค. ๊ธฐ์กด BPE์์ ์ฐจ์ด์ ์ original BPE์ ๊ธฐ๋ณธ ๋ฌถ์์ ์ต์ ๋จ์๊ฐ ๋ฌธ์(chraracter) ์ผ ๋ Byte-Level BPE๋ Byte ๋ผ๋ ๊ฒ์ด์ฃ .
๊ทธ๋ ๋ค๋ฉด ์ Byte ์์ค์ผ๋ก ๋จ์๋ฅผ ๋ฎ์ถฐ์ ๋ฌถ์ด๋๊ฐ์ผ ํ๋ ๊ฑธ๊น์? ์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ 1) ๋ฐ์ดํธ์ ๋ฌธ์ํํ์ ๊ด๊ณ, 2) Unicode ์ดํ ์ฒ๋ฆฌ ๋ฐ 3)์ ์ ํ ์์ค์ ์ดํ์์ ํ์์ฑ์ ๋ํด ์ดํด๋ฅผ ํด์ผ ํฉ๋๋ค.
๋ฐ์ดํธ์ ๋ฌธ์ ํํ์ ๊ด๊ณ
์ปดํจํฐ ์ธ๊ณ์์ ์ ๋ณด์ ๊ธฐ๋ณธ ๋จ์๋ ๋ฐ์ดํธ์ ๋๋ค. 1๋ฐ์ดํธ๋ 8๋นํธ๋ก ๊ตฌ์ฑ๋์ด 256๊ฐ์ง ๊ฐ์ ํํํ ์ ์์ต๋๋ค. ์ด๋ ์ด๊ธฐ ์ปดํจํฐ์์ Extended ASCII๋ผ๋ 256๊ฐ ๋ฌธ์ ํ์ค์ ๊ทผ๊ฐ์ด ๋์์ต๋๋ค.
ํ์ง๋ง ๊ธ๋ก๋ฒ ์๋์ ์ ์ด๋ค๋ฉด์ ๋ค์ํ ์ธ์ด์ ๋ฌธํ๋ฅผ ์์ฐ๋ฅด๋ ์๋ก์ด ํ์ค์ด ํ์ํด์ก๊ณ , ์ด์ 1991๋ ์ ๋์ฝ๋๊ฐ ํ์ํ์ต๋๋ค. ์ ๋์ฝ๋๋ ์ต๋ 4๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํด ๋ฐฑ๋ง ๊ฐ ์ด์์ ๋ฌธ์๋ฅผ ํํํ ์ ์์ด, ์ ์ธ๊ณ์ ๋ฌธ์๋ฅผ ํ๋์ ์ฒด๊ณ๋ก ํตํฉํ์ต๋๋ค.
์ ๋์ฝ๋์ ์ค์ ๊ตฌํ: UTF ์ธ์ฝ๋ฉ
์ ๋์ฝ๋๋ฅผ ์ค์ ๋ก ์ ์ฅํ๊ณ ์ ์กํ๊ธฐ ์ํด ์ฌ๋ฌ ์ธ์ฝ๋ฉ ๋ฐฉ์์ด ๊ฐ๋ฐ๋์์ต๋๋ค. ๊ทธ ์ค UTF-8์ด ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, '๐' ์ด๋ชจ์ง๋ ๋ค์๊ณผ ๊ฐ์ด ์ธ์ฝ๋ฉ๋ฉ๋๋ค:
- ์ ๋์ฝ๋: U+1F60A
- UTF-8: F0 9F 98 8A (4๋ฐ์ดํธ)
- UTF-16: D83D DE0A (4๋ฐ์ดํธ)
- UTF-32: 0001F60A (4๋ฐ์ดํธ)
๊ฐ ๋ฐฉ์์ ๊ณ ์ ์ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ง๋ง, UTF-8์ ๊ฐ๋ณ ๊ธธ์ด ์ธ์ฝ๋ฉ์ด ํจ์จ์ฑ ์ธก๋ฉด์์ ๋๊ฐ์ ๋ํ๋ ๋๋ค.
Unicode ์ดํ ํฌ๊ธฐ์ ๋๋ ๋ง
์์ฐ์ด ์ฒ๋ฆฌ ๋ชจ๋ธ, ํนํ ํธ๋์คํฌ๋จธ ๋ชจ๋ธ์์ ํ ํฐํ๋ ๋ ๊ฐ์ง ์ฃผ์ ๋ชฉ์ ์ ๊ฐ์ง๋๋ค:
- ์ ๋ ฅ ๋ฌธ์๋ฅผ ์๋ฏธ ์๋ ๋จ์๋ก ๋๋๊ธฐ
- ๋ชจ๋ธ์ ์ถ๋ ฅ ๋จ์ ์ ์ํ๊ธฐ
๊ทธ๋ฌ๋ ์ ๋์ฝ๋์ ๋ชจ๋ ๋ฌธ์๋ฅผ ๊ฐ๋ณ ํ ํฐ์ผ๋ก ์ฌ์ฉํ๋ฉด ์ดํ ํฌ๊ธฐ๊ฐ 100๋ง ๊ฐ๋ฅผ ํ์ฉ ๋์ด, ์ค์ฉ์ฑ์ด ๋จ์ด์ง๋๋ค. ์ด๋ ์๋ฒ ๋ฉ ํ๋ ฌ์ ํฌ๊ธฐ๋ฅผ ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐ์ํค๊ณ , ๊ฐ ์์ฑ ๋จ๊ณ์์์ ๋ถ๋ฅ ๋ฌธ์ ๋ฅผ ์ง๋์น๊ฒ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค.
ํ์ ์ ํด๊ฒฐ์ฑ : ๋ฐ์ดํธ ์์ค ํ ํฐํ
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Neural Machine Translation with Byte-Level Subwords ๋ ผ๋ฌธ์์ ๋ฐ์ดํธ ์์ค ํ ํฐํ๊ฐ ์ ์๋์์ต๋๋ค. ์ด ๋ฐฉ์์ ๋ชจ๋ ๋ฌธ์๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ฒ๋ฆฌํจ์ผ๋ก์จ ์ดํ ํฌ๊ธฐ๋ฅผ ๋ํญ ์ค์ด๊ณ , ์ธ์ด ๋ชจ๋ธ์ ํจ์จ์ฑ์ ๋์ ๋๋ค.
์๋ฅผ ๋ค์ด:
- ์์ด 'A': [01000001]
- ํ๊ธ '๊ฐ': [11101010 10110000 10000000]
- ์ค๊ตญ์ด 'ไฝ ': [11100100 10111101 10100000]
- ์ด๋ชจ์ง '๐': [11110000 10011111 10011000 10001010]
๋ฐ์ดํธ ์์ค BPE(Byte Pair Encoding)๋ ์ด๋ฌํ ๋ฐ์ดํธ ์ํ์ค๋ฅผ ๊ธฐ๋ณธ ๋จ์๋ก ์ฌ์ฉํ์ฌ ์์ฃผ ๋ฑ์ฅํ๋ ํจํด์ ๋ณํฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ธ์ ๋ค์ํ ์ธ์ด์ ํน์ ๋ฌธ์๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์์ฐ์ด ์ฒ๋ฆฌ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ , ๋ค๊ตญ์ด ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ํฌ๊ฒ ๊ฐ์ ํ๋ ๋ฐ ๊ธฐ์ฌํ๊ณ ์์ต๋๋ค. ๋ฐ์ดํธ ์์ค ํ ํฐํ๋ ํ๋ NLP์ ํต์ฌ ๊ธฐ์ ์ค ํ๋๋ก ์๋ฆฌ ์ก์์ต๋๋ค.
๋ํ์ ์ธ ์ธ์ด๋ชจ๋ธ๊ณผ ์ฌ์ฉ๋ ํ ํฐํ ๋ฐฉ๋ฒ ๐
๋ค์์ ๊ฐ ํ ํฐํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๋ํ์ ์ธ ์ธ์ด ๋ชจ๋ธ๊ณผ ๊ฐ ๋ชจ๋ธ์ ์ดํ ์๋ฅผ ์ ๋ฆฌํ ํ ์ด๋ธ์ ๋๋ค.
์์ ํ์์ ๋ณด๋ค์ํผ ํฌ๊ฒ 2๊ฐ์ง ํธ๋ ๋๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ๋ ์ ์ ๋ ๋ง์ ๋ชจ๋ธ์ด Byte-Level BPE์ ๊ฐ์ ํ ํฌ๋์ด์ ์ด์
๋ฐฉ๋ฒ์ ์ฑํํ๊ณ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด๋ ๋ค์ํ ์ธ์ด์ ํน์ ๋ฌธ์๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ํฌ๊ท ๋จ์ด์ ์ ์กฐ์ด์ ๋ํ ์ ์๋ ฅ์ ๋์ด๊ธฐ ์ํจ ์
๋๋ค. Byte-Level BPE๋ ๋ฌธ์๋ฅผ ๋ฐ์ดํธ ๋จ์๋ก ์ฒ๋ฆฌํจ์ผ๋ก์จ ๋ค๊ตญ์ด ํ๊ฒฝ์์ ํนํ ์ ๋ฆฌํ๋ฉฐ, ๋ณต์กํ ์ธ์ด ํจํด์ ๋ ์ ์บก์ฒํ ์ ์์ต๋๋ค.
๋ ๋ฒ์งธ๋ ์ดํ ํฌ๊ธฐ๊ฐ ๋ค์ํด์ง๊ณ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด๊ธฐ ๋ชจ๋ธ๋ค์ ์ฃผ๋ก 30,000์์ 50,000 ์ฌ์ด์ ์ดํ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ผ๋, ์ต๊ทผ์ ๋ชจ๋ธ๋ค์ 32,000์์ 128,000๊น์ง ๋ค์ํ ์ดํ ํฌ๊ธฐ๋ฅผ ํ์ฉํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ํธ๋ ๋๋ ๋ ์ ๊ตํ ์ธ์ด ํํ๊ณผ ๋ค์ํ ์ธ์ด ์ง์์ ์ํ ๊ฒ์ผ๋ก ํด์ํ ์ ์์ต๋๋ค.
BBPE Deep Dive!
์ต๊ทผ ๋ชจ๋ธ๋ค์ BBPE ๋ฐฉ๋ฒ์ ์ฑํํ์ฌ ๋๋ถ๋ถ์ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ต๋๋ค.
- ์ ๋๋ฒ์ค ์ปค๋ฒ๋ฆฌ์ง:
- ๋ฐ์ดํธ ๋ ๋ฒจ ์ฒ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์, ์ด๋ค ๋ฌธ์ ์ธ์ฝ๋ฉ์ด๋ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- UTF-8, UTF-16 ๋ฑ ๋ชจ๋ ์ ๋์ฝ๋ ๋ฌธ์๋ฅผ ํฌํจํ์ฌ, ์กด์ฌํ๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ํํํ ์ ์์ต๋๋ค.
- ์๋ ค์ง์ง ์์ ๋ฌธ์ ์ฒ๋ฆฌ:
- ํ์ต ๋ฐ์ดํฐ์ ์๋ ์๋ก์ด ๋ฌธ์๋ ์ด๋ชจ์ง๊ฐ ๋ฑ์ฅํด๋ ๋ฐ์ดํธ ์ํ์ค๋ก ๋ถํดํ์ฌ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ค๊ตญ์ด ์ง์:
- ํน์ ์ธ์ด์ ๊ตญํ๋์ง ์๊ณ , ๋ชจ๋ ์ธ์ด์ ๋ฌธ์๋ฅผ ๋๋ฑํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ํ๊ธ, ํ์, ์๋์ด, ํค๋ฆด ๋ฌธ์ ๋ฑ ๋ณต์กํ ๋ฌธ์ ์ฒด๊ณ๋ ๋ฌธ์ ์์ด ๋ค๋ฃน๋๋ค.
- ํจ์จ์ ์ธ ํํ:
- ์์ฃผ ์ฌ์ฉ๋๋ ๋จ์ด๋ ์๋ธ์๋๋ ๊ทธ๋๋ก ์ ์ฅํ์ฌ ํจ์จ์ฑ์ ๋์ ๋๋ค.
- ๋ ํํ ๋ฌธ์๋ ๋จ์ด๋ ๋ ์์ ๋จ์(๋ฐ์ดํธ ์ํ์ค)๋ก ๋ถํดํ์ฌ ํํํฉ๋๋ค.
- ์ ์ฐ์ฑ:
- ์๋ก์ด ์ธ์ด๋ ํน์ ๋ฌธ์๊ฐ ์ถ๊ฐ๋์ด๋ ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด:
- ์ผ๋ฐ์ ์ธ ์์ด ๋จ์ด: "hello" → [hello]
- ๋ ํํ ์์ด ๋จ์ด: "antidisestablishmentarianism" → [anti][dis][establish][ment][arian][ism]
- ํ๊ธ: "์๋ ํ์ธ์" → [์๋ ][ํ์ธ์] ๋๋ [์][๋ ][ํ][์ธ์]
- ์ด๋ชจ์ง: "๐" → [๋ฐ์ดํธ1][๋ฐ์ดํธ2][๋ฐ์ดํธ3][๋ฐ์ดํธ4]
- ํฌ๊ทํ ์ ๋์ฝ๋ ๋ฌธ์: "๐ท" (๋ฐ์ ๋ ์ํ๋ฒณ) → [๋ฐ์ดํธ1][๋ฐ์ดํธ2][๋ฐ์ดํธ3][๋ฐ์ดํธ4]
์ด ๋ฐฉ์์ ๋ชจ๋ ๊ฐ๋ฅํ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ, ๋์์ ์์ฃผ ์ฌ์ฉ๋๋ ํจํด์ ๋ํด์๋ ํจ์จ์ ์ธ ํํ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ์๋ ค์ง ์ธ์ด๋ฟ๋ง ์๋๋ผ ๋ฏธ๋์ ๋ง๋ค์ด์ง ์ ์๋ ์๋ก์ด ๋ฌธ์๋ ๊ธฐํธ๋ ๋ฌธ์ ์์ด ์ฒ๋ฆฌํ ์ ์๋ ์ ์ฐ์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๋ํ, ๊ณผ๊ฑฐ์ ํ ํฐํ ๋ฐฉ์๊ณผ ํ์ฌ์ ๋ฐฉ์ ์ฌ์ด์๋ ์ค์ํ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์ด ๋ณํ์ ๋ํด ์์ธํ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค:
- ๊ณผ๊ฑฐ์ ๋ฐฉ์ (Unknown ํ ํฐ ์ฌ์ฉ):
- vocab์ ์๋ ๋จ์ด๋ฅผ ๋ง๋๋ฉด Unknown ํ ํฐ([UNK])์ผ๋ก ๋์ฒดํ์ต๋๋ค.
- ์ด ๋ฐฉ์์ ํ๊ณ:
- a) ์ ๋ณด ์์ค: Unknown์ผ๋ก ์ฒ๋ฆฌ๋ ๋จ์ด์ ์๋ฏธ๊ฐ ์์ ํ ์ฌ๋ผ์ง๋๋ค.
- b) Out-of-Vocabulary (OOV) ๋ฌธ์ : ์๋ก์ด ๋จ์ด๋ ํฌ๊ท ๋จ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํ์ง ๋ชปํ์ต๋๋ค.
- c) ๋ค๊ตญ์ด ์ฒ๋ฆฌ์ ์ด๋ ค์: ๋ชจ๋ ์ธ์ด์ ๋จ์ด๋ฅผ vocab์ ํฌํจ์ํค๊ธฐ ์ด๋ ค์ ์ต๋๋ค.
- ํ์ฌ์ ๋ฐฉ์ (์๋ธ์๋ ํ ํฐํ + ๋ฐ์ดํธ ๋ ๋ฒจ ์ฒ๋ฆฌ):
- Unknown ํ ํฐ์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๊ฑฐ๋ ์์ ์ฌ์ฉํ์ง ์์ต๋๋ค.
- ๋ชจ๋ ์ ๋ ฅ์ ๋ ์์ ๋จ์(์๋ธ์๋๋ ๋ฐ์ดํธ)๋ก ๋ถํดํ ์ ์์ต๋๋ค.
- ์ฅ์ :
- a) ์ ๋ณด ๋ณด์กด: ๋ชจ๋ ์ ๋ ฅ์ ์๋ฏธ ์๋ ๋จ์๋ก ๋ถํดํ์ฌ ์ฒ๋ฆฌํฉ๋๋ค.
- b) OOV ๋ฌธ์ ํด๊ฒฐ: ์๋ก์ด ๋จ์ด๋ ๊ธฐ์กด ์๋ธ์๋๋ ๋ฐ์ดํธ์ ์กฐํฉ์ผ๋ก ํํ ๊ฐ๋ฅํฉ๋๋ค.
- c) ์ธ์ด ๋ ๋ฆฝ์ : ๋ชจ๋ ๋ฌธ์์ ์ธ์ด๋ฅผ ๋๋ฑํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์์:
๊ณผ๊ฑฐ: "antidisestablishmentarianism" → [UNK]
ํ์ฌ: "antidisestablishmentarianism" → [anti][dis][establish][ment][arian][ism]
๊ณผ๊ฑฐ: "์๋ก์ด๋จ์ด" → [UNK] ํ์ฌ: "์๋ก์ด๋จ์ด" → [์][๋ก์ด][๋จ์ด] ๋๋ [๋ฐ์ดํธ1][๋ฐ์ดํธ2]...[๋ฐ์ดํธN]
์ด ์ ๊ทผ ๋ฐฉ์์ 'ํํด(fallback)' ๋ฉ์ปค๋์ฆ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค:
- ํ ํฐ ์ฐ์ :
- ์ ๋ ฅ ํ ์คํธ๋ฅผ ์ฒ๋ฆฌํ ๋, ๋จผ์ vocab์ ์๋ ํ ํฐ๊ณผ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
- ์ผ์นํ๋ ํ ํฐ์ด ์์ผ๋ฉด ๊ทธ๊ฒ์ ์ฌ์ฉํฉ๋๋ค.
- ๋ฐ์ดํธ ๋ ๋ฒจ ํํด:
- vocab์ ์ผ์นํ๋ ํ ํฐ์ด ์์ ๊ฒฝ์ฐ, ํด๋น ๋ถ๋ถ์ ๋ฐ์ดํธ ๋ ๋ฒจ๋ก ๋ถํดํฉ๋๋ค.
- ํผํฉ ์ฒ๋ฆฌ:
- ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋์ ์ ๋ ฅ ๋ฌธ์ฅ์ vocab ํ ํฐ๊ณผ ๋ฐ์ดํธ ๋ ๋ฒจ ํ ํฐ์ด ํผํฉ๋ ์ ์์ต๋๋ค.
์์๋ฅผ ํตํด ์ดํด๋ณด๊ฒ ์ต๋๋ค:
์ ๋ ฅ ๋ฌธ์ฅ: "Hello, ์๋ ํ์ธ์!"
์ฒ๋ฆฌ ๊ณผ์ :
- "Hello": vocab์ ์์ผ๋ฏ๋ก ๋จ์ผ ํ ํฐ์ผ๋ก ์ฒ๋ฆฌ
- ",": vocab์ ์๋ ๊ตฌ๋์ ํ ํฐ์ผ๋ก ์ฒ๋ฆฌ
- " ": ๊ณต๋ฐฑ ํ ํฐ์ผ๋ก ์ฒ๋ฆฌ
- "์๋ ํ์ธ์": vocab์ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด, UTF-8 ๋ฐ์ดํธ๋ก ๋ถํด
- "!": vocab์ ์๋ ๊ตฌ๋์ ํ ํฐ์ผ๋ก ์ฒ๋ฆฌ``
๊ฒฐ๊ณผ: [Hello] [,] [ ] [E3 95 88] [EB 85 95] [ED 95 98] [EC 84 B8] [EC 9A 94] [!]
์ด ๋ฐฉ์์ ์ฅ์ :
- ํจ์จ์ฑ: ์์ฃผ ์ฌ์ฉ๋๋ ๋จ์ด๋ ์๋ธ์๋๋ ๋จ์ผ ํ ํฐ์ผ๋ก ์ฒ๋ฆฌ๋์ด ํจ์จ์ ์ ๋๋ค.
- ์ ์ฐ์ฑ: vocab์ ์๋ ์๋ก์ด ๋จ์ด๋ ํฌ๊ท ๋จ์ด๋ ๋ฐ์ดํธ ๋ ๋ฒจ์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์์ถ: ์์ฃผ ์ฌ์ฉ๋๋ ํจํด์ ๋ ์งง์ ํํ(๋จ์ผ ํ ํฐ)์ผ๋ก ์์ถ๋ฉ๋๋ค.
- ์ธ์ด ๋ ๋ฆฝ์ฑ: ๋ชจ๋ ์ธ์ด์ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ํตํด ๋ชจ๋ธ์ ์๋ ค์ง ํจํด(vocab ํ ํฐ)์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉด์๋, ๋์์ ๋ชจ๋ ๊ฐ๋ฅํ ์ ๋ ฅ(๋ฐ์ดํธ ๋ ๋ฒจ)์ ๋ค๋ฃฐ ์ ์๋ ๋ฅ๋ ฅ์ ๊ฐ๊ฒ ๋ฉ๋๋ค. ์ด๋ ํนํ ๋ค๊ตญ์ด ์ฒ๋ฆฌ์ ๋ฏธ์ง์ ๋จ์ด ์ฒ๋ฆฌ์ ๋งค์ฐ ํจ๊ณผ์ ์ ๋๋ค.
ํ ํฌ๋์ด์ /ํ ํฐํ ๋๊ตฌ๐งฐ
- SentencePiece: ๊ตฌ๊ธ์์ ๊ฐ๋ฐํ ์คํ ์์ค ํ ํฌ๋์ด์ ๋ก, BPE์ Unigram ๋ชจ๋ธ์ ์ง์ํฉ๋๋ค. ์ธ์ด์ ์๊ด์์ด ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ํนํ ๋ค๊ตญ์ด ๋ฐ์ดํฐ์ ํจ๊ณผ์ ์ ๋๋ค.
- BPE: OpenNMT ๋ฐ ๋ค๋ฅธ ์ฌ๋ฌ NLP ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉ๋๋ BPE ํ ํฌ๋์ด์ ์ ๋๋ค.
- Hugging Face Tokenizers: Hugging Face์์ ์ ๊ณตํ๋ ๊ณ ์ฑ๋ฅ ํ ํฌ๋์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, BERT, GPT-2, RoBERTa ๋ฑ์ ๋ชจ๋ธ์ ์ํ ๋ค์ํ ํ ํฌ๋์ด์ ๋ฅผ ํฌํจํฉ๋๋ค.
- tiktoken: OpenAI์์ ์ ๊ณตํ๋ ํ ํฌ๋์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ํนํ GPT-3์ ๊ฐ์ ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ์ ์ํด ์ต์ ํ๋์ด ์์ต๋๋ค.
- spaCy: ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์์ฐ์ด ์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ํ ์คํธ์ ํ ํฐํ, ๊ตฌ๋ฌธ ๋ถ์, ๊ฐ์ฒด ์ธ์ ๋ฑ์ ์ ๊ณตํฉ๋๋ค.
- NLTK: ๊ต์ก๊ณผ ์ฐ๊ตฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๋ค์ํ ํ ์คํธ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๋ง๋ฌด๋ฆฌ ๋ฐ ์ ๋ฆฌ ๐
์ด ๊ธ์์๋ ์์ฐ์ด์ฒ๋ฆฌ์ ์ค์ํ ๊ฐ๋ ์ค ํ๋์ธ ํ ํฌํ์ ๋ํด ์ดํด๋ณด์์ต๋๋ค. ํ ํฐํ๋ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์ปดํจํฐ๊ฐ ์ฒ๋ฆฌํ ์ ์๋๋ก ์์ ๋จ์๋ก ๋ถํ ํ๋ ๊ณผ์ ์ผ๋ก, ๋ค์ํ ๊ธฐ๋ฒ์ด ์กด์ฌํฉ๋๋ค. ๊ทธ ์ค์์ ์ด๋ฒ ๊ธ์์๋ Subword ํ ํฌ๋๋ค ์ค ๋ํ์ ์ธ BPE(Byte Pair Encoding), Byte-Level BPE, WordPiece, Unigram ๋ฑ์ ๋ํด ์์ธํ๊ฒ ์ดํด๋ณด์์ต๋๋ค.
์ด์์ ๋๋ค!
์ถ์ฒ