Attention ❕

JhyuneeΒ·2024λ…„ 2μ›” 1일
0

NLP

λͺ©λ‘ 보기
2/2
post-thumbnail

πŸ“‘ Attention Is All You Need
πŸ”— reference link

Summary !

πŸ’­ Self-Attention은 μžκΈ°μžμ‹  λ¬Έμž₯에 λŒ€ν•œ λ‹¨μ–΄λΌλ¦¬μ˜ μœ μ‚¬λ„λ₯Ό κ΅¬ν•˜λŠ” 방법이며,
Attention ν•¨μˆ˜μ˜ μ’…λ₯˜λŠ” λ‹€μ–‘ν•˜λ‹€.

ν•΄λ‹Ή λ…Όλ¬Έμ—μ„œλŠ” Scaled-dot product ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©°,
μ΄λ•Œ, Nμ°¨μ›μœΌλ‘œ μΆ•μ†Œν•œ Q, K, V 벑터λ₯Ό 이용,
N겹의 Attention을 λ³‘λ ¬λ‘œ μ²˜λ¦¬ν•˜κ³  concatenation을 톡해 ν•©μΉ˜λŠ”

Multi-head Attention 방법을 μ μš©ν•œλ‹€.

Β 

1. Self Attention πŸ‘€

πŸ’‘ μž…λ ₯ λ¬Έμž₯ λ‚΄μ˜ 단어듀끼리, 즉 μžκΈ°μžμ‹  λ¬Έμž₯에 λŒ€ν•œ μœ μ‚¬λ„λ₯Ό κ΅¬ν•˜μ—¬ λ¬Έλ§₯을 νŒŒμ•…

Self Attention의 `Q, K, V`
 = μž…λ ₯ λ¬Έμž₯의 λͺ¨λ“  단어 벑터듀
  • Query에 λŒ€ν•œ λͺ¨λ“  Keyμ™€μ˜ μœ μ‚¬λ„λ₯Ό 계산 !

Β 

1-1. Self Attention

Self Attention example

Basic Attention function

Attention κ°œλ…

  • Query에 λŒ€ν•΄μ„œ λͺ¨λ“  Keyμ™€μ˜ μœ μ‚¬λ„λ₯Ό 계산
    μœ μ‚¬λ„ = κ°€μ€‘μΉ˜, 각 Key와 λŒ€μ‘λ˜λŠ” Value 값에 반영

    • Return Weighted Sum of Value

Β 

1-2. Self Attention의 Q, K, V 벑터

Self Attention example - word vector, WλŠ” κ°€μ€‘μΉ˜ 벑터

  • Self Attention : μž…λ ₯ λ¬Έμž₯의 단어 벑터듀을 가지고 μˆ˜ν–‰
    • dmodeld_{model} μ°¨μ›μ˜ 단어 벑터 β†’ Q, K, V λ²‘ν„°λ‘œ λ³€ν™˜ν•˜μ—¬ 이용
  • ν•΄λ‹Ή λ…Όλ¬Έμ—μ„œλŠ” dmodel=512d_{model} = 512 μ°¨μ›μ˜ 단어 벑터 β†’ 6464 μ°¨μ›μ˜ Q, K, V둜 λ³€ν™˜
    • num_heads = 8

Β 


2. Scaled dot-product Attention βž—

πŸ’‘ Attention mechanism

  1. 각 Q λ²‘ν„°λŠ” λͺ¨λ“  K 벑터에 λŒ€ν•˜μ—¬ Attention scoreλ₯Ό 계산 ; μœ μ‚¬λ„

  2. Attention scoreλ₯Ό μ΄μš©ν•˜μ—¬ λͺ¨λ“  V 벑터λ₯Ό 가쀑합

    Return `Context vector`
  • μ–΄ν…μ…˜ ν•¨μˆ˜μ˜ μ’…λ₯˜λŠ” λ‹€μ–‘ν•˜λ‹€

Β 

2-1. Scaled dot-product Attention

Scaled dot-product example (128, 32 is an arbitary num)

  • μ—°μ‚° κ°œλ…

    Input
    [ I am a student ]

    1. 벑터끼리 Dot-product

      • μž…λ ₯ λ¬Έμž₯의 단어 벑터 β†’ λ³€ν™˜λœ Q, K, V 벑터λ₯Ό 이용
      • 단어 β€˜I’에 λŒ€ν•œ Q 벑터가 λͺ¨λ“  K 벑터에 λŒ€ν•΄ μ—°μ‚°
    2. μŠ€μΌ€μΌλ§

      • dk=8\sqrt{d_k} = 8 ; (dk=dmodel/num_heads)(d_k = d_{model} / num\_heads)
      • 단어 β€˜I’ - 각 단어 β€˜I’, β€˜am’, β€˜a’, β€˜studentβ€™μ™€μ˜ 연관성을 의미
        • Return Attention score
    3. Attention value

      • Softmax(Attention score)
      • 각 단어에 λŒ€μ‘λ˜λŠ” V 벑터에 λŒ€ν•΄ 가쀑합
        • Return Context vector

Β 

2-2. 행렬을 ν†΅ν•œ 일괄 μ—°μ‚°

각 단어에 λŒ€ν•΄ 벑터 연산을 ν•˜λŠ” λŒ€μ‹ , λ¬Έμž₯ λ‹¨μœ„μ˜ 행렬을 μ΄μš©ν•˜μ—¬ μ—°μ‚°

  • μœ„μ˜ μ—°μ‚° κ°œλ…μ— 벑터 λŒ€μ‹  행렬을 λŒ€μž…
    • Return Context matrix

Attention(Q,K,V)=softmax(QKTdk)VAttention(Q, K, V) = softmax({QK^T \over \sqrt{d_k}})V

μœ„ μ‹€μ œ μˆ˜μ‹μ„ ν–‰λ ¬λ‘œ μ‹œκ°ν™”

Q, K, V ν–‰λ ¬ λ³€ν™˜ example

Self Attention  - 단어 벑터 λŒ€μ‹ , λ¬Έμž₯ 행렬을 μ μš©ν•œ λͺ¨μŠ΅

  • μˆ˜μ‹μ— μ‚¬μš©λœ ν–‰λ ¬ 크기 정리

    seq_lenseq\_lenμž…λ ₯ λ¬Έμž₯의 길이
    λ¬Έμž₯ ν–‰λ ¬μ˜ 크기(seq_len,dmodel)(seq\_len, d_{model})
    dkd_kQ, K λ²‘ν„°μ˜ 차원
    dvd_vV λ²‘ν„°μ˜ 차원
    Q, K ν–‰λ ¬μ˜ 크기(seq_len,dk)(seq\_len, d_k)
    V ν–‰λ ¬μ˜ 크기(seq_len,dv)(seq\_len, d_v)
    μœ„μ˜ 가정에 λ”°λ₯΄λ©΄,κ°€μ€‘μΉ˜ ν–‰λ ¬μ˜ 크기 μΆ”μ • κ°€λŠ₯
    WQ,Β WKW^Q,\ W^K(dmodel,dk)(d_{model}, d_k)
    WVW^V(dmodel,dv)(d_{model}, d_v)
    μ΄λ•Œ, 논문에 λ”°λ₯΄λ©΄,dk=dv=dmodel/num_headsd_k = d_v = d_{model}/num\_heads μ΄λ―€λ‘œ,
    Attention Value Matrix(seq_len,dv)(seq\_len, d_v)

Β 


3. Multi-head Attention 🀯

πŸ’‘ Why Multi-head?

μ—¬λŸ¬ 개의 Attention head = `μ—¬λŸ¬ 개의 μ‹œκ°`

즉, λ‹€μ–‘ν•œ μ‹œκ°μ—μ„œ μœ μ‚¬λ„ 정보λ₯Ό μˆ˜μ§‘ν•˜κΈ° μœ„ν•¨

Β 

3-1. Multi-head

Multi-head Attention example, Attention head의 개수 = num_heads

  • μ–΄ν…μ…˜ ν—€λ“œμ˜ 개수만큼 병렬 μ–΄ν…μ…˜ μ—°μ‚°

    • 각 Attention κ°’ ν–‰λ ¬ ana_n = Attention head
      • 각 Attention head의 κ°€μ€‘μΉ˜ ν–‰λ ¬ WQ,WK,WVW^Q, W^K, W^V 값은 λͺ¨λ‘ λ‹€λ₯Έ κ°’

Β 

  • μ—°μ‚° 절차

    1. 각기 λ‹€λ₯Έ κ°€μ€‘μΉ˜ 행렬을 μ΄μš©ν•œ 병렬 μ–΄ν…μ…˜ μˆ˜ν–‰

      • Return Attention head(a0,…,anum_heads)(a_0, … , a_{num\_heads})
    2. λͺ¨λ“  Attention head μ—°κ²°

      • Return concatenated matrix

        (seq_len,dmodel)(seq\_len, d_{model})

    3. κ°€μ€‘μΉ˜ ν–‰λ ¬ WOW^O κ³±ν•˜κΈ°

      • Return Multi-head Attention Matrix (seq_len,dmodel)(seq\_len, d_{model})

        • Input λ¬Έμž₯ ν–‰λ ¬(seq_len,dmodel)(seq\_len, d{model})κ³Ό 동일 크기 μœ μ§€

πŸ’­ Matrix 크기가 μœ μ§€λ˜μ–΄μ•Ό ν•˜λŠ” 이유?

- Transformer - λ™μΌν•œ ꡬ쑰의 `encoder`λ₯Ό 6 layer μŒ“μ€ ꡬ쑰
    β‡’ λ‹€μŒ `encoder`에 λ‹€μ‹œ μž…λ ₯되기 μœ„ν•¨
profile
μ’‹μ•„ν•˜λŠ” 것 λ§Žμ€ μ‚¬λžŒ

0개의 λŒ“κΈ€