| ์ฐ๋ | ๋ชจ๋ธ | ์๋ฏธ |
|---|---|---|
| 2014 | RNN Seq2Seq | ์ต์ด์ ์ ๊ฒฝ๋ง ๊ธฐ๊ณ๋ฒ์ญ |
| 2017 | Transformer | "Attention is all you need" โ ํจ๋ฌ๋ค์ ์ ํ |
| 2018.06 | GPT-1 | ์ฌ์ ํ์ต ์ธ์ด๋ชจ๋ธ ๋ฑ์ฅ |
| 2018.11 | BERT | ์๋ฐฉํฅ ์ฌ์ ํ์ต ๋ชจ๋ธ |
| 2019.02 | GPT-2 | ๋๊ท๋ชจ ์์ฑ ๋ชจ๋ธ |
| 2020.05 | GPT-3 | 1,750์ต ํ๋ผ๋ฏธํฐ |
| 2022.11 | ChatGPT | GPT-3 ๊ธฐ๋ฐ ๋ํํ AI |
| 2023 | GPT-4, Bard | ๋ฉํฐ๋ชจ๋ฌ ๋ํ ์ธ์ด๋ชจ๋ธ |
| 2024 | GPT-4o, Gemini | ๋ ํฌ๊ณ ๋ ๊ฐ๋ ฅํ๊ฒ |
๐ก NLP Mountain: Transformer(2017)๋ฅผ ์ดํดํ๋ฉด ์ดํ BERT, GPT, ChatGPT๊น์ง ๋ชจ๋ ์ดํดํ ์ ์์ต๋๋ค. Transformer๊ฐ ํ๋ NLP์ ์ถ๋ฐ์ ์ ๋๋ค.
Transformer ์ด์ ์๋ LSTM์ด NLP์ ํ์ค์ด์์ต๋๋ค. ํ์ง๋ง ์ธ ๊ฐ์ง ๊ทผ๋ณธ์ ์ธ ํ๊ณ๊ฐ ์์์ต๋๋ค.
100๋จ์ด ๋ฌธ์ฅ์ LSTM์ผ๋ก ์ฒ๋ฆฌํ๋ฉด
โ 100์ธต ๊น์ด์ ์ ๊ฒฝ๋ง์ ํต๊ณผํ๋ ๊ฒ๊ณผ ๊ฐ์
โ ์ญ์ ํ ์ ๊ธฐ์ธ๊ธฐ๊ฐ ์ ์ ์์์ ธ ์์ชฝ ๋จ์ด ํ์ต ๋ถ๊ฐ
์์:
"์ด๋ฆด ๋๋ถํฐ ๋ถ์ฐ์์ ์๋ผ๊ณ ๋ถ์ฐ ์ฌํฌ๋ฆฌ๋ก ๋งํ๋ฉฐ
๋ถ์ฐ ์์์ ์ข์ํ๊ณ ๋ํ๋ ๋ถ์ฐ์์ ๋ค๋
๊ธฐ ๋๋ฌธ์
๋ด ๋ชจ๊ตญ์ด๋ ๋น์ฐํ [ ]์ด๋ค"
โ LSTM์ ๋ฉ๋ฆฌ ์๋ "๋ถ์ฐ"์ ๊ธฐ์ต ๋ชปํจ
โ "ํ๊ตญ์ด"๋ผ๋ ์ ๋ต ์์ธก ์ด๋ ค์
LSTM:
๊ฐ์ฑ๋ถ์ โ ๊ฐ์ฑ๋ถ์์ฉ ๋ ์ด๋ธ ๋ฐ์ดํฐ ํ์
๋ฒ์ญ โ ๋ฒ์ญ์ฉ ๋ ์ด๋ธ ๋ฐ์ดํฐ ํ์
์์ฝ โ ์์ฝ์ฉ ๋ ์ด๋ธ ๋ฐ์ดํฐ ํ์
โ ํ์คํฌ๋ง๋ค ๋ณ๋ labeled ๋ฐ์ดํฐ์
ํ์
Transformer:
๋๊ท๋ชจ ํ
์คํธ๋ก ํ ๋ฒ ์ฌ์ ํ์ต
โ ์ฌ๋ฌ ํ์คํฌ์ fine-tuning์ผ๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
LSTM:
๋จ์ดโ โ ๋จ์ดโ โ ๋จ์ดโ โ ... โ ๋จ์ดโโโ
์์๋๋ก ์ฒ๋ฆฌ โ ๋ณ๋ ฌํ ๋ถ๊ฐ โ GPU ๋ญ๋น
Transformer:
๋จ์ดโ, ๋จ์ดโ, ..., ๋จ์ดโโโ ๋์ ์ฒ๋ฆฌ
โ ์์ ๋ณ๋ ฌํ โ GPU 100% ํ์ฉ
๐ก ๋ ผ๋ฌธ ์ ๋ชฉ: "Attention is All You Need" (Google, 2017)
RNN๋ CNN๋ ์์ด Attention ๋ฉ์ปค๋์ฆ๋ง์ผ๋ก seq2seq๋ฅผ ๊ตฌํํ ์ต์ด์ ๋ชจ๋ธ
์ฃผ์ ์ฑ๊ณผ
ํ์ต ๋ฐ์ดํฐ: WMT2014 ์์ด-๋
์ผ์ด ๋ฒ์ญ (1.6GB)
ํ๋์จ์ด: P100 GPU 8๊ฐ
ํ์ต ์๊ฐ: 3.5์ผ
๊ฒฐ๊ณผ: BLEU Score SOTA (๋น์ ์ต๊ณ ์ฑ๋ฅ) ๋ฌ์ฑ
Transformer vs LSTM ๋น๊ต
| ํญ๋ชฉ | LSTM | Transformer |
|---|---|---|
| ์ฒ๋ฆฌ ๋ฐฉ์ | ์์ฐจ์ (Sequential) | ๋ณ๋ ฌ (Parallel) |
| GPU ํ์ฉ | ๋ฎ์ | ๋งค์ฐ ๋์ |
| ์ฅ๊ฑฐ๋ฆฌ ์์กด์ฑ | ์ฝํจ (๊ธฐ์ธ๊ธฐ ์์ค) | ๊ฐํจ (Attention) |
| ์ ์ดํ์ต | ์ด๋ ค์ | ์ฉ์ดํจ |
| ๊ตฌ์กฐ | RNN ๊ธฐ๋ฐ | Attention ๊ธฐ๋ฐ |
| ๋จ๊ณ | ๋ด์ฉ |
|---|---|
| Step 1 | ๋จ์ด โ 512์ฐจ์ ์ซ์ ๋ฒกํฐ ๋ณํ (Embedding) |
| Step 2 | RNN์ด ์์ผ๋ ์์๋๋ก ์ฒ๋ฆฌ ๋ถ๊ฐ โ sin/cos๋ก ์์ ์ ๋ณด ์ถ๊ฐ (Positional Encoding) |
| Step 3 | ๋ฌธ์ฅ ๋ด ๋จ์ด ๊ฐ ๊ด๋ จ๋ ๊ณ์ฐ (Self-Attention) |
| Step 4 | 8๊ฐ์ง ์๊ฐ์ผ๋ก ๋์ ๋ถ์ (Multi-Head Attention) |
| Step 5 | EncoderโDecoder ์ฐ๊ฒฐ, ์ ๋ ฅ ์ฐธ์กฐ (Cross-Attention) |
| Step 6 | ๋ฏธ๋ ๋จ์ด ์ฐจ๋จํ๋ฉฐ ์์ฐจ ์์ฑ (Masked Attention) |
| Step 7 | ํ๋ฅ ๋ก ๋ณํ ํ ๋ค์ ๋จ์ด ์ ํ (Linear + Softmax) |
Attention์ ์๊ธฐ ์์ ์ ๋ํด ์ํ โ "๋ฌธ์ฅ ์์์ ๊ฐ ๋จ์ด๊ฐ ๋ค๋ฅธ ๋จ์ด๋ค๊ณผ ์ผ๋ง๋ ๊ด๋ จ์ด ์๋๊ฐ"๋ฅผ ๊ณ์ฐํ๋ ๋ฉ์ปค๋์ฆ
๋ฌธ์ฅ: "๊ฐ๋
์ด ์ ์๋ค์๊ฒ ์ ์ ์ ์ค๋ช
ํ๋ค"
"์ ์ "์ด๋ผ๋ ๋จ์ด๋ฅผ ์ดํดํ ๋:
๊ฐ๋
โ ์ ์ : ๋์ ์ฐ๊ด์ฑ (๊ฐ๋
์ด ์ ์ ์ ์งฌ)
์ ์๋ค โ ์ ์ : ๋์ ์ฐ๊ด์ฑ (์ ์ ์ ๋ฃ๋ ๋์)
์ค๋ช
ํ๋ค โ ์ ์ : ๋์ ์ฐ๊ด์ฑ (์ ์ ์ ์ค๋ช
)
โ "์ ์ "์ ์๋ฏธ๋ฅผ ๋ฌธ์ฅ ์ ์ฒด ๋งฅ๋ฝ์์ ํ์
Self-Attention์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฒ์๊ณผ ์ ์ฌํฉ๋๋ค.
์ ํ๋ธ ๊ฒ์ ์์:
Query: "์ถ๊ตฌ ํ์ด๋ผ์ดํธ" โ ๋ด๊ฐ ์ฐพ๋ ๊ฒ
Key: ๊ฐ ์์์ ์ ๋ชฉ/ํ๊ทธ โ ๊ฒ์ ์ธ๋ฑ์ค
Value: ์ค์ ์์ ๋ด์ฉ โ ๋ฐํ๋ ๊ฒฐ๊ณผ
Query์ ๋ชจ๋ Key๋ฅผ ๋น๊ตํด์ ์ ์ฌ๋ ๊ณ์ฐ
โ ์ ์ฌ๋ ๋์ Value๋ฅผ ๊ฐ์ค์น ์ ์ฉํ์ฌ ๋ฐํ
Self-Attention์์:
Query: ํ์ฌ ์ฒ๋ฆฌ ์ค์ธ ๋จ์ด โ "์ด ๋จ์ด๊ฐ ๋ฌด์๊ณผ ๊ด๋ จ์๋?"
Key: ๋ฌธ์ฅ ๋ด ๋ชจ๋ ๋จ์ด โ "๋๋ ์ด๋ฐ ๋จ์ด์ผ"
Value: ๊ฐ ๋จ์ด์ ์ค์ ์ ๋ณด โ "๊ด๋ จ ์์ผ๋ฉด ์ด ์ ๋ณด๋ฅผ ๊ฐ์ ธ๊ฐ"
1๋จ๊ณ: Q, K, V ๋ฒกํฐ ์์ฑ
๊ฐ ๋จ์ด์ Embedding ๋ฒกํฐ (512์ฐจ์)๋ฅผ
๊ฐ์ค์น ํ๋ ฌ Wq, Wk, Wv์ ๊ณฑํด์
64์ฐจ์์ Q(์ง๋ฌธ์ฉ), K(์ธ๋ฑ์ค์ฉ), V(์ ๋ณด์ฉ) ๋ฒกํฐ๋ก ๋ณํ
512์ฐจ์ โ 64์ฐจ์์ธ ์ด์ :
512 / num_heads(8) = 64
8๊ฐ์ Head๊ฐ ๊ฐ๊ฐ 64์ฐจ์์ ์ฒ๋ฆฌ
Wq, Wk, Wv๋ ํ์ต ๊ณผ์ ์์ ์๋์ผ๋ก ํ์ต๋จ:
์ฒ์์๋ ๋๋คํ ์ซ์๋ก ์ด๊ธฐํ
ํ์ต ๋ฐ์ดํฐ:
์
๋ ฅ: "๋๋ ์ปคํผ๋ฅผ ๋ง์
จ๋ค"
์ ๋ต: "I drank coffee"
์์ธก์ด ํ๋ฆฌ๋ฉด โ loss ๊ณ์ฐ
โ backpropagation
โ Wq, Wk, Wv ์กฐ๊ธ์ฉ ์
๋ฐ์ดํธ
์๋ฐฑ๋ง๋ฒ ๋ฐ๋ณตํ๋ฉด
โ ๋ฒ์ญ์ด ์ ๋๋๋ก Q, K, V๋ฅผ ๋ง๋๋
์ต์ ์ Wq, Wk, Wv ํ๋ ฌ์ด ์์ฑ๋จ
2๋จ๊ณ: Attention Score ๊ณ์ฐ (Scaled Dot Product)
๋ชจ๋ K vector์ ๋ํ์ฌ attention score๋ฅผ ๊ตฌํจ.
๋ฌธ์ฅ: "๋๋ ์ปคํผ๋ฅผ ๋ง์
จ๋ค"
"์ปคํผ"์ ๋ํ Attention Score ๊ณ์ฐ:
๋๋ : Q_์ปคํผ ยท K_๋๋ = 3.2
์ปคํผ : Q_์ปคํผ ยท K_์ปคํผ = 8.7 โ ์๊ธฐ ์์
๋ฅผ : Q_์ปคํผ ยท K_๋ฅผ = 1.1
๋ง์
จ๋ค : Q_์ปคํผ ยท K_๋ง์
จ๋ค = 5.4
Scaling: ๊ฐ score๋ฅผ โ64 = 8๋ก ๋๋
โ ๊ธฐ์ธ๊ธฐ ์์ค ๋ฐฉ์ง (๊ฐ์ด ๋๋ฌด ํฌ๋ฉด softmax ํ ๊ธฐ์ธ๊ธฐ โ 0)
3๋จ๊ณ: Softmax๋ก Attention ๋ถํฌ ๊ณ์ฐ
Scaled Score๋ฅผ Softmax๋ก ๋ณํ โ ํ๋ฅ ๋ถํฌ
"์ปคํผ"์ Attention ๋ถํฌ:
๋๋ : 0.12
์ปคํผ : 0.61 โ ๊ฐ์ฅ ๋์
๋ฅผ : 0.04
๋ง์
จ๋ค : 0.23
ํฉ๊ณ : 1.00
4๋จ๊ณ: Value ๋ฒกํฐ ๊ฐ์คํฉ โ Attention Value
์ต์ข
"์ปคํผ"์ Context Vector =
0.12 ร V_๋๋
+ 0.61 ร V_์ปคํผ
+ 0.04 ร V_๋ฅผ
+ 0.23 ร V_๋ง์
จ๋ค
โ ๋ฌธ์ฅ ์ ์ฒด ๋งฅ๋ฝ์ด ๋ฐ์๋ "์ปคํผ"์ ์๋ก์ด ํํ(์ปคํผ์ attention value : ๋จ์ด์ ๋ํ Context Vector)
์ ๋ฆฌ
Attention(Q, K, V) = softmax(QยทKแต / โdโ) ยท V
QยทKแต : Query์ ๋ชจ๋ Key์ ์ ์ฌ๋ (๋ด์ )
โdโ : Scaling (dโ = 64, โ64 = 8)
softmax: ํ๋ฅ ๋ถํฌ๋ก ๋ณํ
ยทV : Value ๋ฒกํฐ ๊ฐ์คํฉ
์
๋ ฅ: 4๊ฐ ๋จ์ด, ๊ฐ 512์ฐจ์
X = [4, 512]
Q = X ยท Wq โ [4, 64]
K = X ยท Wk โ [4, 64]
V = X ยท Wv โ [4, 64]
Attention = softmax(QยทKแต/8) ยท V โ [4, 64]
โ 4๊ฐ ๋จ์ด๋ฅผ ๋์์ (๋ณ๋ ฌ๋ก) ์ฒ๋ฆฌ!
์ฌ๋ฌ ๊ฐ์ attention์ ๋ณ๋ ฌ๋ก ์ฌ์ฉํ ํ Attention Head๋ฅผ ์ฐ๊ฒฐํด์ ๋ค๋ฅธ ์๊ฐ์ผ๋ก ๋จ์ด ๊ฐ์ ์๊ด ๊ด๊ณ ํ์ ํฉ๋๋ค.
ํ๋์ Attention Head๋ก ๋ณด๋ ๊ฒ:
"์ปคํผ๋ฅผ ๋ง์
จ๋ค" โ ๋์ฌ-๋ชฉ์ ์ด ๊ด๊ณ๋ง ํฌ์ฐฉ
์ฌ๋ฌ ๊ฐ์ Attention Head๋ก ๋ณด๋ ๊ฒ:
Head 0: ๋ฌธ๋ฒ์ ๊ด๊ณ ํ์
(์ฃผ์ด-๋์ฌ)
Head 1: ์๋ฏธ์ ๊ด๊ณ ํ์
(์ปคํผ-์นดํ์ธ)
Head 2: ์ง์ ๊ด๊ณ ํ์
(๋๋ช
์ฌ-๋ช
์ฌ)
...
Head 7: ์์ ๊ด๊ณ ํ์
(๊ณผ๊ฑฐ-ํ์ฌ)
โ ๋จ์ด ๊ฐ ๊ด๊ณ๋ฅผ 8๊ฐ์ง ๋ค๋ฅธ ์๊ฐ์์ ๋์์ ๋ถ์
์
๋ ฅ (512์ฐจ์)
โ
8๊ฐ์ Head๋ก ๋ถํ (๊ฐ 64์ฐจ์)
โ
๊ฐ Head์์ ๋
๋ฆฝ์ ์ผ๋ก Attention ๊ณ์ฐ
โ
8๊ฐ Head ๊ฒฐ๊ณผ Concatenate โ [seq_len, 512]
โ
์ต์ข
๊ฐ์ค์น ํ๋ ฌ Wโ์ ๊ณฑํจ โ [seq_len, 512]
์ถ๋ ฅ ํฌ๊ธฐ๊ฐ ์ ๋ ฅ๊ณผ ๋์ผํ ์ด์
Transformer๋ Encoder๋ฅผ 6๊ฐ ์์ ๊ตฌ์กฐ
โ ๊ฐ Encoder์ ์ถ๋ ฅ์ด ๋ค์ Encoder์ ์
๋ ฅ์ผ๋ก ์ฌ์ฉ
โ ์
๋ ฅ(512) = ์ถ๋ ฅ(512)์ผ๋ก ์ ์ง๋์ด์ผ ํจ
์
๋ ฅ ๋ฌธ์ฅ: "์คํํธ์
ํฌ์๊ฐ ์ฆ๊ฐํ๋ค" (2๋จ์ด ์์)
[2, 512] ์
๋ ฅ Embedding
โ
Q/K/V ํ๋ ฌ๋ก ๋ถํ
โ
Head#0 [2, 64] โ ์ฃผ์ด-๋์ฌ ๊ด๊ณ
Head#1 [2, 64] โ ์์ ์ ๋ณด
...
Head#7 [2, 64] โ ์๋ฏธ๋ก ์ ๊ด๊ณ
โ
Concatenate โ [2, 512]
โ
ร Wโ [512, 512] โ Dense Layer
โ
[2, 512] ์ต์ข
Multi-Head Attention ์ถ๋ ฅ
๐ก BERT์์ ์ฐจ์ด: BERT๋ d_model=768, num_heads=12 (12ร64=768) ์ฌ์ฉ
Encoder์ Decoder์ ๊ฐ๊ฐ์ layer์์ ๋ณด์ ํ๊ณ ์์ต๋๋ค.
Multi-Head Attention ์ถ๋ ฅ (seq_len, 512)
โ
Linear (512 โ 2048) + ReLU
โ
Linear (2048 โ 512)
โ
์ถ๋ ฅ (seq_len, 512)
Self-Attention: ๋จ์ด๋ค ๊ฐ์ ๊ด๊ณ(์ํธ์์ฉ) ํ์ต
Feed Forward: ๊ฐ ๋จ์ด์ ํํ์ ๋ ํ๋ถํ๊ฒ ๋ณํ
๋น์ :
Self-Attention = ํ์ (ํ์๋ค์ด ์๋ก ์ ๋ณด ๊ณต์ )
Feed Forward = ๊ฐ์ธ ํ์ต (๊ฐ์ ๋ฐ์ ์ ๋ณด๋ฅผ ๋ด์ฌํ)
Position-wise์ ์๋ฏธ
"Position-wise" = ๋จ์ด๋ณ๋ก ๋
๋ฆฝ์ ์ผ๋ก ์ ์ฉ
์
๋ ฅ: [๋จ์ด1, ๋จ์ด2, ๋จ์ด3, ๋จ์ด4]
โ ๊ฐ ๋จ์ด์ ๋์ผํ FFN์ ๋
๋ฆฝ์ ์ผ๋ก ์ ์ฉ
โ ๋จ์ด๋ค ๊ฐ์ ์ ๋ณด ๊ตํ ์์ (๊ทธ๊ฑด Attention์ด ๋ด๋น)
Transformer๋ ์๋ธ์ธต์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด ๋์ผํ ์ฐจ์์ ์ ์งํ๋ฏ๋ก ์์ฐจ ์ฐ๊ฒฐ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ Vanishing Gradient ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ผ๋ฐ ์ ๊ฒฝ๋ง:
์ถ๋ ฅ = F(์
๋ ฅ)
์์ฐจ ์ฐ๊ฒฐ (ResNet ๋ฐฉ์):
์ถ๋ ฅ = F(์
๋ ฅ) + ์
๋ ฅ
โ โ
๋ณํ๋ ๊ฐ ์๋ ๊ฐ ๊ทธ๋๋ก ๋ํจ
โ ํ์ต์ด ์ ์ ๋๋๋ผ๋ ์๋ ๊ฐ(์
๋ ฅ)์ ๋ณด์กด
โ Vanishing Gradient ํด๊ฒฐ
์ง๊ด์ ์ดํด
"์๋ก์ด ๊ฒ์ ๋ฐฐ์ฐ๋, ์ด์ ์ง์์ ์์ง ์๋๋ค"
์์:
์ฌ์ ์ง์: "์ปคํผ๋ ์๋ฃ๋ค"
์๋ก์ด ํ์ต: "์ปคํผ๋ ์นดํ์ธ์ด ์๋ค"
์์ฐจ ์ฐ๊ฒฐ ์์ด: ์๋ก์ด ํ์ต์ด ๊ธฐ์กด ์ง์์ ๋ฎ์ด์ โ ๊ธฐ์ธ๊ธฐ ์์ค ์ํ
์์ฐจ ์ฐ๊ฒฐ ์์ด: ๊ธฐ์กด ์ง์ + ์๋ก์ด ํ์ต โ ์์ ์ ์ธ ํ์ต
๊ฐ ์ธต์ ์ถ๋ ฅ์ ํ๊ท 0, ํ์คํธ์ฐจ 1๋ก ์ ๊ทํ
ํจ๊ณผ:
ํ์ต ์์ ํ
๋ ๋น ๋ฅธ ์๋ ด
Internal Covariance Shift ํด๊ฒฐ
Encoder/Decoder ๊ฐ ์๋ธ์ธต ๊ตฌ์กฐ
์
๋ ฅ
โ
[Multi-Head Attention ๋๋ FFN]
โ
Add (์์ฐจ ์ฐ๊ฒฐ: + ์
๋ ฅ)
โ
LayerNorm
โ
์ถ๋ ฅ
| ๋ฐฉ๋ฒ | ์ค๋ช |
|---|---|
| ReLU ํ์ฑํ ํจ์ | max(0, z) โ ์์ ๊ตฌ๊ฐ์์ ๊ธฐ์ธ๊ธฐ = 1 ์ ์ง |
| ์ ์คํ ๊ฐ์ค์น ์ด๊ธฐํ | Xavier (Tanh์ฉ), He (ReLU์ฉ) |
| Batch Normalization | ๊ฐ ์ธต ์ ๋ ฅ์ ์ ๊ทํ |
| Residual Connection | ์ ๋ ฅ์ ์ถ๋ ฅ์ ์ง์ ์ฐ๊ฒฐ (ResNet) |
Batch Normalization์ด๋?
๋ฌธ์ (Internal Covariance Shift):
Layer๋ฅผ ๊ฑฐ์น ์๋ก ์
๋ ฅ ๋ถํฌ๊ฐ ๊ณ์ ๋ณํจ
โ ์ต์ด Input Layer๊ฐ ํ์ค ์ ๊ท๋ถํฌ๊ฐ ๋๋๋ก normalization ํ๋๋ฐ ์ด ํจ๊ณผ๊ฐ Hidden Layer๋ฅผ ๊ฑฐ์น๋ฉด์ ํฌ์๋จ.
ํด๊ฒฐ:
๊ฐ ์ธต์ ์
๋ ฅ(์ ๋จ๊ณ์ output)์ ํ๊ท 0, ํ์คํธ์ฐจ 1๋ก ์ ๊ทํ
โ ์์ ์ ์ธ ๋ถํฌ ์ ์ง
โ ๋ ๋น ๋ฅธ ํ์ต ๊ฐ๋ฅ
Embedding vector์ positional encoding ๊ฐ์ ์ถ๊ฐํด์ ์์ ์ ๋ณด๋ฅผ ์ถ๊ฐํด์ค๋๋ค.
LSTM: ๋จ์ด๋ฅผ ์์๋๋ก ์ฒ๋ฆฌ โ ์์น ์ ๋ณด ์๋ ํฌํจ
Transformer: ๋ชจ๋ ๋จ์ด๋ฅผ ๋์์ ์ฒ๋ฆฌ โ ์์น ์ ๋ณด ์์!
๋ฌธ์ฅ: "๊ณ ์์ด๊ฐ ์ฅ๋ฅผ ์ก์๋ค"
"์ฅ๋ฅผ ๊ณ ์์ด๊ฐ ์ก์๋ค"
โ Transformer๋ ๋ ๋ฌธ์ฅ์ ๊ฐ์ ๊ฒ์ผ๋ก ์ฒ๋ฆฌํ ์ํ
โ ์์น ์ ๋ณด๋ฅผ ๋ณ๋๋ก ์ถ๊ฐํด์ผ ํจ
์ง์ ์์น: PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
ํ์ ์์น: PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
pos: ๋ฌธ์ฅ ๋ด ๋จ์ด์ ์์น (0, 1, 2, ...)
i: Embedding ๋ฒกํฐ ๋ด ์ฐจ์์ ์ธ๋ฑ์ค
d_model: Embedding ์ฐจ์ (512)
์ง๊ด์ ์ดํด
๊ฐ ์์น๋ง๋ค ๊ณ ์ ํ "์์น ์ง๋ฌธ" ์์ฑ
์์น 0: [sin(0), cos(0), sin(0), cos(0), ...]
์์น 1: [sin(1), cos(1), sin(0.1), cos(0.1), ...]
์์น 2: [sin(2), cos(2), sin(0.2), cos(0.2), ...]
โ ๊ฐ์ ๋จ์ด๋ผ๋ ์์น์ ๋ฐ๋ผ ๋ค๋ฅธ ์
๋ ฅ๊ฐ์ ๊ฐ์ง(positional encoding๊ฐ์ด ์ถ๊ฐ๋์ด์)
โ ์ ๊ฒฝ๋ง์ด ์๋์ ์์น ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ํ์ต ๊ฐ๋ฅ
์ sin/cos์ ์ฐ๋๊ฐ?
์ ํํ(sin/cos)์ ํน์ฑ:
๊ท์น์ ์ผ๋ก ๋ฐ๋ณต๋๋ ์ฃผ๊ธฐ ํจ์
โ ์ ๊ฒฝ๋ง์ด ์๋์ ์์น ํจํด์ ์ฝ๊ฒ ํ์ต
โ ํ์ต ๋ฐ์ดํฐ๋ณด๋ค ๊ธด ๋ฌธ์ฅ๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ
์์:
"์์
์ ๋ฐ์"์ฒ๋ผ ์ฃผ๊ธฐ์ ์ธ ํจํด์ผ๋ก
๊ฐ ๋จ์ด์ ์์น๋ฅผ ๊ณ ์ ํ๊ฒ ํํ
๐ก BERT์์ ์ฐจ์ด: BERT๋ ์์ ๊ธฐ๋ฐ Positional Encoding ๋์ ํ์ต ๊ฐ๋ฅํ Positional Embedding ์ฌ์ฉ
Decoder๋ ์ด์ ์ถ๋ ฅ + Encoder ์ ๋ณด(๋ฌธ๋งฅ)๋ฅผ ์ด์ฉํด์ ํ ๋จ์ด์ฉ ์์ฑํ๋ ๊ตฌ์กฐ์ ๋๋ค.
1. Encoder๊ฐ ๋ฌธ์ฅ ์ดํด(Top Encoder์ output) โ Key, Value ์์ฑ
2. Decoder๋ ์ด์ ๋จ์ด๋ก Query ์์ฑ
-Training(ํ์ต): ์ ๋ต ๋ฌธ์ฅ (ground truth) ์ฌ์ฉ(treacher-forcing)
-Inference(์ถ๋ก ): ์ด์ ์ ์์ฑํ ๋จ์ด ์ฌ์ฉ(Auto-Regressive)
3. Encoder-Decoder Attention์ผ๋ก ์ค์ํ ๋ถ๋ถ ์ฐธ๊ณ
4. ๋ค์ ๋จ์ด ์์ฑ
5. ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์
๋ ฅ์ผ๋ก ์ฌ์ฉ (๋ฐ๋ณต)
Decoder = 3๊ฐ ์๋ธ์ธต์ผ๋ก ๊ตฌ์ฑ
โ Masked Multi-Head Self-Attention
โก Encoder-Decoder Attention (Cross-Attention)
โข Position-wise Feed Forward NN
์ Masking์ด ํ์ํ๊ฐ?
๋ฒ์ญ ํ์ต ์์:
์
๋ ฅ: "๋๋ ์ปคํผ๋ฅผ ๋ง์
จ๋ค"
๋ชฉํ: "I drank coffee"
Decoder๊ฐ "drank"๋ฅผ ์์ธกํ ๋:
๋ณผ ์ ์์ด์ผ ํ ๊ฒ: "I" (์ด์ ๋จ์ด)
๋ณด๋ฉด ์ ๋๋ ๊ฒ: "coffee" (๋ฏธ๋ ๋จ์ด) โ ์นํ
!
โ ๋ฏธ๋ ์์น๋ฅผ -โ๋ก Masking
โ Softmax ํ ํด๋น ์์น์ ํ๋ฅ โ 0
โ ์ด์ ์์น๋ง ์ฐธ์กฐ ๊ฐ๋ฅ
Masking ํ๋ ฌ ์์ (4๋จ์ด ์ถ๋ ฅ):
I drank coffee <EOS>
I 0 -inf -inf -inf
drank 0 0 -inf -inf
coffee 0 0 0 -inf
<EOS> 0 0 0 0
โ ๊ฐ ๋จ์ด๋ ์์ ๊ณผ ์ด์ ๋จ์ด๋ง ๋ณผ ์ ์์
Query: Decoder์ ํ์ ์ธต์์ ์์ฑ(์ด ๋ถ๋ถ๋ง ๋ค๋ฅด๊ณ ๋๋จธ์ง๋ Encoder์ multi-headed attention๊ณผ ๋์ผํ๊ฒ ๋์)
Key, Value: ์ต์์ Encoder์ ์ถ๋ ฅ์์ ์์ฑ
โ Decoder๊ฐ ์
๋ ฅ ๋ฌธ์ฅ์ ์ด๋ ๋ถ๋ถ์ ์ง์คํ ์ง ๊ฒฐ์
์์:
๋ฒ์ญ ์ค "coffee"๋ฅผ ์์ฑํ ๋
โ Query: "coffee" (Decoder)
โ Key/Value: "๋๋", "์ปคํผ๋ฅผ", "๋ง์
จ๋ค" (Encoder)
โ "์ปคํผ๋ฅผ"์ ๊ฐ์ฅ ๋์ Attention โ "coffee" ์์ฑ
ํ์ต ์ (Teacher Forcing):
Decoder ์
๋ ฅ = ์ ๋ต ๋ ์ด๋ธ (ground truth)
โ ๋ชจ๋ ํ์์คํ
๋ณ๋ ฌ ์ฒ๋ฆฌ ๊ฐ๋ฅ
์ถ๋ก ์ (Auto-regressive):
Decoder ์
๋ ฅ = ์ด์ ์คํ
์ ์์ธก ๊ฒฐ๊ณผ
โ ์์ฐจ์ ์ผ๋ก ํ ๋จ์ด์ฉ ์์ฑ
| ์ข ๋ฅ | ์์น | Query | Key/Value | ์ญํ |
|---|---|---|---|---|
| Encoder Self-Attention | Encoder | Encoder ์ ๋ ฅ | Encoder ์ ๋ ฅ | ์ ๋ ฅ ๋ฌธ์ฅ ๋ด ๋จ์ด ๊ด๊ณ ํ์ |
| Masked Decoder Self-Attention | Decoder | Decoder ์ ๋ ฅ | Decoder ์ ๋ ฅ | ์ถ๋ ฅ ๋ฌธ์ฅ ๋ด ์ด์ ๋จ์ด๋ง ์ฐธ์กฐ |
| Encoder-Decoder Attention | Decoder | Decoder | Encoder ์ถ๋ ฅ | ์ ๋ ฅ ๋ฌธ์ฅ์ ์ด๋ ๋ถ๋ถ์ ์ง์คํ ์ง ๊ฒฐ์ |
๋ณ๊ฒฝํด๋๋์ง๋ง ์ฐ๊ตฌ์๋ค์ด ์๋์ค๋ ๊ฐ์ผ๋ก ์ ํด๋ ๊ฐ์ ๋๋ค.
| ํ๋ผ๋ฏธํฐ | ๊ฐ | ์๋ฏธ |
|---|---|---|
| d_model | 512 | Embedding ๋ฒกํฐ ํฌ๊ธฐ, ๋ชจ๋ ์ธต ๊ณตํต |
| num_layers | 6 | Encoder/Decoder ์ธต ์ |
| num_heads | 8 | Multi-Head Attention ๋ณ๋ ฌ ํค๋ ์ |
| d_ff | 2048 | FFN ์๋์ธต ํฌ๊ธฐ (d_model ร 4) |
| d_k = d_v | 64 | ๊ฐ Head์ Q/K/V ์ฐจ์ (512/8) |
๐ก BERT: d_model=768, num_heads=12, d_ff=3072 (768ร4)
์
๋ ฅ ๋ฌธ์ฅ: "์ค๋ ๋ ์จ๊ฐ ๋ง๋ค"
โ ๋จ์ด โ Embedding ๋ฒกํฐ (512์ฐจ์)
โก + Positional Encoding (์์น ์ ๋ณด ์ถ๊ฐ)
โข Encoder ร6:
โ Multi-Head Self-Attention (๋จ์ด ๊ฐ ๊ด๊ณ ํ์
)
โ Add & LayerNorm
โ Position-wise FFN (๋จ์ด ํํ ํ๋ถํ)
โ Add & LayerNorm
โฃ Encoder ์ต์ข
์ถ๋ ฅ โ Decoder์ K, V๋ก ์ ๋ฌ
โค ์ถ๋ ฅ ์์ ํ ํฐ <BOS>
โฅ + Positional Encoding
โฆ Decoder ร6:
โ Masked Multi-Head Self-Attention (์ด์ ์ถ๋ ฅ๋ง ์ฐธ์กฐ)
โ Add & LayerNorm
โ Encoder-Decoder Attention (์
๋ ฅ ๋ฌธ์ฅ ์ฐธ์กฐ)
โ Add & LayerNorm
โ Position-wise FFN
โ Add & LayerNorm
โง Linear + Softmax โ ๋ค์ ๋จ์ด ํ๋ฅ
โจ ๊ฐ์ฅ ๋์ ํ๋ฅ ์ ๋จ์ด ์ ํ (argmax)
โฉ <EOS>๊ฐ ๋์ฌ ๋๊น์ง ๋ฐ๋ณต
| ๊ฐ๋ | ํต์ฌ ์์ด๋์ด | ํด๊ฒฐํ ๋ฌธ์ |
|---|---|---|
| Self-Attention | QยทK ์ ์ฌ๋๋ก V ๊ฐ์คํฉ | ์ฅ๊ฑฐ๋ฆฌ ์์กด์ฑ |
| Multi-Head | ์ฌ๋ฌ ์๊ฐ์ผ๋ก ๋ณ๋ ฌ Attention | ๋ค์ํ ๊ด๊ณ ๋์ ํ์ |
| Positional Encoding | sin/cos์ผ๋ก ์์น ์ ๋ณด ์ถ๊ฐ | ์์ ์ ๋ณด ์์ค |
| Residual Connection | ์ถ๋ ฅ = F(x) + x | Vanishing Gradient |
| Layer Normalization | ๊ฐ ์ธต ์ ๋ ฅ ์ ๊ทํ | ํ์ต ๋ถ์์ |
| Masked Attention | ๋ฏธ๋ ์์น๋ฅผ -โ๋ก ์ค์ | Decoder ์นํ ๋ฐฉ์ง |
Q1. Transformer๊ฐ LSTM๋ณด๋ค ๋น ๋ฅธ ์ด์ ๋?
์ ๋ต: LSTM์ ๋จ์ด๋ฅผ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ์ง๋ง Transformer๋ ๋ชจ๋ ๋จ์ด๋ฅผ ๋์์ ๋ณ๋ ฌ ์ฒ๋ฆฌํฉ๋๋ค. Attention ์ฐ์ฐ์ ํ๋ ฌ ๊ณฑ์ ์ผ๋ก GPU์์ ํ๋ฒ์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
Q2. Self-Attention์์ Scaling(โdโ๋ก ๋๋๊ธฐ)์ ํ๋ ์ด์ ๋?
์ ๋ต: QยทK์ ๋ด์ ๊ฐ์ด ์ปค์ง์๋ก Softmax์ ๊ธฐ์ธ๊ธฐ๊ฐ ๊ฑฐ์ 0์ด ๋ฉ๋๋ค (๊ธฐ์ธ๊ธฐ ์์ค). โdโ๋ก ๋๋ ๊ฐ์ ์๊ฒ ์ ์งํ๋ฉด Softmax๊ฐ ๋ ๊ท ๋ฑํ ๋ถํฌ๋ฅผ ๊ฐ์ ธ ํ์ต์ด ์์ ๋ฉ๋๋ค.
Q3. Decoder์์ Masking์ด ํ์ํ ์ด์ ๋?
์ ๋ต: ํ์ต ์ Decoder๋ ์ ๋ต ์ ์ฒด๋ฅผ ์ ๋ ฅ๋ฐ์ต๋๋ค. Masking ์์ด๋ ๋ฏธ๋ ๋จ์ด๋ฅผ ๋ณด๊ณ ์์ธกํ๋ ์นํ ์ด ๊ฐ๋ฅํฉ๋๋ค. Masking์ผ๋ก ํ์ฌ ์์น ์ด์ ๋จ์ด๋ง ์ฐธ์กฐํ๊ฒ ๊ฐ์ ํฉ๋๋ค.
Q4. Positional Encoding์ด ํ์ํ ์ด์ ๋?
์ ๋ต: Transformer๋ ๋ชจ๋ ๋จ์ด๋ฅผ ๋์์ ์ฒ๋ฆฌํ๋ฏ๋ก ์์ ์ ๋ณด๊ฐ ์์ต๋๋ค. sin/cos ํจ์๋ก ๊ฐ ์์น๋ง๋ค ๊ณ ์ ํ ๋ฒกํฐ๋ฅผ ์์ฑํ์ฌ Embedding์ ๋ํด์ค๋๋ค.