A A
[NLP] Tokenization - ํ† ํฐํ™”๋ž€?

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๋ฅผ ๋ฌธ์ž๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ. pugp, 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)๋งŒ ๊ฐ€์ง€๊ณ  ํ† ํฐํ™”.
  • ์›Œ๋“œํ”ผ์Šค๋Š” ๋ถ„์„๋Œ€์ƒ์ค‘ ์–ดํœ˜์ง‘ํ•ฉ์— ์žˆ๋Š” ์„œ๋ธŒ์›Œ๋“œ๊ฐ€ ํฌํ•จ์‹œ ํ•ด๋‹น ์„œ๋ธŒ์›Œ๋“œ๋ฅผ ์–ด์ ˆ์—์„œ ๋ถ„๋ฆฌ→ ๊ณ„์† ๋ฐ˜๋ณต.
  • ๋‹จ ์„œ๋ธŒ์›Œ๋“œ ํ›„๋ณด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ๋ฉด, ์ œ์ผ ๊ธด๊ฑธ ์„ ํƒ. ๊ทธํ›„, ๋‚˜๋จธ์ง€ ์–ดํœ˜์ง‘ํ•ฉ์— ์žˆ๋Š” ์„œ๋ธŒ์›Œ๋“œ์ค‘ ์ œ์ผ ๊ธด๊ฑฐ ์ฐพ๊ณ  ๋ถ„๋ฆฌ
  • (๋งŒ์•ฝ ์„œ๋ธŒ์›Œ๋“œ ํ›„๋ณด๊ฐ€ ํ•˜๋‚˜๋„ ์—†์œผ๋ฉด ํ•ด๋‹น ๋ฌธ์ž์—ด ์ „์ฒด๋ฅผ ๋ฏธ๋“ฑ๋ก ๋‹จ์–ด๋กœ ์ทจ๊ธ‰)