Original Paper (Arxiv) : Transformer (https://arxiv.org/pdf/1706.03762)
์์ธํ ์ค๋ช ์ seq2seq์ ๋ํด ์ ๋ฆฌํ ๊ธ ์ฐธ๊ณ : Sequence to Sequence Learning with Neural Networks (2014)
Seq2Seq (Sequence-to-Sequence) ๋ชจ๋ธ์ ์ ๋ ฅ ์ํ์ค๋ฅผ ๋ฐ์ ๋ค๋ฅธ ๊ธธ์ด์ ์ถ๋ ฅ ์ํ์ค๋ก ๋ณํํ๋ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ด๋ค. ์ฃผ๋ก ๊ธฐ๊ณ ๋ฒ์ญ, ๋ฌธ์ฅ ์์ฝ, ์ฑ๋ด, ์์ฑ ์ธ์ ๋ฑ์ NLP ๋ฌธ์ ์์ ์ฌ์ฉ๋๋ค.
Seq2Seq ๋ชจ๋ธ์ Encoder-Decoder ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
Encoder
Decoder
vanilla seq2seq ์์ encoder๊ฐ decoder๋ก ๋๊ธฐ๋ context vector์ ๊ธธ์ด๋ ํญ์ ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ ๋ ฅ ๋ฌธ์ฅ์ ๊ธธ์ด๊ฐ ์๋ฌด๋ฆฌ ๊ธธ์ด๋ ๊ฐ์ ๊ธธ์ด์ ๋ฒกํฐ๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ ์ด ์์๋ค. ์ด์ ๋ฐ๋ผ encoder์ decoder๋ฅผ ๊ฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ๊ฐ์ ํ์๋ค.
[๊ทธ๋ฆผ1] vanilla seq2seq์ ๋ฌธ์ ์ (์ถ์ฒ : ๋ฐ๋ฐ๋ฅ๋ถํฐ ์์ํ๋ ๋ฅ๋ฌ๋2 - 8์ฅ)
decoder์ ๋ง์ง๋ง hidden state์ vector๋ง ๋๊ธฐ๋ ๊ฒ์ด ์๋๋ผ ๋ชจ๋ hidden state vector๋ฅผ ํ๋ ฌ๋ก์จ ์ ๋ฌ
encoder์ ๊ฒฝ์ฐ ์๋ ์ค๋ช ํ decoder์ ๋ค๋ฅด๊ฒ ๋ชจ๋ธ์ ๊ตฌ์กฐ ์์ฒด๋ฅผ ๋ฐ๊พผ ๊ฒ์ ์๋๋ค. ๋ค๋ง, encoder์ ์ถ๋ ฅ ๊ธธ์ด๊ฐ ์ ๋ ฅ ๋ฌธ์ฅ์ ๊ธธ์ด๋ฅผ ๋ฐ์ํ ์ ์๋๋ก ๋ง์ง๋ง hidden state vector๋ง decoder์ ๋๊ธฐ๋ ๊ฒ์ด ์๋๋ผ ๋ชจ๋ hidden state vector๋ฅผ ํ๋์ ํ๋ ฌ๋ก ๋ง๋ค์ด์ ๋๊ธฐ๋ ๋ฐฉ์์ ํํ๋ค.
[๊ทธ๋ฆผ2] seq2seq with attention์ encoder ๊ตฌ์กฐ (์ถ์ฒ : ๋ฐ๋ฐ๋ฅ๋ถํฐ ์์ํ๋ ๋ฅ๋ฌ๋2 - 8์ฅ)
- Decoder์ LSTM ์ ์ ๊ฐ ์์ ๋จ์ด์ ์๋ฒ ๋ฉ ๋ฒกํฐ์ ์ด์ ์์ LSTM์ ์๋ ์ํ ๋ฒกํฐ input
( โป ์ด๋ 1๋ฒ์งธ ์์ ์ ๊ฒฝ์ฐ, ์ด์ LSTM ์ ์ด ์์ผ๋ฏ๋ก, Encoder์ ์๋ ์ํ ๋ฒกํฐ๋ฅผ ํฉ์น ํ๋ ฌ์ธhs๋ฅผ input )
- 1.์ ๊ฒฐ๊ณผ๋ก ๋์ถ๋ LSTM ์๋ ์ํ ๋ฒกํฐ
h๋ฅผhs์ ๋ด์ ํ์ฌs๋์ถ
โ ๊ฐ ๋จ์ด ๋ฒกํฐ๊ฐ ์ผ๋ง๋ ๋น์ทํ๊ฐ๋ฅผ ์์น๋ก ๋ํ๋ธ ๊ฒ (= ๋ ๋ฒกํฐ๊ฐ ์ผ๋ง๋ ๊ฐ์ ๋ฐฉํฅ์ ํฅํ๊ณ ์๋๊ฐ)
s๋ฅผ Softmax์ ํต๊ณผ์์ผ ์ ๊ทํํจ์ผ๋ก์จ ๊ฐ์ค์น ํ๋ ฌa๋์ถ
์์ (1)์์ ๊ตฌํ ๊ฐ์ค์น ํ๋ ฌ a ์ Encoder์ ๋ชจ๋ ์๋ ์ํ ๋ฒกํฐ๋ฅผ ํฉ์น hs๋ฅผ ๊ฐ์คํฉํ๋ค.
[๊ทธ๋ฆผ3] seq2seq with attention์ decoder์์ context vector๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ (์ถ์ฒ : ๋ฐ๋ฐ๋ฅ๋ถํฐ ์์ํ๋ ๋ฅ๋ฌ๋2 - 8์ฅ)
โ๋ ผ๋ฌธ์ ๋ฐ์โ
์ง๊ธ๊น์ง๋ attention์ RNN์ ๋ณด์ ์ฉ๋๋ก ์ฌ์ฉํด์๋๋ฐ, ๊ทธ๋ ๋ค๋ฉด RNN์ ๋นผ๊ณ attention๋ง์ผ๋ก Encoder์ Decoder๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ ์ด๋จ๊น?
์ฃผ์ ์ํ์ค ๋ณํ ๋ชจ๋ธ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
์ด์ ์ค์ง attention ๋ฉ์ปค๋์ฆ๋ง ์ฑํํ Transformer๋ฅผ ์ ์ํ๋ค. 2๊ฐ์ ๋ฒ์ญ task๋ฅผ ์งํํ ๊ฒฐ๊ณผ, WMT ์์ด-๋ ์ผ์ด ๋ฒ์ญ task์์ ๊ธฐ์กด ๋ชจ๋ธ ๋๋น 2์ ์์นํ, BLEU(๊ธฐ๊ณ ๋ฒ์ญ ํ์ง์ ํ๊ฐํ๋ ์งํ) 28.4์ ์ ๊ธฐ๋กํ๋ค. ๋๋ค๋ฅธ task์ธ WMT ์์ด-ํ๋์ค์ด ๋ฒ์ญ task์์๋ 41.8์ ์ ๊ธฐ๋กํ๋ฉฐ ๋จ์ผ ๋ชจ๋ธ SOTA๋ฅผ ์ธ์ ๋ค.
๐ ๊ธฐ์กด RNN ๊ณ์ด์ ์ธ์ด ๋ชจ๋ธ
vanilla RNN, LSTM, GRU ๋ฑ์ ๋ชจ๋ธ๋ค์ ์ธ์ด๋ชจ๋ธ, ๊ธฐ๊ณ๋ฒ์ญ ๋ฑ์ ์ํ์ค ๋ชจ๋ธ๋ง ๋ฐ ๋ณํ ๋ฌธ์ ์์ SOTA๋ฅผ ๊ตณ๊ฑดํ ์ง์ผ์๊ณ , ์ด์ ๋ฐ๋ผ RNN ๊ณ์ด์ ์ธ์ด ๋ชจ๋ธ๊ณผ encoder-decoder ๊ตฌ์กฐ์ ์์ญ์ ๊พธ์คํ ํ์ฅํ๋ค.
๐ RNN ๊ณ์ด ์ธ์ด ๋ชจ๋ธ์ ํ๊ณ
RNN ๊ณ์ด์ ์ธ์ด ๋ชจ๋ธ์์ t์์ ์ RNN cell์ t-1์์ ์ hidden state์ธ ๊ณผ t์์ ์ input์ ์ฌ์ฉํ์ฌ ๋ฅผ ๋์ถํ๋ค. ์ด๋ ๋ฏ ์๋ก ์ํฅ์ ๋ผ์น๋ ์ฐ์์ ์ธ ์ฑ์ง์ training ์ ๋ณ๋ ฌ ์ฐ์ฐ์ ๋ชปํ๋ ์์ธ์ด ๋๊ณ , ์ด๋ ๊ธด ์ํ์ค๋ฅผ input์ผ๋ก ๋ฐ์ ๋ ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฑ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํจ๋ค.
๐ ์ง๊ธ๊น์ง์ attention์ ํ์ฉ
attention์ ๋ชจ๋ ๋จ์ด๋ฅผ ๋์์ ๊ณ ๋ คํ์ฌ ์ง์ ์ฐธ์กฐํ ์ ์๋ค๋ ์ ์์ ๊ฐ๋ ฅํ ์ํ์ค ๋ชจ๋ธ๋ง์ ํ์์ ์ธ ์์๊ฐ ๋์๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ, attention์ ๋จ๋
์ผ๋ก ์ฌ์ฉ๋์ง ์๊ณ RNN ๊ณ์ด ๋ชจ๋ธ๊ณผ ํจ๊ป ์ฌ์ฉ๋์๋ค.
๐ Transformer : RNN์ ๋ฐฐ์ ํ attention ํ์ฉ
๋ณธ ๋
ผ๋ฌธ์ Transformer๋ ์
๋ ฅ๊ณผ ์ถ๋ ฅ ๊ฐ์ ๊ด๊ณ๋ฅผ ํ์ตํ๋ ๋ฐ ์ค์ง attention ๋ฉ์ปค๋์ฆ๋ง ์ฌ์ฉํ์๋ค. RNN์ ์ ์ธํจ์ผ๋ก์จ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ก๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์ค์ง 12์๊ฐ ๋์ 12๊ฐ์ P100 GPU๋ฅผ ํตํด ๋ณ๋ ฌ์ ์ผ๋ก trainingํจ์ผ๋ก์จ ์๋ก์ด SOTA๋ก ๋ฑ๊ทนํ ์ ์์๋ค.
๐ Transformer๊ฐ ๋ฑ์ฅํ๊ธฐ ์ ๊น์ง
RNN, CNN ๊ธฐ๋ฐ ๋ชจ๋ธ์ ์ฌ์ ํ ์์ฐจ์ ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ๊ด๊ณ๋ฅผ ํ์ตํ๋ค. ํ์ง๋ง ์
๋ ฅ๊ณผ ์ถ๋ ฅ ๊ฐ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋จ์ด ๊ฐ์ ๊ด๊ณ๋ฅผ ํ์ตํ๋ ๋ฐ ํ๊ณ๊ฐ ์๋ค.
๐ Transformer์ ์ฐจ๋ณ์ : Self-Attention
self-attention์ ๋จ์ผ ์ํ์ค ๋ด์ ์๋ก ๋ค๋ฅธ ์์น๋ฅผ ์ฐธ์กฐํ์ฌ ๋ชจ๋ ์์น์์ ๋ณ๋ ฌ ์ฐ์ฐ์ด ๊ฐ๋ฅํ ๋ฉ์ปค๋์ฆ์ด๋ค. ์ง๊ธ๊น์ง attention์ RNN ํน์ CNN๊ณผ ํจ๊ป ์ฌ์ฉ๋์๋ค. Transformer๋ ์ค์ง self-attention์๋ง ์์กดํ์ฌ ์
์ถ๋ ฅ์ ํํ์ ๊ณ์ฐํ๋ ์ต์ด์ ๋ณํ ๋ชจ๋ธ์ด๋ค.
[๊ทธ๋ฆผ4] transformer - model architecture (์ถ์ฒ : ๋ ผ๋ฌธ ๋ฐ์ท)
๋๋ถ๋ถ์ ๊ฒฝ์๋ ฅ ์๋ ์ํ์ค ๋ณํ ๋ชจ๋ธ์ด ๊ทธ๋ฌํ๋ฏ transformer๋ encoder-decoder ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค.
encoder : ์ ๋ ฅ ์ํ์ค ๋ฅผ ์ฐ์์ ์ธ ํํ ์ผ๋ก ๋ณํํ๋ค.
decoder : ์ธ์ฝ๋์ ๋ค๋ฅด๊ฒ ์ถ๋ ฅ์ ํ ๋ฒ์ ํ๋์ฉ ์์ฑํ๋ค. ์ด๋, ์ด์ ์ถ๋ ฅ๊ฐ์ ์ ๋ ฅ๊ฐ์ผ๋ก ์ฌ์ฉํ๋ auto-regressive ๋ฐฉ์์ ํํ๋ค.
6๊ฐ์ ๋์ผํ ๊ตฌ์กฐ์ ์ธต์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ, ๊ฐ ์ธต์ 2๊ฐ์ ํ์ ๊ณ์ธต์ ๊ฐ๊ณ ์๋ค.
[๊ทธ๋ฆผ4]์์ ๋ณผ ์ ์๋ฏ์ด ๊ฐ ํ์ ๊ณ์ธต์ ์์ฐจ ์ฐ๊ฒฐ์ ์ํํ ํ, ์ ๊ทํ(layer normalization)์ ์ํํ๋ค. ์ด๋, ์์ฐจ ์ฐ๊ฒฐ์ ์ํํ๊ฒ ํ๊ธฐ ์ํด ์๋ฒ ๋ฉ ์ธต์ ํฌํจํ ๋ชจ๋ธ์ ๋ชจ๋ ํ์ ๊ณ์ธต์์ ์ถ๋ ฅ ์ฐจ์์ ๋ก ๊ณ ์ ํ๋ค.
encoder์ ๋ง์ฐฌ๊ฐ์ง๋ก 6๊ฐ์ ์ธต์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋๋ฐ, ํ์ ๊ณ์ธต์ 3๊ฐ๋ก, 2๊ฐ๋ ์์ ์ค๋ช ํ encoder์ ํ์ ๊ณ์ธต๊ณผ ๋์ผํ๋ค.
1๋ฒ์งธ ํ์ ๊ณ์ธต : multi-head self-attention : decoder์ input์ ์ฒ๋ฆฌ
โ "masking" : i๋ฒ์งธ ์ดํ ๋จ์ด๋ฅผ ๋ณด์ง ๋ชปํ๋๋ก ์ฐจ๋จ
โ "offset" : i-1๋ฒ์งธ ๋จ์ด๋ค๊น์ง๋ง ์ฐธ๊ณ ํ๋๋ก ํจ
2๋ฒ์งธ ํ์ ๊ณ์ธต : multi-head self-attention : encoder์ output์ ์ฒ๋ฆฌ
3๋ฒ์งธ ํ์ ๊ณ์ธต : Fully connected feed-forward
encoder์ ๋์ผํ๊ฒ ์์ฐจ ์ฐ๊ฒฐ๊ณผ ์ ๊ทํ๋ฅผ ์ํํ๋ค.
์ดํ ์ ํจ์๋ query์ ์ผ๋ จ์ key-value์์ output์ผ๋ก ๋งคํํ๋ ๊ณผ์ ์ผ๋ก ์ค๋ช ํ ์ ์๋ค. ์ด๋ Query, Key, Value, Output ๋ชจ๋ ๋ฒกํฐ๋ก ํํ๋๋ค. output์ Value๋ค์ ๊ฐ์คํฉ์ผ๋ก ๊ณ์ฐ๋๋ฉฐ, ๊ฐ ๊ฐ์ ํ ๋น๋๋ ๊ฐ์ค์น๋ Query์ Key ๊ฐ์ ์ ํฉ๋์ ์ํด ๊ฒฐ์ ๋๋ค.
[๊ทธ๋ฆผ5] Scaled Dot-Product Attention (์ถ์ฒ : ๋ ผ๋ฌธ ๋ฐ์ท)
hyper-parameters
1. : ์ธ์ฝ๋์ ์ ๋ ฅ ํฌ๊ธฐ = ์๋ฒ ๋ฉ ๋ฒกํฐ ์ฐจ์ = ๋์ฝ๋ ์ถ๋ ฅ ์ฐจ์
โ ์์ 3.1 ์ Encoder ๋ถ๋ถ์์ ์ค๋ช ํ๋ฏ, ์๋ฒ ๋ฉ ์ธต์ ํฌํจํ ๋ชจ๋ ํ์๊ณ์ธต์ ์ถ๋ ฅ ์ฐจ์์ ๋ก ๊ณ ์
2. : ์ธ์ฝ๋ & ๋์ฝ๋๊ฐ ์ด ๋ช ์ธต์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋์ง
3. : ๋ณ๋ ฌ๋ก ์ํํ ์ดํ ์ ๊ฐ์
4. : feed-forward ์ ๊ฒฝ๋ง์ ์๋์ธต ์ฐจ์ (์ ์ถ๋ ฅ์ธต ํฌ๊ธฐ๋ )
5. : query์ key์ ์ฐจ์ (= ๊ฐ๊ฐ์ ๊ฐ์ค์น ํ๋ ฌ์ ์ด์ ๊ฐ์)
โ
6. : value์ ์ฐจ์ (= ๊ฐ์ค์น ํ๋ ฌ์ ์ด์ ๊ฐ์)
โ
(์ผ๋ฐ์ ์ผ๋ก ๊ฐ ๋์ผํ๊ธฐ ๋๋ฌธ์ = )
๋ ผ๋ฌธ์ default๊ฐ
1. = 512
2. = 6
3. = 8
4. = 2048
5. = = 64
(โป ์๋ ๊ณผ์ ์ ์ผ๋ฐ์ ์ธ self-attention์ ๊ณผ์ ์ด๋ฉฐ, ๊ฐ Q, K, V์ ์ถ์ฒ๋ ์ดํ ์ค๋ช ํ attention์ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค.)

[๊ทธ๋ฆผ6] Q, K, V ํ๋ ฌ ๊ตฌํ๊ธฐ
(์ถ์ฒ : ๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์
๋ฌธ - 16์ฅ [(https://wikidocs.net/35596])

[๊ทธ๋ฆผ7] Q-K ๋ด์ (dot-product)
(์ถ์ฒ : ๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์
๋ฌธ - 16์ฅ [(https://wikidocs.net/35596])

[๊ทธ๋ฆผ8] softmax ํต์ฝฐ ํ V์ ๊ณฑํ์ฌ attention value ๋์ถ
(์ถ์ฒ : ๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์
๋ฌธ - 16์ฅ [(https://wikidocs.net/35596])
๊ฐ ๋จ๊ณ์์ ๋ฒกํฐ ๋ฐ ํ๋ ฌ์ ์ฐจ์
1. ์ ๋ ฅ : ,
2. :
3. : โ 1.๊ณผ 2.๋ฅผ ๊ณฑํ ๊ฒฐ๊ณผ
4. attention value์ ์ฐจ์ : ,
[๊ทธ๋ฆผ9] multi-head attention ์ฐ์ฐ
(์ถ์ฒ : ๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์
๋ฌธ - 16์ฅ [(https://wikidocs.net/35596])
์ฌ์ฉ ๊ณ๊ธฐ : ๋ณ๋ ฌ ์ฐ์ฐ
์ฐจ์์ ๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ผ ์ดํ
์
์ฐ์ฐ์ ์ํํ๋ ๊ฒ๋ณด๋ค ์์ hyper-parameters์์ ์ ์ํ ๊ฒ๊ณผ ๊ฐ์ด ์ด๋ฅผ ๋ฒ ์ ํ ๋ณํํ์ฌ ๊ฐ๊ฐ ์ฐจ์์ ๋ฒกํฐ๋ก ๋ณํํ์ฌ ๋ณ๋ ฌ ์ฐ์ฐํ๋ ๊ฒ์ด ๋ ํจ๊ณผ์ ์ด๋ค.
ํน์ง
๊ฐ๊ฐ์ attention value matrix๋ฅผ attention head๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ฐ์ค์น ํ๋ ฌ ์ ๊ฐ์ 8๊ฐ์ attention head๋ง๋ค ๋ชจ๋ ๋ค๋ฅด๋ค.
๊ณผ์
- attention head ํฉ์น๊ธฐ (concatenate)
- ๊ฐ์ค์น ํ๋ ฌ ๊ณฑํ๊ธฐ : =
hyper-parameters์์ ๋งํ ๋ฐ์ ๊ฐ์ด ๋๋ถ๋ถ์ ๊ฒฝ์ฐ = ์ด์ง๋ง, ํน์ ์ฐ๊ตฌ์์๋ ๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ concat๋ ํ๋ ฌ์ด ์ ์ฐจ์์ ๊ฐ๊ฒ ํ๊ธฐ ์ํด์ ๋ฅผ ๊ณฑํ๋ค.
Transformer๋ ์ด 3๊ฐ์ง ์ข ๋ฅ์ attention์ ์ฌ์ฉํ๋ค.
[๊ทธ๋ฆผ10] transformer์ ์ฌ์ฉ๋ attention ์ข
๋ฅ 3๊ฐ์ง
(์ถ์ฒ : ๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์
๋ฌธ - 16์ฅ [(https://wikidocs.net/35596])
[๊ทธ๋ฆผ11] attention ์ข
๋ฅ 3๊ฐ์ง๊ฐ ๊ฐ๊ฐ ์ด๋ ํํธ์ ์ฌ์ฉ๋๋๊ฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ด๋ฏธ์ง
(์ถ์ฒ : ๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์
๋ฌธ - 16์ฅ [(https://wikidocs.net/35596])
1. Encoder self-attention : ์ธ์ฝ๋์์ ์ฌ์ฉ๋๋ ์ดํ ์
์ญํ : ์์ค ๋ฌธ์ฅ ๋ด์์ ๋จ์ด๋ค๋ผ๋ฆฌ์ ๊ด๊ณ๋ฅผ ํ์ต
(๊ฐ ๋จ์ด๊ฐ ๋ฌธ์ฅ์์ ์ด๋ค ๋จ์ด์ ๊ด๊ณ๊ฐ ๊น์ ์ง ํ์
)
๋ฐฉํฅ์ฑ : ์๋ฐฉํฅ = ๋ชจ๋ ๋จ์ด๊ฐ ์๋ก๋ฅผ ์ฐธ๊ณ ํ ์ ์์
์ถ์ฒ : query = key = value (์๋ณธ ๋ฒกํฐ ์ถ์ฒ๋ ๊ฐ์)
๋์ ๋ฐฉ์
- ๊ฐ ๋จ์ด์ Query, Key, Value ๋ฒกํฐ๋ฅผ ์์ฑ
- Query์ Key๋ฅผ ๋น๊ตํ์ฌ ์ด๋ค ๋จ์ด๊ฐ ์ค์ํ์ง ์ ์(Attention Score) ๊ณ์ฐ
- Softmax๋ฅผ ์ ์ฉํ์ฌ ๊ฐ์ค์น(ํ๋ฅ )๋ก ๋ณํ
- Value ๋ฒกํฐ๋ฅผ ๊ฐ์คํฉํ์ฌ ์ต์ข ์ ์ธ ๋ฒกํฐ ์์ฑ
2. masked decoder self-attention : ๋์ฝ๋์ 1๋ฒ์งธ ํ์ ๊ณ์ธต
- ๊ธฐ์กด Self-Attention๊ณผ ๋์ผํ๊ฒ Query, Key, Value ์์ฑ
- ๋จ, ํ์ฌ๊น์ง์ ๋จ์ด๋ง ์ฐธ๊ณ ๊ฐ๋ฅํ๋๋ก ๋ง์คํน ์ ์ฉ (๋ฏธ๋ ๋จ์ด ์ฐธ๊ณ ๋ฐฉ์ง)
- Softmax๋ฅผ ์ ์ฉํ์ฌ ๊ฐ ๋จ์ด์ ์ค์๋๋ฅผ ๊ณ์ฐ
- Value ๋ฒกํฐ๋ฅผ ๊ฐ์คํฉํ์ฌ ์ต์ข ์ ์ธ ๋ฒกํฐ ์์ฑ
3. encoder-decoder attention : ์ธ์ฝ๋ ๋ฒกํฐ๋ฅผ ์ธํ์ผ๋ก ๋ฐ๋ ์ดํ ์
์ญํ : ์ธ์ฝ๋์์ ์ถ๋ ฅํ context vector๋ฅผ ๋์ฝ๋์์ ํ์ฉํ ์ ์๋๋ก ์ฐ๊ฒฐ
โ ๋์ฝ๋์ query ์ ์ธ์ฝ๋์ key, value๋ฅผ ๋น๊ตํ์ฌ ๊ฐ์ฅ ๊ด๋ จ ์๋ ์ ๋ณด ์ฐพ๊ธฐ
์ถ์ฒ
๋์ ๋ฐฉ์
- ๋์ฝ๋์์ Query ์์ฑ (ํ์ฌ๊น์ง ์์ธกํ ๋จ์ด ๊ธฐ๋ฐ)
- query๊ฐ์ ์ธ์ฝ๋์ output, ์ฆ context vector๋ฅผ ์๋ณธ์ผ๋ก ํ๋ Key์ ๋น๊ตํ์ฌ ์ ์ฌ๋ ๊ณ์ฐ ํ, Softmax์ ํต๊ณผ
- Value๋ฅผ ๊ฐ์คํฉํ์ฌ ์ต์ข ์ ์ธ ๋ฒกํฐ ์์ฑ
โ ๋์ฝ๋๊ฐ ์ถ๋ ฅ ๋ฌธ์ฅ์ ๋ ์ ์์ธกํ ์ ์๋๋ก ๋์
๊ฐ ์์น์ ๋ํด ๋ ๋ฆฝ์ ์ผ๋ก ์ฐ์ฐ ์ํํ๋ค. ์ฆ, ๊ฐ ๋จ์ด์ ๋ฒกํฐ๊ฐ ๊ฐ๋ณ์ ์ผ๋ก FFN์ ํต๊ณผํ์ฌ ์ด์ ๋จ์ด ํน์ ์ฃผ๋ณ ๋จ์ด์ ๊ด๊ณ์์ด ๊ฐ๋ณ์ ์ผ๋ก ๊ณ์ฐ๋๋ค.
์์ : 4๊ฐ ๋จ์ด(ํ ํฐ)๋ก ๊ตฌ์ฑ๋ ์ ๋ ฅ ์ํ์ค
โ
๋ค์ 3๋ฒ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค. - ์ ํ ๋ณํ โ ReLU โ ์ ํ ๋ณํ
RNN ํน์ CNN ๋ชจ๋ธ์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ํ์ค์ ์์๋ฅผ ๋ํ๋ด๊ธฐ ์ํด์ ์ถ๊ฐ์ ์ธ ์์น ํ ํฐ์ ์ฝ์ ํด์ผ ํ๋ค. ์ด๋ฅผ ์ํด encoder์ decoder ํ๋จ์ ์ ๋ ฅ ์๋ฒ ๋ฉ์ "์์น ์๋ฒ ๋ฉ"์ ์ถ๊ฐํ๋ค.
[๊ทธ๋ฆผ12] encoder์ decoder์์ positional encoding์ ์์น
(์ถ์ฒ : ๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์
๋ฌธ - 16์ฅ [(https://wikidocs.net/35596])
์ฌ์ธ-์ฝ์ฌ์ธ ๊ธฐ๋ฐ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ์ฌ, ์ฐจ์๋ณ๋ก ๋ค๋ฅธ ์ฃผํ์๋ฅผ ์ ์ฉํ๋ค.
[๊ทธ๋ฆผ13] positional encoding ๋ฐฉ๋ฒ
(์ถ์ฒ : ๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์
๋ฌธ - 16์ฅ [(https://wikidocs.net/35596])
self-attention vs. RNN/CNN
[๊ทธ๋ฆผ14] layer ์ข
๋ฅ์ ๋ฐ๋ฅธ ์ฐ์ฐ ๋ณต์ก๋, ๋ณ๋ ฌํ ๊ฐ๋ฅํ ์ฐ์ฐ๋, ์
์ถ๋ ฅ ๊ฐ์ ๊ฒฝ๋ก ๊ธธ์ด ๋น๊ต
(์ถ์ฒ : ๋
ผ๋ฌธ ๋ฐ์ท)
์ธต๋ณ ์ ์ฒด ์ฐ์ฐ ๋ณต์ก๋ : ๋ฎ์
๋ณ๋ ฌํํ ์ ์๋ ์ฐ์ฐ๋ : ์ ์
= ํ๋์ ๋ณ๋ ฌ ์ฐ์ฐ ๋ธ๋ก ๋ด์์ ์ํํด์ผ ํ๋ ์ฐ์ฐ๋
์
๋ ฅ-์ถ๋ ฅ ๊ฐ์ ๊ฒฝ๋ก ๊ธธ์ด : ์งง์
์ฅ๊ธฐ ์์กด์ฑ์ ํ์ตํ๋ ๊ฒ์ ์ํ์ค ๋ณํ ๋ฌธ์ ์์ ์ค์ํ ์์ ์ค ํ๋์ด๋ค. ์ฅ๊ธฐ ์์กด์ฑ์ ๋ง์ด ํ์ตํ ์๋ก ๋ ์ข์ ์์ธก์ ํ ์ ์๋๋ฐ, ์ด์ ์ํฅ์ ๋ผ์น๋ ์์ธ ์ค ํ๋๊ฐ ์์ ํ ๋ฐ ์ญ์ ํ ์ ํธ๊ฐ ํต๊ณผํ๋ ๊ฒฝ๋ก์ด๋ค. ๋ค์ ๋งํด, ๋คํธ์ํฌ ๋ด์์ ์
๋ ฅ-์ถ๋ ฅ ๊ฐ์ ๊ฒฝ๋ก๊ฐ ์งง์์๋ก, ์ฅ๊ธฐ ์์กด์ฑ์ ํ์ตํ๊ธฐ ์ฌ์์ง๋ค.
๐ ํ ํฐํ(Tokenization) ๋ฐฉ๋ฒ
๐ ๋ฐ์ดํฐ์ ์ ๋ณด
๐ ๋ฐฐ์น ๊ตฌ์ฑ
8๊ฐ์ NVIDIA P100 GPU๊ฐ ์ฅ์ฐฉ๋ ๋จ์ผ ๋จธ์ ์์ ๋ชจ๋ธ์ ํ๋ จํ์๋ค.
hyper-parameters
- 1์ฐจ ๋ชจ๋ฉํธ ๊ณ์:
- 2์ฐจ ๋ชจ๋ฉํธ ๊ณ์:
- ์์ ์์ ํ๋ฅผ ์ํ ์์ ๊ฐ:
โ ์ด๋ฐ์๋ ํ์ต๋ฅ ์ ์ฒ์ฒํ ์ฆ๊ฐ์์ผ ์์ ์ ์ธ ํ์ต์ ์ ๋ํ๊ณ , ์ดํ์๋ ์ ์ง์ ์ผ๋ก ๊ฐ์์ํค๋ ๋ฐฉ์
[๊ทธ๋ฆผ15] ์-๋
, ์-ํ ๋ฐ์ดํฐ์
์ ๋ํ ๋ชจ๋ธ๋ณ BLEU ๊ฐ
(์ถ์ฒ : ๋
ผ๋ฌธ ๋ฐ์ท)
์ฐธ๊ณ ๋ฌธํ
- ๋ฐ๋ฐ๋ฅ๋ถํฐ ์์ํ๋ ๋ฅ๋ฌ๋2 - 8์ฅ
- ๋ฅ๋ฌ๋์ ์ด์ฉํ ์์ฐ์ด ์ฒ๋ฆฌ ์ ๋ฌธ - 16์ฅ (https://wikidocs.net/35596)