๋ฐ์ํ
1..sequence-to-sequence
๐ก ํธ๋์คํฌ๋จธ(Transformer) ๋ชจ๋ธ์ ๊ธฐ๊ณ ๋ฒ์ญ(machine translation) ๋ฑ ์ํ์ค-ํฌ-์ํ์ค(sequence-to-sequence) ๊ณผ์ ๋ฅผ ์ํํ๊ธฐ ์ํ ๋ชจ๋ธ์ ๋๋ค.
- sequence: ๋จ์ด ๊ฐ์ ๋ฌด์ธ๊ฐ์ ๋์ด์ ์๋ฏธํฉ๋๋ค.
- ๊ทธ๋ฌ๋ฉด ์ฌ๊ธฐ์ sequence-to-sequence๋ ํน์ ์์ฑ์ ์ง๋ ์ํ์ค๋ฅผ ๋ค๋ฅธ ์์ฑ์ ์ํ์ค๋ก ๋ณํํ๋ ์์ (Task) ์ ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ sequence-to-sequence๋ RNN์์ many-to-many ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ ์๋๋ฐ, RNN์.. ์ถํ์ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๐ก example
๊ธฐ๊ณ ๋ฒ์ญ: ์ด๋ค ์ธ์ด(์์ค ์ธ์ด, source language)์ ๋จ์ด ์ํ์ค๋ฅผ ๋ค๋ฅธ ์ธ์ด(๋์ ์ธ์ด, target language)์ ๋จ์ด ์ํ์ค๋ก ๋ณํํ๋ ๊ณผ์
- source sequence ๊ธธ์ด (๋จ์ด 6๊ฐ), target sequence ๊ธธ์ด (๋จ์ด 10๊ฐ)๊ฐ ๋ค๋ฅด๋ค๋ ์ ์ด ์์ต๋๋ค.
- ์ฃผ์ ์ฌํญ: sequence-to-sequence๋ source์ target์ ๊ธธ์ด๊ฐ ๋ฌ๋ผ๋ ์ํํ๋๋ฐ ์ง์ฅ์ด ์์ด์ผ ํฉ๋๋ค.
- Source sequence, Target sequence์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฉด ๋ชจ๋ธ์ ์คํํ๋๋ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฑฐ๋ ์คํ์ด ์๋ ์๋ ์์ต๋๋ค.
2. Sequence-to-sequence ๊ธฐ๋ณธ์ฌํญ
Sequence-to-sequence ๊ธฐ๊ณ๋ฒ์ญ์ ํ ๋ input sequence๋ฅผ ๋ฃ์ด์ ์งํํฉ๋๋ค.
- ์์ 3-1์์ ์ค๋ช ํ๋ฏ์ด, input sequence ์์์ x1, x2, ..., xn, output sequence ์์์ y1, y2, ..., yn ์ ๋๋ค.
- input, output sequence์ ๊ธธ์ด๋ ์๋ก ๋ค๋ฅผ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ฒ์ญ(Translation)์ ์ฃผ์ด์ง input์์ ๊ฐ์ฅ ๊ฐ๋ฅ์ฑ(ํ๋ฅ )์ด ๋์ ์์ (์์ด)์ ์ฐพ๋๊ฒ์ผ๋ก ์๊ฐํ ์ ์์ต๋๋ค.
- ์กฐ๊ฑด๋ถ ํ๋ฅ ์ ์์ -> ์ฌ๋์ด ๋ฒ์ญํ๋ ๋๋์ ์์ํ ํ๋ฉด: y* = argmax p(y|x)์ด๋ค.
- ๊ทธ๋ ์ง๋ง ๊ธฐ๊ณ๋ก ๋ฒ์ญ์ ํ๋ค๊ณ ํ๋ฉด ์์์ p(y|x, θ)[model๋ฅผ ์๋ฏธ] -> ์ด ์์์ ์ฌ์ฉํ์ฌ ๊ธฐ๊ณ๋ก ๋ฒ์ญํ ๋ ์ด ํจ์๋ฅผ ์ฌ์ฉํ์ฌ argmax๋ฅผ ์ฐพ์ต๋๋ค.
- *์ฌ๊ธฐ์ θ(์ธํ)๋ ์ผ๋ถ ๋งค๊ฐ๋ณ์(parameter) ์ ๋๋ค.
์ฌ๊ธฐ์ ๊ธฐ๊ณ๋ก ๋ฒ์ญ์ ํ๋ ์์คํ ์ ์ฌ์ฉํด๋ณด๋ ค๋ฉด 3๊ฐ์ง์ ๋ํ์ฌ ์๊ณ ์์ด์ผ ํฉ๋๋ค.
- Modeling Part: Model์ p(y|x, θ) ์์์ ์ฌ์ฉํ์ฌ ์ด๋ป๊ฒ ๋์ํ๋์ง?
- learning(ํ์ต) Part: parameter θ๋ฅผ ์ด๋ป๊ฒ ์ฐพ์๊ฒ์ธ์ง
- inference part: y์ ๋ํ ์ต์ ์ ๋ฐฉ๋ฒ์ ์ด๋ป๊ฒ ์ฐพ์๊ฒ์ธ์ง?
3. Sequence-to-sequence ๊ตฌ์ฑ
- ํ๋ฒ Sequence-to-sequence (seq2seq) ๋ชจ๋ธ์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง ํ๋ฒ ์์๋ณด๊ฒ ์ต๋๋ค.
Sequence-to-sequence (seq2seq)๋ฅผ ์ํํ๋ Model๋ค์ ๋๊ฐ ์ธ์ฝ๋(encoder) ์ ๋์ฝ๋(decoder) ๋ ๊ฐ ํํธ๋ก ๊ตฌ์ฑ์ด ๋์ด ์์ต๋๋ค.
Encoder
- Encoder๋ ์ ๋ ฅ ๋ฌธ์ฅ์ ๋ชจ๋ ๋จ์ด๋ค (์ฆ, Source Sequence)์ ์์ฐจ์ ์ผ๋ก ์ ๋ ฅ๋ฐ์ ๋ค์ ๋ง์ง๋ง์ ์ด ๋ชจ๋ ๋จ์ด๋ค์ ์์ถํด์ ํ๋๋ก Vectorํ๋ฅผ ํฉ๋๋ค.
- ์ด๋ฅผ ์ปจํ ์คํธ ๋ฒกํฐ(context vector)๋ผ๊ณ ํฉ๋๋ค.
- ์ ๋ ฅ ๋ฌธ์ฅ์ ์ ๋ณด(Source Sequence)๊ฐ ํ๋์ Context vector๋ก ๋ชจ๋ ์์ถ์ด ๋ํ, Encoder๋ ์ปจํ ์คํธ ๋ฒกํฐ๋ฅผ Decoder๋ก ๋ณด๋ ๋๋ค.
- Context Vector๋ ๋ณดํต์ ์๋ฐฑ๊ฐ์ ์ด์์ ์ฐจ์(dimension)์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
Decoder
- Decoder๋ context vector๋ฅผ ๋ฐ์์ ๋ฒ์ญ๋ ๋จ์ด๋ฅผ ํ ๊ฐ์ฉ ์์๋๋ก ์ถ๋ ฅํฉ๋๋ค.
RNN, LSTM
์ด๋ฒ์๋ Encoder, Decoder์ ์์ผ๋ก ํ๋ฒ ๋ค์ด๊ฐ๋ณด๊ฒ ์ต๋๋ค.
- Encoder, Decoder๋ ๋ชจ๋ RNN ๋ฐฉ์์ผ๋ก ์ฌ์ฉ์ ํฉ๋๋ค.
- ์ฌ๊ธฐ์ RNN(Recurrent Neural Network)์ ์์ฐจ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ์
๋๋ค.
- ๋ํ Sequence ๋ฐ์ดํฐ์ ๋ด๋ถ ์ํ๋ฅผ ๋ณด์กดํ๋ฉด์ ์ ๋ณด๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค.
- ๊ทธ๋ฐ๋ฐ, RNN์ Sequence ๋ฐ์ดํฐ์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง๋ฉด ๊ณผ๊ฑฐ์ ์ ๋ณด๋ฅผ ์ ๊ธฐ์ตํ์ง ๋ชปํ๋ค๋ ํน์ง์ด ์์ต๋๋ค. -> aka. Vanishing Gradient (๋จ๊ธฐ ๊ธฐ์ต ๋ฌธ์ )
- Sequence ๋ฐ์ดํฐ์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง๋ฉด ์์ ์๋ Sequence๋ฅผ ๊น๋จน๋ ๊ฒฝ์ฐ...
- ๊ทธ๋์ Encoder, Decoder์๋ RNN์ ๋ณํํ LSTM์ด๋ผ๋ RNN์ ๋ฒํํ ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค.
LSTM (Long Short-Term Memory) - ๋ค๋ฅธ ๊ธ์์ ๋ ์์ธํ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.. RNN์ด๋ ๊ฐ์ด
- Vanishing Gradient (๋จ๊ธฐ ๊ธฐ์ต๋ฌธ์ )๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ RNN์ ๋ฒํ ๋ชจ๋ธ ์ ๋๋ค.
- ๋ฌ๋ผ์ง ๋ฐฉ์์ RNN์์๋ ์๋ ์ํ(hidden state)๋ง ์ฌ์ฉ๋์์ง๋ง, LSTM์ ์ ์ํ๋ฅผ ์ฌ์ฉํ์ฌ ์ฅ๊ธฐ์ ์ ์์กด์ฑ์ ๋ ์ ํ์ตํ ์ ์๋๋ก ์ค๊ณ๋์์ต๋๋ค.Encoder, Decoder์ ๋ด๋ถ๋ 2๊ฐ์ RNN ์ ๋๋ค.
- input sequence(๋ฌธ์ฅ)์ ๋ฐ๋ RNN์ ์ Encoder, output sequence(๋ฌธ์ฅ)์ ์ถ๋ ฅํ๋ RNN์ ์ Decoder๋ผ๊ณ ํฉ๋๋ค.
- ์์ ๊ทธ๋ฆผ์์๋ Encoder์ RNN ์ ์ ์ด๋ก์์ผ๋ก, ๋์ฝ๋์ RNN ์ ์ ์ด๋ก์์ผ๋ก ํํํฉ๋๋ค.
- ๊ทผ๋ฐ, ๊ทธ๋ฅ RNN์ ๋ก ๊ตฌ์ฑํ๋๊ฒ์ด ์๋๊ณ , LSTM ์ ๋๋ GRU ์ ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
Encoder ์ํ ๊ณผ์
Encoder
- Encoder๋ input sequence(๋ฌธ์ฅ)๋ ๋จ์ด Tokenํ๋ฅผ ํด์ ๋จ์ด ๋จ์๋ก ๋๋๊ณ , ๊ฐ๊ฐ ํ ํฐ์ RNN ์ ์ ๊ฐ ์์ ์ input์ด ๋ฉ๋๋ค.
- Encoder RNN ์ ์ ๋ชจ๋ ๋จ์ด๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ค์ ์ธ์ฝ๋ RNN ์ ์ ๋ง์ง๋ง ์์ ์ ์๋ ์ํ(hidden state)๋ฅผ Decoder RNN ์ , Context Vector๋ก ๋๊ฒจ์ค๋๋ค.
- Context Vector ๋ ๋์ฝ๋ RNN ์ ์ ์ฒซ๋ฒ์งธ ์๋ ์ํ์ ์ฌ์ฉ๋ฉ๋๋ค.
Context Vector
- ์์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด Encoder์ ๊ฐ๊ฐLSTM ๋ชจ๋ธ์ Text๋ฅผ Vectorํ ํ ๋ Word Embedding์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ์ฆ, seq2seq์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ๋จ์ด๋ Embedding Vectorํ ํ LSTM ๋ชจ๋ธ์ input์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ์๋ ๊ทธ๋ฆผ์ ๋ชจ๋ ๋จ์ด์ ๋ํด์ enbedding์ ๊ฑฐ์น๊ฒ ํ๋ ๋จ๊ณ์ธ ์๋ฒ ๋ฉ ์ธต(embedding layer)์ ๋ชจ์ต์ ๋ณด์ฌ์ค๋๋ค.
Encoder์์์ RNN ์
- NLP์์ Text๋ฅผ Vectorํ ํ ๋, Word Embedding์ด ์ฌ์ฉ๋๋ค๊ณ ํ์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ Embedding Vector๋ ์๋ฐฑ๊ฐ์ ์ฐจ์์ ๊ฐ์ง๋ค๊ณ ํ์ต๋๋ค, ์๋ ๊ทธ๋ฆผ์์๋ Embedding Vector๋ 4๊ฐ์ด์ง๋ง ์๋๋ ์๋ฐฑ๊ฐ์ ์ฐจ์์ ๊ฐ์ง์ ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ RNN์ ์ ์ time-step๋ง๋ค 2๊ฐ์ input์ ๋ฐ์ต๋๋ค.
- Time Step์ t๋ผ๊ณ ํ๋ฉด, RNN ์ ์ t-1์์ hidden state (์๋ ์ํ)์ t์์ input vector๋ฅผ input์ผ๋ก ๋ฐ๊ณ , t์์ hidden state๋ก ๋ง๋ญ๋๋ค.
- ๊ทธ๋, t์์์ hidden state๋ ์์ ๋ค๋ฅธ hidden layer(์๋์ธต) or output layer(์ถ๋ ฅ์ธต)์ด ์์ผ๋ฉด, ์์ ์ธต์ผ๋ก ๋ณด๋ด๊ฑฐ๋, ํ์์๋ ๊ฒฝ์ฐ๋ ๊ทธ๋ฅ ๋ฌด์ํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ RNN ์ ์ t+1์ RNN์ (๋ค์์์ )์ input์ผ๋ก ํ์ฌ t์์์ hidden state๋ฅผ input์ผ๋ก ๋ณด๋ ๋๋ค.
์ด๋ฐ ๊ตฌ์กฐ์์๋ t์ hidden state (์๋ ์ํ)๋ ๊ณผ๊ฑฐ ์์ ์์์ ๋์ผํ RNN ์ ์ ๋ชจ๋ hidden state์ ๊ฐ์ ์ํฅ๋ค์ด ๋์ ๋ ๊ฐ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
- ๊ทธ๋ฌ๋ฉด Context Vector๋ Encoder์์ ๋ง์ง๋ง RNN์ ์ hidden state๊ฐ์ ์๋ฏธํ๋ฉฐ, ์ ๋ ฅ๋ฐ์ ๋ฌธ์ฅ ๋ค์ ๋จ์ด Token์ ์์ฝ๋ ์ ๋ณด๋ค์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
Decoder ์ํ ๊ณผ์
Decoder
- Decoder๋ RNN Language Model - RNNLM ์ ๋๋ค.
- ๊ฐ๋ ์ ์ค๋ช ๋๋ฆฌ๋ฉด, Decoder๋ ์ด๊ธฐ ์ ๋ ฅ์ผ๋ก ๋ฌธ์ฅ์ ์์ํ ๋ <sos> ๋ผ๋ Token์ด ๋ค์ด๊ฐ๋๋ค.
- <sos> ๊ฐ ์ ๋ ฅ๋๋ฉด, ๋ค์์ ๋ฑ์ฅํ ๋จ์ด์ค์์ ํ๋ฅ ์ด ๋์ ๋จ์ด๋ฅผ ์์ธกํฉ๋๋ค.
Decoder์์์ RNN ์
- Decoder๋ Encoder์์์ ๋ง์ง๋ง RNN์ ์ hidden state์ธ Context Vector๋ฅผ hidden state๊ฐ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
- Decoder์ ์ฒซ๋ฒ์งธ RNN ์ ์ ์ด ์ฒซ๋ฒ์งธ hidden state๊ฐ ์ด๋ ํ์ฌ Time-step t์์์ ์ ๋ ฅ๊ฐ์ธ <sos>๋ก๋ถํฐ ๋ค์์ ๋ฑ์ฅํ ๋จ์ด๋ฅผ ์์ธกํฉ๋๋ค.
- <sos> ๋ค์์ ๋ฑ์ฅํ ๋จ์ด, ์ฆ ์์ธกํ ๋จ์ด๋ t์ ๋ค์ ์์ ์ธ t+1 RNN์์์ input ๊ฐ์ด ๋ฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ t+1์์์ RNN ๋ํ ์ด input๊ฐ t์์์ ์๋ ์ํ๋ก๋ถํฐ t+1์์์ output vector -> ๋ค์์ ๋ฑ์ฅํ ๋จ์ด๋ฅผ ์์ธกํฉ๋๋ค.
- Seq2seq ๋ชจ๋ธ์ ์ ํํ ์ ์๋ ๋ชจ๋ ๋จ์ด๋ค ์ค์์ ํ๋์ ๋จ์ด๋ฅผ ๊ณจ๋ผ์ ์์ธก์ ํด์ผ ํฉ๋๋ค.
- ์ด ์์ธก์ softmax๋ผ๋ ํจ์๋ฅผ ์ฌ์ฉํด์ ์์ธกํฉ๋๋ค.
Softmax ํจ์
- ์ํํธ๋งฅ์ค(Softmax) ํจ์๋ ๋ค์ค ํด๋์ค ๋ถ๋ฅ ๋ฌธ์ ์์ ์ฌ์ฉ๋๋ ํ์ฑํ ํจ์์ ๋๋ค.
- ์ด ํจ์๋ Vector์ ๊ฐ์ ํ๋ฅ ๋ถํฌ๋ก ๋ณํํฉ๋๋ค.
- ํน์ง์ ๊ฐ ์์์ ๊ฐ์ 0~1 ์ฌ์ด์ด๋ฉฐ, Input Vector์ ๋ชจ๋ ์์์ ๊ฐ์ 1์ ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ input Vector์ ๊ฐ์ฅ ํฐ ๊ฐ์ด output vector์์๋ ๊ฐ์ฅ ํฐ ํ๋ฅ ์ ๊ฐ์ง๋๋ค.
Softmax๋ฅผ ํจ์๋ก ์ฌ์ฉํด์ Score์ ๊ฐ์ ํ๋ฅ ๊ฐ์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค.
๋ค์ Decoder๋ก ๋์์์ ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค.
- Decoder์์ ๊ฐ time step์ RNN์ ์์ Output Vector(๊ทธ๋ฆผ์์ ์ผ์ชฝ ๊ทธ๋ฆผ)๋ฅผ ์ด์ฉํฉ๋๋ค.
- ํด๋น Output Vector๋ Softmax ํจ์๋ฅผ ์ด์ฉํด์ Output Sequence์ ๊ฐ ๋จ์ด๋ณ ํ๋ฅ ๊ฐ์ ๋ฐํํ๊ณ , ๊ทธ ํ๋ฅ ๊ฐ์ ์ด์ฉํด์ Decoder๋ ์ถ๋ ฅ ๋จ์ด๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
๋ฐ์ํ
'๐ NLP (์์ฐ์ด์ฒ๋ฆฌ) > ๐ Natural Language Processing' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NLP] Vanilla RNN Model, Long-Term Dependency - ์ฅ๊ธฐ ์์กด์ฑ ๋ฌธ์ (0) | 2024.01.23 |
---|---|
[NLP] RNN (Recurrent Netural Network) - ์ํ์ ๊ฒฝ๋ง (0) | 2024.01.22 |
[NLP] Pre-Trained Language Model - ๋ฏธ๋ฆฌ ํ์ต๋ ์ธ์ด๋ชจ๋ธ (0) | 2024.01.18 |
[NLP} Tokenization - ํ ํฐํํ๊ธฐ (0) | 2024.01.18 |
[NLP] Building a vocabulary set - ์ดํ ์งํฉ ๊ตฌ์ถํ๊ธฐ (0) | 2024.01.18 |