Skip to content
psymon-ai
Go back

ํ† ํฌ๋‚˜์ด์ €, ์–ธ์–ด ๋ชจ๋ธ์˜ ๋ณด์ด์ง€ ์•Š๋Š” ๊ด€๋ฌธ

Updated:
1

Table of contents

Open Table of contents

๋“ค์–ด๊ฐ€๋ฉฐ - Low level์—์„œ ์‹œ์ž‘ํ•˜๋Š” ์ด์œ 

์–ธ์–ด ๋ชจ๋ธ์„ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ์‰ฝ๊ฒŒ ๊ฐ„๊ณผํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค. ๋ฐ”๋กœ ํ† ํฌ๋‚˜์ด์ €๋‹ค. ํŠธ๋žœ์Šคํฌ๋จธ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ์–ดํ…์…˜ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋จธ๋ฆฟ์†์— ๊ทธ๋ฆด ์ˆ˜ ์žˆ๊ณ , RLHF๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ๋„, ์ •์ž‘ ๋ชจ๋ธ์ด โ€˜helloโ€™๋ผ๋Š” ๋ฌธ์ž์—ด์„ ์–ด๋–ป๊ฒŒ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋Š”์ง€๋Š” ํ๋ฆฟํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋‚˜ ์—ญ์‹œ ๊ทธ๋žฌ๋‹ค. ๋Œ€๊ฐ• BPE๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๊ณ  ๋‹จ์–ด๋ฅผ ์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ๋Š” ๋ฌด์–ธ๊ฐ€๋ผ๋Š” ์ •๋„์˜ ์ดํ•ด๋กœ ๊ฝค ์˜ค๋žœ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค ํ•œ๊ตญ์–ด ๋ชจ๋ธ์„ ์ง์ ‘ ๋งŒ์ง€๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋ญ”๊ฐ€ ์ด์ƒํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋А๊ผˆ๋‹ค. ํ•œ๊ตญ์–ด๋Š” ์˜์–ด์— ๋น„ํ•ด ๋‘ ๋ฐฐ ์ด์ƒ ๋งŽ์€ ํ† ํฐ์ด ํ•„์š”ํ–ˆ๋‹ค. ์˜์–ด๋กœ ๋ฌผ์œผ๋ฉด 2์ดˆ ๋งŒ์— ๋๋‚  ์‘๋‹ต์ด ํ•œ๊ตญ์–ด๋กœ๋Š” 5์ดˆ ๊ฐ€๊นŒ์ด ๊ฑธ๋ ธ๋‹ค. ๋น„์šฉ๋„ ์ •ํ™•ํžˆ ๊ทธ๋งŒํผ ๋” ๋“ค์—ˆ๋‹ค. ์ด ํ˜„์ƒ์˜ ๋ฟŒ๋ฆฌ์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ์‰ฝ๊ฒŒ ์ง€๋‚˜์น˜๋Š” ๊ฐ€์žฅ ๋‚ฎ์€ ๋‹จ๊ณ„ ์ปดํฌ๋„ŒํŠธ, ๋ฐ”๋กœ ํ† ํฌ๋‚˜์ด์ €(Tokenizer)๊ฐ€ ์žˆ๋‹ค.

ํ† ํฌ๋‚˜์ด์ €๋Š” ์–ธ์–ด ๋ชจ๋ธ์˜ ๋ณด์ด์ง€ ์•Š๋Š” ๊ด€๋ฌธ์ด๋‹ค. ๋ชจ๋“  ์ž…๋ ฅ์ด ์ด๊ณณ์„ ํ†ตํ•ด ๋“ค์–ด๊ฐ€๊ณ  ๋ชจ๋“  ์ถœ๋ ฅ์ด ์ด๊ณณ์„ ํ†ตํ•ด ๋‚˜์˜จ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ด€๋ฌธ์„ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ๋ชจ๋ธ์ด ์–ธ์–ด๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ์‹๊ณผ ์—ฐ์‚ฐ ๋น„์šฉ์ด ๋‹ฌ๋ผ์ง€๊ณ , ์‹ฌ์ง€์–ด๋Š” ์ตœ์ข… ์„ฑ๋Šฅ๊นŒ์ง€ ๋‹ฌ๋ผ์ง„๋‹ค. ์ด ๊ธ€์€ ๋ฐ”๋กœ ๊ทธ ๊ด€๋ฌธ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋‹ค.

๋ถ„๋Ÿ‰์ด ์กฐ๊ธˆ ๊ธธ๋‹ค. ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋ถ€ํ„ฐ ์ด๋ฏธ BPE๋ฅผ ๊ตฌํ˜„ํ•ด ๋ณธ ์‚ฌ๋žŒ๊นŒ์ง€ ๋ชจ๋‘ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ์ผ๋‹ค. ๊ฐ ์„น์…˜์€ ๋…๋ฆฝ์ ์œผ๋กœ ์ฝ์–ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ˆ ํ•„์š”ํ•œ ๊ณณ๋งŒ ๊ณจ๋ผ ์ฝ์–ด๋„ ์ข‹๋‹ค. ๋‹ค๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ฝ์–ด๋ณด๊ธธ ๊ถŒํ•œ๋‹ค. ์ค‘๊ฐ„์ค‘๊ฐ„ ์—ฐ๊ฒฐ๋˜๋Š” ์ง€์ ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ† ํฌ๋‚˜์ด์ €๋ž€ ๋ฌด์—‡์ธ๊ฐ€

์–ธ์–ด ๋ชจ๋ธ์€ ์ˆซ์ž๋งŒ ์ดํ•ดํ•œ๋‹ค. ๋” ์ •ํ™•ํžˆ ๋งํ•˜์ž๋ฉด ๋ฒกํ„ฐ๋งŒ ์ดํ•ดํ•œ๋‹ค. โ€˜helloโ€™๋ผ๋Š” ๋ฌธ์ž์—ด์ด ๋ชจ๋ธ์— ๋“ค์–ด๊ฐ€๋ ค๋ฉด ์–ด๋–ค ์‹์œผ๋กœ๋“  ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. ์ด ๋ณ€ํ™˜์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์ด ํ† ํฌ๋‚˜์ด์ €๋‹ค.

๋ณ€ํ™˜์€ ํฌ๊ฒŒ ๋‘ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰œ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ํ† ํฐํ™”(tokenization)๋‹ค. ๋ฌธ์ž์—ด์„ ์˜๋ฏธ ์žˆ๋Š” ๋‹จ์œ„๋กœ ์ชผ๊ฐœ๋Š” ์ž‘์—…์ด๋‹ค. โ€˜hello worldโ€™๋ผ๋Š” ๋ฌธ์ž์—ด์ด ['hello', ' world']๊ฐ€ ๋˜๊ฑฐ๋‚˜, ['he', 'llo', ' wor', 'ld']๊ฐ€ ๋˜๊ฑฐ๋‚˜, ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ชผ๊ฐค ๊ฒƒ์ธ์ง€๋Š” ํ† ํฌ๋‚˜์ด์ €์˜ ์„ค๊ณ„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

๋‘ ๋ฒˆ์งธ๋Š” ์ธ์ฝ”๋”ฉ(encoding)์ด๋‹ค. ์ชผ๊ฐ  ํ† ํฐ๋“ค์„ ์ •์ˆ˜ ID๋กœ ๋งคํ•‘ํ•˜๋Š” ์ž‘์—…์ด๋‹ค. ['hello', ' world']๊ฐ€ [31373, 995]์™€ ๊ฐ™์€ ์ˆซ์ž ๋ฐฐ์—ด์ด ๋œ๋‹ค. ์ด ์ˆซ์ž๋“ค์€ ๋ชจ๋ธ ๋‚ด๋ถ€์—์„œ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜๋˜์–ด ํŠธ๋žœ์Šคํฌ๋จธ ๋ ˆ์ด์–ด๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

์ •๋ฆฌํ•˜๋ฉด ํ† ํฌ๋‚˜์ด์ €๋Š” ์ด๋Ÿฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐ€์ง„๋‹ค.

์›์‹œ ํ…์ŠคํŠธ โ†’ [์ „์ฒ˜๋ฆฌ] โ†’ [๋ถ„์ ˆ] โ†’ [ํ† ํฐ ID ๋งคํ•‘] โ†’ ์ •์ˆ˜ ์‹œํ€€์Šค
"hello world" [31373, 995]

๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ๋„ ์žˆ๋‹ค. ๋ชจ๋ธ์ด ์ถœ๋ ฅํ•œ ํ† ํฐ ID ์‹œํ€€์Šค๋ฅผ ๋‹ค์‹œ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๋””์ฝ”๋”ฉ(decoding) ๊ณผ์ •์ด๋‹ค. ์ด์ƒ์ ์œผ๋กœ๋Š” ์ธ์ฝ”๋”ฉ๊ณผ ๋””์ฝ”๋”ฉ์ด ์™„๋ฒฝํ•˜๊ฒŒ ์—ญํ•จ์ˆ˜ ๊ด€๊ณ„์—ฌ์•ผ ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ๊ฝค ๋งŽ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๋’ค์—์„œ ๋‹ค์‹œ ๋‹ค๋ฃจ๊ฒ ๋‹ค.

ํ•œ ๊ฐ€์ง€ ํฅ๋ฏธ๋กœ์šด ์ ์€ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ ํ•™์Šตํ•˜์—ฌ ๋งŒ๋“œ๋Š” ์ปดํฌ๋„ŒํŠธ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๋ชจ๋ธ ๊ฐ€์ค‘์น˜๋ฅผ ํ•™์Šต์‹œํ‚ค๋“ฏ, ํ† ํฌ๋‚˜์ด์ € ์–ดํœ˜์ง‘๊ณผ ๋ถ„์ ˆ ๊ทœ์น™๋„ ๋ง๋ญ‰์น˜๋กœ๋ถ€ํ„ฐ ๋งŒ๋“ ๋‹ค. ๋‹ค๋งŒ ์ด ๊ณผ์ •์€ ์‹ ๊ฒฝ๋ง ํ•™์Šต๊ณผ๋Š” ์ „ํ˜€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค. ๋Œ€๋ถ€๋ถ„์€ ํ†ต๊ณ„์  ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์–ดํœ˜์ง‘์„ ๊ตฌ์„ฑํ•˜๋ฉฐ, ํ•œ ๋ฒˆ ๋งŒ๋“  ๋’ค์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์‹œ ํ•™์Šต์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ ํ† ํฌ๋‚˜์ด์ €๋Š” ๋ชจ๋ธ ๊ฐ€์ค‘์น˜์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ณ ์ •ํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋‹ค. ์ด ์ ์ด ์—ฌ๋Ÿฌ ํฅ๋ฏธ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋‚ณ๋Š”๋‹ค๋Š” ์‚ฌ์‹ค๋„ ๋’ค์—์„œ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค.

์™œ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ํ•„์š”ํ•œ๊ฐ€ - ์—ญ์‚ฌ์  ๋งฅ๋ฝ

ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ์ง€๊ธˆ์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ–์ถ”๊ธฐ๊นŒ์ง€๋Š” ๊ฝค ๊ธด ์—ฌ์ •์ด ์žˆ์—ˆ๋‹ค. ๊ทธ ์—ฌ์ •์„ ๊ฐ„๋‹จํžˆ ํ›‘์–ด๋ณด๋ฉด ํ˜„์žฌ ์„ค๊ณ„๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค.

๋‹จ์–ด(Word) ์ˆ˜์ค€ ํ† ํฐํ™”์˜ ํ•œ๊ณ„

NLP ์ดˆ๊ธฐ์—๋Š” ๋‹จ์–ด(word) ๋‹จ์œ„๋กœ ํ† ํฐํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฌ์šด ์„ ํƒ์ด์—ˆ๋‹ค. ๊ณต๋ฐฑ์œผ๋กœ ๋ฌธ์žฅ์„ ์ชผ๊ฐœ๊ณ  ๊ฐ ๋‹จ์–ด์— ๊ณ ์œ ํ•œ ID๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด ์ ‘๊ทผ์€ ์ง๊ด€์ ์ด์ง€๋งŒ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋Š” ์–ดํœ˜์ง‘ ํฌ๊ธฐ ํญ๋ฐœ์ด๋‹ค. ์˜์–ด๋งŒ ํ•ด๋„ ๋‹จ์–ด์˜ ์ˆ˜๋Š” ์ˆ˜์‹ญ๋งŒ ๊ฐœ์— ๋‹ฌํ•˜๊ณ , ๊ตด์ ˆ(inflection)์ด๋‚˜ ํŒŒ์ƒ(derivation)๊นŒ์ง€ ๊ณ ๋ คํ•˜๋ฉด ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ๋กœ ๋ถˆ์–ด๋‚œ๋‹ค. ํ•œ๊ตญ์–ด์ฒ˜๋Ÿผ ๊ต์ฐฉ์–ด ๊ณ„์—ด์˜ ์–ธ์–ด๋Š” ๋” ์‹ฌ๊ฐํ•˜๋‹ค. โ€˜๋จน๋‹คโ€™๋ผ๋Š” ๋™์‚ฌ ํ•˜๋‚˜์—์„œ โ€˜๋จน๋Š”๋‹คโ€™, โ€˜๋จน์—ˆ๋‹คโ€™, โ€˜๋จน๊ฒ ๋‹คโ€™, โ€˜๋จน์–ด์•ผ๊ฒ ๋‹คโ€™, โ€˜๋จน์„๊นŒโ€™์™€ ๊ฐ™์€ ์ˆ˜๋งŽ์€ ํ™œ์šฉํ˜•์ด ํŒŒ์ƒ๋œ๋‹ค. ์ด๋“ค์„ ๋ชจ๋‘ ๋ณ„๊ฐœ์˜ ํ† ํฐ์œผ๋กœ ๋‹ค๋ฃจ๋ฉด ์–ดํœ˜์ง‘์ด ๊ณผ๋„ํ•˜๊ฒŒ ์ปค์ง„๋‹ค.

๋‘ ๋ฒˆ์งธ๋Š” ๋ฏธ๋“ฑ๋ก์–ด(OOV, Out-of-Vocabulary) ๋ฌธ์ œ๋‹ค. ํ•™์Šต ๋ฐ์ดํ„ฐ์— ์—†๋˜ ๋‹จ์–ด๊ฐ€ ์ถ”๋ก  ์‹œ์ ์— ๋“ฑ์žฅํ•˜๋ฉด ๋ชจ๋ธ์€ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ์ƒˆ๋กœ์šด ๊ณ ์œ ๋ช…์‚ฌ, ์‹ ์กฐ์–ด, ์˜คํƒ€๊นŒ์ง€ ํฌํ•จํ•˜๋ฉด ์ด ๋ฌธ์ œ๋Š” ์‹ค์ „์—์„œ ์น˜๋ช…์ ์ด๋‹ค. ๋ณดํ†ต <UNK>๋ผ๋Š” ํŠน์ˆ˜ ํ† ํฐ์œผ๋กœ ๋Œ€์ฒดํ•˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ชจ๋ธ์ด ๊ทธ ํ† ํฐ์—์„œ ์˜๋ฏธ ์žˆ๋Š” ์ •๋ณด๋ฅผ ์–ป์ง€ ๋ชปํ•œ๋‹ค.

์„ธ ๋ฒˆ์งธ๋Š” ํ˜•ํƒœ๋ก ์  ์ •๋ณด์˜ ์†์‹ค์ด๋‹ค. โ€˜unhappinessโ€™๋ผ๋Š” ๋‹จ์–ด๋ฅผ ํ•˜๋‚˜์˜ ํ† ํฐ์œผ๋กœ ์ทจ๊ธ‰ํ•˜๋ฉด โ€˜un-โ€™, โ€˜happyโ€™, โ€˜-nessโ€™๋ผ๋Š” ํ˜•ํƒœ์†Œ์˜ ์กฐํ•ฉ์ด๋ผ๋Š” ์ •๋ณด๊ฐ€ ์‚ฌ๋ผ์ง„๋‹ค. ๋ชจ๋ธ์€ โ€˜happinessโ€™์™€ โ€˜unhappinessโ€™์˜ ๊ด€๊ณ„๋ฅผ ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๋ฒกํ„ฐ ๊ณต๊ฐ„์—์„œ๋งŒ ํ•™์Šตํ•ด์•ผ ํ•œ๋‹ค.

๋ฌธ์ž(Char) ์ˆ˜์ค€ ํ† ํฐํ™”์˜ ํ•œ๊ณ„

๋‹จ์–ด ์ˆ˜์ค€ ํ† ํฐํ™”์˜ ๋Œ€์•ˆ์œผ๋กœ ๋ฌธ์ž(character) ๋‹จ์œ„ ํ† ํฐํ™”๊ฐ€ ์žˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ์–ดํœ˜์ง‘์ด ๋งค์šฐ ์ž‘๊ณ (์˜์–ด๋ผ๋ฉด ์•ŒํŒŒ๋ฒณ 26์ž + ํŠน์ˆ˜๋ฌธ์ž) ๋™์‹œ์— ๋ฏธ๋“ฑ๋ก์–ด ๋ฌธ์ œ๊ฐ€ ์™„์ „ํžˆ ์‚ฌ๋ผ์ง„๋‹ค. ์–ด๋–ค ๋ฌธ์ž์—ด์ด๋“  ๋ฌธ์ž๋กœ ์ชผ๊ฐค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๋ฌธ์ž ๋‹จ์œ„ ํ† ํฐํ™”๋Š” ์น˜๋ช…์  ๋‹จ์ ์ด ์žˆ๋‹ค. ์‹œํ€€์Šค ๊ธธ์ด๊ฐ€ ํญ๋ฐœ์ ์œผ๋กœ ๋Š˜์–ด๋‚œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. โ€˜helloโ€™๋ผ๋Š” ๋‹จ์–ด ํ•˜๋‚˜๊ฐ€ 5๊ฐœ์˜ ํ† ํฐ์ด ๋œ๋‹ค. ํŠธ๋žœ์Šคํฌ๋จธ์˜ ์–ดํ…์…˜ ์—ฐ์‚ฐ ๋ณต์žก๋„๋Š” ์‹œํ€€์Šค ๊ธธ์ด์— ๋Œ€ํ•ด O(n2)O(n^2)์ด๊ธฐ ๋•Œ๋ฌธ์—, ์‹œํ€€์Šค ๊ธธ์ด๊ฐ€ 5๋ฐฐ๊ฐ€ ๋˜๋ฉด ์—ฐ์‚ฐ๋Ÿ‰์ด 25๋ฐฐ๊ฐ€ ๋œ๋‹ค. ์‹ค์šฉ์ ์ด์ง€ ์•Š๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ ๋ฌธ์ž ๋‹จ์œ„์—์„œ๋Š” ์˜๋ฏธ ํ•™์Šต์ด ์–ด๋ ต๋‹ค. โ€˜hโ€™๋ผ๋Š” ๋ฌธ์ž ํ•˜๋‚˜๊ฐ€ ๊ฐ€์ง„ ์˜๋ฏธ๋Š” ๋งฅ๋ฝ์— ๋”ฐ๋ผ ๋„ˆ๋ฌด ๋‹ค์–‘ํ•ด์„œ ๋ชจ๋ธ์ด ์˜๋ฏธ๋ฅผ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด ๋งค์šฐ ๊ธด ๋ฌธ๋งฅ์„ ๋ด์•ผ ํ•œ๋‹ค.

์ ˆ์ถฉ - ์„œ๋ธŒ์›Œ๋“œ ํ† ํฐํ™”์˜ ๋“ฑ์žฅ

๋‹จ์–ด๋Š” ๋„ˆ๋ฌด ํฌ๊ณ , ๋ฌธ์ž๋Š” ๋„ˆ๋ฌด ์ž‘๋‹ค. ๊ทธ๋ž˜์„œ ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ์„œ๋ธŒ์›Œ๋“œ(subword) ๋‹จ์œ„ ํ† ํฐํ™”๋‹ค. ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๋‹จ์–ด๋Š” ํ•˜๋‚˜์˜ ํ† ํฐ์œผ๋กœ, ๋“œ๋ฌผ๊ฒŒ ๋“ฑ์žฅํ•˜๋Š” ๋‹จ์–ด๋Š” ๋” ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ์ชผ๊ฐœ๋Š” ๋ฐฉ์‹์ด๋‹ค. โ€˜unhappinessโ€™๋Š” ['un', 'happiness'] ํ˜น์€ ['un', 'happy', 'ness']๋กœ ์ชผ๊ฐœ์ง„๋‹ค. ๋ฏธ๋“ฑ๋ก์–ด๋„ ์–ด๋–ค ์‹์œผ๋กœ๋“  ๊ธฐ์กด์˜ ์„œ๋ธŒ์›Œ๋“œ ์กฐํ•ฉ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ์•„์ด๋””์–ด ์ž์ฒด๋Š” 1994๋…„ ๋ฐ์ดํ„ฐ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ œ์•ˆ๋œ BPE(Byte Pair Encoding)1์—์„œ ์ถœ๋ฐœํ–ˆ๋‹ค. ์ด๊ฒƒ์ด NLP์— ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋„์ž…๋œ ๊ฒƒ์€ 2016๋…„ Sennrich et al.์˜ ๋…ผ๋ฌธ Neural Machine Translation of Rare Words with Subword Units์—์„œ์˜€๋‹ค. ์ดํ›„ BERT์˜ WordPiece, GPT์˜ BPE, T5์˜ Unigram ๋“ฑ ๋‹ค์–‘ํ•œ ๋ณ€์ฃผ๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉฐ ์˜ค๋Š˜๋‚  ์–ธ์–ด ๋ชจ๋ธ์˜ ๊ธฐ๋ณธ ํ† ํฌ๋‚˜์ด์ € ์„ค๊ณ„๋กœ ์ž๋ฆฌ ์žก์•˜๋‹ค.

ํ† ํฌ๋‚˜์ด์ €์˜ ์ข…๋ฅ˜์™€ ๋‚ด๋ถ€ ๋™์ž‘

์ด์ œ ๊ฐ ์„œ๋ธŒ์›Œ๋“œ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ž. ๋จผ์ € ์งš์–ด ๋‘˜ ์ ์ด ํ•˜๋‚˜ ์žˆ๋‹ค. ๋’ค์—์„œ โ€œBPE, WordPiece, Unigram LM, SentencePiece, tiktokenโ€์„ ์ฐจ๋ก€๋กœ ์„ค๋ช…ํ•˜์ง€๋งŒ, ์•ž์˜ ์…‹์€ ์–ดํœ˜์ง‘ ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ณ  ๋’ค์˜ ๋‘˜์€ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‹ด์•„ ๋‚ด๋Š” ๊ตฌํ˜„์ฒด๋‹ค.

BPE โ€” ๊ฐ€์žฅ ๋„๋ฆฌ ์“ฐ์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

BPE์˜ ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ„๋‹จํ•˜๋‹ค. ์˜์‚ฌ์ฝ”๋“œ(pseudo-code)๋กœ ํ‘œํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ๋ฌธ์ž ๋‹จ์œ„๋กœ ๋ถ„ํ•ดํ•œ๋‹ค.
  2. ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ธ์ ‘ ๋“ฑ์žฅํ•˜๋Š” ๋ฌธ์ž ์Œ์„ ์ฐพ๋Š”๋‹ค.
  3. ๊ทธ ์Œ์„ ์ƒˆ๋กœ์šด ํ† ํฐ์œผ๋กœ ๋ณ‘ํ•ฉ(merge)ํ•œ๋‹ค.
  4. ์›ํ•˜๋Š” ์–ดํœ˜์ง‘ ํฌ๊ธฐ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ 2~3์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ง๋ญ‰์น˜๊ฐ€ low, lower, newest, widest ๋„ค ๋‹จ์–ด๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์ดˆ๊ธฐ ์ƒํƒœ๋Š” ๋ฌธ์ž ๋‹จ์œ„ ๋ถ„ํ•ด๋‹ค.

l o w _ (5ํšŒ ๋“ฑ์žฅ)
l o w e r _ (2ํšŒ)
n e w e s t _ (6ํšŒ)
w i d e s t _ (3ํšŒ)

์—ฌ๊ธฐ์„œ _๋Š” ๋‹จ์–ด ๊ฒฝ๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน์ˆ˜ ๋ฌธ์ž๋‹ค(Sennrich et al. ์› ๋…ผ๋ฌธ์—์„œ๋Š” </w>๋ฅผ ์“ฐ๋ฉฐ, ๊ตฌํ˜„์ฒด๋งˆ๋‹ค ํ‘œ๊ธฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด _๋กœ ์“ด๋‹ค). ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•œ ๋ฌธ์ž ์Œ์„ ์ฐพ์•„๋ณด๋ฉด e s๊ฐ€ 9ํšŒ(newest 6 + widest 3)๋กœ ์ตœ๋‹ค๋‹ค. ์ด๋ฅผ ๋ณ‘ํ•ฉํ•˜์—ฌ es๋ผ๋Š” ์ƒˆ ํ† ํฐ์„ ๋งŒ๋“ ๋‹ค.

l o w _
l o w e r _
n e w es t _
w i d es t _

๋‹ค์Œ์œผ๋กœ es t๊ฐ€ 9ํšŒ๋กœ ์ตœ๋‹ค๋‹ค. ์ด๋ฅผ ๋ณ‘ํ•ฉํ•˜์—ฌ est๋ฅผ ๋งŒ๋“ ๋‹ค. ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์–ดํœ˜์ง‘์„ ํ™•์žฅํ•œ๋‹ค.

์ถ”๋ก  ์‹œ์—๋Š” ํ•™์Šต ๋•Œ ์ฐพ์•„๋‚ธ ๋ณ‘ํ•ฉ ๊ทœ์น™์„ ์ˆœ์„œ๋Œ€๋กœ ์ ์šฉํ•œ๋‹ค. ์ƒˆ๋กœ์šด ๋‹จ์–ด lowest๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋จผ์ € ๋ฌธ์ž๋กœ ๋ถ„ํ•ดํ•œ ๋’ค, 1๋ฒˆ ๋ณ‘ํ•ฉ ๊ทœ์น™๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ์ ์šฉํ•ด ์ตœ์ข…์ ์œผ๋กœ ['low', 'est'] ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป๋Š”๋‹ค.

์ด ๋‹จ์ˆœํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๊ฐ•๋ ฅํ•œ ์ด์œ ๋Š” ๋นˆ๋„ ๊ธฐ๋ฐ˜์ด๋ผ๋Š” ์ ์— ์žˆ๋‹ค. ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๋ฌธ์ž์—ด์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•˜๋‚˜์˜ ํ† ํฐ์œผ๋กœ ๋ฌถ์ด๊ณ , ๋“œ๋ฌธ ๋ฌธ์ž์—ด์€ ์ž‘์€ ์กฐ๊ฐ์œผ๋กœ ๋‚จ๋Š”๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ํšจ์œจ๊ณผ ์œ ์—ฐ์„ฑ์˜ ๊ท ํ˜•์ด ์žกํžŒ๋‹ค.

WordPiece โ€” BERT ๊ณ„์—ด์˜ ์„ ํƒ

WordPiece๋Š” BERT์™€ ๊ทธ ํ›„์† ๋ชจ๋ธ๋“ค์ด ์ฑ„ํƒํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. BPE์™€ ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ ๋ณ‘ํ•ฉ ๊ธฐ์ค€์ด ๋‹ค๋ฅด๋‹ค. BPE๊ฐ€ ๋‹จ์ˆœ ๋นˆ๋„๋ฅผ ์“ฐ๋Š” ๋ฐ˜๋ฉด, WordPiece๋Š” ๊ฐ€๋Šฅ๋„(likelihood) ๊ธฐ๋ฐ˜ ์ ์ˆ˜๋ฅผ ์“ด๋‹ค.

score(x,y)=freq(xy)freq(x)โ‹…freq(y)\text{score}(x, y) = \frac{\text{freq}(xy)}{\text{freq}(x) \cdot \text{freq}(y)}

์ฆ‰ ๋‘ ํ† ํฐ xx, yy๋ฅผ ๋ณ‘ํ•ฉํ–ˆ์„ ๋•Œ์˜ ๋นˆ๋„๋ฅผ ๊ฐ๊ฐ์˜ ๋นˆ๋„์˜ ๊ณฑ์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ด๋‹ค. ์ด ๊ฐ’์ด ํฌ๋‹ค๋Š” ๊ฒƒ์€ xx์™€ yy๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ธฐ๋ณด๋‹ค ํ•จ๊ป˜ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝํ–ฅ์ด ๊ฐ•ํ•˜๋‹ค๋Š” ๋œป์ด๋‹ค. ์ด ๊ธฐ์ค€์€ ๋ณธ๋ž˜ ๋ง๋ญ‰์น˜์˜ ์–ธ์–ด ๋ชจ๋ธ ๊ฐ€๋Šฅ๋„๋ฅผ ์ตœ๋Œ€ํ™”ํ•˜๋Š” ๋ณ‘ํ•ฉ์„ ์ฐพ๋Š” ๊ณผ์ •์—์„œ ์œ ๋„๋˜๋ฉฐ, ๋กœ๊ทธ๋ฅผ ์ทจํ•˜๋ฉด ์ƒํ˜ธ์ •๋ณด๋Ÿ‰(pointwise mutual information, PMI) ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค. BPE์˜ ๋‹จ์ˆœ ๋นˆ๋„ ๊ธฐ์ค€๊ณผ ๋น„๊ตํ•˜๋ฉด, WordPiece๋Š” โ€œ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ๋ถ™์–ด ๋‚˜์˜ค๋Š”๊ฐ€โ€๋ฟ ์•„๋‹ˆ๋ผ โ€œ๊ฐ์ž ์–ผ๋งˆ๋‚˜ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š”๊ฐ€โ€๊นŒ์ง€ ํ•จ๊ป˜ ๊ณ ๋ คํ•˜๋Š” ์…ˆ์ด๋‹ค.

์‹ค๋ฌด์  ์ฐจ์ด๋กœ๋Š” WordPiece๊ฐ€ ๋‹จ์–ด ๋‚ด๋ถ€์˜ ์„œ๋ธŒ์›Œ๋“œ๋ฅผ ##์ด๋ผ๋Š” ์ ‘๋‘์‚ฌ๋กœ ํ‘œ์‹œํ•œ๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค. playing์ด ['play', '##ing']์œผ๋กœ ํ† ํฐํ™”๋œ๋‹ค. ์ด๋Š” ๋””ํ† ํฐํ™” ์‹œ ์›๋ž˜ ๋ฌธ์ž์—ด๋กœ ์ •ํ™•ํžˆ ๋ณต์›ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค.

Unigram Language Model โ€” ํ™•๋ฅ ์  ๊ด€์ 

Kudo๊ฐ€ 2018๋…„ ๋…ผ๋ฌธ์—์„œ ์ œ์•ˆํ•œ Unigram LM์€ ์•ž์„  ๋‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ๋Š” ์ ‘๊ทผ์ด ์™„์ „ํžˆ ๋‹ค๋ฅด๋‹ค. BPE์™€ WordPiece๊ฐ€ ์ž‘์€ ์–ดํœ˜์ง‘์—์„œ ์ถœ๋ฐœํ•ด ๋ณ‘ํ•ฉ์œผ๋กœ ํ™•์žฅํ•˜๋Š” โ€˜๋ฐ”ํ…€์—…โ€™ ๋ฐฉ์‹์ด๋ผ๋ฉด, Unigram์€ ์ฒ˜์Œ์— ๋งค์šฐ ํฐ ํ›„๋ณด ์–ดํœ˜์ง‘์„ ๋งŒ๋“ค์–ด ๋†“๊ณ  ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐํ•˜๋Š” โ€˜ํƒ‘๋‹ค์šดโ€™ ๋ฐฉ์‹์ด๋‹ค.

ํ•™์Šต ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ๋งค์šฐ ํฐ ์ดˆ๊ธฐ ์–ดํœ˜์ง‘์„ ๋งŒ๋“ ๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” ๋ชจ๋“  ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋‚˜์—ดํ•˜์ง€ ์•Š๊ณ , Suffix Array๋‚˜ ๋นˆ๋„ ์ปท์˜คํ”„ ๊ฐ™์€ ํœด๋ฆฌ์Šคํ‹ฑ์œผ๋กœ ํ›„๋ณด๋ฅผ ์ถ”๋ฆฐ๋‹ค.
  2. EM(expectation-maximization) ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ฐ ์„œ๋ธŒ์›Œ๋“œ์˜ ํ™•๋ฅ  p(xi)p(x_i)๋ฅผ ์ถ”์ •ํ•œ๋‹ค.
  3. ์ „์ฒด ๋ง๋ญ‰์น˜์˜ ๊ฐ€๋Šฅ๋„๋ฅผ ๊ฐ€์žฅ ๋œ ๊ฐ์†Œ์‹œํ‚ค๋Š” ์„œ๋ธŒ์›Œ๋“œ๋“ค์„ ์–ดํœ˜์ง‘์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.
  4. ์›ํ•˜๋Š” ํฌ๊ธฐ์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ 2~3์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

Unigram์˜ ๋งค๋ ฅ์€ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์„ ์—ฌ๋Ÿฌ ๋ฐฉ์‹์œผ๋กœ ํ† ํฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด hello๋ฅผ ['hello'], ['he', 'llo'], ['hel', 'lo'] ์ค‘ ์–ด๋А ๋ฐฉ์‹์œผ๋กœ ์ชผ๊ฐœ๋“  ํ™•๋ฅ  ๋ชจ๋ธ์—์„œ ๊ฐ๊ฐ์˜ ๊ฐ€๋Šฅ๋„๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค. Kudo๋Š” ๊ฐ™์€ ๋…ผ๋ฌธ์—์„œ ์ด ์„ฑ์งˆ์„ ์ด์šฉํ•œ ์„œ๋ธŒ์›Œ๋“œ ์ •๊ทœํ™”(subword regularization)๋ผ๋Š” ๋ฐ์ดํ„ฐ ์ฆ๊ฐ• ๊ธฐ๋ฒ•๋„ ํ•จ๊ป˜ ์ œ์•ˆํ–ˆ๋‹ค. ํ•™์Šต ์‹œ ๋งค๋ฒˆ ๋‹ค๋ฅธ ํ† ํฐํ™”๋ฅผ ์ƒ˜ํ”Œ๋งํ•˜์—ฌ ๋ชจ๋ธ์ด ํŠน์ • ๋ถ„์ ˆ์— ๊ฐ‡ํžˆ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

SentencePiece โ€” ์–ธ์–ด ๋…๋ฆฝ์  ๊ตฌํ˜„

SentencePiece๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๊ธฐ๋ณด๋‹ค ๊ตฌ๊ธ€์ด ๊ฐœ๋ฐœํ•œ ๊ตฌํ˜„์ฒด๋‹ค. BPE์™€ Unigram์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค. SentencePiece์˜ ํ•ต์‹ฌ ํŠน์ง•์€ ์–ธ์–ด ๋…๋ฆฝ์ ์ด๋ผ๋Š” ์ ์ด๋‹ค.

๊ธฐ์กด BPE ๊ตฌํ˜„์€ ๋Œ€๋ถ€๋ถ„ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ๋‹จ์–ด๋ฅผ ๋‚˜๋ˆˆ ๋’ค ์„œ๋ธŒ์›Œ๋“œ๋ฅผ ์ฐพ๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค. ์ด๋Š” ์˜์–ด์ฒ˜๋Ÿผ ๊ณต๋ฐฑ์œผ๋กœ ๋‹จ์–ด๊ฐ€ ๊ตฌ๋ถ„๋˜๋Š” ์–ธ์–ด์—์„œ๋Š” ์ž์—ฐ์Šค๋Ÿฝ์ง€๋งŒ, ์ค‘๊ตญ์–ด๋‚˜ ์ผ๋ณธ์–ด์ฒ˜๋Ÿผ ๊ณต๋ฐฑ์ด ์—†๋Š” ์–ธ์–ด์—์„œ๋Š” ์–ด๋ ค์›€์„ ๊ฒช๋Š”๋‹ค. ํ•œ๊ตญ์–ด์ฒ˜๋Ÿผ ๊ณต๋ฐฑ์ด ์žˆ์ง€๋งŒ ํ˜•ํƒœ์†Œ ๊ฒฝ๊ณ„์™€ ๊ณต๋ฐฑ์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์–ธ์–ด๋„ ๊นŒ๋‹ค๋กญ๋‹ค.

SentencePiece๋Š” ์ด ๋ฌธ์ œ๋ฅผ ๋‹จ์ˆœํ•˜๊ณ  ์šฐ์•„ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•œ๋‹ค. ๊ณต๋ฐฑ ์ž์ฒด๋ฅผ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ •ํ™•ํžˆ๋Š” ๊ณต๋ฐฑ์„ โ–(U+2581)์ด๋ผ๋Š” ํŠน์ˆ˜ ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•œ๋‹ค. Hello world๋Š” โ–Helloโ–world๊ฐ€ ๋˜๊ณ , ์ด ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ BPE ํ˜น์€ Unigram์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ณต๋ฐฑ์ด ์—†๋Š” ์–ธ์–ด๋“ , ๋ณต์žกํ•œ ํ˜•ํƒœ๋ก ์„ ๊ฐ€์ง„ ์–ธ์–ด๋“  ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์žฅ์ ์€ ์™„์ „ํ•œ ๊ฐ€์—ญ์„ฑ(reversibility)์ด๋‹ค. ์ผ๋ฐ˜ BPE๋Š” ๊ณต๋ฐฑ์„ ๋ณ„๋„ ์ „์ฒ˜๋ฆฌ๋กœ ๋–ผ์–ด ๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ํ† ํฐํ™” ํ›„ ๋””ํ† ํฐํ™”ํ•˜๋ฉด ์›๋ž˜ ๋ฌธ์ž์—ด๊ณผ ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. SentencePiece๋Š” ๊ณต๋ฐฑ์„ โ– ๋ฌธ์ž๋กœ ์ทจ๊ธ‰ํ•˜๋ฏ€๋กœ ํ† ํฐ์„ ์ด์–ด ๋ถ™์ด๊ณ  โ–๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์›๋ž˜ ๋ฌธ์ž์—ด์„ ์ •ํ™•ํžˆ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฐ ์žฅ์  ๋•์— LLaMA, LLaMA2, T5, XLNet, ALBERT ๋“ฑ ๋งŽ์€ ํ˜„๋Œ€ ๋ชจ๋ธ์ด SentencePiece๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค.

tiktoken โ€” OpenAI์˜ ์„ ํƒ

OpenAI๋Š” ์ž์ฒด BPE ๊ตฌํ˜„์ฒด์ธ tiktoken์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•œ๋‹ค. tiktoken์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋ฐ”์ดํŠธ ์ˆ˜์ค€(byte-level) BPE๋ผ๋Š” ์ ์ด๋‹ค. ๋ฌธ์ž๊ฐ€ ์•„๋‹Œ UTF-8 ๋ฐ”์ดํŠธ๋ฅผ ์ตœ์†Œ ๋‹จ์œ„๋กœ ๋‹ค๋ฃฌ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ด๋ก ์ƒ ์–ด๋–ค ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž์—ด๋„ ๊นจ์ง€์ง€ ์•Š๊ณ  ํ† ํฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ชจ์ง€, ํฌ๊ท€ ์–ธ์–ด, ์ˆ˜์‹ ๊ธฐํ˜ธ ๋ฌด์—‡์ด๋“  ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ดˆ๊ธฐ ์–ดํœ˜์ง‘์€ 256๊ฐœ์˜ ๋ฐ”์ดํŠธ์—์„œ ์‹œ์ž‘ํ•œ๋‹ค.

๋˜ ๋‹ค๋ฅธ ํŠน์ง•์€ pre-tokenizer regex์˜ ์กด์žฌ๋‹ค. tiktoken์€ BPE๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์ •๊ทœ์‹์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ๋ฏธ๋ฆฌ ์ชผ๊ฐ ๋‹ค. ์ด๋Š” โ€œ์–ด๋–ค ๋ฌธ์ž ์Œ์ด ์„œ๋กœ ๋ณ‘ํ•ฉ๋  ์ˆ˜ ์žˆ๋Š”๊ฐ€โ€๋ฅผ ์ œ์•ฝํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ณต๋ฐฑ๊ณผ ์•ŒํŒŒ๋ฒณ์€ ๊ฐ™์€ ํ† ํฐ ์•ˆ์— ์˜ฌ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ˆซ์ž์™€ ์•ŒํŒŒ๋ฒณ์€ ๊ฐ™์€ ํ† ํฐ์ด ๋  ์ˆ˜ ์—†๋„๋ก ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค. ์ด pre-tokenizer ์„ค๊ณ„๋Š” ๋ชจ๋ธ๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅธ๋ฐ, r50k_base์™€ p50k_base(GPT-3 ๊ณ„์—ด)๋กœ ์‹œ์ž‘ํ•ด cl100k_base(GPT-3.5/4), o200k_base(GPT-4o)๋กœ ์ด์–ด์ง€๋ฉฐ tiktoken ๊ณ„๋ณด์—์„œ ๊ณ„์† ์ง„ํ™”ํ•ด ์™”๋‹ค.

LLaMA 3๋„ tiktoken๊ณผ ํ˜ธํ™˜๋˜๋Š” BPE ๊ทœ๊ฒฉ์œผ๋กœ ์ „ํ™˜ํ–ˆ์œผ๋ฉฐ, EXAONE ๋“ฑ ์—ฌ๋Ÿฌ ํ•œ๊ตญ์–ด LLM๋„ ์œ ์‚ฌํ•œ ์ ‘๊ทผ์„ ์ทจํ•œ๋‹ค. ๋‹ค๋งŒ ๊ฐ ๋ชจ๋ธ์˜ pre-tokenizer ์ •๊ทœ์‹์€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉฐ, ์ด ์ฐจ์ด๊ฐ€ ํ•œ๊ตญ์–ด ํ† ํฐํ™” ํšจ์œจ์— ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

ํŒŒ์ด์ฌ์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ณด๋Š” BPE

์ด๋ก ๋งŒ์œผ๋กœ๋Š” ๊ฐ์ด ์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์ตœ์†Œ ๊ตฌํ˜„์„ ํ†ตํ•ด BPE๋ฅผ ์ง์ ‘ ์ฒดํ—˜ํ•ด ๋ณด์ž. ๋‹ค์Œ์€ ๊ต์œก ๋ชฉ์  ํŒŒ์ด์ฌ BPE ํ† ํฌ๋‚˜์ด์ €๋‹ค.

from collections import Counter, defaultdict
from typing import List, Tuple, Dict
class SimpleBPE:
def __init__(self):
self.merges: List[Tuple[str, str]] = []
self.vocab: Dict[str, int] = {}
def _get_word_freqs(self, corpus: List[str]) -> Dict[Tuple[str, ...], int]:
"""๋ง๋ญ‰์น˜์—์„œ ๋‹จ์–ด ๋นˆ๋„๋ฅผ ์ถ”์ถœํ•˜๊ณ  ๋ฌธ์ž ๋‹จ์œ„๋กœ ๋ถ„ํ•ด"""
freqs: Dict[Tuple[str, ...], int] = Counter()
for text in corpus:
for word in text.split():
# ๋‹จ์–ด ๋์— </w> ๊ธฐํ˜ธ๋ฅผ ๋ถ™์—ฌ ๋‹จ์–ด ๊ฒฝ๊ณ„๋ฅผ ํ‘œ์‹œ
chars = tuple(list(word) + ["</w>"])
freqs[chars] += 1
return freqs
def _get_pair_stats(self, word_freqs: Dict[Tuple[str, ...], int]) -> Counter:
"""์ธ์ ‘ํ•œ ๋ฌธ์ž ์Œ์˜ ๋นˆ๋„๋ฅผ ๊ณ„์‚ฐ"""
pairs = Counter()
for word, freq in word_freqs.items():
for i in range(len(word) - 1):
pairs[(word[i], word[i + 1])] += freq
return pairs
def _merge_pair(
self,
pair: Tuple[str, str],
word_freqs: Dict[Tuple[str, ...], int]
) -> Dict[Tuple[str, ...], int]:
"""๊ฐ€์žฅ ๋นˆ๋ฒˆํ•œ ์Œ์„ ํ•˜๋‚˜์˜ ํ† ํฐ์œผ๋กœ ๋ณ‘ํ•ฉ"""
new_freqs = {}
merged = pair[0] + pair[1]
for word, freq in word_freqs.items():
new_word = []
i = 0
while i < len(word):
# ํ˜„์žฌ ์œ„์น˜์™€ ๋‹ค์Œ ์œ„์น˜๊ฐ€ ๋ณ‘ํ•ฉ ๋Œ€์ƒ ์Œ๊ณผ ์ผ์น˜ํ•˜๋ฉด ํ•ฉ์นจ
if i < len(word) - 1 and (word[i], word[i + 1]) == pair:
new_word.append(merged)
i += 2
else:
new_word.append(word[i])
i += 1
new_freqs[tuple(new_word)] = freq
return new_freqs
def train(self, corpus: List[str], num_merges: int = 100):
"""๋ง๋ญ‰์น˜๋กœ๋ถ€ํ„ฐ BPE ๊ทœ์น™์„ ํ•™์Šต"""
word_freqs = self._get_word_freqs(corpus)
for i in range(num_merges):
pairs = self._get_pair_stats(word_freqs)
if not pairs:
break
best_pair = max(pairs, key=pairs.get)
word_freqs = self._merge_pair(best_pair, word_freqs)
self.merges.append(best_pair)
# ์ตœ์ข… ์–ดํœ˜์ง‘ ๊ตฌ์ถ•
vocab_set = set()
for word in word_freqs:
for token in word:
vocab_set.add(token)
self.vocab = {token: idx for idx, token in enumerate(sorted(vocab_set))}
def tokenize(self, text: str) -> List[str]:
"""ํ•™์Šต๋œ ๊ทœ์น™์„ ์ ์šฉํ•˜์—ฌ ์ƒˆ ํ…์ŠคํŠธ๋ฅผ ํ† ํฐํ™”"""
result = []
for word in text.split():
tokens = list(word) + ["</w>"]
# ํ•™์Šต๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ณ‘ํ•ฉ ๊ทœ์น™์„ ์ ์šฉ
for pair in self.merges:
new_tokens = []
i = 0
while i < len(tokens):
if i < len(tokens) - 1 and (tokens[i], tokens[i + 1]) == pair:
new_tokens.append(pair[0] + pair[1])
i += 2
else:
new_tokens.append(tokens[i])
i += 1
tokens = new_tokens
result.extend(tokens)
return result
# ์‚ฌ์šฉ ์˜ˆ์‹œ
corpus = [
"low lower lowest",
"new newer newest",
"wide wider widest",
"slow slower slowest",
]
bpe = SimpleBPE()
bpe.train(corpus, num_merges=20)
print("ํ•™์Šต๋œ ๋ณ‘ํ•ฉ ๊ทœ์น™:")
for i, merge in enumerate(bpe.merges[:10]):
print(f" {i+1}. {merge[0]} + {merge[1]} -> {merge[0]+merge[1]}")
print("\nํ† ํฐํ™” ๊ฒฐ๊ณผ:")
print(bpe.tokenize("lowest newer"))

์ด ๊ตฌํ˜„์€ ๋งค์šฐ ๋‹จ์ˆœํ•˜์ง€๋งŒ BPE์˜ ํ•ต์‹ฌ์€ ๋‹ด๊ณ  ์žˆ๋‹ค. ์‹ค์ œ๋กœ ์‹คํ–‰ํ•ด ๋ณด๋ฉด ํ•™์Šต ๋ง๋ญ‰์น˜์—์„œ ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•œ โ€˜loโ€™, โ€˜stโ€™ ๋“ฑ์ด ๋จผ์ € ๋ณ‘ํ•ฉ ๊ทœ์น™์œผ๋กœ ๋“ฑ์žฅํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ๋•์…˜ ์ˆ˜์ค€ ๊ตฌํ˜„์€ ์ด๋ณด๋‹ค ํ›จ์”ฌ ๋ณต์žกํ•˜๋‹ค. ์šฐ์„  ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์œ„ ๊ตฌํ˜„์€ ๋งค ๋ณ‘ํ•ฉ๋งˆ๋‹ค ์ „์ฒด ๋ง๋ญ‰์น˜๋ฅผ ๋‹ค์‹œ ์ˆœํšŒํ•˜๋Š”๋ฐ, ์‹ค์ œ ๊ตฌํ˜„(์˜ˆ: Hugging Face์˜ tokenizers ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์€ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณ€ํ™”๊ฐ€ ์žˆ๋Š” ๋ถ€๋ถ„๋งŒ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. ๋˜ํ•œ ๋ฐ”์ดํŠธ ์ˆ˜์ค€ ์ฒ˜๋ฆฌ, ์ •๊ทœ์‹ ๊ธฐ๋ฐ˜ pre-tokenization, ์บ์‹ฑ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๋“ฑ์ด ์ถ”๊ฐ€๋œ๋‹ค. ํ•˜์ง€๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ต์‹ฌ์€ ์ด 50์ค„ ๋‚จ์ง“ํ•œ ์ฝ”๋“œ์— ๋ชจ๋‘ ๋‹ด๊ฒจ ์žˆ๋‹ค.

SentencePiece๋‚˜ tiktoken์„ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์‹œ๋„ ๋ณด๊ณ  ๋„˜์–ด๊ฐ€์ž. ์‹ค๋ฌด์—์„œ๋Š” ๋ณดํ†ต ์ด๋Ÿฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

# tiktoken ์‚ฌ์šฉ ์˜ˆ์‹œ (OpenAI ๋ชจ๋ธ ํ˜ธํ™˜)
import tiktoken
# GPT-4o ํ† ํฌ๋‚˜์ด์ € ๋กœ๋“œ
enc = tiktoken.get_encoding("o200k_base")
text = "์•ˆ๋…•ํ•˜์„ธ์š”, ์˜ค๋Š˜์€ ํ† ํฌ๋‚˜์ด์ €์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด ๋ด…์‹œ๋‹ค."
tokens = enc.encode(text)
print(f"ํ† ํฐ ์ˆ˜: {len(tokens)}")
print(f"ํ† ํฐ ID: {tokens}")
print(f"๊ฐ ํ† ํฐ ๋””์ฝ”๋”ฉ: {[enc.decode([t]) for t in tokens]}")
# ๋””์ฝ”๋”ฉ - ์™„์ „ ๊ฐ€์—ญ
print(f"๋ณต์›: {enc.decode(tokens)}")
# SentencePiece๋กœ ์ง์ ‘ ํ•™์Šตํ•˜๊ธฐ
import sentencepiece as spm
# ํ•™์Šต์šฉ ๋ง๋ญ‰์น˜ ํŒŒ์ผ ์ค€๋น„ ํ›„
spm.SentencePieceTrainer.train(
input="corpus.txt",
model_prefix="my_tokenizer",
vocab_size=32000, # ๋ง๋ญ‰์น˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์กฐ์ •
model_type="bpe", # ํ˜น์€ "unigram"
character_coverage=0.9995, # ํ•œ๊ตญ์–ด๋Š” 0.9995 ๊ถŒ์žฅ
pad_id=0, unk_id=1, bos_id=2, eos_id=3,
)
# ํ•™์Šต๋œ ํ† ํฌ๋‚˜์ด์ € ๋กœ๋“œ ๋ฐ ์‚ฌ์šฉ
sp = spm.SentencePieceProcessor()
sp.load("my_tokenizer.model")
text = "ํ† ํฌ๋‚˜์ด์ € ํ•™์Šต ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค."
pieces = sp.encode_as_pieces(text)
ids = sp.encode_as_ids(text)
print(pieces) # ['โ–ํ† ํฌ๋‚˜์ด์ €', 'โ–ํ•™์Šต', 'โ–์˜ˆ์ œ', '์ž…๋‹ˆ๋‹ค', '.']
print(ids)

ํ•œ๊ตญ์–ด ํ† ํฌ๋‚˜์ด์ €์˜ ํŠน์ˆ˜ํ•œ ์‚ฌ์ •

์•ž์„œ ์‚ดํŽด๋ดค๋“ฏ ํ•œ๊ตญ์–ด ํ† ํฐํ™”๋Š” ์˜์–ด๋ณด๋‹ค ํšจ์œจ์ด ๋–จ์–ด์ง„๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋‹จ์ˆœํžˆ โ€˜ํ•œ๊ตญ์–ด๊ฐ€ ์–ด๋ ค์šด ์–ธ์–ดโ€™๋ผ์„œ ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๊ตฌ์กฐ์  ์›์ธ์ด ์–ฝํ˜€ ์žˆ๋‹ค.

๋ฐ”์ดํŠธ ์ˆ˜์ค€ BPE์™€ ํ•œ๊ธ€

๋Œ€๋ถ€๋ถ„์˜ ํ˜„๋Œ€ LLM์€ ๋ฐ”์ดํŠธ ์ˆ˜์ค€ BPE๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ•œ๊ธ€ ์Œ์ ˆ(U+AC00~U+D7A3, ๊ฐ€-ํžฃ)์€ UTF-8๋กœ ์ธ์ฝ”๋”ฉํ•  ๋•Œ ํ•œ ๊ธ€์ž๋‹น 3๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•œ๋‹ค. ์˜์–ด ์•ŒํŒŒ๋ฒณ์ด 1๋ฐ”์ดํŠธ์ธ ๊ฒƒ๊ณผ ๋Œ€์กฐ์ ์ด๋‹ค. โ€˜๊ฐ€โ€™๋ผ๋Š” ํ•œ ๊ธ€์ž๊ฐ€ 0xEA 0xB0 0x80์ด๋ผ๋Š” ์„ธ ๋ฐ”์ดํŠธ์˜ ์‹œํ€€์Šค๊ฐ€ ๋œ๋‹ค.

ํ•™์Šต ๋ง๋ญ‰์น˜์— ์˜์–ด๊ฐ€ ์••๋„์ ์œผ๋กœ ๋งŽ์€ ํ† ํฌ๋‚˜์ด์ €์˜ ๊ฒฝ์šฐ(๋Œ€๋ถ€๋ถ„์˜ ๊ธ€๋กœ๋ฒŒ LLM์ด ๊ทธ๋ ‡๋‹ค), ํ•œ๊ธ€ ๋ณ‘ํ•ฉ์ด ์ถฉ๋ถ„ํžˆ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋งŽ์€ ํ•œ๊ธ€ ๋ฌธ์ž๊ฐ€ 2~3๊ฐœ์˜ ๋ฐ”์ดํŠธ ํ† ํฐ์œผ๋กœ ์ชผ๊ฐœ์ง„๋‹ค. โ€˜์•ˆ๋…•ํ•˜์„ธ์š”โ€™๋ผ๋Š” ๋‹ค์„ฏ ๊ธ€์ž๊ฐ€ 10๊ฐœ ์ด์ƒ์˜ ํ† ํฐ์ด ๋˜๋Š” ๊ฒฝ์šฐ๋„ ํ”ํ•˜๋‹ค.

์ด๊ฒƒ์ด ์™œ ๋ฌธ์ œ์ธ๊ฐ€.

์ฒซ์งธ, ๋น„์šฉ(cost). LLM API๋Š” ํ† ํฐ ๋‹จ์œ„๋กœ ๊ณผ๊ธˆํ•œ๋‹ค. ๊ฐ™์€ ๋‚ด์šฉ์„ ํ•œ๊ตญ์–ด๋กœ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉด ์˜์–ด๋กœ ํ–ˆ์„ ๋•Œ๋ณด๋‹ค 2~3๋ฐฐ ๋น„์‹ผ ์š”๊ธˆ์„ ๋‚ด์•ผ ํ•œ๋‹ค.

๋‘˜์งธ, ์ง€์—ฐ(latency). ์ถ”๋ก  ์†๋„๋Š” ์ƒ์„ฑํ•  ํ† ํฐ ์ˆ˜์— ๋น„๋ก€ํ•œ๋‹ค. ํ•œ๊ตญ์–ด ์‘๋‹ต์ด ์ฒด๊ฐ์ƒ ๋А๋ฆฐ ์ด์œ ๋‹ค.

์…‹์งธ, ๋ฌธ๋งฅ ์œˆ๋„์šฐ(context window) ์†Œ๋ชจ. ์ปจํ…์ŠคํŠธ ๊ธธ์ด๊ฐ€ 128K ํ† ํฐ์ธ ๋ชจ๋ธ์ด๋ผ๋„, ํ•œ๊ตญ์–ด๋กœ๋Š” ์‹ค์งˆ์ ์œผ๋กœ 40~50K ๋ฌธ์ž ์ •๋„๋ฐ–์— ๋‹ด์ง€ ๋ชปํ•œ๋‹ค.

์ด ๋ฌธ์ œ๋Š” Petrov et al.์˜ 2023๋…„ ์—ฐ๊ตฌ Language Model Tokenizers Introduce Unfairness Between Languages์—์„œ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ–ˆ๋‹ค. ์ €์ž๋“ค์€ ๋‹ค๊ตญ์–ด ํ† ํฌ๋‚˜์ด์ €์˜ โ€˜tokenization fertilityโ€™(๋ฌธ์ž๋‹น ํ† ํฐ ์ˆ˜)๋ฅผ ์–ธ์–ด๋ณ„๋กœ ์ธก์ •ํ–ˆ๊ณ , ์ผ๋ถ€ ์–ธ์–ด๋Š” ์˜์–ด ๋Œ€๋น„ ์ตœ๋Œ€ 15๋ฐฐ์˜ ํ† ํฐ์„ ์†Œ๋ชจํ•œ๋‹ค๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ–ˆ๋‹ค. ์ด๋Š” ๋‹จ์ˆœํžˆ ํšจ์œจ์˜ ๋ฌธ์ œ๋ฅผ ๋„˜์–ด ์–ธ์–ด ๊ฐ„ ํ˜•ํ‰์„ฑ(equity)์˜ ๋ฌธ์ œ์ด๊ธฐ๋„ ํ•˜๋‹ค.

๊ต์ฐฉ์–ด ํŠน์„ฑ๊ณผ ํ˜•ํƒœ์†Œ

ํ•œ๊ตญ์–ด๋Š” ๊ต์ฐฉ์–ด๋‹ค. ์–ด๊ทผ์— ์กฐ์‚ฌ์™€ ์–ด๋ฏธ๊ฐ€ ๋ถ™์–ด ์˜๋ฏธ๋ฅผ ํ™•์žฅํ•œ๋‹ค. 'ํ•™๊ต์—์„œ๋Š”'์€ 'ํ•™๊ต' + '์—์„œ' + '๋Š”'์ด๋ผ๋Š” ์„ธ ํ˜•ํƒœ์†Œ์˜ ์กฐํ•ฉ์ด๋‹ค. ์ด์ƒ์ ์ธ ํ† ํฌ๋‚˜์ด์ €๋ผ๋ฉด ์ด๋Ÿฌํ•œ ํ˜•ํƒœ์†Œ ๊ฒฝ๊ณ„๋ฅผ ์กด์ค‘ํ•ด์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ํ†ต๊ณ„ ๊ธฐ๋ฐ˜ BPE๋Š” ํ˜•ํƒœ์†Œ ์ •๋ณด๋ฅผ ์•Œ์ง€ ๋ชปํ•œ๋‹ค. '์—์„œ๋Š”'์ด ์ž์ฃผ ๋“ฑ์žฅํ•˜๋ฉด ํ•˜๋‚˜์˜ ํ† ํฐ์ด ๋  ๊ฒƒ์ด๊ณ , 'ํ•™๊ต์—'๊ฐ€ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋ฉด ๋˜ ๊ทธ๊ฒƒ์ด ํ•œ ํ† ํฐ์ด ๋  ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐ™์€ ํ˜•ํƒœ์†Œ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํ† ํฐ ๊ฒฝ๊ณ„๋กœ ์ชผ๊ฐœ์ง€๋Š” ์ผ์ด ๋นˆ๋ฒˆํ•˜๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ „์ฒ˜๋ฆฌ ๋‹จ๊ณ„์— ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ๋‹ค. Mecab-ko, KoNLPy ๊ณ„์—ด ๋„๊ตฌ๋กœ ๋จผ์ € ํ˜•ํƒœ์†Œ ๊ฒฝ๊ณ„๋ฅผ ๋ถ„์„ํ•œ ๋’ค, BPE๋ฅผ ํ•™์Šต์‹œ์ผœ ๋ณ‘ํ•ฉ์ด ํ˜•ํƒœ์†Œ ๊ฒฝ๊ณ„๋ฅผ ๋„˜์ง€ ์•Š๋„๋ก ์œ ๋„ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ตœ๊ทผ ํ•œ๊ตญ์–ด ํŠนํ™” LLM ๋Œ€๋‹ค์ˆ˜๊ฐ€ ์ด ์ง„์˜์ด๋‹ค. EXAONE 3.0์€ ๊ต์ฐฉ์–ด ํŠน์„ฑ์„ ๋ฐ˜์˜ํ•ด ํ•œ๊ตญ์–ด ๋ง๋ญ‰์น˜๋ฅผ MeCab์œผ๋กœ pre-tokenizeํ•œ ๋’ค vocab 102,400์˜ BBPE(byte-level BPE)๋ฅผ ํ•™์Šต์‹œ์ผฐ๊ณ 2, HyperCLOVA X๋„ vocab 100,000์˜ morpheme-aware byte-level BPE๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค3. ์ด ๋ฐฉ์‹์€ ํ˜•ํƒœ์†Œ ๊ฒฝ๊ณ„๋ฅผ ์กด์ค‘ํ•œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๋ถ„์„๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ํ•™์Šต์— ์ „ํŒŒ๋  ์ˆ˜ ์žˆ๊ณ , ๊ตฌํ˜„์— ๋”ฐ๋ผ์„œ๋Š” ์ถ”๋ก  ์‹œ์ ๊นŒ์ง€ ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ ์˜์กด์„ฑ์ด ์ด์–ด์ง€๊ธฐ๋„ ํ•œ๋‹ค.

๋‹ค๋ฅธ ๋ฐฉํ–ฅ์˜ ์ ‘๊ทผ๋„ ์žˆ๋‹ค. ํ˜•ํƒœ์†Œ ๋ถ„์„ ์—†์ด ํ•œ๊ตญ์–ด ๋ง๋ญ‰์น˜ ๋น„์ค‘์„ ํฌ๊ฒŒ ๋†’์—ฌ BPE๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•œ๊ตญ์–ด ํŒจํ„ด์„ ํ•™์Šตํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋Œ€ํ‘œ ์‚ฌ๋ก€๋Š” Polyglot-Ko๋กœ, ์ „์ฒ˜๋ฆฌ ํ›„ 863GB(์ฒ˜๋ฆฌ ์ „ 1.2TB) ํ•œ๊ตญ์–ด ๋ฐ์ดํ„ฐ๋กœ vocab 30,003์˜ BPE๋ฅผ ํ•™์Šตํ–ˆ๋‹ค4. ์นด์นด์˜ค๋ธŒ๋ ˆ์ธ์˜ KoGPT๋„ ์œ ์‚ฌํ•œ ์ ‘๊ทผ์ด๋‹ค5. ์ˆœ์ˆ˜ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ๋ถ„์„๊ธฐ ์˜ค๋ฅ˜๊ฐ€ ์—†๊ณ  ๋”ฅ๋Ÿฌ๋‹ ์นœํ™”์ ์ด์ง€๋งŒ ์–ดํœ˜์ง‘์ด ํ•œ๊ตญ์–ด์— ๋งŽ์ด ํ• ์• ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋‹ค๊ตญ์–ด ์ง€์› ์‹œ Trade-off๊ฐ€ ์ƒ๊ธด๋‹ค.

์ตœ๊ทผ์—๋Š” ์ œ3์˜ ๋ฐฉํ–ฅ๋„ ๋“ฑ์žฅํ–ˆ๋‹ค. ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ ์—†์ด vocab ํฌ๊ธฐ๋ฅผ ๊ณผ๊ฐํžˆ ํ‚ค์šฐ๊ณ , SuperBPE6์ฒ˜๋Ÿผ ๊ณต๋ฐฑ์„ ๋„˜๋Š” ๋ณ‘ํ•ฉ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•์œผ๋กœ ํ•œ๊ตญ์–ด ํ† ํฐ ํšจ์œจ์„ ๊ฐœ์„ ํ•˜๋Š” ์ ‘๊ทผ์ด๋‹ค. 2026๋…„ ๊ณต๊ฐœ๋œ K-EXAONE7์€ ๊ธฐ์กด EXAONE ๊ณ„์—ด์˜ vocab 100K๋ฅผ 150K๋กœ ์žฌ์„ค๊ณ„ํ•˜๋ฉด์„œ SuperBPE ์ „๋žต์„ ๋„์ž…ํ•ด superword ํ† ํฐ์ด ์ „์ฒด ์–ดํœ˜์˜ ์•ฝ 20%๋ฅผ ์ฐจ์ง€ํ•˜๋„๋ก ํ–ˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ํ‰๊ท  ์•ฝ 30%์˜ ํ† ํฐ ํšจ์œจ ๊ฐœ์„ ์„ ๋ณด๊ณ ํ–ˆ๋‹ค.

Pre-tokenizer regex์˜ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด

GPT-4o์˜ o200k_base์™€ LLaMA 3์˜ ์ •๊ทœ์‹์„ ๋น„๊ตํ•ด ๋ณด๋ฉด, o200k_base๋Š” \p{L}์„ ๋Œ€์†Œ๋ฌธ์ž ์นดํ…Œ๊ณ ๋ฆฌ(\p{Lu}, \p{Ll} ๋“ฑ)๋กœ ์ชผ๊ฐœ ๋ผํ‹ด ๊ณ„์—ด์˜ CamelCase๋‚˜ ๋ถ„์Œ๊ธฐํ˜ธ ์กฐํ•ฉ์„ ๋” ์ •๋ฐ€ํ•˜๊ฒŒ ํฌ์ฐฉํ•œ๋‹ค. ๋ฐ˜๋ฉด LLaMA 3๋Š” ๋‹จ์ผ \p{L}+๋ฅผ ์“ฐ๋Š” ๋” ๋‹จ์ˆœํ•œ ์ •๊ทœ์‹์„ ์œ ์ง€ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ•œ๊ธ€์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์ด ์—†๋Š” \p{Lo} ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•˜๋ฏ€๋กœ, o200k_base์˜ ์ด ์„ธ๋ถ„ํ™”๋Š” ํ•œ๊ธ€ ์ฒ˜๋ฆฌ์— ์‚ฌ์‹ค์ƒ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค โ€” ๋‘ ์ •๊ทœ์‹ ๋ชจ๋‘ ํ•œ๊ธ€์„ ๋ณ„๋„๋กœ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์—์„œ ๋™์ผํ•˜๋‹ค.

ํ•œ๊ตญ์–ด์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ณ€์ˆ˜๋Š” ๋”ฐ๋กœ ์žˆ๋‹ค. ์„ ํ–‰ ๊ณต๋ฐฑ์„ ํ† ํฐ์— ๋ถ™์ด๋Š” ๋ฐฉ์‹, ์ˆซ์ž๋ฅผ ๋ช‡ ์ž๋ฆฌ ๋‹จ์œ„๋กœ ๋Š๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  \p{Lo} ์—ฐ์† ๋ฌธ์ž์—ด์„ ํ•œ ๋ฉ์–ด๋ฆฌ๋กœ ๋ฌถ์„์ง€ ์ž˜๊ฒŒ ์ชผ๊ฐค์ง€ ๊ฐ™์€ ์„ ํƒ์ด๋‹ค. ์ด ์„ค๊ณ„๋“ค์ด vocab ํ• ๋‹น๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ตœ์ข…์ ์œผ๋กœ ํ•œ๊ตญ์–ด ํ† ํฐํ™” ํšจ์œจ์„ ๊ฒฐ์ •ํ•œ๋‹ค.

์ด๋Ÿฐ ์„ค๊ณ„ ์„ ํƒ์€ ๋™์ผํ•œ ๋ชจ๋ธ ํฌ๊ธฐ์™€ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ผ๋„ ์‹ค์ œ ์„œ๋น„์Šค ์„ฑ๋Šฅ(ํ† ํฐ๋‹น ๋ฐ”์ดํŠธ, ์ถ”๋ก  ๋น„์šฉ, ํ•œ๊ตญ์–ด ๋‹ค์šด์ŠคํŠธ๋ฆผ ํ’ˆ์งˆ)์— ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ๊ตญ์–ด LLM์„ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ํ† ํฌ๋‚˜์ด์ € ์„ค๊ณ„๋ฅผ ๋งค์šฐ ์‹ ์ค‘ํ•˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค. ํ•œ ๋ฒˆ ํ™•์ •ํ•œ ํ† ํฌ๋‚˜์ด์ €๋Š” ์ดํ›„ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜์™€ ๋ฌถ์—ฌ ์ˆ˜์ •ํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์–ด๋–ป๊ฒŒ ํ‰๊ฐ€ํ•  ๊ฒƒ์ธ๊ฐ€

ํ† ํฌ๋‚˜์ด์ €์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์ƒ๊ฐ๋ณด๋‹ค ๊นŒ๋‹ค๋กญ๋‹ค. ์—ฌ๋Ÿฌ ์ง€ํ‘œ๊ฐ€ ์žˆ๊ณ  ๊ฐ๊ธฐ ์ธก์ •ํ•˜๋Š” ์†์„ฑ์ด ๋‹ค๋ฅด๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ํ† ํฌ๋‚˜์ด์ €์˜ โ€œ์ข‹์Œโ€์€ ๊ฒฐ๊ตญ ์–ธ์–ด ๋ชจ๋ธ์˜ ํ•™์Šตยท์ถ”๋ก  ํ’ˆ์งˆ์— ๊ฐ„์ ‘์ ์œผ๋กœ ๋“œ๋Ÿฌ๋‚˜๋Š” ๊ฒƒ์ด๋ผ, ํ† ํฌ๋‚˜์ด์ €๋งŒ ๋”ฐ๋กœ ๋–ผ์–ด ์ ์ˆ˜๋ฅผ ๋งค๊ธฐ๋Š” ์ผ์€ ์–ธ์ œ๋‚˜ ๋ถ€๋ถ„์ ์ผ ์ˆ˜๋ฐ–์— ์—†๋‹ค.

Fertility - ๋‹จ์œ„๋‹น ํ† ํฐ ์ˆ˜

๊ฐ€์žฅ ์ง๊ด€์ ์ธ ์ง€ํ‘œ๋Š” fertility๋‹ค. ํ…์ŠคํŠธ ํ•œ ๋‹จ์œ„๋ฅผ ํ† ํฐํ™”ํ–ˆ์„ ๋•Œ ๋ช‡ ๊ฐœ์˜ ํ† ํฐ์ด ๋‚˜์˜ค๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์˜์–ด๊ถŒ์—์„œ๋Š” ๋‹จ์–ด๋‹น ํ† ํฐ ์ˆ˜(tokens/word)๋กœ, ๋‹ค๊ตญ์–ด ๋น„๊ต์—์„œ๋Š” ๋ฌธ์ž๋‹น ํ† ํฐ ์ˆ˜๋กœ ์“ด๋‹ค.

fertility=ํ† ํฐย ์ˆ˜๋‹จ์–ดย ์ˆ˜ย ํ˜น์€ย ๋ฌธ์žย ์ˆ˜\text{fertility} = \frac{\text{ํ† ํฐ ์ˆ˜}}{\text{๋‹จ์–ด ์ˆ˜ ํ˜น์€ ๋ฌธ์ž ์ˆ˜}}

๋‚ฎ์„์ˆ˜๋ก ๊ฐ™์€ ๋‚ด์šฉ์„ ๋” ์ ์€ ํ† ํฐ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ๊ณ„์‚ฐ์ด ์‰ฝ๊ณ  ์ง๊ด€์ ์ด์–ด์„œ ๋น„์šฉยท์ง€์—ฐยท๋ฌธ๋งฅ ํšจ์œจ์„ ๋…ผํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋ณด๋Š” ์ˆ˜์น˜๋‹ค.

fertility๋Š” ๊ทธ ์ž์ฒด๋กœ๋Š” ํ’ˆ์งˆ ์ง€ํ‘œ๊ฐ€ ์•„๋‹ˆ๋‹ค. ์–ดํœ˜์ง‘์„ ํ‚ค์šฐ๋ฉด fertility๋Š” ๋‚ด๋ ค๊ฐ€์ง€๋งŒ ์ž„๋ฒ ๋”ฉ ํ–‰๋ ฌ์ด ์„ ํ˜•์œผ๋กœ ์ปค์ ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋Š˜๊ณ  ํฌ๊ท€ ํ† ํฐ์€ ์ œ๋Œ€๋กœ ํ•™์Šต๋˜์ง€ ์•Š๋Š”๋‹ค. fertility๊ฐ€ ๋‚ฎ๋‹ค๊ณ  ํ•ด์„œ ์ข‹์€ ํ† ํฌ๋‚˜์ด์ €์ธ ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ๋œป์ด๋‹ค.

์••์ถ•๋ฅ ๊ณผ ์ •๋ณด๋ฐ€๋„

fertility์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๋Š” ๊ฒƒ์ด BPB(bits-per-byte) ํ˜น์€ BPC(bits-per-character)๋‹ค. ์ด๋Š” โ€œ๋ชจ๋ธ์ด ํ•œ ๋ฌธ์ž(ํ˜น์€ ๋ฐ”์ดํŠธ)๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๋ฐ ๋ช‡ ๋น„ํŠธ์˜ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•œ๊ฐ€โ€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‚ฎ์„์ˆ˜๋ก ๋ชจ๋ธ์ด ํ…์ŠคํŠธ๋ฅผ ์ž˜ ์••์ถ•ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

bpb=โˆ’โˆ‘i=1Nlogโก2p(tiโˆฃt<i)B\text{bpb} = \frac{-\sum_{i=1}^{N} \log_2 p(t_i \mid t_{<i})}{B}

๋ถ„์ž๋Š” ํ† ํฐ t1,โ€ฆ,tNt_1, \dots, t_N์— ๋Œ€ํ•œ ๋ชจ๋ธ์˜ log-likelihood ํ•ฉ์ด๊ณ , ๋ถ„๋ชจ BB๋Š” ์› ํ…์ŠคํŠธ์˜ ๋ฐ”์ดํŠธ ์ˆ˜๋‹ค. ๋ถ„์ž๋Š” ํ† ํฐ ๊ณต๊ฐ„์—์„œ ๊ณ„์‚ฐํ•˜์ง€๋งŒ ๋ถ„๋ชจ๋Š” ํ† ํฌ๋‚˜์ด์ €์™€ ๋ฌด๊ด€ํ•œ ๋ฐ”์ดํŠธ ์ˆ˜๋ผ๋Š” ์ ์ด ํ•ต์‹ฌ์ด๋‹ค.

์ด ๋น„๋Œ€์นญ ๋•๋ถ„์— BPB๋Š” ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋‹ฌ๋ผ๋„ ๊ณต์ •ํ•˜๊ฒŒ ๋น„๊ต ๊ฐ€๋Šฅํ•˜๋‹ค. Perplexity๋ฅผ ๊ทธ๋Œ€๋กœ ๋น„๊ตํ•˜๋ฉด ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋‹ค๋ฅธ ์ˆœ๊ฐ„ ๊ฐ’ ์ž์ฒด๊ฐ€ ์™œ๊ณก๋˜๋Š”๋ฐ, BPB๋Š” ์› ํ…์ŠคํŠธ๋ผ๋Š” ๊ณตํ†ต ๊ธฐ์ค€์œผ๋กœ ์ •๊ทœํ™”ํ•˜๋‹ˆ ๊ทธ ๋ฌธ์ œ๋ฅผ ํ”ผํ•œ๋‹ค. ์ด๋ฅผ ๊ฐ•์กฐํ•œ ๊ฒƒ์ด Rust et al.์˜ 2021๋…„ ์—ฐ๊ตฌ How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models๋‹ค. ์ €์ž๋“ค์€ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์„ฑ๋Šฅ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ์ •๋Ÿ‰ํ™”ํ•˜๊ธฐ ์œ„ํ•ด BPB๋ฅผ ํ•ต์‹ฌ ์ง€ํ‘œ๋กœ ์ผ๋‹ค.

๋‹จ, BPB๋„ ๋งŒ๋Šฅ์€ ์•„๋‹ˆ๋‹ค. BPB๊ฐ€ ์žฌ๋Š” ๊ฒƒ์€ ๋ชจ๋ธ์˜ ์••์ถ• ๋Šฅ๋ ฅ์ด์ง€ ๋‹ค์šด์ŠคํŠธ๋ฆผ ํƒœ์Šคํฌ(QA, ์ถ”๋ก , ์ฝ”๋“œ ์ƒ์„ฑ) ์„ฑ๋Šฅ์ด ์•„๋‹ˆ๋‹ค. ์ตœ๊ทผ ์—ฌ๋Ÿฌ ์—ฐ๊ตฌ๋Š” BPB์™€ ์‹ค์ œ ํƒœ์Šคํฌ ์„ฑ๋Šฅ์˜ ์ƒ๊ด€์ด ์™„๋ฒฝํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์ง€์ ํ•ด ์™”๋‹ค. ํ† ํฌ๋‚˜์ด์ €์˜ ์••์ถ• ์„ฑ๋Šฅ๊ณผ ์‹ค์ œ ์–ธ์–ด๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์ด ๋น„๋ก€ํ•˜๋Š” ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. โ€œ์ข‹์€ ํ† ํฌ๋‚˜์ด์ €โ€๋ฅผ ํƒ์ƒ‰ํ•˜๋ ค๋Š” ์—ฐ๊ตฌ์—์„œ ๊ฐ€์žฅ ๊ณจ์น˜ ์•„ํ”ˆ ๋ถ€๋ถ„์ด ๋ฐ”๋กœ ์ด ์ง€์ ์ด๋‹ค.

ํ˜•ํƒœ์†Œ ๊ฒฝ๊ณ„ ๋ณด์กด์œจ

์–ธ์–ดํ•™์  ๊ด€์ ์—์„œ๋Š” ํ˜•ํƒœ์†Œ ๊ฒฝ๊ณ„๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž˜ ๋ณด์กดํ•˜๋Š”๊ฐ€๋„ ์ค‘์š”ํ•œ ์ง€ํ‘œ๋‹ค. ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ ์ถœ๋ ฅ์„ ๊ธฐ์ค€์œผ๋กœ ์‚ผ๊ณ , ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋งŒ๋“  ๊ฒฝ๊ณ„์™€์˜ ์ผ์น˜์œจ์„ precision/recall๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.

ํ•œ๊ตญ์–ด, ํŠ€๋ฅดํ‚ค์˜ˆ์–ด, ํ•€๋ž€๋“œ์–ด์ฒ˜๋Ÿผ ํ˜•ํƒœ๋ก ์ ์œผ๋กœ ํ’๋ถ€ํ•œ ์–ธ์–ด์—์„œ ํŠนํžˆ ์ค‘์š”ํ•˜๋‹ค. ๋‹ค๋งŒ โ€˜์ข‹์€โ€™ ๊ฒฝ๊ณ„๊ฐ€ ๋ฌด์—‡์ธ์ง€๋Š” ๋…ผ์Ÿ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋‹ค. ํ˜•ํƒœ์†Œ๊ฐ€ ํ•ญ์ƒ ์˜๋ฏธ ๋‹จ์œ„์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ , ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์€ ์–ธ์–ดํ•™์  ๊ฒฝ๊ณ„์™€ ๋ฌด๊ด€ํ•œ ํšจ์œจ์  ํ‘œํ˜„์„ ์ฐพ์•„๋‚ผ ๋•Œ๋„ ๋งŽ๋‹ค๋Š” ์ฆ๊ฑฐ๋„ ์Œ“์—ฌ ์™”๋‹ค(Bostrom & Durrett 2020 ๋“ฑ). ํ•ด์„ ๊ฐ€๋Šฅ์„ฑ์—๋Š” ์œ ๋ฆฌํ•˜์ง€๋งŒ, ๋‹ค์šด์ŠคํŠธ๋ฆผ ์„ฑ๋Šฅ๊ณผ์˜ ์ง์ ‘์  ์ธ๊ณผ๋Š” ์—ฐ๊ตฌ๋งˆ๋‹ค ๊ฒฐ๋ก ์ด ์—‡๊ฐˆ๋ฆฐ๋‹ค.

Intrinsic vs Extrinsic ํ‰๊ฐ€

์œ„์˜ ์ง€ํ‘œ๋“ค์€ ๋ชจ๋‘ ๋‚ด์žฌ์ (intrinsic) ํ‰๊ฐ€์— ์†ํ•œ๋‹ค. ํ† ํฌ๋‚˜์ด์ €๋งŒ ๋‹จ๋…์œผ๋กœ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ฐ˜๋ฉด ์™ธ์žฌ์ (extrinsic) ํ‰๊ฐ€๋Š” ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์‹ค์ œ ๋ชจ๋ธ์— ํƒ‘์žฌํ•˜๊ณ  ๋‹ค์šด์ŠคํŠธ๋ฆผ ํƒœ์Šคํฌ์—์„œ์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•œ๋‹ค.

์™ธ์žฌ์  ํ‰๊ฐ€๋Š” ์ค‘์š”ํ•˜์ง€๋งŒ ํ‰๊ฐ€๋ฅผ ์œ„ํ•œ ๋น„์šฉ์ด ํฌ๋‹ค. LLM์„ ๋งค๋ฒˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šตํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค๋ฌด์—์„œ๋Š” intrinsic ์ง€ํ‘œ๋กœ ํ›„๋ณด๋ฅผ ๊ฑธ๋Ÿฌ๋‚ธ ํ›„, ์œ ๋งํ•œ ํ›„๋ณด๋งŒ ์†Œ๊ทœ๋ชจ ํ•™์Šต์œผ๋กœ ๊ฒ€์ฆํ•˜๋Š” ๋ฐฉ์‹์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

ํ† ํฌ๋‚˜์ด์ €๊ฐ€ LLM์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ

ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜์™€ ๋…๋ฆฝ์ ์ธ ์ปดํฌ๋„ŒํŠธ๋ผ๋Š” ์‚ฌ์‹ค ๋•Œ๋ฌธ์— ๋งŽ์€ ์‚ฌ๋žŒ์ด ์ด๋ฅผ ๋ถ€์ˆ˜์ ์ธ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํ† ํฌ๋‚˜์ด์ €๋Š” ๋ชจ๋ธ์˜ ์—ฌ๋Ÿฌ ํ•ต์‹ฌ ๋™์ž‘์— ๊นŠ์€ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

์ˆซ์ž ๊ณ„์‚ฐ ๋Šฅ๋ ฅ๊ณผ ํ† ํฐํ™”

๊ฐ€์žฅ ํฅ๋ฏธ๋กœ์šด ์‚ฌ๋ก€๋Š” ์ˆซ์ž ํ† ํฐํ™”๋‹ค. ์ดˆ๊ธฐ LLM์ด ์‚ฐ์ˆ  ๊ณ„์‚ฐ์— ์•ฝํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ์œ ๋ช…ํ•œ ์‚ฌ์‹ค์ธ๋ฐ, ๊ทธ ์›์ธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ† ํฌ๋‚˜์ด์ €์— ์žˆ๋‹ค.

GPT-2์˜ BPE๋Š” ์ˆซ์ž๋ฅผ ์ž๋ฆฟ๊ฐ’ ๊ตฌ์กฐ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋ณ‘ํ•ฉํ–ˆ๋‹ค. ๋ง๋ญ‰์น˜์— 2023์ด ์ž์ฃผ ๋“ฑ์žฅํ–ˆ๋‹ค๋ฉด ['2023']์ด ํ•œ ํ† ํฐ์ด ๋˜๊ณ , 1234๋Š” ['12', '34']๊ฐ€ ๋˜๋Š” ์‹์ด๋‹ค. ๊ฐ™์€ ๋„ค ์ž๋ฆฟ์ˆ˜๋ผ๋„ ์ˆซ์ž๋งˆ๋‹ค ๋ถ„์ ˆ์ด ๋‹ค๋ฅด๊ณ  ์ž๋ฆฟ๊ฐ’ ๊ฒฝ๊ณ„๊ฐ€ ๋ณด์กด๋˜์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋ธ ์ž…์žฅ์—์„œ๋Š” ๊ฐ™์€ ์—ฐ์‚ฐ(์˜ˆ: ๋ง์…ˆ์˜ ์ž๋ฆฌ ์˜ฌ๋ฆผ)์„ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋กœ ๋‹ค๋ฅธ ํ† ํฐ ์กฐํ•ฉ ์ˆ˜๋ฐฑ ๊ฐ€์ง€๋ฅผ ๋ณ„๊ฐœ๋กœ ์ตํ˜€์•ผ ํ–ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๊ทผ ๋ชจ๋ธ๋“ค์€ ์ˆซ์ž ๋ถ„์ ˆ์„ ๊ณ ์ •ํ•œ๋‹ค. LLaMA 1/2, Mistral, Gemma๋Š” ๊ฐ ์ˆซ์ž๋ฅผ ๊ฐœ๋ณ„ ํ† ํฐ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , GPT-4 ๊ณ„์—ด๊ณผ LLaMA 3๋Š” 3์ž๋ฆฟ์ˆ˜ ๋‹จ์œ„๋กœ ๋ฌถ๋Š” ๋ฐฉ์‹์„ ์“ด๋‹ค. ์–ด๋А ์ชฝ์ด๋“  ์ž๋ฆฟ๊ฐ’ ๊ตฌ์กฐ๊ฐ€ ๋ณด์กด๋œ๋‹ค๋Š” ์ ์ด ์ค‘์š”ํ•˜๋ฉฐ, ์ด ์ž‘์€ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ๋„ ์‚ฐ์ˆ  ๊ณผ์ œ์—์„œ ์ƒ๋‹นํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์–ป์—ˆ๋‹ค.8.

Glitch tokens - ํ•™์Šต๋˜์ง€ ์•Š์€ ํ† ํฐ

2023๋…„ ์ดˆ GPT ๊ณ„์—ด์—์„œ ๋ฐœ๊ฒฌ๋œ ์œ ๋ช…ํ•œ ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค. SolidGoldMagikarp, rrawerrer, petertodd ๊ฐ™์€ ์ด์ƒํ•œ ํ† ํฐ๋“ค์ด ์–ดํœ˜์ง‘์— ์กด์žฌํ–ˆ๋Š”๋ฐ, ์ด๋“ค์„ ์ž…๋ ฅํ•˜๋ฉด ๋ชจ๋ธ์ด ๊ธฐ๊ดดํ•œ ๋ฐ˜์‘์„ ๋ณด์˜€๋‹ค. ๋ง์„ ๋”๋“ฌ๊ฑฐ๋‚˜, ์ „ํ˜€ ๊ด€๋ จ ์—†๋Š” ์ฃผ์ œ๋กœ ์ดํƒˆํ•˜๊ฑฐ๋‚˜, ์˜ค๋ฅ˜๋ฅผ ์ผ์œผ์ผฐ๋‹ค9.

์›์ธ์€ ์ด๋žฌ๋‹ค. ํ† ํฌ๋‚˜์ด์ € ํ•™์Šต์— ์‚ฌ์šฉ๋œ ๋ง๋ญ‰์น˜(Reddit ์Šคํฌ๋ž˜ํ•‘ ๋ฐ์ดํ„ฐ ๋“ฑ)์—์„œ ์ด ๋ฌธ์ž์—ด๋“ค์ด ๋†’์€ ๋นˆ๋„๋กœ ๋“ฑ์žฅํ•ด ํ•˜๋‚˜์˜ ํ† ํฐ์œผ๋กœ ๋ณ‘ํ•ฉ๋๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ดํ›„ ์–ธ์–ด ๋ชจ๋ธ ํ•™์Šต ๋‹จ๊ณ„์—์„œ๋Š” ํ•„ํ„ฐ๋ง ํŒŒ์ดํ”„๋ผ์ธ์ด ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์†Œ์Šค๊ฐ€ ๋ฐฐ์ œ๋˜๋ฉด์„œ ์ด ํ† ํฐ๋“ค์ด ๊ฑฐ์˜ ๋“ฑ์žฅํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ชจ๋ธ์€ ์ด ํ† ํฐ์— ๋Œ€์‘ํ•˜๋Š” ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ๋ฅผ ์ œ๋Œ€๋กœ ํ•™์Šตํ•˜์ง€ ๋ชปํ–ˆ๊ณ , ๋ฌด์ž‘์œ„์— ๊ฐ€๊นŒ์šด ๋ฐ˜์‘์„ ํ•˜๊ฒŒ ๋๋‹ค.

์ด ์‚ฌ๋ก€๋Š” ํ† ํฌ๋‚˜์ด์ €์™€ ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ฏธ๋ฌ˜ํ•œ ๋ฒ„๊ทธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์—ฌ ์ค€๋‹ค. ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ๋Š” ์ดํ›„ ์“ฐ์ผ ํ•™์Šต ๋ง๋ญ‰์น˜์˜ ๋ถ„ํฌ์™€ ํ•„ํ„ฐ๋ง ํŒŒ์ดํ”„๋ผ์ธ๊นŒ์ง€ ํ•จ๊ป˜ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

์–ดํœ˜์ง‘ ํฌ๊ธฐ์˜ ์„ ํƒ

ํ† ํฌ๋‚˜์ด์ €์˜ ์–ดํœ˜์ง‘ ํฌ๊ธฐ๋Š” ์—ฌ๋Ÿฌ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๋งŒ๋“ ๋‹ค.

ํฐ ์–ดํœ˜์ง‘์˜ ์žฅ์ : fertility๊ฐ€ ๋‚ฎ์•„์ ธ ์‹œํ€€์Šค ๊ธธ์ด๊ฐ€ ์งง์•„์ง€๊ณ , ์ถ”๋ก  ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๋ฉฐ, ๊ฐ™์€ ๋ฌธ๋งฅ ๊ธธ์ด์— ๋” ๋งŽ์€ ๋‚ด์šฉ์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค.

ํฐ ์–ดํœ˜์ง‘์˜ ๋‹จ์ : ์ž„๋ฒ ๋”ฉ ๋ ˆ์ด์–ด์™€ ์ตœ์ข… softmax ๋ ˆ์ด์–ด์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ปค์ง„๋‹ค. ์ด ๋‘ ๋ ˆ์ด์–ด๋Š” ๊ฐ๊ฐ Vร—dV \times d ํฌ๊ธฐ์ด๋ฉฐ(weight tying์œผ๋กœ ๊ณต์œ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค), ์–ดํœ˜์ง‘ ํฌ๊ธฐ VV๊ฐ€ 10๋งŒ์—์„œ 20๋งŒ์œผ๋กœ ๋‘ ๋ฐฐ๊ฐ€ ๋˜๋ฉด ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ๋„ ๋‘ ๋ฐฐ๊ฐ€ ๋œ๋‹ค. ๋˜ํ•œ ํ•™์Šต ์‹œ ๊ฐ ํ† ํฐ๋‹น ๋…ธ์ถœ๋˜๋Š” ์˜ˆ์‹œ ์ˆ˜๊ฐ€ ์ค„์–ด๋“ค์–ด ๋“œ๋ฌธ ํ† ํฐ์€ ์ถฉ๋ถ„ํžˆ ํ•™์Šต๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

ํ˜„๋Œ€ LLM์˜ ์–ดํœ˜์ง‘ ํฌ๊ธฐ๋Š” 32K์—์„œ ์ถœ๋ฐœํ•ด ์ตœ๊ทผ์—๋Š” 100K~256K ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. LLaMA 1์˜ 32K, LLaMA 3์˜ 128K, GPT-4o์˜ 200K, K-EXAONE์˜ 150K, Gemma 2์˜ 256K์ฒ˜๋Ÿผ ์ตœ๊ทผ ์ถ”์„ธ๋Š” ๋ถ„๋ช… ํฌ๊ธฐ๋ฅผ ํ‚ค์šฐ๊ณ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งˆ๋ƒฅ ์ปค์งˆ ์ˆ˜๋Š” ์—†๋‹ค. ๋‹ค๊ตญ์–ด ์ง€์›๊ณผ ๊ธด ๋ฌธ๋งฅ ์š”๊ตฌ๊ฐ€ ์ƒํ•œ์„ ํ‚ค์šฐ๋Š” ๋งŒํผ ์ž„๋ฒ ๋”ฉ ๋ฉ”๋ชจ๋ฆฌ์™€ ๋“œ๋ฌธ ํ† ํฐ ํ•™์Šต ๋ถ€๋‹ด์ด ํ•˜ํ•œ์„ ๋ถ™์žก๊ณ  ์žˆ๋‹ค.

ํ”„๋กฌํ”„ํŠธ ์ธ์ ์…˜๊ณผ ๋ณด์•ˆ

ํ† ํฌ๋‚˜์ด์ €์˜ ํŠน์ดํ•œ ๋™์ž‘์ด ๋ณด์•ˆ ์ด์Šˆ๋กœ ์ด์–ด์ง€๊ธฐ๋„ ํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์ด ์‹œ๊ฐ์ ์œผ๋กœ๋Š” ๋™์ผํ•˜์ง€๋งŒ ํ† ํฐ ID๊ฐ€ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด์„ ์ด์šฉํ•œ ์šฐํšŒ ๊ณต๊ฒฉ์ด๋‹ค. ์ผ๋ฐ˜ ๊ณต๋ฐฑ ๋Œ€์‹  non-breaking space๋ฅผ, ์ผ๋ฐ˜ ์•ŒํŒŒ๋ฒณ ๋Œ€์‹  ์œ ์‚ฌํ•œ ํ‚ค๋ฆด ๋ฌธ์ž๋ฅผ ์„ž์œผ๋ฉด ์‚ฌ๋žŒ ๋ˆˆ์—๋Š” ๊ฐ™์€ ํ…์ŠคํŠธ์ง€๋งŒ ๋ชจ๋ธ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ํ† ํฐ ์‹œํ€€์Šค๋กœ ๋ฐ›์•„๋“ค์ธ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•ด ์ฝ˜ํ…์ธ  ํ•„ํ„ฐ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ์ด๊ฑด ์œ ๋‹ˆ์ฝ”๋“œ ์ •๊ทœํ™” ๋‹จ๊ณ„์˜ ์ด์Šˆ์ง€๋งŒ, ํ† ํฌ๋‚˜์ด์ € ํŒŒ์ดํ”„๋ผ์ธ์ด ๊ทธ ์ •๊ทœํ™”๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ์ทจ์•ฝ์„ฑ์ด ๊ฒฐ์ •๋˜๋ฏ€๋กœ ์‚ฌ์‹ค์ƒ ํ† ํฌ๋‚˜์ด์ € ์„ค๊ณ„ ๋ฌธ์ œ๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

์•ž์„œ ๋‹ค๋ฃฌ glitch token๋„ ๋ณด์•ˆ ๊ด€์ ์—์„œ ์žฌํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•™์Šต๋˜์ง€ ์•Š์€ ํ† ํฐ์„ ์ž…๋ ฅ์— ์„ž์œผ๋ฉด ๋ชจ๋ธ์ด ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜๋ฏ€๋กœ, ์•ˆ์ „ ์žฅ์น˜๋ฅผ ์šฐํšŒํ•˜๊ฑฐ๋‚˜ ์˜๋„ํ•˜์ง€ ์•Š์€ ์ถœ๋ ฅ์„ ์œ ๋„ํ•˜๋Š” ์ˆ˜๋‹จ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฐ ์‚ฌ๋ก€๋“ค์€ ํ† ํฌ๋‚˜์ด์ € ์„ค๊ณ„๊ฐ€ ๋‹จ์ˆœํžˆ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์‹œ์Šคํ…œ ์‹ ๋ขฐ์„ฑ๊ณผ ์•ˆ์ „์„ฑ์˜ ๋ฌธ์ œ์ด๊ธฐ๋„ ํ•จ์„ ๋ณด์—ฌ ์ค€๋‹ค.

์ตœ์‹  ์—ฐ๊ตฌ ๋™ํ–ฅ

์ด ๋ถ„์•ผ๋Š” ์ตœ๊ทผ ๋น ๋ฅด๊ฒŒ ์›€์ง์ด๊ณ  ์žˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์—ฐ๊ตฌ ๋ฐฉํ–ฅ์„ ์ •๋ฆฌํ•ด ๋ณธ๋‹ค.

SuperBPE - ๋‹จ์–ด ๊ฒฝ๊ณ„๋ฅผ ๋„˜์–ด์„œ

2025๋…„ Liu et al.์ด ๋ฐœํ‘œํ•œ SuperBPE๋Š” ๊ธฐ์กด BPE์˜ ๋‹จ์–ด ๊ฒฝ๊ณ„ ์ œ์•ฝ์„ ์—†์•ค ๋ณ€ํ˜•์ด๋‹ค6. ์ผ๋ฐ˜ BPE๋Š” pre-tokenizer๊ฐ€ ๋‹จ์–ด ๋‹จ์œ„๋กœ ๋จผ์ € ์ชผ๊ฐœ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ๋‹จ์–ด์— ์†ํ•œ ๋ฌธ์ž ์Œ์€ ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š๋Š”๋‹ค. of the๋ผ๋Š” ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๊ตฌ๋ฌธ์กฐ์ฐจ ๋‘ ๊ฐœ์˜ ํ† ํฐ์œผ๋กœ ๋‚จ๋Š”๋‹ค.

SuperBPE๋Š” ํ•™์Šต ๊ณผ์ •์„ ๋‘ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆˆ๋‹ค. 1๋‹จ๊ณ„์—์„œ๋Š” ์ผ๋ฐ˜ BPE์ฒ˜๋Ÿผ ๋‹จ์–ด ๋‚ด๋ถ€์—์„œ๋งŒ ๋ณ‘ํ•ฉ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , 2๋‹จ๊ณ„์—์„œ๋Š” ๋‹จ์–ด ๊ฒฝ๊ณ„ ์ œ์•ฝ์„ ํ’€๊ณ  ๊ต์ฐจ ๋‹จ์–ด(cross-word) ๋ณ‘ํ•ฉ์„ ํ—ˆ์šฉํ•œ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ of_the, in_the ๊ฐ™์€ ๊ณ ๋นˆ๋„ ๊ตฌ๋ฌธ์ด ๋‹จ์ผ ํ† ํฐ์ด ๋œ๋‹ค.

์ €์ž๋“ค์ด 8B ๊ทœ๋ชจ๋กœ ์ง์ ‘ ์‚ฌ์ „ํ•™์Šตํ•ด ๋น„๊ตํ•œ ์‹คํ—˜์—์„œ SuperBPE๋Š” 30๊ฐœ ๋‹ค์šด์ŠคํŠธ๋ฆผ ํƒœ์Šคํฌ ํ‰๊ท  +4.0%p(MMLU์—์„œ +8.2%p)์˜ ์ ˆ๋Œ€์  ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๋ณด์˜€๊ณ , ๋™์‹œ์— ์ถ”๋ก  ์‹œ ์ปดํ“จํŒ…์„ ์•ฝ 27% ์ ˆ๊ฐํ–ˆ๋‹ค. ์ด ๊ฒฐ๊ณผ๊ฐ€ ์˜๋ฏธ ์žˆ๋Š” ์ด์œ ๋Š” fertility ๊ฐ์†Œ๊ฐ€ ๋‹จ์ˆœํžˆ โ€œํ† ํฐ ํšจ์œจโ€ ์ง€ํ‘œ๋งŒ ๊ฐœ์„ ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์„ฑ๋Šฅ์—๋„ ์ „์ด๋œ๋‹ค๋Š” ์ ์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ณด์˜€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•œ๊ตญ์–ด ๋งฅ๋ฝ์—์„œ๋Š” ์•ž์„œ ์–ธ๊ธ‰ํ•œ K-EXAONE์ด SuperBPE๋ฅผ ์ฑ„ํƒํ•œ ๋Œ€ํ‘œ ์‚ฌ๋ก€๋‹ค.

Tekken - Mistral์˜ ๋‹ค๊ตญ์–ด ํ† ํฌ๋‚˜์ด์ €

Mistral์ด 2024๋…„ NeMo ๊ณต๊ฐœ์™€ ํ•จ๊ป˜ ๋ฐœํ‘œํ•œ Tekken์€ tiktoken ๊ธฐ๋ฐ˜์ด์ง€๋งŒ ๋‹ค๊ตญ์–ด, ํŠนํžˆ ์œ ๋Ÿฝ ์–ธ์–ด์™€ ๋น„๋ผํ‹ด ๋ฌธ์ž ์–ธ์–ด์— ๋Œ€ํ•œ ํšจ์œจ์„ ํฌ๊ฒŒ ๊ฐœ์„ ํ–ˆ๋‹ค10. 100๊ฐœ ์ด์ƒ์˜ ์–ธ์–ด๋กœ ํ•™์Šตํ–ˆ์œผ๋ฉฐ, ์ด์ „ Mistral์˜ SentencePiece ๋Œ€๋น„ ์†Œ์Šค ์ฝ”๋“œยท์ค‘๊ตญ์–ดยท์ดํƒˆ๋ฆฌ์•„์–ดยทํ”„๋ž‘์Šค์–ดยท๋…์ผ์–ดยท์ŠคํŽ˜์ธ์–ดยท๋Ÿฌ์‹œ์•„์–ด์—์„œ ์•ฝ 30%, ํ•œ๊ตญ์–ด์—์„œ ์•ฝ 2๋ฐฐ, ์•„๋ž์–ด์—์„œ ์•ฝ 3๋ฐฐ ํšจ์œจ์ด ๊ฐœ์„ ๋˜์—ˆ๋‹ค. ํ•ต์‹ฌ์€ ์–ธ์–ด๋ณ„ ๋น„์ค‘์„ ์„ธ์‹ฌํ•˜๊ฒŒ ์กฐ์ •ํ•œ ํ•™์Šต ๋ง๋ญ‰์น˜์™€ pre-tokenizer ์ •๊ทœ์‹ ํŠœ๋‹์ด๋‹ค.

ํ† ํฌ๋‚˜์ด์ € ์—†๋Š” ๋ชจ๋ธ - Byte-level Transformers

ํ•œํŽธ์—์„œ๋Š” ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์•„์˜ˆ ์—†์• ๋ ค๋Š” ์‹œ๋„๋„ ๊พธ์ค€ํžˆ ์ด์–ด์ง€๊ณ  ์žˆ๋‹ค. ByT511, MegaByte12, MambaByte13 ๊ฐ™์€ ๋ชจ๋ธ์€ UTF-8 ๋ฐ”์ดํŠธ ์ˆ˜์ค€์—์„œ ์ง์ ‘ ๋™์ž‘ํ•œ๋‹ค. ํ† ํฌ๋‚˜์ด์ €๋กœ ์ธํ•œ ํŽธํ–ฅ๊ณผ ๋ถˆํ‰๋“ฑ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹œํ€€์Šค ๊ธธ์ด ํญ๋ฐœ์ด๋ผ๋Š” ์˜ค๋ž˜๋œ ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋“ฑ์žฅํ•œ๋‹ค. ํ•œ๊ธ€ ์Œ์ ˆ ํ•˜๋‚˜๊ฐ€ 3๋ฐ”์ดํŠธ๋‹ˆ๊นŒ, ๊ฐ™์€ ๋‚ด์šฉ์„ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋กœ ํ‘œํ˜„ํ•˜๋ฉด ํ† ํฐ ์‹œํ€€์Šค๋ณด๋‹ค ํ›จ์”ฌ ๊ธธ์–ด์ง„๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์•„์ด๋””์–ด๋„ ๋‹ค์–‘ํ•˜๋‹ค. MegaByte๋Š” ๋ฐ”์ดํŠธ๋ฅผ ๊ณ ์ • ํฌ๊ธฐ ํŒจ์น˜๋กœ ๋ฌถ์–ด ๊ณ„์ธต์  ํŠธ๋žœ์Šคํฌ๋จธ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ , Mamba ๊ณ„์—ด์€ ์ƒํƒœ๊ณต๊ฐ„ ๋ชจ๋ธ๋กœ ์–ดํ…์…˜์˜ O(n2)O(n^2) ๋ณ‘๋ชฉ์„ ํšŒํ”ผํ•œ๋‹ค. 2024๋…„ Meta๊ฐ€ ๋ฐœํ‘œํ•œ Byte Latent Transformer(BLT)๋Š” ํ•œ ๊ฑธ์Œ ๋” ๋‚˜์•„๊ฐ€, ๋ฐ”์ดํŠธ ์—”ํŠธ๋กœํ”ผ์— ๋”ฐ๋ผ ํŒจ์น˜ ๊ฒฝ๊ณ„๋ฅผ ๋™์ ์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค14. โ€œ์˜ˆ์ธกํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ๊ฐ„์€ ๊ธธ๊ฒŒ, ์–ด๋ ค์šด ๊ตฌ๊ฐ„์€ ์งง๊ฒŒโ€ ํŒจ์น˜๋ฅผ ์žก๋Š” ๋ฐœ์ƒ์ด๋‹ค. BLT๋Š” LLaMA 3์™€ ๊ฐ™์€ ํ•™์Šต ์˜ˆ์‚ฐ์—์„œ ๋น„์Šทํ•˜๊ฑฐ๋‚˜ ๋” ๋‚˜์€ ์Šค์ผ€์ผ๋ง์„ ๋ณด์˜€๊ณ , ๋…ธ์ด์ฆˆ๊ฐ€ ํฌํ•จ๋œ ์ž…๋ ฅ์—์„œ๋Š” ํ† ํฐ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์„ ํฌ๊ฒŒ ์•ž์„ฐ๋‹ค. ์•„์ง ๋Œ€ํ˜• ๋ชจ๋ธ์—์„œ BPE ๊ธฐ๋ฐ˜ ์ ‘๊ทผ์„ ์™„์ „ํžˆ ๋Œ€์ฒดํ•˜์ง€๋Š” ๋ชปํ–ˆ์ง€๋งŒ, ์žฅ๊ธฐ์ ์œผ๋กœ ์œ ๋ ฅํ•œ ๋ฐฉํ–ฅ์ด๋‹ค.

Pre-tokenizer์˜ ๊ฒฐ์ •์  ์˜ํ–ฅ - Wegmann et al. 2025

๋˜ ํ•˜๋‚˜ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์—ฐ๊ตฌ๊ฐ€ Wegmann et al. 2025๋‹ค15. ์ด๋“ค์€ BERT base๋ฅผ ์—ฌ๋Ÿฌ ์กฐ๊ฑด์—์„œ ์ง์ ‘ ์‚ฌ์ „ํ•™์Šตํ•ด, ํ† ํฌ๋‚˜์ด์ € ์„ค๊ณ„์˜ ์–ด๋А ์ถ•์ด ๋‹ค์šด์ŠคํŠธ๋ฆผ ์„ฑ๋Šฅ์— ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ์ฒด๊ณ„์ ์œผ๋กœ ๋น„๊ตํ–ˆ๋‹ค. ๋น„๊ต ์ถ•์€ ์„ธ ๊ฐ€์ง€์˜€๋‹ค. ํ•™์Šต ๋ง๋ญ‰์น˜, ์–ดํœ˜์ง‘ ํฌ๊ธฐ, ๊ทธ๋ฆฌ๊ณ  pre-tokenizer.

๊ฒฐ๋ก ์€ ํฅ๋ฏธ๋กญ๋‹ค. Pre-tokenizer์˜ ์„ ํƒ์ด ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ, ๊ทธ ์˜ํ–ฅ์€ ๋ง๋ญ‰์น˜๋‚˜ ์–ดํœ˜์ง‘ ํฌ๊ธฐ๋ณด๋‹ค ํฌ๋‹ค. ๋˜ํ•œ ํƒœ์Šคํฌ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ ์ตœ์ ์˜ ํ† ํฌ๋‚˜์ด์ €๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ์ ๋„ ํ™•์ธ๋˜์—ˆ๋‹ค โ€” ์˜๋ฏธ ์ค‘์‹ฌ ํƒœ์Šคํฌ(NLI ๋“ฑ)์—์„œ๋Š” GPT-2 ํ’์˜ ๋” ๊ณต๊ฒฉ์ ์ธ pre-tokenizer๊ฐ€ ์œ ๋ฆฌํ•˜์ง€๋งŒ, ํ˜•ํƒœ ๋ฏผ๊ฐ ํƒœ์Šคํฌ(์ €์ž ์‹๋ณ„, ๋ฐฉ์–ธ ๋ถ„๋ฅ˜ ๋“ฑ)์—์„œ๋Š” LLaMA 3 ํ’์˜ ๋” ๋ณด์ˆ˜์ ์ธ pre-tokenizer์™€ ํฐ ์–ดํœ˜์ง‘์ด ์œ ๋ฆฌํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ €์ž๋“ค์€ ์ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Rรฉnyi entropy ๊ฐ™์€ ๊ธฐ์กด intrinsic ์ง€ํ‘œ๋ณด๋‹ค ๋‹ค์šด์ŠคํŠธ๋ฆผ ์„ฑ๋Šฅ๊ณผ ์ƒ๊ด€์ด ๋†’์€ ์ƒˆ๋กœ์šด proxy(ํ† ํฐ ์กด์žฌ ๊ธฐ๋ฐ˜ ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€)๋„ ์ œ์•ˆํ–ˆ๋‹ค.

์ด ์—ฐ๊ตฌ๊ฐ€ ํฅ๋ฏธ๋กœ์šด ์ด์œ ๋Š” ์•ž์„œ โ€œBPB์™€ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์„ฑ๋Šฅ์˜ ์ƒ๊ด€์ด ์™„๋ฒฝํ•˜์ง€ ์•Š๋‹คโ€๊ณ  ํ–ˆ๋˜ ์ง€์ ์— ๋Œ€ํ•œ ๋ถ€๋ถ„์  ํ•ด๋‹ต์„ ์ œ์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ ์–ด๋„ pre-tokenizer๋ผ๋Š” ์ถ• ํ•˜๋‚˜๋งŒ ๋†“๊ณ  ๋ณด๋ฉด ์„ค๊ณ„ ์„ ํƒ์ด ์„ฑ๋Šฅ์— ์ฒด๊ณ„์ ์œผ๋กœ ๋ฐ˜์˜๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฐ ๊ด€์ ์€ ์ƒˆ๋กœ์šด ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. โ€œBPE ๋ณ€ํ˜•์„ ํ•˜๋‚˜ ๋” ๋งŒ๋“ ๋‹คโ€๊ฐ€ ์•„๋‹ˆ๋ผ โ€œpre-tokenizerยท์–ดํœ˜์ง‘ ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜ยท์–ดํœ˜์ง‘ ํฌ๊ธฐโ€๋ฅผ ๊ฐ๊ฐ ๋ช…์‹œ์  ์„ ํƒ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ํ•œ๊ตญ์–ด ํ† ํฌ๋‚˜์ด์ € ์ž‘์—…์—์„œ ์ด ์—ฐ๊ตฌ์˜ ์˜ํ–ฅ์„ ๋งŽ์ด ๋ฐ›์•˜๋‹ค.

์‹ค๋ฌด ์„ ํƒ ๊ฐ€์ด๋“œ

์ง€๊ธˆ๊นŒ์ง€์˜ ๋‚ด์šฉ์„ ์‹ค๋ฌด ๊ด€์ ์—์„œ ์ •๋ฆฌํ•ด ๋ณธ๋‹ค. ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์—์„œ ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์„ค๊ณ„ํ•  ๋•Œ ๊ณ ๋ คํ•  ์ง€์ ๋“ค์ด๋‹ค.

๊ธฐ์กด ๋ชจ๋ธ์„ ํŒŒ์ธํŠœ๋‹ํ•˜๋Š” ๊ฒฝ์šฐ

๊ธฐ๋ณธ์€ ์›๋ž˜ ํ† ํฌ๋‚˜์ด์ €๋ฅผ ๊ทธ๋Œ€๋กœ ์“ฐ๋Š” ๊ฒƒ์ด๋‹ค. ํ† ํฌ๋‚˜์ด์ €๋ฅผ ๋ฐ”๊พธ๋ฉด ์ž„๋ฒ ๋”ฉ ๋ ˆ์ด์–ด๋ฅผ ๋‹ค์‹œ ํ•™์Šตํ•ด์•ผ ํ•˜๊ณ , ์ด๋Š” ์‚ฌ์‹ค์ƒ ์‚ฌ์ „ํ•™์Šต ์ผ๋ถ€๋ฅผ ์žฌํ˜„ํ•˜๋Š” ์ผ์ด ๋œ๋‹ค.

์˜ˆ์™ธ๋Š” ์„ธ ๊ฐ€์ง€๋‹ค. ์ฒซ์งธ, ์–ดํœ˜์ง‘ ํ™•์žฅ(vocab extension). ๋„๋ฉ”์ธ ํŠนํ™” ์šฉ์–ด๋‚˜ ํ•œ๊ตญ์–ด ํ† ํฐ ๋ช‡๋ฐฑ~๋ช‡์ฒœ ๊ฐœ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ •๋„๋Š” ์‹ค๋ฌด์—์„œ ํ”ํžˆ ํ•˜๋Š” ์ผ์ด๋‹ค. ๋‹จ, ์ƒˆ ํ† ํฐ์˜ ์ž„๋ฒ ๋”ฉ ์ดˆ๊ธฐํ™”์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•˜๋ฉฐ(ํ‰๊ท  ์ž„๋ฒ ๋”ฉ, ์„œ๋ธŒ์›Œ๋“œ ํ•ฉ์„ฑ ๋“ฑ), ์ถ”๊ฐ€ํ•œ ํ† ํฐ์ด ์‹ค์ œ๋กœ ํ•™์Šต๋˜๋„๋ก ์ถฉ๋ถ„ํ•œ continued pre-training์ด ํ•„์š”ํ•˜๋‹ค. ๋‘˜์งธ, ์–ดํœ˜์ง‘ ๊ต์ฒด(vocab swap). ZeTT(Minixhofer et al. 2024) ๊ฐ™์€ zero-shot transfer ๊ธฐ๋ฒ•์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ ์™„์ „ํ•œ ๊ต์ฒด๋„ ํ˜„์‹ค์  ์„ ํƒ์ง€๊ฐ€ ๋๋‹ค. ์…‹์งธ, ์ถฉ๋ถ„ํ•œ ์žฌํ•™์Šต ์˜ˆ์‚ฐ์ด ์žˆ๋Š” ๊ฒฝ์šฐ. Dagan et al.(2024)์˜ ๊ฒฝํ—˜์  ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅด๋ฉด ์•ฝ 50B ํ† ํฐ ๊ทœ๋ชจ์˜ continued pre-training์œผ๋กœ ํ† ํฌ๋‚˜์ด์ € ๊ต์ฒด์˜ ์˜ํ–ฅ์„ ๊ฑฐ์˜ ํšŒ๋ณตํ•  ์ˆ˜ ์žˆ๋‹ค16.

์ƒˆ ๋ชจ๋ธ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šตํ•˜๋Š” ๊ฒฝ์šฐ

๋Œ€์ƒ ์–ธ์–ด์™€ ๋„๋ฉ”์ธ ๋ถ„ํฌ๋ฅผ ๋ช…ํ™•ํžˆ ์ •ํ•˜๊ณ , ๊ทธ์— ๋งž๋Š” ๋ง๋ญ‰์น˜๋กœ SentencePiece BPE๋‚˜ tiktoken ์Šคํƒ€์ผ BBPE๋ฅผ ์ƒˆ๋กœ ํ•™์Šตํ•œ๋‹ค.

์–ดํœ˜์ง‘ ํฌ๊ธฐ๋Š” ์ตœ๊ทผ ์ง€ํ˜•์„ ๋ฐ˜์˜ํ•ด ๊ฒฐ์ •ํ•œ๋‹ค. ์˜์–ด ๋‹จ์ผ ๋ชจ๋ธ์ด๋ผ๋ฉด 32K~64K๋กœ๋„ ์ถฉ๋ถ„ํ•˜์ง€๋งŒ, ๋‹ค๊ตญ์–ด ํ˜น์€ ํ•œ๊ตญ์–ด ์ค‘์‹ฌ์ด๋ผ๋ฉด ์ตœ์†Œ 64K, ์‹ค์ „์—์„œ๋Š” 100K~200K๊ฐ€ ๋ณดํ†ต์ด๋‹ค(K-EXAONE 150K, GPT-4o 200K, Gemma 2 256K). ์–ดํœ˜์ง‘์ด ํฌ๋‹ค๊ณ  ๋ฌด์กฐ๊ฑด ์ข‹์€ ๊ฑด ์•„๋‹ˆ๊ณ , ๋“œ๋ฌธ ํ† ํฐ์˜ ํ‘œํ˜„ ํ•™์Šต๊ณผ ์ž„๋ฒ ๋”ฉ ๋ฉ”๋ชจ๋ฆฌ๋ผ๋Š” ์ƒํ•œ์ด ์žˆ๋‹ค๋Š” ์ ์€ ์•ž ์„น์…˜์—์„œ ๋‹ค๋ฃฌ ๋Œ€๋กœ๋‹ค.

ํ•œ๊ตญ์–ด ๋น„์ค‘์€ ํ† ํฌ๋‚˜์ด์ € ํ•™์Šต ๋ง๋ญ‰์น˜์—์„œ ๊ฒฝํ—˜์ ์œผ๋กœ ๋†’๊ฒŒ ์žก๋Š” ๊ฒŒ ์ข‹๋‹ค. ์˜์–ด๊ฐ€ ๋‹ค์ˆ˜์ธ ํ˜ผํ•ฉ ๋ง๋ญ‰์น˜์—์„œ๋Š” ํ•œ๊ตญ์–ด ๋ณ‘ํ•ฉ์ด ์ถฉ๋ถ„ํžˆ ์ผ์–ด๋‚˜์ง€ ์•Š์•„ fertility๊ฐ€ ์•…ํ™”๋œ๋‹ค. ๊ณต๊ฐœ๋œ ์ •ํ™•ํ•œ ์ˆ˜์น˜๋Š” ์—†์ง€๋งŒ, ๋‚ด ๊ฒฝํ—˜์—์„œ๋Š” ํ•œ๊ตญ์–ด ์ค‘์‹ฌ ๋ชจ๋ธ์ด๋ฉด ํ•™์Šต ๋ง๋ญ‰์น˜์˜ ํ•œ๊ตญ์–ด ๋น„์ค‘์„ ์ƒ๋‹นํžˆ ๋†’์—ฌ์•ผ ์˜๋ฏธ ์žˆ๋Š” ํ•œ๊ตญ์–ด fertility๊ฐ€ ๋‚˜์˜จ๋‹ค. ํ•œํŽธ morpheme-aware ๋ฐฉ์‹์„ ํƒํ• ์ง€(EXAONEยทHyperCLOVA X ๊ณ„์—ด) ์ˆœ์ˆ˜ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐˆ์ง€(Polyglot-Ko ๊ณ„์—ด) ํ˜น์€ vocab์„ ๊ณผ๊ฐํžˆ ํ‚ค์›Œ SuperBPE ์Šคํƒ€์ผ๋กœ ํ’€์ง€(K-EXAONE)๋Š” ์•ž์„  ์„น์…˜๋“ค์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํŒ๋‹จํ•œ๋‹ค.

๋‹ค๊ตญ์–ด ๋ชจ๋ธ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ

๊ฐ ์–ธ์–ด์˜ fertility๋ฅผ ์ธก์ •ํ•˜๊ณ  ๊ฒฉ์ฐจ๋ฅผ ํ™•์ธํ•œ๋‹ค. ๋‹จ, ๋ง๋ญ‰์น˜ ๋น„์ค‘๋งŒ์œผ๋กœ๋Š” fertility ๊ท ํ˜•์ด ์žกํžˆ์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์œ ๋…ํ•ด์•ผ ํ•œ๋‹ค. Petrov et al. 2023์ด ๋ณด์˜€๋“ฏ ์–ธ์–ด์˜ ํƒ€์ž…๋ก ์  ํŠน์„ฑ๊ณผ pre-tokenizer ์„ค๊ณ„๊ฐ€ ๋ง๋ญ‰์น˜ ๋น„์ค‘๋ณด๋‹ค ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค17. ์‹ค๋ฌด์—์„œ ์“ฐ์ด๋Š” ์™„ํ™”์ฑ…์œผ๋กœ๋Š” ์–ธ์–ด๋ณ„ ๋ถ€๋ก ์–ดํœ˜์ง‘(language-specific tail), superword ํ† ํฐ์˜ ์–ธ์–ด๋ณ„ ํ• ๋‹น(K-EXAONE์˜ 2:3:1 ๋น„์œจ์ฒ˜๋Ÿผ), parallel tokenizer ๊ฐ™์€ ์ ‘๊ทผ๋“ค์ด ์žˆ๋‹ค.

ํ‰๊ฐ€ ํŒŒ์ดํ”„๋ผ์ธ

์—ฌ๋Ÿฌ ํ›„๋ณด๋ฅผ ๋น„๊ตํ•  ๋•Œ๋Š” ๋‹จ๊ณ„์ ์œผ๋กœ ๊ฑฐ๋ฅธ๋‹ค.

  1. 1์ฐจ ์Šคํฌ๋ฆฌ๋‹(intrinsic): ๋Œ€์ƒ ์–ธ์–ดยท๋„๋ฉ”์ธ ๋ง๋ญ‰์น˜์— ๋Œ€ํ•œ fertility, BPB, coverage(๋ฐ”์ดํŠธ ํด๋ฐฑ ๋น„์œจ ๋“ฑ)๋ฅผ ์ธก์ •ํ•œ๋‹ค. ๋ชจ๋“  ํ›„๋ณด๋ฅผ ๋น ๋ฅด๊ฒŒ ํ›‘๋Š” ๋‹จ๊ณ„๋‹ค.
  2. 2์ฐจ ๊ตฌ์กฐ ๊ฒ€์ฆ: ํ˜•ํƒœ์†Œ ๊ฒฝ๊ณ„ ๋ณด์กด์œจ, ์ˆซ์žยท์ฝ”๋“œยท์ด๋ชจ์ง€ ๊ฐ™์€ ํŠน์ˆ˜ ๋„๋ฉ”์ธ์˜ ๋ถ„์ ˆ ํ’ˆ์งˆ, dead token ์ถ”์ •์น˜.
  3. 3์ฐจ proxy LM ๊ฒ€์ฆ: 125M~1B ๊ทœ๋ชจ์˜ ์†Œํ˜• LM์„ ๊ฐ ํ›„๋ณด ํ† ํฌ๋‚˜์ด์ €๋กœ ํ•™์Šต์‹œ์ผœ ๋‹ค์šด์ŠคํŠธ๋ฆผ ๋ช‡ ๊ฐœ๋ฅผ ์žฌ ๋ณธ๋‹ค. ๋น„์šฉ์ด ํฌ์ง€๋งŒ, ๋‚ด์žฌ์  ์ง€ํ‘œ๋งŒ์œผ๋กœ ๊ณ ๋ฅผ ๋•Œ์˜ ์œ„ํ—˜์„ ์ค„์—ฌ ์ค€๋‹ค.
  4. ์ตœ์ข… sanity check: full-scale ํ•™์Šต ์ง์ „์— ๊ฐ€์—ญ์„ฑ๊ณผ ํŠน์ˆ˜ ์ผ€์ด์Šค ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ ๋” ๊ฒ€์ฆํ•œ๋‹ค.

๊ฐ€์—ญ์„ฑ๊ณผ ์ •๊ทœํ™” ๊ฒ€์‚ฌ

์–ด๋–ค ํ† ํฌ๋‚˜์ด์ €๋ฅผ ์„ ํƒํ•˜๋“  ์ธ์ฝ”๋”ฉ-๋””์ฝ”๋”ฉ ์™•๋ณต์ด ์™„์ „ํ•œ ํ•ญ๋“ฑ ํ•จ์ˆ˜์ธ์ง€ ๋ฐ˜๋“œ์‹œ ๊ฒ€์ฆํ•ด์•ผ ํ•œ๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ ์ •๊ทœํ™”, ๊ณต๋ฐฑ ์ฒ˜๋ฆฌ, ํŠน์ˆ˜ ํ† ํฐ ์ฒ˜๋ฆฌ ๋“ฑ์—์„œ ๋ฏธ๋ฌ˜ํ•œ ์†์‹ค์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ณ , ์ด๋Š” ์‹ค์ œ ์„œ๋น„์Šค์—์„œ โ€œ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด ์‚ด์ง ๋ฐ”๋€Œ์–ด ์ถœ๋ ฅ๋œ๋‹คโ€๋Š” ๋ฒ„๊ทธ๋กœ ์ด์–ด์ง„๋‹ค.

ํŠนํžˆ ์œ ๋‹ˆ์ฝ”๋“œ ์ •๊ทœํ™” ๋ฐฉ์‹(NFC vs NFKC)์˜ ์„ ํƒ์€ ๋„๋ฉ”์ธ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„๋‹ค. NFKC๋Š” ํ˜ธํ™˜์„ฑ ๊ธฐ๋ฐ˜ ์ •๊ทœํ™”๋ผ ์œ„์ฒจ์ž/์•„๋ž˜์ฒจ์ž/ํŠน์ˆ˜ ๊ธฐํ˜ธ๋ฅผ ํ‰๋ฒ”ํ•œ ํ˜•ํƒœ๋กœ โ€œ๋ญ‰๊ฐœ๋Š”โ€ ๋ฐ˜๋ฉด, NFC๋Š” ์ด๋Ÿฐ ์˜๋ฏธ ๊ตฌ๋ถ„์„ ๋ณด์กดํ•œ๋‹ค. K-EXAONE์ด STEMยท์ฝ”๋“œ ๋„๋ฉ”์ธ ์„ฑ๋Šฅ์„ ์œ„ํ•ด NFKC์—์„œ NFC๋กœ ์ „ํ™˜ํ•œ ๊ฒƒ์ด ๋Œ€ํ‘œ์  ์‚ฌ๋ก€๋‹ค. ํ•œ๊ตญ์–ด ๋‹จ๋…์œผ๋กœ ๋ณด๋ฉด ํ•œ๊ธ€ ์กฐํ•ฉํ˜•/์™„์„ฑํ˜• ์ฒ˜๋ฆฌ(NFD vs NFC) ์—ญ์‹œ ํ† ํฐํ™” ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ์ค€๋‹ค.

๋งˆ๋ฌด๋ฆฌ โ€” Low level์—์„œ ๋ณด์ด๋Š” ๊ฒƒ๋“ค

์–ธ์–ด ๋ชจ๋ธ์„ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ํ™”๋ คํ•œ ์•„ํ‚คํ…์ฒ˜๋‚˜ ๊ฑฐ๋Œ€ํ•œ ํ•™์Šต ๊ทœ๋ชจ์— ์‹œ์„ ์„ ๋นผ์•—๊ธฐ๊ธฐ ์‰ฝ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋ธ์ด ์„ธ์ƒ์„ ์ฝ๋Š” ๊ฐ€์žฅ ๋‚ฎ์€ ์ธต์œ„, ๊ทธ ๊ด€๋ฌธ์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋А๋ƒ๊ฐ€ ๊ฒฐ๊ตญ ๊ทธ ์œ„์— ์Œ“์ด๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์ œ์•ฝํ•œ๋‹ค. ๋™์ผํ•œ LLM์ž„์—๋„ ์˜์–ด๋ณด๋‹ค ํ•œ๊ตญ์–ด๋กœ ๋Œ€ํ™”ํ•  ๋•Œ ๋‹ต๋‹ตํ•œ ์ด์œ ๋„, ์ˆซ์ž ๊ณ„์‚ฐ์— ์œ ๋… ์•ฝํ•œ ๋ชจ๋ธ์ด ์žˆ๋Š” ์ด์œ ๋„, ๋™์ผํ•œ ์•„ํ‚คํ…์ฒ˜๋ผ๋„ ์–ธ์–ด์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์ง€๋Š” ์ด์œ ๋„ ๊ฒฐ๊ตญ ์ด ๋‚ฎ์€ ์ธต์œ„์˜ ๋ฌธ์ œ์—์„œ ์ถœ๋ฐœํ•œ๋‹ค.

ํ† ํฌ๋‚˜์ด์ €๋Š” ํ™”๋ คํ•˜์ง€ ์•Š๋‹ค. ๋…ผ๋ฌธ ํ•œ ํŽธ์œผ๋กœ ๋งŒ๋“ค๊ธฐ ์–ด๋ ต๊ณ , ๋ˆˆ์— ๋„๋Š” ์ฃผ๋ชฉ์„ ๋ฐ›์ง€๋„ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ”๋กœ ๊ทธ ์•ˆ์— ๋ชจ๋ธ์˜ ํ’ˆ์งˆยทํšจ์œจยท๋น„์šฉยท์•ˆ์ „์„ฑ์„ ๊ฒฐ์ •ํ•˜๋Š” ์ˆ˜๋งŽ์€ ๋ณ€์ˆ˜๊ฐ€ ์ˆจ์–ด ์žˆ๋‹ค. ์ด ๊ธ€์ด ๊ทธ ์•ˆ์„ ๋“ค์—ฌ๋‹ค๋ณด๋ ค๋Š” ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์ž‘์€ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ํ•œ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ๋‚ด๊ฐ€ ์ง€๊ธˆ ์ž‘์—… ์ค‘์ธ ํ•œ๊ตญ์–ด ํ† ํฌ๋‚˜์ด์ €์˜ ๊ตฌ์ฒด์ ์ธ ์„ค๊ณ„ ์„ ํƒ์„ ๋‹ค๋ค„ ๋ณด๋ ค ํ•œ๋‹ค. pre-tokenizer ์ •๊ทœ์‹์„ ์–ด๋–ป๊ฒŒ ์งฐ๋Š”์ง€, ์–ดํœ˜์ง‘ ํฌ๊ธฐ๋ฅผ ์–ผ๋งˆ๋กœ ์ •ํ–ˆ๊ณ  ์™œ ๊ทธ๋ ‡๊ฒŒ ์ •ํ–ˆ๋Š”์ง€, ํ˜•ํƒœ์†Œ ๋ถ„์„๊ธฐ ์—ฐ๋™์„ ๋†“๊ณ  ์–ด๋–ค ๊ณ ๋ฏผ์„ ํ–ˆ๋Š”์ง€, ํ‰๊ฐ€ ํ”„๋กœํ† ์ฝœ์„ ์–ด๋–ป๊ฒŒ ์„ธ์› ๋Š”์ง€ ๊ฐ™์€ ์ด์•ผ๊ธฐ๋“ค์ด๋‹ค. ์ด๋ก ๋งŒ์œผ๋กœ๋Š” ๋ณด์ด์ง€ ์•Š๋Š” ๋ถ€๋ถ„์ด ๊ฑฐ๊ธฐ์— ์žˆ๋‹ค.






Footnotes

  1. Gage, P. A New Algorithm for Data Compression. The C Users Journal, 1994. โ†ฉ

  2. LG AI Research. EXAONE 3.0 7.8B Instruction Tuned Language Model. arXiv:2408.03541, 2024. https://arxiv.org/abs/2408.03541 โ†ฉ

  3. Yoo, K. M. et al. (NAVER Cloud HyperCLOVA X Team). HyperCLOVA X Technical Report. arXiv:2404.01954, 2024. https://arxiv.org/abs/2404.01954 โ†ฉ

  4. Ko, H. et al. A Technical Report for Polyglot-Ko: Open-Source Large-Scale Korean Language Models. arXiv:2306.02254, 2023. https://arxiv.org/abs/2306.02254 โ†ฉ

  5. Kim, I., Han, G., Ham, J., & Baek, W. KoGPT: KakaoBrain Korean(hangul) Generative Pre-trained Transformer. 2021. https://github.com/kakaobrain/kogpt โ†ฉ

  6. Liu, A. et al. SuperBPE: Space Travel for Language Models. arXiv:2503.13423, 2025 (COLM 2025). https://arxiv.org/abs/2503.13423 โ†ฉ โ†ฉ2

  7. LG AI Research. K-EXAONE Technical Report. arXiv:2601.01739, 2026. https://arxiv.org/abs/2601.01739 โ†ฉ

  8. Singh, A., & Strouse, D. Tokenization counts: the impact of tokenization on arithmetic in frontier LLMs. arXiv:2402.14903, 2024. https://arxiv.org/abs/2402.14903 โ†ฉ

  9. Rumbelow, J., & Watkins, M. SolidGoldMagikarp (plus, prompt generation). LessWrong, 2023. https://www.lesswrong.com/posts/aPeJE8bSo6rAFoLqg/solidgoldmagikarp-plus-prompt-generation โ†ฉ

  10. Mistral AI. Mistral NeMo. 2024-07. https://mistral.ai/news/mistral-nemo โ†ฉ

  11. Xue, L. et al. ByT5: Towards a Token-free Future with Pre-trained Byte-to-Byte Models. TACL, 2022 (arXiv:2105.13626). https://arxiv.org/abs/2105.13626 โ†ฉ

  12. Yu, L. et al. MEGABYTE: Predicting Million-byte Sequences with Multiscale Transformers. NeurIPS 2023 (arXiv:2305.07185). https://arxiv.org/abs/2305.07185 โ†ฉ

  13. Wang, J. et al. MambaByte: Token-free Selective State Space Model. arXiv:2401.13660, 2024 (COLM 2024). https://arxiv.org/abs/2401.13660 โ†ฉ

  14. Pagnoni, A. et al. Byte Latent Transformer: Patches Scale Better Than Tokens. arXiv:2412.09871, 2024. https://arxiv.org/abs/2412.09871 โ†ฉ

  15. Wegmann, A., Nguyen, D., & Jurgens, D. Tokenization is Sensitive to Language Variation. Findings of ACL 2025 (arXiv:2502.15343). https://arxiv.org/abs/2502.15343 โ†ฉ

  16. Dagan, G., Synnaeve, G., & Roziรจre, B. Getting the Most out of Your Tokenizer for Pre-training and Domain Adaptation. ICML 2024. https://arxiv.org/abs/2402.01035 โ†ฉ

  17. Petrov, A., La Malfa, E., Torr, P. H. S., & Bibi, A. Language Model Tokenizers Introduce Unfairness Between Languages. NeurIPS 2023 (arXiv:2305.15425). https://arxiv.org/abs/2305.15425 โ†ฉ