λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
1️⃣ AI•DS/πŸ“’ Deep learning

[인곡지λŠ₯] Transformer Models

by isdawell 2022. 6. 11.
728x90

πŸ“Œ ꡐ내 '인곡지λŠ₯' μˆ˜μ—…μ„ 톡해 κ³΅λΆ€ν•œ λ‚΄μš©μ„ μ •λ¦¬ν•œ κ²ƒμž…λ‹ˆλ‹€. 

 

βž• https://ratsgo.github.io/nlpbook/docs/language_model/transformers/ 

 

Transformers

pratical tips for Natural Language Processing

ratsgo.github.io

 

 

 

 

 

Summary 


 

 

✨ Transformer 

 

기계 λ²ˆμ—­(machine translation) λ“± μ‹œν€€μŠ€-투-μ‹œν€€μŠ€(sequence-to-sequence) κ³Όμ œλ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ λͺ¨λΈ

 

β—Ύ Attention is all you need : Encoder + Decoder block 

β—Ύ encoder λΆ€λΆ„μ—μ„œ λ³‘λ ¬μ μœΌλ‘œ λ¬Έμž₯의 λͺ¨λ“  단어λ₯Ό λ™μ‹œμ— μ²˜λ¦¬ν•œλ‹€. 

β—Ύ 속도가 λΉ λ₯΄κ³  λͺ¨λ“  λ§₯락을 μ „λΆ€ attention ν•˜λ―€λ‘œ κΈ°κ³„λ²ˆμ—­ μ„±λŠ₯도 쒋아짐

 

 

✨ BERT 

 

β—Ύ Pre-training of Deep Bidirectional Transforemrs 

β—Ύ encoder λΆ€λΆ„λ§Œ 차용 

β—Ύ Pre-training

  • maked language model πŸ‘‰ self supervised learning
  • next sentence prediction πŸ‘‰ supervised learning

 

✨ GPT

 

β—Ύ Generative Pre-training Transforemrs

β—Ύ decoder λΆ€λΆ„λ§Œ 차용 → BERT와 달리 순차적 ꡬ쑰λ₯Ό 가진닀. 

β—Ύ Next word prediction 으둜 μ‚¬μ „ν›ˆλ ¨λœ λͺ¨λΈλ‘œ fine-tuning 과정은 BERT와 μœ μ‚¬ν•˜λ‹€ .

 

 

πŸ‘€ 같은 νŒŒλΌλ―Έν„° 개수 λŒ€λΉ„ BERT μ„±λŠ₯이 더 μ’‹μŒ

πŸ‘€ μ΄ˆκ±°λŒ€ AI λ₯Ό λ§Œλ“œλŠ”λ° μžˆμ–΄μ„œλŠ” GPT κ°€ 더 μœ λ¦¬ν•œ ꡬ쑰 

 

 

 

 

 

Recap


✨ seq2seq

 

  • νŠΉμ • 속성을 μ§€λ‹Œ μ‹œν€€μŠ€λ₯Ό λ‹€λ₯Έ μ†μ„±μ˜ μ‹œν€€μŠ€λ‘œ λ³€ν™˜ν•˜λŠ” μž‘μ—…
  • 길이가 달라도 ν•΄λ‹Ή 과제λ₯Ό μˆ˜ν–‰ν•˜λŠ” 데 λ¬Έμ œκ°€ μ—†μ–΄μ•Όν•œλ‹€.
  • λͺ¨λΈμ˜ κ΅¬μ‘°λŠ” λŒ€κ²Œ 인코더-디코더 파트둜 κ΅¬μ„±λœλ‹€.

 

좜처 : https://ratsgo.github.io/nlpbook/docs/language_model/transformers/

 

 

 

✨ Attention

 

β—Ύ Encoder → context vector → Decoder πŸ‘‰ information bottleneck problem πŸ‘‰ ν•΄κ²°μ±… : Attention 

 

β—Ύ 전체 λ¬Έλ§₯을 λͺ¨λ‘ κ³ λ €ν•΄ κ·Έ μ€‘μ—μ„œ νŠΉλ³„νžˆ 연관성이 높은 단어듀을 주의깊게 λ³΄λŠ” 방법 → assign higher weights

 

β—Ύ decoder μͺ½ RNN(LSTM) 에 μ–΄ν…μ…˜μ„ μΆ”κ°€ν•œλ‹€. 

 

β—Ύ 타깃 μ–Έμ–΄λ₯Ό λ””μ½”λ”©ν•  λ•Œ μ†ŒμŠ€ μ–Έμ–΄μ˜ 단어 μ‹œν€€μŠ€ κ°€μš΄λ° 디코딩에 도움이 λ˜λŠ” 단어듀 μœ„μ£Όλ‘œ μ„ νƒν•˜μ—¬ λ²ˆμ—­ ν’ˆμ§ˆμ„ λŒμ–΄μ˜¬λ¦°λ‹€. 즉, attention 은 λ””μ½”λ”©ν•  λ•Œ μ†ŒμŠ€ μ‹œν€€μŠ€ κ°€μš΄λ° μ€‘μš”ν•œ μš”μ†Œλ₯Ό μΆ”λ¦°λ‹€. 

 

 

1. Attention Score 

 

 

 

 

2. Attention Distribution

 

 

 

3. Attention Value 

 

 

  • h3 에 λŒ€μ‘λ˜λŠ” wearing μ΄λΌλŠ” λ‹¨μ–΄μ˜ attention value C3 λ₯Ό μ–»λŠ”λ‹€. 
  • 각 단어에 λŒ€ν•΄ C1,C2,C3 λ“± attention value λ₯Ό μ–»λŠ” 과정을 반볡 

 

 

4. Calculate Output

 

 

 

 

 

 

 

 

1️⃣  Transformer 


 

πŸ‘€ ν˜„μž¬ μžμ—°μ–΄ 처리 κ΄€λ ¨ 인곡지λŠ₯을 κ΅¬ν˜„ν•˜λŠ” 데 μžˆμ–΄ λŒ€λΆ€λΆ„ 쓰이고 μžˆλŠ” ꡬ쑰 

πŸ‘€ BERT, GPT 같이 μžμ—°μ–΄μ²˜λ¦¬λ₯Ό μœ„ν•œ κ±°λŒ€ NN 듀이 transformer λͺ¨λΈμ„ 기반으둜 ν•˜κ³  μžˆλ‹€. 

 

 

β‘   Attention is general technique 

 

πŸ”˜ λ²”μš©μ μœΌλ‘œ μ‚¬μš© κ°€λŠ₯ν•œ λͺ¨λΈκ΅¬μ‘° 

 

  • κΈ°κ³„λ²ˆμ—­μ—μ„œ Attention 이 큰 μ„±λŠ₯ κ°œμ„ μ„ λ³΄μ—¬μ£Όμ—ˆλ‹€. 
  • κ·ΈλŸ¬λ‚˜ CNN 을 ν¬ν•¨ν•œ λ§Žμ€ λͺ¨λΈ ꡬ쑰에 λŒ€ν•΄μ„œλ„ Attention 을 μ‚¬μš©ν•  수 μžˆλ‹€. 

 

 

πŸ”˜ 일반적인 μ •μ˜ 

 

  • Value vector, Query vector λ₯Ό 톡해 weighted sum 값을 μ–»λŠ”λ‹€. 
  • weighted sum Value λ₯Ό 톡해 Query 에 dependent ν•œ attention 을 μ°ΎλŠ”λ‹€. (compute a weighted sum of values dependent on the query) 
  • Query κ°€ value 에 attend ν•œλ‹€κ³  말할 수 μžˆλ‹€. 

 

πŸ”˜ κΈ°κ³„λ²ˆμ—­ 

 

  • Query : λ²ˆμ—­ν•˜κ³ μž ν•˜λŠ” 단어 (h3)
  • Value : 각 단어에 λŒ€μ‘λ˜λŠ” attention κ°’λ“€ (z1,z2,z3,z4) 
  • attention 값듀을 weighted sum ν•˜μ—¬ attention score λ₯Ό μ–»μŒ 

 

 

 

 

πŸ”˜ weighted sum : value 에 ν¬ν•¨λœ 정보λ₯Ό μ„ νƒμ μœΌλ‘œ μš”μ•½

 

  • The weighted sum is a selective summary of the information contained in the values where the query determines which values to focus on 
  • ⭐ query κ°€ μ–΄λ–€ value 에 집쀑해야 할지λ₯Ό μ •ν•˜κ²Œ λœλ‹€. 

 

e4 κ°€ 0.8둜 'chapeau' κ°€ wearing λ‹€μŒμ— 올 단어 (hat) 와 κ°€μž₯ μ—°κ΄€λœ 단어라고 λ³Ό 수 μžˆλ‹€.

 

h1 κ³Ό z1,z2,z3,z4 각각에 λŒ€ν•΄ weight sum ν•œ κ°’ = attention score

 

 

 

 

β‘‘ Transformer : Attention is All You Need 

 

πŸ‘€ 기쑴의 κΈ°κ³„λ²ˆμ—­ : RNN(LSTM) + Attention ꡬ쑰 

 

⭐ RNN 뢀뢄을 μ œκ±°ν•˜κ³  attention 만 가지고 κΈ°κ³„λ²ˆμ—­μ„ μˆ˜ν–‰ν•  수 μžˆμ„κΉŒμ— λŒ€ν•œ 연ꡬ → Transformers

 

 

 

 

1)  Model Architecture 

 

πŸ”˜  Get rid of the sequential parts : RNN κ³Ό 같이 순차적으둜 μ²˜λ¦¬ν•˜λŠ” 뢀뢄을 λͺ¨λ‘ μ œκ±°ν•˜μ—¬ 연산속도λ₯Ό 높인닀.

 

  • Transformer λŠ” 순차적인 ν˜•νƒœμ˜ κ°œλ…μ„ λ³‘λ ¬μ μœΌλ‘œ λ™μ‹œμ— μ²˜λ¦¬ν•œλ‹€
  • 순차적인 μž…λ ₯에 따라 순차적으둜 연산을 μ§„ν–‰ν–ˆλ˜ RNN ꡬ쑰보닀 연산속도가 훨씬 빨라질 수 있게 λœλ‹€

 

πŸ”˜ Encoder - Decoder with only attention and fully-connected layers πŸ‘‰ no recurrence or convolutions

 

  • 순차적 연산을 ν•„μš”λ‘œ ν•˜λŠ” recurrence layer λ‚˜ ν˜Ήμ€ Conv layer κ°€ ν•„μš” μ—†λ‹€. 
  • multi-head attention + feed forward (=fully connected) 만 가지고 연산을 μˆ˜ν–‰

 

πŸ”˜  (Encoder - Decoder) x N stacks 

 

  • Encoder-decoder ꡬ쑰가 N 개 만큼 μŒ“μΈ ν˜•νƒœ
  • Encoder λŠ” input 에 λŒ€ν•΄ μˆœμ°¨μ—°μ‚°μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šμ§€λ§Œ, decoder λŠ” μˆœμ°¨μ—°μ‚° (λ¬Έμž₯의 μ™Όμͺ½μ—μ„œλΆ€ν„° 였λ₯Έμͺ½μœΌλ‘œ decoding) 을 μˆ˜ν–‰ν•œλ‹€.

 

 

πŸ”˜  Encoder 3가지 κ΅¬μ„±μš”μ†Œ 

 

  • Self-attention (multi head attention) 
  • positional encoding 
  • layer normalization 

 

  • add & Norm : λ“€μ–΄μ˜€λŠ” input κ³Ό multi-head attention output 을 add ν•΄μ£Όκ³  normalization 연산을 ν•΄μ€Œ 
  • feed forward = fully connected 

 

πŸ”˜  νŠΈλžœμŠ€ν¬λ¨Έμ˜ ν•™μŠ΅(train)은 인코더와 디코더 μž…λ ₯이 μ£Όμ–΄μ‘Œμ„ λ•Œ λͺ¨λΈ μ΅œμ’… 좜λ ₯μ—μ„œ 정닡에 ν•΄λ‹Ήν•˜λŠ” λ‹¨μ–΄μ˜ ν™•λ₯  값을 λ†’μ΄λŠ” λ°©μ‹μœΌλ‘œ μˆ˜ν–‰λœλ‹€. 

 

 

2) Self Attention

 

좜처 : https://ratsgo.github.io/nlpbook/docs/language_model/transformers/

 

πŸ‘‰ ex. 인코더 블둝 λ‚΄λΆ€μ—μ„œλŠ” 'κ±°κΈ°' λΌλŠ” 단어λ₯Ό 인코딩할 λ•Œ, '카페', 'κ°”μ—ˆμ–΄' λΌλŠ” λ‹¨μ–΄μ˜ 의미λ₯Ό κ°•μ‘°ν•΄ λ°˜μ˜ν•œλ‹€. 

 

 

πŸ”˜  decoder, RNN 없이 자기 μžμ‹ μ— λŒ€ν•΄ attention 을 μˆ˜ν–‰ν•œλ‹€. 

 

  • κ°œλ³„ 단어와 전체 μž…λ ₯ μ‹œν€€μŠ€λ₯Ό λŒ€μƒμœΌλ‘œ μ–΄ν…μ…˜μ„ μˆ˜ν–‰ν•΄ λ¬Έλ§₯ 전체λ₯Ό κ³ λ €ν•œλ‹€. μ•„μšΈλŸ¬ λͺ¨λ“  λ‹¨μ–΄μŒμ˜ 경우의 수λ₯Ό κ³ λ €ν•˜λ―€λ‘œ μ‹œν€€μŠ€ 길이가 길어져도 정보λ₯Ό μžŠμ„ μ—Όλ €κ°€ μ—†λ‹€. 
  • μ–΄ν…μ…˜μ€ 타깃 μ–Έμ–΄λ₯Ό 1개 생성할 λ•Œ 1회 μˆ˜ν–‰ν•˜λŠ” κ΅¬μ‘°μ΄μ§€λ§Œ, μ…€ν”„ μ–΄ν…μ…˜μ€ 인코더, 디코더, λΈ”λ‘μ˜ 개수만큼 λ°˜λ³΅μˆ˜ν–‰ν•œλ‹€. 

 

πŸ”˜  input : sequence of vectors 

πŸ”˜ output: sequence of vectors, each one a weighted sum of the input sequence 

 

 

 

  • x1 κ³Ό x2 의 내적 κ³± πŸ‘‰ 단어 κ°„ μœ μ‚¬λ„ 계산 

 

 

βž• https://towardsdatascience.com/self-attention-5b95ea164f61

 

 

self attention : λ¬Έμž₯ λ‚΄μ—μ„œ "The" 와 (or "it") κ°€μž₯ κ΄€λ ¨λœ λ‹¨μ–΄λŠ” λ¬΄μ—‡μΌκΉŒ

 

πŸ‘‰ μž…λ ₯ λ¬Έμž₯ λ‚΄μ˜ 단어듀끼리 μœ μ‚¬λ„λ₯Ό ꡬ해, it ν˜Ήμ€ The 와 κ°€μž₯ μ—°κ΄€μžˆλŠ” 단어λ₯Ό μ‚΄νŽ΄λ³Έλ‹€. 

 

 

 

3) Query, Key, Value 

 

πŸ”˜  Input vector λŠ” 3가지 λ°©μ‹μœΌλ‘œ 쓰인닀. 

 

  • Query : μ–΄λ–€ 벑터에 λŒ€ν•œ attention 을 계산할 것인가
  • Key : attention weight λ₯Ό κ³„μ‚°ν•˜κΈ° μœ„ν•΄μ„œ λΉ„κ΅λ˜κ³ μž ν•˜λŠ” κ°’
  • value : weighted sum 값을 λ§Œλ“€κΈ° μœ„ν•΄ ν•„μš”ν•œ input vector 
  • λ§Œμ•½ μž…λ ₯ λ¬Έμž₯이 6개의 λ‹¨μ–΄λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€λ©΄, μ…€ν”„ μ–΄ν…μ…˜ 계산 λŒ€μƒμ€ 쿼리벑터 6개, ν‚€ 벑터 6개, λ°Έλ₯˜ 벑터 6개둜 λͺ¨λ‘ 18κ°œκ°€ λœλ‹€. 
  • μ…€ν”„ μ–΄ν…μ…˜μ€ query, key, value 3개 μš”μ†Œ μ‚¬μ΄μ˜ λ¬Έλ§₯적 관계성을 μΆ”μΆœν•œλ‹€. 

 

 

 

 

 

 

πŸ”˜  attention 의 train 은 3가지 κ°€μ€‘μΉ˜ 행렬에 λŒ€ν•œ train 으둜 이루어진닀. 

 

  • query, key, value 에 λŒ€μ‘λ˜λŠ” weight matrix  πŸ‘‰ task λ₯Ό κ°€μž₯ 잘 μˆ˜ν–‰ν•˜λŠ” λ°©ν–₯으둜 ν•™μŠ΅ κ³Όμ •μ—μ„œ μ—…λ°μ΄νŠΈλœλ‹€.

 

 

 

πŸ”˜  μ—°μ‚° κ³Όμ • - ν•˜λ‚˜μ˜ 단어 μž„λ² λ”© 벑터 ex

 

(1) Q, K, V 벑터 μ–»κΈ°

 

 

(2) q•k'

 

 

 

(3) softmax(w') = w , w•v

 

 

 

πŸ”˜  μ—°μ‚° κ³Όμ • - ν–‰λ ¬ μ—°μ‚°μœΌλ‘œ 일괄 처리

 

1. Q,K,V μ—°μ‚°

 

 

2. Q•K'

 

3. W•V

 

 

 

βž• https://ratsgo.github.io/nlpbook/docs/language_model/tr_self_attention/ : μ—°μ‚° κ³Όμ • κΌ­ μ‚΄νŽ΄λ³΄κΈ°! 

 

Self Attention

pratical tips for Natural Language Processing

ratsgo.github.io

 

 

 

 

4) Multi-Head Attention 

 

πŸ”˜  μ—¬λŸ¬κ°œμ˜ self attention 이 λ³‘λ ¬μ μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” attention 

 

  • self attention 을 μ—¬λŸ¬λ²ˆ μˆ˜ν–‰ : μ—¬λŸ¬ ν—€λ“œκ°€ λ…μžμ μœΌλ‘œ μ…€ν”„ μ–΄ν…μ…˜μ„ κ³„μ‚°ν•œλ‹€. 
  • κ°€λ Ή 3κ°œκ°€ λ³‘λ ¬μ μœΌλ‘œ μžˆλ‹€κ³  ν•˜λ©΄ Wq,Wk,Wv κ°€ 각각 3개 μ‘΄μž¬ν•˜λŠ” μ—°μ‚° 
  • λͺ¨λ“  head 의 좜λ ₯ κ²°κ³Όλ₯Ό concat ν•˜μ—¬ λ‹€μŒ λ‹¨κ³„λ‘œ λ„˜κΈ΄λ‹€. 
  • λ‹€μ–‘ν•œ κ΄€μ μ—μ„œ attention 을 μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ multi-head attention 을 μ‚¬μš©ν•œλ‹€ πŸ‘‰ ν•΄μ„μ˜ λͺ¨ν˜Έν•¨μ„ 없앨 수 있음 

 

 

 

 

 

 

 

 

 

5) Layer Normalization 

 

πŸ”˜  layer λŠ” 각 μ°¨μ›μ—μ„œ input vector κ°€ uniform ν•œ 평균과 뢄산을 가지고 μžˆμ„ λ•Œ 졜적의 결둠을 λ„μΆœν•΄λ‚Έλ‹€. 

 

  • λ―Έλ‹ˆ 배치의 μΈμŠ€ν„΄μŠ€(xx)λ³„λ‘œ 평균을 λΉΌμ£Όκ³  ν‘œμ€€νŽΈμ°¨λ‘œ λ‚˜λˆ μ€˜ μ •κ·œν™”(normalization)을 μˆ˜ν–‰ν•˜λŠ” 기법
  • λ ˆμ΄μ–΄ μ •κ·œν™”λ₯Ό μˆ˜ν–‰ν•˜λ©΄ ν•™μŠ΅μ΄ μ•ˆμ •λ˜κ³  κ·Έ 속도가 λΉ¨λΌμ§€λŠ” λ“±μ˜ νš¨κ³Όκ°€ μžˆλ‹€.

 

 

πŸ”˜ input μ΄ attention, FC 둜 κ΅¬μ„œλœ network λ₯Ό 지날 λ•Œλ§ˆλ‹€ 평균과 ν‘œμ€€νŽΈμ°¨κ°€ 엉망이 λœλ‹€ πŸ‘‰ layer normalization 을 ν•΄μ£Όλ©΄ λ‹€μ‹œ mean 와 deviation 을 μž¬μ •λ ¬ μ‹œμΌœμ€„ 수 μžˆλ‹€. 

 

 

 

 

 

 

6) Positional Embedding 

 

πŸ”˜ μˆœμ„œ 정보가 고렀된 μž„λ² λ”© 벑터 

 

 

  • Transformer μ—°μ‚°κ³Όμ •μ—μ„œ sequence μˆœμ„œκ°€ 결과에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šμ•˜μ§€λ§Œ, μ–Έμ–΄μ—μ„œλŠ” λ‹¨μ–΄μ˜ μˆœμ„œκ°€ μ€‘μš”ν•˜λ―€λ‘œ 각 input vector 에 λŒ€ν•΄ position 정보λ₯Ό μž…λ ₯ν•΄μ•Ό ν•œλ‹€. 
  • 인코더 μž…λ ₯은 μ†ŒμŠ€ μ‹œν€€μŠ€μ˜ μž…λ ₯ μž„λ² λ”©(input embedding)에 μœ„μΉ˜ 정보(positional encoding)을 λ”ν•΄μ„œ λ§Œλ“ λ‹€.

 

 

 

 

7) Mask 

 

 

πŸ”˜ Decoder → Masked multi-head attention 

 

  • Transformer 의 self-attention 기법은 input sequence λ₯Ό ν•œλ²ˆμ— λ‹€ λ³΄λŠ” λ°©μ‹μœΌλ‘œ 이루어지기 λ•Œλ¬Έμ—, sequence 의 λ‹€μŒ 단어 μ˜ˆμΈ‘μ„ μœ„ν•΄μ„œλŠ” 미래의 값은 attention ν•˜λ©΄ μ•ˆλ˜κΈ° λ•Œλ¬Έμ— weight 에 mask λ₯Ό μ”Œμš΄λ‹€.
  • mask λ₯Ό μ”Œμ›Œμ„œ ν˜„μž¬ attention 은 ν˜„μž¬μ™€ κ³Όκ±° κ°’λ§Œ λ³Ό 수 μžˆλ„λ‘ ν•œλ‹€
  • Mask = 정닡을 ν¬ν•¨ν•œ 미래 정보λ₯Ό μ…€ν”„ μ–Έν…μ…˜ μ—°μ‚°μ—μ„œ μ œμ™Έ (ν™•λ₯ μ΄ 0이 되게 함)

 

 

 

πŸ”˜ Decoder 의 attention ꡬ쑰 

좜처 : https://wikidocs.net/31379

 

  • μ…€ν”„ μ–΄ν…μ…˜μ€ Encoder μ—μ„œ λ°œμƒν•˜λŠ” κ²ƒμœΌλ‘œ Query, Key, Value κ°€ λ™μΌν•œ 경우 (λ²‘ν„°μ˜ μΆœμ²˜κ°€ μΈμ½”λ”λ‘œ κ°™λ‹€λŠ” 의미, 값이 λ™μΌν•œ 것이 μ•„λ‹˜) λ₯Ό λ§ν•œλ‹€. (1번 κ·Έλ¦Ό)
  • Decoder λŠ” 2번 그림의 maekd-self attention, 3번 그림의 encoder-decoder attention 이 이루어진닀. 

 

1. Encoder μ…€ν”„ μ–΄ν…μ…˜: Query = Key = Value
2. Decoder masked μ…€ν”„ μ–΄ν…μ…˜: Query = Key = Value
3. λ””μ½”λ”μ˜ Encoder-Decoder μ–΄ν…μ…˜: Query: 디코더 벑터 <-> Key = Value: 인코더 벑터

 

 

 

 

8) Remarks 

 

πŸ”˜ Transformer 의 성곡 μš”μΈ 

 

 

  • 맀우 κΈ΄ λ¬Έμž₯에 λŒ€ν•΄μ„œλ„ encoding 을 ν•œλ²ˆμ— μˆ˜ν–‰ν•˜λ―€λ‘œ 순차적으둜 ν–ˆμ„ λ•Œ λ°œμƒν•˜λŠ” information loss λ₯Ό 없앨 수 μžˆλ‹€
  • Transformer λ₯Ό ν›ˆλ ¨ν•  λ•Œ label 이 μ—†λŠ” 데이터셋을 가지고 self supervised learning 으둜 μˆ˜ν–‰ν•˜λŠ”λ°, κ·Έλ ‡κΈ° λ•Œλ¬Έμ— language model 을 λ§Œλ“œλŠ”λ° μ ν•©ν•œ ꡬ쑰가 λ˜μ—ˆλ‹€.

 

 

πŸ”˜ Training 

 

 

  • Pre-training on large unlabeled datasets : self-supervised learning
  • Training for downstream-tasks on labeled data : supervised learningfine-tuning 

 

 

πŸ‘€ Self-supervised learning 

 

  • Unsupervsied learning 쀑에 ν•œ 뢄야에 μ†ν•˜λŠ” μ—°κ΅¬μ£Όμ œλ‘œ, 데이터셋은 λ ˆμ΄λΈ”μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ°μ΄ν„°λ§Œμ„ μ‚¬μš©ν•œλ‹€. κ·ΈλŸ¬λ‚˜ 일반적인 λΉ„μ§€λ„ν•™μŠ΅κ³ΌλŠ” 달리, 자기 슀슀둜 ν•™μŠ΅ 데이터에 λŒ€ν•œ λΆ„λ₯˜λ₯Ό μˆ˜ν–‰ν•œλ‹€. 
  • network λ₯Ό pretraining μ‹œν‚¨ λ’€ downstream task 둜 transfer learning 을 ν•˜λŠ” 접근방법이 핡심 κ°œλ…μ΄λ‹€. 
  • pre-trained : λŒ€λŸ‰μ˜ Untagged data λ₯Ό μ΄μš©ν•΄ μ „λ°˜μ μΈ νŠΉμ§• (generalizable representations) 을 ν•™μŠ΅ν•˜λŠ” 단계 
    • BERT : masking κ³Ό next sentence prediction 을 톡해 λͺ¨λΈ ν•™μŠ΅μ„ μ§„ν–‰ν•œλ‹€. 주어진 λ¬Έμž₯을 κ·ΈλŒ€λ‘œ ν™œμš©ν•˜κΈ° λ•Œλ¬Έμ— label (tagging) 이 ν•„μš” μ—†λ‹€. 
  • Downstream task : μ†ŒλŸ‰μ˜ Tagged (labeled) data λ₯Ό ν™œμš©ν•΄ μ‚¬μš© λͺ©μ μ— 맞게 Fine tuning 을 ν•œλ‹€. 
    • BERT example : μ§ˆμ˜μ‘λ‹΅ (Q&A) μˆ˜ν–‰μ΄λ‚˜ λ¬Έμž₯ 속 감정 λΆ„λ₯˜ λ“± λͺ©μ μ— 맞게 layer λ₯Ό 1~2개 정도 더 μΆ”κ°€ν•˜μ—¬ Tagged data 와 ν•¨κ»˜ ν•™μŠ΅μ„ μ§„ν–‰ν•œλ‹€. 

 

 

 

2️⃣ Transformer models 


좜처 :&nbsp;https://ratsgo.github.io/nlpbook/docs/language_model/bert_gpt/

 

 

 

β‘   BERT

 

 

πŸ‘€ Transformer λͺ¨λΈμ˜ ν™•μž₯ 

 

  • μ—¬λŸ¬μΈ΅μ„ 가진 μ–‘λ°©ν–₯ transformer encoder  πŸ‘‰ 빈칸 (mask) μ•žλ’€ λ¬Έλ§₯을 μ‚΄ν•„ 수 μžˆλ‹€. 
  • κΈ°μ‘΄ transformer λͺ¨λΈ κ΅¬μ‘°μ—μ„œ 디코더λ₯Ό μ œμ™Έν•˜κ³ , μΈμ½”λ”λ§Œμ„ μ‚¬μš©
  • 'bidirectional masking' κ³Ό 'next sentence prediction' 을 pre-training task 둜 μΆ”κ°€ν–ˆλ‹€.
  • Pre-training dataset 으둜 self-supervised learning 을 μˆ˜ν–‰ν•œλ‹€. 
  • λ¬Έμž₯의 의미λ₯Ό μΆ”μΆœν•˜λŠ”λ° 강점을 가지고 μžˆλ‹€. 

 

 

 

 

1)  Input 

 

πŸ”˜ Token embedding 

 

  • 각 단어에 λŒ€ν•΄ word embedding 을 μˆ˜ν–‰ν•œλ‹€. (tokenizing) 

 

πŸ”˜ Segment embedding

 

  • κ°€λ Ή A λ¬Έμž₯ ν˜Ήμ€ B λ¬Έμž₯에 μ†ν•œ λ‹¨μ–΄μž„μ„ ν‘œκΈ° 

 

πŸ”˜ Position embedding

 

  • λ‹¨μ–΄μ˜ μˆœμ„œμ— λŒ€ν•œ 정보λ₯Ό encoding 

 

 

β—Ό classification symbol : [CLS] λ¬Έμž₯에 λŒ€ν•΄ λΆ„λ₯˜λ₯Ό μˆ˜ν–‰ν•  κ²ƒμ΄λΌλŠ” 것을 μƒμ§•ν•˜λŠ” 토큰

β—Ό Sentence separator token : [SEP] λ¬Έμž₯ ꡬ뢄 토큰 

β—Ό play 토큰과 ##ing 토큰 : ing κ°€ 가지고 μžˆλŠ” '~쀑이닀' λΌλŠ” 의미λ₯Ό λ°˜μ˜ν•˜κΈ° μœ„ν•˜μ—¬ play 와 κ΅¬λΆ„ν•˜μ—¬ 토큰화 ν•˜μ˜€κ³ , ## 은 μ•žμ— μžˆλŠ” play λΌλŠ” 단어와 μ΄μ–΄μ§„λ‹€λŠ” ν‘œκΈ°λ‘œ ν‘œμ‹œν•œ 것이닀. 

 

 

 

πŸ‘€ κΈ°μ‘΄ Transformer λŠ” Next word prediction λ°©μ‹μœΌλ‘œ 순차적인 decoder λ₯Ό μ‚¬μš©ν•˜μ—¬ self-supervised training 을 μ§„ν–‰ν•˜μ˜€μ§€λ§Œ, BERT μ—μ„œλŠ” 2κ°€μ§€μ˜ μ°¨λ³„ν™”λœ 방법을 톡해 Pre-train 을 μ§„ν–‰ν•œλ‹€. 

 

2) Pretraining task (1) - mask language model 

 

⭐ λ¬Έμž₯ 쀑간에 λΉˆμΉΈμ„ λ§Œλ“€κ³  ν•΄λ‹Ή λΉˆμΉΈμ— μ–΄λ–€ 단어가 μ μ ˆν• μ§€ λ§žμΆ”λŠ” κ³Όμ •μ—μ„œ Pre-train ν•œλ‹€. 

 

 

 

πŸ”˜ Replace with [MASK] : λΉˆμΉΈμ±„μš°κΈ° 문제λ₯Ό λ§žμΆ”λŠ” 격으둜 ν›ˆλ ¨μ΄ 이루어진닀. 

 

πŸ”˜ Replace with random word : λ¬΄μž‘μœ„ λ‹¨μ–΄λ‘œ λ°”κΎΈμ–΄μ€Œ (regularizaiton)

 

πŸ”˜ leave as : 단어λ₯Ό κ·ΈλŒ€λ‘œ μœ μ§€ 

 

 

 

3) Pretraining task (2) - Next sentence prediction 

 

⭐ λ¬Έμž₯을 κ΅¬λΆ„ν•˜λŠ” λΆ„λ₯˜ 문제λ₯Ό μˆ˜ν–‰ν•˜μ—¬ Pre-train 을 μ§„ν–‰ν•œλ‹€. 

 

 

πŸ”˜ λ¬Έμž₯에 λŒ€ν•΄ 이진뢄λ₯˜λ₯Ό μˆ˜ν–‰

 

  • 50%κ°€ Is Next 이고, 50% κ°€ NotNext class 에 ν•΄λ‹Ήν•œλ‹€
  • EX) λ¬Έμž₯1 λ‹€μŒμ— λ¬Έμž₯2κ°€ 올 것이냐 μ•ˆμ˜¬κ²ƒμ΄λƒλ₯Ό λΆ„λ₯˜ν•˜λŠ” 문제

 

 

 

4) Architecture 

 

πŸ”˜ 3μ–΅ 4천만개의 νŒŒλΌλ―Έν„°λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. 

πŸ”˜ 24개의 transformer block κ³Ό, 각 block λ§ˆλ‹€ 16개의 (attention multi) head κ°€ μ‘΄μž¬ν•œλ‹€. 

 

 

 

 

 

5) Fine tuning 

 

πŸ”˜ Frozen : pre-training 이후에 BERT 의 weight λ₯Ό λ³€ν™”ν•˜μ§€ μ•Šκ²Œ ν•œλ‹€. 

πŸ”˜ labeled dataset 으둜 downstream task λ₯Ό μˆ˜ν–‰ν•œλ‹€ : ν•˜λ‚˜ λ˜λŠ” κ·Έ μ΄μƒμ˜ layer λ₯Ό μΆ”κ°€ν•˜μ—¬ supervised learning 을 μˆ˜ν–‰ν•œλ‹€ 

 

 

 

 

β‘‘ GPT

 

 

  • 이전 단어듀이 μ£Όμ–΄μ‘Œμ„ λ•Œ λ‹€μŒ 단어가 무엇인지 λ§žμΆ”λŠ” κ³Όμ •μ—μ„œ Pre-train ν•˜λŠ” language model 이닀. 
  • λ¬Έμž₯ μ‹œμž‘λΆ€ν„° 순차적으둜 κ³„μ‚°ν•œλ‹€λŠ” μ μ—μ„œ 일방ν–₯이닀. 
  • λ¬Έμž₯ 생성에 강점을 μ§€λ‹Œλ‹€. 

 

1)  Generative Pre-Trained Transformer

 

πŸ”˜ Developed by OpenAI

 

πŸ”˜ Unidirectional : trained to predict next word in a sentence 

 

  • GPT λŠ” BERT 와 달리 unidirectional λ°©ν–₯으둜 traing 을 μ§„ν–‰ν•œλ‹€. 
  • λ˜ν•œ 일반적인 Transformer decoder ꡬ쑰와 같이 next word prediction 을 ν•˜λ„λ‘ ν›ˆλ ¨ν•œλ‹€. 
  • κ·ΈλŸ¬λ‚˜ GPT λŠ” Transformer μ—μ„œ decoder 만 μ‚¬μš©ν•œλ‹€. 

 

πŸ”˜ GPT generation

 

 

2)  Key-concepts 

 

πŸ”˜ labeled data λŠ” μ–Έμ–΄λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λŠ”λ° λΆ€μ‘±ν•˜λ―€λ‘œ self-supervised learning 방식을 μ„ νƒν•œλ‹€. 

 

 

πŸ”˜ 2-step training process 

 

1. Generative pre-training on unlabeled data : self-supervised learning 
  - Maksed Multi-Head Attention : μ •λ‹΅ 단어 μ΄ν›„μ˜ λͺ¨λ“  단어λ₯Ό mask (unidirectional) 

2. Discriminative fine-tuning on labeled data : supervised learning 

 

⭐ Transformer model 의 decoder λΆ€λΆ„λ§Œ 차용 

 

 

 

3) Architecture 

 

 

β—Ό pre-training 을 톡해 얻은 weight 둜 downstream task 에 λŒ€ν•΄ fine-tuning 을 μˆ˜ν–‰ν•œλ‹€. 

 

 

 

 

 

 

728x90

λŒ“κΈ€