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