๐ง ๋จ์ด์ ํ ํฐํ(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๋ฅผ ์ฌ์ฉ