Seq2Seq
Prerequisite
์ด ๊ธ์ ์ํ ์ ๊ฒฝ๋ง๊ณผ ์๋ ์๋ฒ ๋ฉ์ ๋ํ ์ฌ์ ์ง์์ ํ์๋ก ํฉ๋๋ค.
Sequence to Sequence
Seq2Seq๋ ์ ๋ ฅ ์ํ์ค๋ฅผ ๋ค๋ฅธ ๋๋ฉ์ธ์ ์ถ๋ ฅ ์ํ์ค๋ก ๋ณํํ๋ ์ํ ์ ๊ฒฝ๋ง ๋ชจ๋ธ์ ๋๋ค. ๋๋ฉ์ธ ๋ณํ์ ์์๋ก ํ๊ตญ์ด-์์ด, ์์ฑ-ํ ์คํธ, ๊ธด ๋ฌธ์ฅ-์์ฝ๋ฌธ์ฅ, ์ง๋ฌธ-๋๋ต ๋ฑ์ด ์์ต๋๋ค. ๋ํ์ ์์ฉ ์์๋ก ๋ฒ์ญ๊ธฐ์ ์๋์๋ต ์ฑ๋ด์ด ์์ต๋๋ค.
Seq2Seq๋ฅผ ์ผ๋ฐ์ ์ผ๋ก ์ค๋ช ํ๊ธฐ์ ๋น์ง๊ด์ ์ด๋ฏ๋ก, ๋ํ์ ์ธ ์์์ธ ๊ธฐ๊ณ๋ฒ์ญ ์์๋ฅผ ์ฌ์ฉํด Seq2Seq๋ฅผ ์ด๋ก ์ ์ผ๋ก ์ดํดํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋จ์ RNN ์ํ์ค ๋ณํ์ ํ๊ณ
๋๋ ์ด์ ์ฌ๊ณผ๋ฅผ ์๋ค.
I bought an apple yesterday.
์ด ๋ ๋ฌธ์ฅ์ ๋ฒ์ญํ๊ธฐ ์ํด ๋จ์ํ RNN์ ๋ช ๊ฐ ์ฐ๊ฒฐํด์ ์ฌ์ฉํด ๋ด ์๋ค.
๊ฐ์ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ ๋ค๋ฅธ ์ธ์ด์ ๋ ๋ฌธ์ฅ์ด ์ด์, ๊ธธ์ด๊ฐ ๋ชจ๋ ๋ค๋ฆ ๋๋ค. RNN์ hidden state์ ํ์ฌ ์ ๋ ฅ์ ์ด์ฉํด ์ถ๋ ฅ์ ์์ธกํ๊ธฐ ๋๋ฌธ์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋ฌธ์ฅ ๊ธธ์ด๋ ๊ฐ์์ผ ํฉ๋๋ค. ๋ํ ์ด์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค์ ์๋ ๋จ์ด๋ฅผ ์์ผ๋ก ์ฎ๊ธฐ๋ ํ๊ฒจ์ด ์์ ์ ํด ์ฃผ์ด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ๋ฐฉ๋ฒ์ ๋ฒ์ญ ์ฑ๋ฅ์ ํฌ๊ฒ ๋จ์ด๋จ๋ฆด ๊ฒ์ ๋๋ค.
๊ทธ๋ผ ์ด๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์๊น์?
์ธ์ฝ๋-๋์ฝ๋ ๊ตฌ์กฐ
๋จ์ด ํ๋ํ๋๋ฅผ ๋ณด์ง ๋ฐ๋ก ์ถ๋ ฅํ์ง ๋ง๊ณ ,** ๋ฌธ์ฅ ์ ์ฒด๋ฅผ ๋จผ์ ์ดํดํ ํ** ๋ฒ์ญํ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ฐ ์ ๊ทผ๋ฒ์์ ๋์จ ๊ตฌ์กฐ๊ฐ sequence to sequence์ ์ธ์ฝ๋-๋์ฝ๋ ๊ตฌ์กฐ์ ๋๋ค. ๋ฌธ์ฅ์ ์ดํดํ๋ ๊ณผ์ ์ ์ธ์ฝ๋ฉ, ์ดํดํ ๋ฌธ์ฅ์ ๋ค๋ฅธ ์ธ์ด๋ก ํ์ด์ฃผ๋ ๊ณผ์ ์** ๋์ฝ๋ฉ**์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
Seq2Seq๋ ์ด๋ ๊ฒ ์ธ์ฝ๋์ ๋์ฝ๋๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์ธ์ฝ๋์ ์ต์ข ์ถ๋ ฅ์ ๊ณ ์ ๋ ์ฐจ์์ ๋ฒกํฐ์ ๋๋ค. ์ด ๋ฒกํฐ๋ฅผ ๋์ฝ๋์ ์ด๊ธฐ hidden state์ ์ ๋ ฅํด ์ธ์ฝ๋๊ฐ ์ดํดํ ๋ฌธ์ฅ์ ๋ด์ฉ์ ๋ฒ์ญํ ์ ์๋๋ก ๋์ฝ๋์ ์ ๋ฌํด ์ค๋๋ค. ์ด ๋ฒกํฐ๋ ๋ฌธ์ฅ์ ๋งฅ๋ฝ์ ํฌํจํ๊ณ ์๋ค ํ์ฌ Context Vector(๋๋ Thought Vector)๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
๋ฉ์ปค๋์ฆ
์ธ์ฝ๋์ ๋์ฝ๋๋ ๋ชจ๋ ์ํ ์ ๊ฒฝ๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๊ทธ๋ฆผ ์ ์๋์ธต์ ํ์ดํ๊ฐ ํ ๊ฐ๋ฅ ์ด์ง๋ง, ์ค์ ๋ก LSTM์ด๋ฏ๋ก ๋ ๊ฐ์ ๋ฒกํฐ๊ฐ ์ด๋ํฉ๋๋ค.
์ธ์ฝ๋ฉ ๊ณผ์
๋ฌธ์ฅ์ ๋จ์ด๋ค๊ณผ ๋ฌธ์ฅ์ ๋์ ์๋ฆฌ๋ <eos>๋ฅผ ์ค๋นํฉ๋๋ค(one-hot vector). ๊ทธ๋ฆฌ๊ณ ์ด๋ค์ embedding ๋ ์ด์ด๋ฅผ ํตํด ๋จ์ด์ ๋์๋๋ ๋ฒกํฐ๋ก ๋ฐ๊ฟ๋๋ค(๋ถ์ฐ ํํ). ์ด ๋ฒกํฐ๋ฅผ ์ํ ์ ๊ฒฝ๋ง์ ์ฐจ๋ก์ฐจ๋ก ์ ๋ ฅํด ์ต์ข hidden state ์ถ๋ ฅ(context vector)๋ง์ ๋์ฝ๋๋ก ์ ํด์ค๋๋ค. ๋์ฝ๋๋ก ์ ํด์ง๋ ์ ๋ณด๋ ์ด Context Vector ๋จ ํ๋์ ๋๋ค. ๋ฌธ์ฅ์ ์ ์ฒด ๋งฅ๋ฝ์ด ์ด ๋ฒกํฐ ํ๋์ ๋ด๊ฒจ์๊ณ , ๋ฐ๋ผ์ ๋งค์ฐ ๋์ ์ฐจ์์ ๊ฐ์ง๋๋ค.
๋์ฝ๋ฉ ๊ณผ์
๋์ฝ๋๋ ์ธ์ฝ๋์๋ ๋ค๋ฅด๊ฒ LSTM ์ ์ ์ถ๋ ฅ์ ์ฌ์ฉํฉ๋๋ค. LSTM ์ ์ ์ถ๋ ฅ์ด ์ ๊ฒฝ๋ง์ ๊ฑฐ์น๊ณ , softmax๋ฅผ ๊ฑฐ์ณ ๋จ์ด์ ํ๋ฅ ๊ฐ์ด ๋ฉ๋๋ค. ๋ณดํต ๋์ฝ๋ฉ ๊ณผ์ ์ ์ ๋ ฅ์ ํ์ต(Train)๊ณผ ์คํ(Test)์์ ์ฝ๊ฐ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ์ดํดํ๊ธฐ ์ฌ์ด [์คํ] ๊ณผ์ ์ ๋จผ์ ์์ ๋ด ์๋ค. ํ์ต์ด ์๋ฃ๋ ํ ์ธ๊ฐ์ด ์ด ๋ฒ์ญ๊ธฐ๋ฅผ ์ฌ์ฉํ ๋ ์ผ์ด๋๋ ๊ณผ์ ์ ๋๋ค.
๋์ฝ๋ฉ ๊ณผ์ - Test
ํ ์คํธ ๊ณผ์ ์ ์ธ์ฝ๋ฉ ๊ณผ์ ์์ ์ถ๋ ฅ๋ Context Vector๋ฅผ ์๋์ธต์ ์ ๋ ฅํ๊ณ , ๋ฌธ์ฅ์ ์์์ ์๋ฆฌ๋ '<sos>' ํ ํฐ์ ์๋ฒ ๋ฉํด ์ ๋ ฅํ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
<sos>์ context vector๋ฅผ ์ด์ฉํด 'Je' ๋จ์ด๊ฐ ๊ฐ์ฅ ํ๋ฅ ์ด ๋๋ค๊ณ ์์ธกํ์ต๋๋ค. ๋ค์ ์คํ ์์ ์ด์ ์คํ ์ ๋จ์ด ์ถ๋ ฅ ๊ฒฐ๊ณผ์ ์ด์ ์คํ ์ hidden state๋ฅผ ์ด์ฉํด ๋ค์ ๋จ์ด๋ฅผ ์์ธกํฉ๋๋ค.
๊ทธ ๋ค์ ๋จ์ด๋ 'aime'๊ฐ ๊ฐ์ฅ ๊ทธ๋ด๋ฏํ ๋จ์ด๋ผ๊ณ ๋์ฝ๋๊ฐ ์๋ ค์ค๋๋ค. ์ด ๊ณผ์ ์ <eos> ํ ํฐ์ด ๋์ฌ ๋ ๊น์ง ๊ณ์ ๋ฐ๋ณตํฉ๋๋ค.
<eos>๋ ๋ฌธ์ฅ์ด ๋๋ฌ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๊ฒ Test ๊ณผ์ ์์ ๋ฒ์ญ์ด ์๋ฃ๋์์ต๋๋ค!
๋์ฝ๋ฉ ๊ณผ์ - Train
Train ๊ณผ์ ์์ ์ ์ ํ์ง ์์ ๋จ์ด๊ฐ ์ถ๋ ฅ๋์๋ค๊ณ ํฉ์๋ค. Train ์ด๊ธฐ์๋ ์ ํ ์ต์ ํ๋์ง ์์ ์ํ์ด๋ฏ๋ก ์ฌ๋ฐ๋ฅธ ๋จ์ด๊ฐ ์ถ๋ ฅ๋๊ธฐ ํ๋ญ๋๋ค.
Je(=I) ๋์ chien(=dog)๊ฐ ์ถ๋ ฅ๋์ด ๋ฒ๋ ธ์ต๋๋ค. ์ด ํ ํฐ์ด ์์์ ๋ณธ Test ๊ณผ์ ๋ ์ฒ๋ผ ๊ทธ๋๋ก ๋ค์ time step์ ์ ๋ ฅ์ผ๋ก ๋ค์ด๊ฐ๋ค๋ฉด, ๋ฒ์ญ์ด ๋งค์ฐ ์ด์ํ๊ฒ ์ด๋ฃจ์ด ์ง๋๋ค. ์๋ํ๋ฉด ์ํ์ค ๋ชจ๋ธ์ ์ด์ ์ถ๋ ฅ์ด ๋ค์ ์ถ๋ ฅ์ ํฌ๊ฒ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์, ์๋ชป๋ ๋จ์ด๊ฐ ๋ค์ด๊ฐ๋ฉด ๋ค์ ๋จ์ด๋ ๋ชจ๋ ์ด์ํ ๋จ์ด๊ฐ ์ถ๋ ฅ๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด** '๊ฐ์ ๋ก ๊ต์ '**ํฉ๋๋ค(์ด๋ฅผ Teacher Forcing์ด๋ผ๊ณ ํฉ๋๋ค). ํ์ต ๊ณผ์ ์์ ์ ๋ ฅ ๋ฌธ์ฅ์ ๋ํ ๋ต์ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด์ ์ถ๋ ฅ์ด ๋ง๋ ํ๋ฆฌ๋ , ๋ชจ๋ time step์ ์ ๋ ฅ์ ์ฌ๋ฐ๋ฅธ ๋จ์ด๋ก ๋ฃ์ด์ค๋๋ค.
์ถ๋ ฅ ๊ฒฐ๊ณผ์ ์ ๋ต์ ์ด์ฉํด ์ญ์ ํํด seq2seq๋ฅผ ํ์ต์ํต๋๋ค.
์ถ๋ ฅ์ธต
๋์ฝ๋์ ๊ฐ์ฅ ์์ชฝ์ ์๋ Dense & Softmax๋ LSTM์์ ์ถ๋ ฅ๋ ๊ฐ์ Linear(Wx+b) ๊ณผ์ ์ ๊ฑฐ์ณ (์ฌ์ ์ ์ด ๋จ์ด ์)์ฐจ์์ ๋ฒกํฐ๋ก ๋ณํํฉ๋๋ค. ์ด์ softmax๋ฅผ ์ทจํด ๋จ์ด์ ํ๋ฅ ๊ฐ์ ๊ตฌํฉ๋๋ค. Test ๊ณผ์ ์์ ๋จ์ด์ ํ๋ฅ ๊ฐ์ด ๊ฐ์ฅ ํฐ ๋จ์ด๊ฐ ์ถ๋ ฅ์ด ๋๊ณ , Train ๊ณผ์ ์์๋ ์ต๋๊ฐ์ ๊ฐ์ง๋ ๋จ์ด๋ฅผ ์ทจํ์ง ์๊ณ ๋ฐ๋ก ์์คํจ์์ ๋ฃ์ด ์ญ์ ํ๋ก ๋ชจ๋ธ์ ์ต์ ํํฉ๋๋ค. ์์คํจ์๋ Cross Entropy๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Attention Mechanism
์งํ ์์
References
https://wikidocs.net/24996 https://kh-kim.gitbooks.io/pytorch-natural-language-understanding/content/neural-machine-translation/seq2seq.html
Last updated