๐Ÿง  ๋‹จ์–ด์˜ ํ† ํฐํ™”(tokenization) 

๐Ÿคซ NLP(Natural Language Processing)๋ž€?
์ปดํ“จํ„ฐ์˜ ์–ธ์–ด๊ฐ€ ์•„๋‹Œ, ์ธ๊ฐ„์ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ„์•ผ์ด๋‹ค.

๐Ÿคซ token?  ๊ทธ๊ฒŒ ๋ญ์ง€??
๊ธ€ ⊃ ๋ฌธ์žฅ ⊃ ๋‹จ์–ด๋กœ ๊ธ€์€ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ, ๋‹จ์–ด๋Š” ๊ธ€์˜ ์˜๋ฏธ์žˆ๋Š” ๋ถ€๋ถ„ ์ค‘ ๊ฐ€์žฅ ์ž‘์€๋‹จ์œ„์ด๋‹ค.
์ด๋•Œ, ๋ฌธ๋ฒ•์ ์œผ๋กœ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋ฅผ ํ† ํฐ(token)์ด๋ผ ํ•˜๋ฉฐ, ์ „์ฒด ๊ธ€์„ ํ† ํฐ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ ํ† ํฐํ™”(tokenization)๋ผํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ† ํฐํ™”๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ธฐ๋ณธ์ ์ธ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•œ๋ฐ, ์˜ˆ๋ฅผ๋“ค์–ด ์–ด๋–ค ํ† ํฐ์ด ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š”์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ฅผ ์›Œ๋“œ ์นด์šดํŠธ(word_counts)๋ผ ํ•œ๋‹ค.

 

 

 

 

 

 

 

๐Ÿง  ๋‹จ์–ด๋ฅผ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ 

๐Ÿคซ token์„ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜??
token์„ ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ํ•˜๋‚˜๋Š” one-hot encoding์ธ๋ฐ, ์ด์— ๋Œ€ํ•ด ์•„๋ž˜ ์ฝ”๋“œ๋กœ ์‚ดํŽด๋ณด์ž.


 

 

 

 

 

๐Ÿง  ๋‹จ์–ด ์ž„๋ฒ ๋”ฉ (embedding) 

๐Ÿคซ token์„ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜??
token์„ ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„ํ•˜๋Š” one-hot encoding์€ ์žฅ์ ๋„ ์žˆ์ง€๋งŒ ๋‹จ์ ์ด ๋ช…ํ™•ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.
๋งŒ์•ฝ ๋‹จ์–ด ์ธ๋ฑ์Šค๊ฐ€ 100,000๊ฐœ ์กด์žฌํ•œ๋‹ค๋ฉด? → ํ•˜๋‚˜์˜ ๋‹จ์–ด๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด 100,001๊ธธ์ด์˜ ๋ฒกํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ์ !

๋”ฐ๋ผ์„œ ๋‹จ์–ด ์ž„๋ฒ ๋”ฉ(Embedding)์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.
๋‹จ์–ด ์ž„๋ฒ ๋”ฉ์€ ๋‹จ์–ด ๋ฒกํ„ฐ์˜ ๊ธธ์ด๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
์ฆ‰, ์ธ๋ฑ์Šค ๊ธธ์ด์— ์ƒ๊ด€์—†์ด ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋ฒกํ„ฐ์˜ ๊ธธ์ด๋กœ ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
์ž„๋ฒ ๋”ฉ์˜ ์›๋ฆฌ: '๋ฐ”๊พธ๊ณ '๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์ž„๋ฒ ๋”ฉํ•˜๋Š” ๊ณผ์ •
์ž„๋ฒ ๋”ฉํ•˜๋ ค๋Š” ๋‹จ์–ด์˜ ๋ฒกํ„ฐ๋ฅผ ์ค€๋น„ํ•˜๊ณ 
์ž„๋ฒ ๋”ฉ์„ ์œ„ํ•œ ํ–‰๋ ฌ์„ ์ค€๋น„ํ•œ๋‹ค. [ํ–‰: ์ž„๋ฒ ๋”ฉํ•  ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜  //   ์—ด: ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ์˜ ํฌ๊ธฐ]

์œ„์—์„œ์˜ ์‹ค์Šต์—์„œ ๋ฒกํ„ฐ์˜ ๊ธธ์ด๊ฐ€ 6์ด์—ˆ์ง€๋งŒ, ์•„๋ž˜๋Š” ํ•ด๋‹น ๋ฌธ์žฅ์„ ๋ฒกํ„ฐ์˜ ๊ธธ์ด๊ฐ€ 3์œผ๋กœ ์ง€์ •ํ•ด ์ž„๋ฒ ๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ์ด๋‹ค.

 

 

 

 

 

 

๐Ÿง  seq2seq model 

๊ธฐ์กด์˜ ๋”ฅ๋Ÿฌ๋‹
-
๊ธฐ์กด์˜ ๋”ฅ๋Ÿฌ๋‹์€ input๊ณผ output๋ฐ์ดํ„ฐ์˜ ์ฐจ์›์ด ๊ณ ์ •๋œ ๋ฒกํ„ฐ์ธ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ
- ํ•˜์ง€๋งŒ ์‹ค์ œ ๋ฌธ์ œ๋“ค์€ ๋ฒกํ„ฐ์˜ ๊ธธ์ด๊ฐ€ ์‚ฌ์ „์— ์•Œ ์ˆ˜ ์—†๋Š” sequence๋กœ ํ‘œํ˜„๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ


๐Ÿคซ seq2seq๋ž€?

์ž…๋ ฅ๊ฐ’์œผ๋กœ sequence๋ฅผ ๋ฐ›๊ณ  ์ถœ๋ ฅ๊ฐ’์œผ๋กœ ๋‹ค๋ฅธ sequence๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ชจํ˜•
์ž…๋ ฅ sequence์™€ ์ถœ๋ ฅ sequence๋ฅผ ๋งตํ•‘ํ•˜๋Š” model์œผ๋กœ ๋‹ค์Œ 2๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌ
1. input sequence์™€ output sequence๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ
(input sequence์˜ ๊ธธ์ด์ •๋ณด๊ฐ€ ํ•„์ˆ˜์ )
2. input sequence์™€ output sequence์˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ
(targe์˜ˆ์ธก์„ ์œ„ํ•œ input sequence ์ „์ฒด๊ฐ€ ์š”๊ตฌ๋จ)



๐Ÿคซ seq2seq์— ๋Œ€ํ•œ ๊ฐœ๋…์ , ๊ตฌ์กฐ์  ์ ‘๊ทผ
๊ฐœ๋…์ : RNN๊ณผ Auto-Encoder๋ฅผ ํ•ฉ์นœ ํ˜•ํƒœ
๊ตฌ์กฐ์ : 2๊ฐœ์˜ RNN
์„ ํ•ฉ์นœ ํ˜•ํƒœ (ํŠนํžˆ LSTM๊ณผ GRU๋ฅผ ์ž์ฃผ ์‚ฌ์šฉ)

์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์ดํ•ดํ•ด ๋ณด์ž.
์ธ์ฝ”๋” ๋‚ด๋ถ€์—์„œ 1๊ฐœ์˜ step๋งˆ๋‹ค ํ•œ๊ฐœ์˜ LSTM๋ชจํ˜•์ด ์กด์žฌํ•˜๊ธฐ์— ๊ฒฐ๊ณผ์ ์œผ๋กœ ์—ฌ๋Ÿฌ LSTM์ด ์กด์žฌํ•˜๊ณ  ํฐ ์ฐจ์›์˜ ๋ฒกํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ, ์ธ์ฝ”๋”๋Š” ์ž…๋ ฅ์‹œํ€€์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์€๋‹‰"์ƒํƒœ(state)"๋ฅผ returnํ•œ๋‹ค.
์ฆ‰, encoder์˜ output์€ ๋ฒ„๋ฆฌ๊ณ  ์˜ค์ง "์ƒํƒœ"๋งŒ ์ „๋‹ฌ์‹œํ‚ค๋Š”๋ฐ, ์ด๋•Œ ์ธ์ฝ”๋”ฉ ๊ณผ์ •์—์„œ ์ž…๋ ฅ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฒกํ„ฐ๋กœ ์••์ถ•ํ•˜๋Š” context vector๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

์ธ์ฝ”๋”ฉ ๊ณผ์ •์„ ๊ฑฐ์นœ ์€๋‹‰๋ฒกํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ถœ๋ ฅ ์‹œํ€€์Šค๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
์ด๋•Œ, ๋””์ฝ”๋”๋Š” target sequence์˜ ํ•œ ์‹œ์  ์ด์ „ ๋ฌธ์ž๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ๋ฐ”๋กœ ๋‹ค์Œ ๋ฌธ์ž๋ฅผ ์˜ˆ์ธกํ•˜๋„๋ก ํ•™์Šต๋˜๋ฉฐ ์ค‘์š”ํ•œ ์ ์€ ๋””์ฝ”๋”๋Š” ์ธ์ฝ”๋”์˜ ์ถœ๋ ฅ๋ฒกํ„ฐ์ธ context vector๋ฅผ ์ดˆ๊ธฐ ๋ฒกํ„ฐ๋กœ ์‚ฌ์šฉํ•œ๋‹ค!
์ฆ‰, target sequence๋ฅผ ๊ฐ™์€ sequence๋กœ ๋ณ€ํ•˜๊ฒŒ ํ•™์Šตํ•˜์ง€๋งŒ ํ•œ์‹œ์  ๋ฏธ๋ž˜๋กœ offset์„ ํ•˜๋Š”, ๊ต์‚ฌ๊ฐ•์š”(teacher forcing) ํ•™์Šต๊ณผ์ •์„ ์ง„ํ–‰ํ•œ๋‹ค.
ex) input sequence๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๋””์ฝ”๋”๋Š” target๊ฐ’[..t]๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, target๊ฐ’[t+1..]๋ฅผ ์˜ˆ์ธกํ•˜๋„๋ก ํ•™์Šตํ•œ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ๋””์ฝ”๋”๋Š” ์–ด๋–ค ๋ฌธ์ž๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ, <sos>๋Š” start-of-string์„, <eos>๋Š” end-of-string์„ ์˜๋ฏธํ•œ๋‹ค.






๐Ÿคซ seq2seq. Algorithm

1. input sequence๋ฅผ context ๋ฒกํ„ฐ๋กœ encoding, ์ถœ๋ ฅ
2. size๊ฐ€ 1์˜ target sequence๋กœ ์‹œ์ž‘.(target sequence๋Š” ๋‹จ์ง€ start-of-string๋ฌธ์ž)
3. ๋‹ค์Œ ๋ฌธ์ž๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์œ„ํ•ด decoder์— ์ƒํƒœ๋ฒกํ„ฐ์™€ 1-char target sequence๋ฅผ ๋„ฃ๋Š”๋‹ค.
4. ์ด๋Ÿฌํ•œ ์˜ˆ์ธก๋ฒ•์œผ๋กœ ๋‹ค์Œ ๋ฌธ์ž๋ฅผ sampling
5. ๋ฝ‘ํžŒ ๋ฌธ์ž๋ฅผ target sequence์— ์ถ”๊ฐ€
6. ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ <eos>๊ฐ€ ๋‚˜์˜ค๊ฑฐ๋‚˜ ๋ฌธ์ž ํ•œ๊ณ„์น˜์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต





๐Ÿคซ ์ž…๋ ฅ์‹œํ€€์Šค (x1, . . . , xn)์„ ์ž…๋ ฅ๋ฐ›์•˜์„ ๋•Œ, ์ถœ๋ ฅ์‹œํ€€์Šค(y1, . . ., yn')๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ชจ๋ธ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์ž.
์ž…๋ ฅ์‹œํ€€์Šค์— ๋Œ€ํ•œ ์ถœ๋ ฅ์‹œํ€€์Šค์˜ ์กฐ๊ฑด๋ถ€ํ™•๋ฅ  P(y1, . . ., yn'  |  x1, . . . , xn)๋ฅผ ์ถ”์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋ฏ€๋กœ
์•„๋ž˜์™€ ๊ฐ™์€ ์‹์„ ์‚ฌ์šฉํ•ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
์œ„ ์‹์—์„œ v๋Š” ์ž…๋ ฅ๋ฐ์ดํ„ฐ ์‹œํ€€์Šค ๋ฐ์ดํ„ฐ x๊ฐ€ ์ธ์ฝ”๋”๋ฅผ ๊ฑฐ์นœ ํ›„ ์ถœ๋ ฅ๋˜๋Š” context vector๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ
P(yt |   v,   y1, . . . ,yt-1)๋Š” ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ์ถœ๋ ฅ ํ›„๋ณด์— softmaxํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•œ ๊ฐ’์ด๋‹ค.

 

 

 

 

 

 

 

๐Ÿง  Attention 

๐Ÿคซ seq2seq๋ณด๋‹ค ์ข€ ๋” ๋ฐœ์ „์‹œ์ผœ๋ณผ๊นŒ?
์ด๋ฆ„์ฒ˜๋Ÿผ ์ฃผ์œ„์— ์‹ ๊ฒฝ์„ ๊ธฐ์šธ์ธ๋‹ค๋Š” ๋œป์œผ๋กœ ์ถœ๋ ฅ๋‹จ์–ด๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๋งค ์‹œ์  encoder์—์„œ ์ „์ฒด ์ž…๋ ฅ๋ฌธ์žฅ์„ ์ฐธ๊ณ ํ•˜๋Š” ๋ฐฉ์‹.
์•ž์„œ ๋ฐฐ์šด seq2seq(์ผ๋ช… ๋ฐ”๋‹๋ผ seq2seq)๋Š” ์ง์ „ ๋ฒกํ„ฐ์— ๊ฐ€์žฅ ํฐ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ์ •๋ณด๋ฅผ ์žƒ๋Š” ํ•œ๊ณ„์ ์ด ์กด์žฌ
๋ฐ˜๋ฉด, attention์€ ๋ชจ๋“  decoding๊ณผ์ •๋งˆ๋‹ค encoder๋‚ด๋ถ€์˜ ๋ชจ๋“  hidden layer๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.
์ด๋•Œ, encoder์˜ ์€๋‹‰์ƒํƒœ๋ฅผ ๋™๋“ฑํ•˜๊ฒŒ ์ฐธ๊ณ ํ•˜์ง€ ์•Š๊ณ  ์ถœ๋ ฅ๋‹จ์–ด์™€ ์—ฐ๊ด€์ด ์žˆ๋Š” ๋ถ€๋ถ„์„ ์ข€ ๋” ์ง‘์ค‘(attention)ํ•ด์„œ ์ฐธ๊ณ ํ•œ๋‹ค.

attention์˜ ์„ธ๋ถ€๋‹จ๊ณ„๋Š” ์ด 5๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜๋Š”๋ฐ, ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1. ๋‚ด์ 
- decoder์˜ ์€๋‹‰์ƒํƒœ ๋ฒกํ„ฐ ·  encodeer์˜ ์€๋‹‰์ƒํƒœ ๋ฒกํ„ฐ  =  ๊ฐ๊ฐ์˜ ์€๋‹‰์ƒํƒœ ๋ฒกํ„ฐ์— ๋Œ€ํ•œ attention score

2. attention์˜ ๋ถ„ํฌ ๊ตฌํ•˜๊ธฐ
- softmaxํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋ถ„ํฌ๋ฅผ ๊ตฌํ•˜๋ฉฐ ํ™•๋ฅ ๋ถ„ํฌ์ด๊ธฐ์— ๋ชจ๋‘ ํ•ฉํ•˜๋ฉด 1์ด ๋œ๋‹ค.
- ์ด๋•Œ, ๋ง‰๋Œ€์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ€์žฅ ํฐ ๊ฒƒ์ด How์— ํ•ด๋‹นํ•˜๋Š” attention score์ด๊ธฐ์— How์™€ ์—ฐ๊ด€์ด ํฌ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

3. attention์˜ output๊ตฌํ•˜๊ธฐ
- attention ๋ถ„ํฌ โŠ™ encoder ์€๋‹‰์ƒํƒœ  =  attention output. (์›์†Œ๊ณฑ ์ง„ํ–‰)

4. output layer์˜ input ๊ตฌํ•˜๊ธฐ
- ์ถœ๋ ฅ์ธต ์ž…๋ ฅ = attention output๊ณผ ํ•ด๋‹น๋‹จ๊ณ„์˜ decoder ์€๋‹‰์ƒํƒœ๋ฅผ ์ด์–ด๋ถ™์ธ ํ›„ w๋ฅผ ๊ณฑํ•˜๊ณ  b๋ฅผ ๋”ํ•ด activation ํ•จ์ˆ˜์— ๋„ฃ์Œ

5. predictํ•œ ๊ฐ’ ๊ตฌํ•˜๊ธฐ
- ์ตœ์ข… ์˜ˆ์ธก๊ฐ’ = 4์—์„œ ๊ตฌํ•œ ์ถœ๋ ฅ์ธต ์ž…๋ ฅ๋ฒกํ„ฐ์— wํ–‰๋ ฌ์„ ๊ณฑํ•˜๊ณ  b๋ฅผ ๋”ํ•œ ํ›„ softmax๋ฅผ ์‚ฌ์šฉ


 

 

 

 

 

 

 

 

 

 

+ Recent posts