Transformer : Attention Is All You Need (2017)

kellsieยท2025๋…„ 3์›” 9์ผ

๋…ผ๋ฌธ๋ฆฌ๋ทฐ

๋ชฉ๋ก ๋ณด๊ธฐ
4/12

Original Paper (Arxiv) : Transformer (https://arxiv.org/pdf/1706.03762)


๐Ÿ“ฅBackground

1. vanilla seq2seq

์ž์„ธํ•œ ์„ค๋ช…์€ seq2seq์— ๋Œ€ํ•ด ์ •๋ฆฌํ•œ ๊ธ€ ์ฐธ๊ณ  : Sequence to Sequence Learning with Neural Networks (2014)

Seq2Seq (Sequence-to-Sequence) ๋ชจ๋ธ์€ ์ž…๋ ฅ ์‹œํ€€์Šค๋ฅผ ๋ฐ›์•„ ๋‹ค๋ฅธ ๊ธธ์ด์˜ ์ถœ๋ ฅ ์‹œํ€€์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด๋‹ค. ์ฃผ๋กœ ๊ธฐ๊ณ„ ๋ฒˆ์—ญ, ๋ฌธ์žฅ ์š”์•ฝ, ์ฑ—๋ด‡, ์Œ์„ฑ ์ธ์‹ ๋“ฑ์˜ NLP ๋ฌธ์ œ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.


Seq2Seq ๊ธฐ๋ณธ ๊ตฌ์กฐ

Seq2Seq ๋ชจ๋ธ์€ Encoder-Decoder ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.


Encoder

  • ์ž…๋ ฅ ์‹œํ€€์Šค๋ฅผ ๋ฐ›์•„ ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ context vector๋กœ ๋ณ€ํ™˜
  • ์ฃผ๋กœ LSTM, GRU, Transformer ๋“ฑ์˜ RNN ๊ณ„์—ด ๋ชจ๋ธ์ด ์‚ฌ์šฉ๋จ
  • ๋ฌธ์žฅ์˜ ์˜๋ฏธ๋ฅผ ์••์ถ•ํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ์—ญํ• 

Decoder

  • Encoder์—์„œ ์ƒ์„ฑ๋œ context vector๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถœ๋ ฅ ์‹œํ€€์Šค๋ฅผ ์ƒ์„ฑ
  • ํ•˜๋‚˜์˜ ๋‹จ์–ด๋ฅผ ์ถœ๋ ฅํ•œ ํ›„, ๋‹ค์Œ ๋‹จ์–ด๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๋ฐฉ์‹ (Auto-Regressive)
  • RNN ๊ธฐ๋ฐ˜ ๋˜๋Š” Transformer ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

Seq2Seq ๋ชจ๋ธ์˜ ํ•™์Šต ๋ฐฉ์‹

  1. ์ž…๋ ฅ ๋ฌธ์žฅ โ†’ Encoder๋กœ ์ „๋‹ฌ โ†’ context vector ์ƒ์„ฑ
  2. Decoder๊ฐ€ context vector๋ฅผ ๋ฐ›์•„ ๋‹จ์–ด๋ฅผ ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅ
  3. ์ถœ๋ ฅ ๋‹จ์–ด๋ฅผ ์ •๋‹ต๊ณผ ๋น„๊ตํ•˜๋ฉฐ ํ•™์Šต (Teacher Forcing ์‚ฌ์šฉ ๊ฐ€๋Šฅ)


2. seq2seq with attention

vanilla seq2seq ์—์„œ encoder๊ฐ€ decoder๋กœ ๋„˜๊ธฐ๋Š” context vector์˜ ๊ธธ์ด๋Š” ํ•ญ์ƒ ๊ณ ์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž…๋ ฅ ๋ฌธ์žฅ์˜ ๊ธธ์ด๊ฐ€ ์•„๋ฌด๋ฆฌ ๊ธธ์–ด๋„ ๊ฐ™์€ ๊ธธ์ด์˜ ๋ฒกํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ encoder์™€ decoder๋ฅผ ๊ฐ๊ฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐœ์„ ํ•˜์˜€๋‹ค.

[๊ทธ๋ฆผ1] vanilla seq2seq์˜ ๋ฌธ์ œ์  (์ถœ์ฒ˜ : ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹2 - 8์žฅ)



Encoder

decoder์— ๋งˆ์ง€๋ง‰ hidden state์˜ vector๋งŒ ๋„˜๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ชจ๋“  hidden state vector๋ฅผ ํ–‰๋ ฌ๋กœ์จ ์ „๋‹ฌ

encoder์˜ ๊ฒฝ์šฐ ์•„๋ž˜ ์„ค๋ช…ํ•  decoder์™€ ๋‹ค๋ฅด๊ฒŒ ๋ชจ๋ธ์˜ ๊ตฌ์กฐ ์ž์ฒด๋ฅผ ๋ฐ”๊พผ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋‹ค๋งŒ, encoder์˜ ์ถœ๋ ฅ ๊ธธ์ด๊ฐ€ ์ž…๋ ฅ ๋ฌธ์žฅ์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งˆ์ง€๋ง‰ hidden state vector๋งŒ decoder์— ๋„˜๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ชจ๋“  hidden state vector๋ฅผ ํ•˜๋‚˜์˜ ํ–‰๋ ฌ๋กœ ๋งŒ๋“ค์–ด์„œ ๋„˜๊ธฐ๋Š” ๋ฐฉ์‹์„ ํƒํ–ˆ๋‹ค.

VGGNet Configuration

[๊ทธ๋ฆผ2] seq2seq with attention์˜ encoder ๊ตฌ์กฐ (์ถœ์ฒ˜ : ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹2 - 8์žฅ)



Decoder

(1) ๊ฐ€์ค‘์น˜ a ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. Decoder์˜ LSTM ์…€์— ๊ฐ ์‹œ์  ๋‹จ์–ด์˜ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ์™€ ์ด์ „ ์‹œ์  LSTM์˜ ์€๋‹‰ ์ƒํƒœ ๋ฒกํ„ฐ input
    ( โ€ป ์ด๋•Œ 1๋ฒˆ์งธ ์‹œ์ ์˜ ๊ฒฝ์šฐ, ์ด์ „ LSTM ์…€์ด ์—†์œผ๋ฏ€๋กœ, Encoder์˜ ์€๋‹‰ ์ƒํƒœ ๋ฒกํ„ฐ๋ฅผ ํ•ฉ์นœ ํ–‰๋ ฌ์ธ hs๋ฅผ input )
  1. 1.์˜ ๊ฒฐ๊ณผ๋กœ ๋„์ถœ๋œ LSTM ์€๋‹‰ ์ƒํƒœ ๋ฒกํ„ฐ h๋ฅผ hs์™€ ๋‚ด์ ํ•˜์—ฌ s ๋„์ถœ
    โ†’ ๊ฐ ๋‹จ์–ด ๋ฒกํ„ฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋น„์Šทํ•œ๊ฐ€๋ฅผ ์ˆ˜์น˜๋กœ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ (= ๋‘ ๋ฒกํ„ฐ๊ฐ€ ์–ผ๋งˆ๋‚˜ ๊ฐ™์€ ๋ฐฉํ–ฅ์„ ํ–ฅํ•˜๊ณ  ์žˆ๋Š”๊ฐ€)
  1. s๋ฅผ Softmax์— ํ†ต๊ณผ์‹œ์ผœ ์ •๊ทœํ™”ํ•จ์œผ๋กœ์จ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ a ๋„์ถœ

(2) context vector ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

์•ž์„œ (1)์—์„œ ๊ตฌํ•œ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ a ์™€ Encoder์˜ ๋ชจ๋“  ์€๋‹‰ ์ƒํƒœ ๋ฒกํ„ฐ๋ฅผ ํ•ฉ์นœ hs๋ฅผ ๊ฐ€์ค‘ํ•ฉํ•œ๋‹ค.

VGGNet Configuration

[๊ทธ๋ฆผ3] seq2seq with attention์˜ decoder์—์„œ context vector๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ• (์ถœ์ฒ˜ : ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹2 - 8์žฅ)



โ—๋…ผ๋ฌธ์˜ ๋ฐœ์ƒโ—

์ง€๊ธˆ๊นŒ์ง€๋Š” attention์„ RNN์˜ ๋ณด์ • ์šฉ๋„๋กœ ์‚ฌ์šฉํ•ด์™”๋Š”๋ฐ, ๊ทธ๋ ‡๋‹ค๋ฉด RNN์„ ๋นผ๊ณ  attention๋งŒ์œผ๋กœ Encoder์™€ Decoder๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–จ๊นŒ?




๐Ÿ“„Paper Review

0. Abstract

์ฃผ์š” ์‹œํ€€์Šค ๋ณ€ํ™˜ ๋ชจ๋ธ์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ๋ณต์žกํ•œ RNN ํ˜น์€ CNN์œผ๋กœ ๊ตฌ์„ฑ๋œ Encoder์™€ Decoder ๊ตฌ์กฐ
  • ํŠนํžˆ, SOTA๋Š” seq2seq with attention

์ด์— ์˜ค์ง attention ๋ฉ”์ปค๋‹ˆ์ฆ˜๋งŒ ์ฑ„ํƒํ•œ Transformer๋ฅผ ์ œ์•ˆํ•œ๋‹ค. 2๊ฐœ์˜ ๋ฒˆ์—ญ task๋ฅผ ์ง„ํ–‰ํ•œ ๊ฒฐ๊ณผ, WMT ์˜์–ด-๋…์ผ์–ด ๋ฒˆ์—ญ task์—์„œ ๊ธฐ์กด ๋ชจ๋ธ ๋Œ€๋น„ 2์  ์ƒ์Šนํ•œ, BLEU(๊ธฐ๊ณ„ ๋ฒˆ์—ญ ํ’ˆ์งˆ์„ ํ‰๊ฐ€ํ•˜๋Š” ์ง€ํ‘œ) 28.4์ ์„ ๊ธฐ๋กํ–ˆ๋‹ค. ๋˜๋‹ค๋ฅธ task์ธ WMT ์˜์–ด-ํ”„๋ž‘์Šค์–ด ๋ฒˆ์—ญ task์—์„œ๋Š” 41.8์ ์„ ๊ธฐ๋กํ•˜๋ฉฐ ๋‹จ์ผ ๋ชจ๋ธ SOTA๋ฅผ ์„ธ์› ๋‹ค.



1. Introduction

๐Ÿ“Œ ๊ธฐ์กด RNN ๊ณ„์—ด์˜ ์–ธ์–ด ๋ชจ๋ธ
vanilla RNN, LSTM, GRU ๋“ฑ์˜ ๋ชจ๋ธ๋“ค์€ ์–ธ์–ด๋ชจ๋ธ, ๊ธฐ๊ณ„๋ฒˆ์—ญ ๋“ฑ์˜ ์‹œํ€€์Šค ๋ชจ๋ธ๋ง ๋ฐ ๋ณ€ํ™˜ ๋ฌธ์ œ์—์„œ SOTA๋ฅผ ๊ตณ๊ฑดํžˆ ์ง€์ผœ์™”๊ณ , ์ด์— ๋”ฐ๋ผ RNN ๊ณ„์—ด์˜ ์–ธ์–ด ๋ชจ๋ธ๊ณผ encoder-decoder ๊ตฌ์กฐ์˜ ์˜์—ญ์„ ๊พธ์ค€ํžˆ ํ™•์žฅํ–ˆ๋‹ค.

๐Ÿ“Œ RNN ๊ณ„์—ด ์–ธ์–ด ๋ชจ๋ธ์˜ ํ•œ๊ณ„
RNN ๊ณ„์—ด์˜ ์–ธ์–ด ๋ชจ๋ธ์—์„œ t์‹œ์ ์˜ RNN cell์€ t-1์‹œ์ ์˜ hidden state์ธ htโˆ’1h_{t-1} ๊ณผ t์‹œ์ ์˜ input์„ ์‚ฌ์šฉํ•˜์—ฌ hth_t๋ฅผ ๋„์ถœํ•œ๋‹ค. ์ด๋ ‡๋“ฏ ์„œ๋กœ ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ์—ฐ์†์ ์ธ ์„ฑ์งˆ์€ training ์‹œ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์„ ๋ชปํ•˜๋Š” ์š”์ธ์ด ๋˜๊ณ , ์ด๋Š” ๊ธด ์‹œํ€€์Šค๋ฅผ input์œผ๋กœ ๋ฐ›์„ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚จ๋‹ค.


๐Ÿ“Œ ์ง€๊ธˆ๊นŒ์ง€์˜ attention์˜ ํ™œ์šฉ
attention์€ ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ๋™์‹œ์— ๊ณ ๋ คํ•˜์—ฌ ์ง์ ‘ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๊ฐ•๋ ฅํ•œ ์‹œํ€€์Šค ๋ชจ๋ธ๋ง์˜ ํ•„์ˆ˜์ ์ธ ์š”์†Œ๊ฐ€ ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ, attention์€ ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  RNN ๊ณ„์—ด ๋ชจ๋ธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค.

๐Ÿ“Œ Transformer : RNN์„ ๋ฐฐ์ œํ•œ attention ํ™œ์šฉ
๋ณธ ๋…ผ๋ฌธ์˜ Transformer๋Š” ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ•™์Šตํ•˜๋Š” ๋ฐ ์˜ค์ง attention ๋ฉ”์ปค๋‹ˆ์ฆ˜๋งŒ ์‚ฌ์šฉํ•˜์˜€๋‹ค. RNN์„ ์ œ์™ธํ•จ์œผ๋กœ์จ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์กŒ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ์˜ค์ง 12์‹œ๊ฐ„ ๋™์•ˆ 12๊ฐœ์˜ P100 GPU๋ฅผ ํ†ตํ•ด ๋ณ‘๋ ฌ์ ์œผ๋กœ trainingํ•จ์œผ๋กœ์จ ์ƒˆ๋กœ์šด SOTA๋กœ ๋“ฑ๊ทนํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.



2. Background

๐Ÿ“Œ Transformer๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ ์ „๊นŒ์ง€
RNN, CNN ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์€ ์—ฌ์ „ํžˆ ์ˆœ์ฐจ์  ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๊ณ„๋ฅผ ํ•™์Šตํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ๊ฐ„ ๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ๋‹จ์–ด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ•™์Šตํ•˜๋Š” ๋ฐ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

๐Ÿ“Œ Transformer์˜ ์ฐจ๋ณ„์  : Self-Attention
self-attention์€ ๋‹จ์ผ ์‹œํ€€์Šค ๋‚ด์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๋ชจ๋“  ์œ„์น˜์—์„œ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ attention์€ RNN ํ˜น์€ CNN๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. Transformer๋Š” ์˜ค์ง self-attention์—๋งŒ ์˜์กดํ•˜์—ฌ ์ž…์ถœ๋ ฅ์˜ ํ‘œํ˜„์„ ๊ณ„์‚ฐํ•˜๋Š” ์ตœ์ดˆ์˜ ๋ณ€ํ™˜ ๋ชจ๋ธ์ด๋‹ค.



3. Model Architecture

VGGNet Configuration

[๊ทธ๋ฆผ4] transformer - model architecture (์ถœ์ฒ˜ : ๋…ผ๋ฌธ ๋ฐœ์ทŒ)


๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์Ÿ๋ ฅ ์žˆ๋Š” ์‹œํ€€์Šค ๋ณ€ํ™˜ ๋ชจ๋ธ์ด ๊ทธ๋Ÿฌํ•˜๋“ฏ transformer๋„ encoder-decoder ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.

  • encoder : ์ž…๋ ฅ ์‹œํ€€์Šค (x1,โ‹…โ‹…โ‹…,xn)(x_1, \cdot\cdot\cdot, x_n)๋ฅผ ์—ฐ์†์ ์ธ ํ‘œํ˜„ (z1,โ‹…โ‹…โ‹…,zn)(z_1, \cdot\cdot\cdot, z_n) ์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

  • decoder : ์ธ์ฝ”๋”์™€ ๋‹ค๋ฅด๊ฒŒ ์ถœ๋ ฅ์„ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋•Œ, ์ด์ „ ์ถœ๋ ฅ๊ฐ’์„ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” auto-regressive ๋ฐฉ์‹์„ ํƒํ•œ๋‹ค.


3.1 Encoder and Decoder Stacks

Endoder

  • 6๊ฐœ์˜ ๋™์ผํ•œ ๊ตฌ์กฐ์˜ ์ธต์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”๋ฐ, ๊ฐ ์ธต์€ 2๊ฐœ์˜ ํ•˜์œ„ ๊ณ„์ธต์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.

    • 1๋ฒˆ์งธ ํ•˜์œ„ ๊ณ„์ธต : multi-head self-attention
    • 2๋ฒˆ์งธ ํ•˜์œ„ ๊ณ„์ธต : Fully connected feed-forward
  • [๊ทธ๋ฆผ4]์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ฐ ํ•˜์œ„ ๊ณ„์ธต์— ์ž”์ฐจ ์—ฐ๊ฒฐ์„ ์ˆ˜ํ–‰ํ•œ ํ›„, ์ •๊ทœํ™”(layer normalization)์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด๋•Œ, ์ž”์ฐจ ์—ฐ๊ฒฐ์„ ์›ํ™œํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ž„๋ฒ ๋”ฉ ์ธต์„ ํฌํ•จํ•œ ๋ชจ๋ธ์˜ ๋ชจ๋“  ํ•˜์œ„ ๊ณ„์ธต์—์„œ ์ถœ๋ ฅ ์ฐจ์›์€ 512512๋กœ ๊ณ ์ •ํ•œ๋‹ค.

    โ†’ LayerNorm(x+โ€‰Sublayer(x))LayerNorm(x+\, Sublayer(x))


Decoder

  • 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์™€ ๋™์ผํ•˜๊ฒŒ ์ž”์ฐจ ์—ฐ๊ฒฐ๊ณผ ์ •๊ทœํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.



3.2 Attention

์–ดํ…์…˜ ํ•จ์ˆ˜๋Š” query์™€ ์ผ๋ จ์˜ key-value์Œ์„ output์œผ๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ Query, Key, Value, Output ๋ชจ๋‘ ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„๋œ๋‹ค. output์€ Value๋“ค์˜ ๊ฐ€์ค‘ํ•ฉ์œผ๋กœ ๊ณ„์‚ฐ๋˜๋ฉฐ, ๊ฐ ๊ฐ’์— ํ• ๋‹น๋˜๋Š” ๊ฐ€์ค‘์น˜๋Š” Query์™€ Key ๊ฐ„์˜ ์ ํ•ฉ๋„์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค.


3.2.1 Scaled Dot-Product Attention

[๊ทธ๋ฆผ5] Scaled Dot-Product Attention (์ถœ์ฒ˜ : ๋…ผ๋ฌธ ๋ฐœ์ทŒ)


hyper-parameters
1. dmodeld_{model} : ์ธ์ฝ”๋”์˜ ์ž…๋ ฅ ํฌ๊ธฐ = ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ ์ฐจ์› = ๋””์ฝ”๋” ์ถœ๋ ฅ ์ฐจ์›
\quadโ†’ ์•ž์„œ 3.1 ์˜ Encoder ๋ถ€๋ถ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ, ์ž„๋ฒ ๋”ฉ ์ธต์„ ํฌํ•จํ•œ ๋ชจ๋“  ํ•˜์œ„๊ณ„์ธต์˜ ์ถœ๋ ฅ ์ฐจ์›์€ dmodeld_{model}๋กœ ๊ณ ์ •
2. numโ€‰โ€‰layersnum\,\,layers : ์ธ์ฝ”๋” & ๋””์ฝ”๋”๊ฐ€ ์ด ๋ช‡ ์ธต์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€
3. numโ€‰โ€‰headsnum\,\,heads : ๋ณ‘๋ ฌ๋กœ ์ˆ˜ํ–‰ํ•œ ์–ดํ…์…˜ ๊ฐœ์ˆ˜
4. dffd_{ff} : feed-forward ์‹ ๊ฒฝ๋ง์˜ ์€๋‹‰์ธต ์ฐจ์› (์ž…์ถœ๋ ฅ์ธต ํฌ๊ธฐ๋Š” dmodeld_{model})
5. dkd_k : query์™€ key์˜ ์ฐจ์› (= ๊ฐ๊ฐ์˜ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์˜ ์—ด์˜ ๊ฐœ์ˆ˜)
\quadโ†’ dmodelโ€‰/numโ€‰headsd_{model}\,/num\,heads
6. dvd_v : value์˜ ์ฐจ์› (= ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์˜ ์—ด์˜ ๊ฐœ์ˆ˜)
\quadโ†’ dmodelโ€‰/numโ€‰headsd_{model}\,/num\,heads
(์ผ๋ฐ˜์ ์œผ๋กœ numโ€‰headsnum\,heads๊ฐ€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— dkd_k = dvd_v)

๋…ผ๋ฌธ์˜ default๊ฐ’
1. dmodeld_{model} = 512
2. numโ€‰โ€‰layersnum\,\,layers = 6
3. numโ€‰โ€‰headsnum\,\,heads = 8
4. dffd_{ff} = 2048
5. dkd_k = dvd_v = 64


(โ€ป ์•„๋ž˜ ๊ณผ์ •์€ ์ผ๋ฐ˜์ ์ธ self-attention์˜ ๊ณผ์ •์ด๋ฉฐ, ๊ฐ Q, K, V์˜ ์ถœ์ฒ˜๋Š” ์ดํ›„ ์„ค๋ช…ํ•  attention์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.)


  1. ๊ฐ๊ฐ์˜ ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ์„ ๊ณฑํ•˜์—ฌ Q, K, V ํ–‰๋ ฌ ๊ตฌํ•˜๊ธฐ

    [๊ทธ๋ฆผ6] Q, K, V ํ–‰๋ ฌ ๊ตฌํ•˜๊ธฐ
    (์ถœ์ฒ˜ : ๋”ฅ๋Ÿฌ๋‹์„ ์ด์šฉํ•œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ์ž…๋ฌธ - 16์žฅ [(https://wikidocs.net/35596])


  1. Q์™€ K ๋‚ด์ ์„ ํ†ตํ•ด ๊ฐ ๋‹จ์–ด ๊ฐ„ ์œ ์‚ฌ๋„ ์ธก์ • : S=QKTS=QK^T

    [๊ทธ๋ฆผ7] Q-K ๋‚ด์ (dot-product)
    (์ถœ์ฒ˜ : ๋”ฅ๋Ÿฌ๋‹์„ ์ด์šฉํ•œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ์ž…๋ฌธ - 16์žฅ [(https://wikidocs.net/35596])


  1. ์Šค์ผ€์ผ๋ง : Sโ€ฒ=SdkS' = \frac{S}{\sqrt{d_k}}
    dkd_k๊ฐ’์ด ์ž‘์€ ๊ฒฝ์šฐ์—” ์—ฐ์‚ฐ ์†๋„์— ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ, dkd_k๊ฐ’์ด ์ปค์งˆ์ˆ˜๋ก ๋‚ด์  ๊ฐ’์ด ์ปค์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด dk\sqrt{d_k}์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.
  1. attention value : softmax ํ†ต๊ณผ ํ›„ V์™€ ๊ณฑํ•˜๊ธฐ
    ๊ฐ€์ค‘์น˜๋ฅผ [0, 1] ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด softmax ํ•จ์ˆ˜์— ํ†ต๊ณผ์‹œํ‚จ๋‹ค. ์ดํ›„ V์™€ ๊ณฑํ•˜์—ฌ ์ตœ์ข… attention value ํ–‰๋ ฌ์„ ์ถœ๋ ฅํ•œ๋‹ค.

    [๊ทธ๋ฆผ8] softmax ํ†ต์ฝฐ ํ›„ V์™€ ๊ณฑํ•˜์—ฌ attention value ๋„์ถœ
    (์ถœ์ฒ˜ : ๋”ฅ๋Ÿฌ๋‹์„ ์ด์šฉํ•œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ์ž…๋ฌธ - 16์žฅ [(https://wikidocs.net/35596])


์ตœ์ข… ์ˆ˜์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax} \left( \frac{QK^T}{\sqrt{d_k}} \right) V


๊ฐ ๋‹จ๊ณ„์—์„œ ๋ฒกํ„ฐ ๋ฐ ํ–‰๋ ฌ์˜ ์ฐจ์›
1. ์ž…๋ ฅ : (seq_len(\text{seq\textunderscore len}, dmodel)d_{model})
2. WQ,WK,WVW^Q, W^K, W^V : (dmodel,dk)(d_{model}, d_k)
3. Q,K,VQ, K, V : (seq_len,dk)(\text{seq\textunderscore len}, d_k) โ† 1.๊ณผ 2.๋ฅผ ๊ณฑํ•œ ๊ฒฐ๊ณผ
4. attention value์˜ ์ฐจ์› : (seq_len(\text{seq\textunderscore len}, dk)d_{k})



3.2.2 Multi-Head Attention

[๊ทธ๋ฆผ9] multi-head attention ์—ฐ์‚ฐ
(์ถœ์ฒ˜ : ๋”ฅ๋Ÿฌ๋‹์„ ์ด์šฉํ•œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ์ž…๋ฌธ - 16์žฅ [(https://wikidocs.net/35596])


  • ์‚ฌ์šฉ ๊ณ„๊ธฐ : ๋ณ‘๋ ฌ ์—ฐ์‚ฐ
    dmodeld_{model} ์ฐจ์›์˜ Q,K,VQ, K, V๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹จ์ผ ์–ดํ…์…˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์•ž์„œ hyper-parameters์—์„œ ์ •์˜ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด ์ด๋ฅผ hh๋ฒˆ ์„ ํ˜• ๋ณ€ํ™˜ํ•˜์—ฌ ๊ฐ๊ฐ dk,dk,dvd_k, d_k, d_v ์ฐจ์›์˜ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ณ‘๋ ฌ ์—ฐ์‚ฐํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ๊ณผ์ ์ด๋‹ค.

  • ํŠน์ง•

    • ๊ฐ๊ฐ์˜ attention value matrix๋ฅผ attention head๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

    • ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ WQ,WK,WVW^Q, W^K, W^V์˜ ๊ฐ’์€ 8๊ฐœ์˜ attention head๋งˆ๋‹ค ๋ชจ๋‘ ๋‹ค๋ฅด๋‹ค.

  • ๊ณผ์ •

    1. attention head ํ•ฉ์น˜๊ธฐ (concatenate)


    2. ๊ฐ€์ค‘์น˜ ํ–‰๋ ฌ WOW^O ๊ณฑํ•˜๊ธฐ : WOW^O = (dmodel,dmodel)(d_{model}, d_{model} )
      hyper-parameters์—์„œ ๋งํ•œ ๋ฐ”์™€ ๊ฐ™์ด ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ dkd_k = dvd_v์ด์ง€๋งŒ, ํŠน์ • ์—ฐ๊ตฌ์—์„œ๋Š” dvd_v๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ concat๋œ ํ–‰๋ ฌ์ด dmodeld_{model}์˜ ์ฐจ์›์„ ๊ฐ–๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ WOW^O๋ฅผ ๊ณฑํ•œ๋‹ค.

์ตœ์ข… ์ˆ˜์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

MultiHead(Q,K,V)=Concat(head1,โ€ฆ,headh)WO\text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h)W^O

โ€‰โ€‰โ€‰โ€‰โ€‰โ€‰โ€‰whereย headi=Attention(QWiQ,KWiK,VWiV)\,\,\,\,\,\,\,\text{where } \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V)



3.2.3 Applications of Attention in our Model

Transformer๋Š” ์ด 3๊ฐ€์ง€ ์ข…๋ฅ˜์˜ attention์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

[๊ทธ๋ฆผ10] transformer์— ์‚ฌ์šฉ๋œ attention ์ข…๋ฅ˜ 3๊ฐ€์ง€
(์ถœ์ฒ˜ : ๋”ฅ๋Ÿฌ๋‹์„ ์ด์šฉํ•œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ์ž…๋ฌธ - 16์žฅ [(https://wikidocs.net/35596])


[๊ทธ๋ฆผ11] attention ์ข…๋ฅ˜ 3๊ฐ€์ง€๊ฐ€ ๊ฐ๊ฐ ์–ด๋А ํŒŒํŠธ์— ์‚ฌ์šฉ๋๋Š”๊ฐ€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ด๋ฏธ์ง€
(์ถœ์ฒ˜ : ๋”ฅ๋Ÿฌ๋‹์„ ์ด์šฉํ•œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ์ž…๋ฌธ - 16์žฅ [(https://wikidocs.net/35596])


1. Encoder self-attention : ์ธ์ฝ”๋”์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์–ดํ…์…˜

  • ์—ญํ•  : ์†Œ์Šค ๋ฌธ์žฅ ๋‚ด์—์„œ ๋‹จ์–ด๋“ค๋ผ๋ฆฌ์˜ ๊ด€๊ณ„๋ฅผ ํ•™์Šต
    (๊ฐ ๋‹จ์–ด๊ฐ€ ๋ฌธ์žฅ์—์„œ ์–ด๋–ค ๋‹จ์–ด์™€ ๊ด€๊ณ„๊ฐ€ ๊นŠ์€ ์ง€ ํŒŒ์•…)

  • ๋ฐฉํ–ฅ์„ฑ : ์–‘๋ฐฉํ–ฅ = ๋ชจ๋“  ๋‹จ์–ด๊ฐ€ ์„œ๋กœ๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ์Œ

  • Q,K,VQ, K, V ์ถœ์ฒ˜ : query = key = value (์›๋ณธ ๋ฒกํ„ฐ ์ถœ์ฒ˜๋Š” ๊ฐ™์Œ)

  • ๋™์ž‘ ๋ฐฉ์‹

    1. ๊ฐ ๋‹จ์–ด์˜ Query, Key, Value ๋ฒกํ„ฐ๋ฅผ ์ƒ์„ฑ
    2. Query์™€ Key๋ฅผ ๋น„๊ตํ•˜์—ฌ ์–ด๋–ค ๋‹จ์–ด๊ฐ€ ์ค‘์š”ํ•œ์ง€ ์ ์ˆ˜(Attention Score) ๊ณ„์‚ฐ
    3. Softmax๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ฐ€์ค‘์น˜(ํ™•๋ฅ )๋กœ ๋ณ€ํ™˜
    4. Value ๋ฒกํ„ฐ๋ฅผ ๊ฐ€์ค‘ํ•ฉํ•˜์—ฌ ์ตœ์ข…์ ์ธ ๋ฒกํ„ฐ ์ƒ์„ฑ

2. masked decoder self-attention : ๋””์ฝ”๋”์˜ 1๋ฒˆ์งธ ํ•˜์œ„ ๊ณ„์ธต

  • ์—ญํ•  : ํƒ€๊ฒŸ ๋ฌธ์žฅ์—์„œ ์•ž์ชฝ ๋‹จ์–ด๋งŒ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งˆ์Šคํ‚น
    (ํ˜„์žฌ ์˜ˆ์ธกํ•˜๋Š” ๋‹จ์–ด๋ณด๋‹ค ๋’ค์— ์˜ค๋Š” ๋‹จ์–ด๋Š” ๋ณผ ์ˆ˜ ์—†์Œ)
    โ† RNN๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ฌธ์žฅ์„ ํ†ต์œผ๋กœ ์ž…๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์—๋ฅผ ๋ด๋ฒ„๋ฆฌ๋ฉด ์‚ฌ์ „ ๊ด€์ฐฐ
  • Q,K,VQ, K, V ์ถœ์ฒ˜ : query = key = value (์›๋ณธ ๋ฒกํ„ฐ ์ถœ์ฒ˜๋Š” ๊ฐ™์Œ)
  • ๋™์ž‘ ๋ฐฉ์‹
    1. ๊ธฐ์กด Self-Attention๊ณผ ๋™์ผํ•˜๊ฒŒ Query, Key, Value ์ƒ์„ฑ
    2. ๋‹จ, ํ˜„์žฌ๊นŒ์ง€์˜ ๋‹จ์–ด๋งŒ ์ฐธ๊ณ  ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งˆ์Šคํ‚น ์ ์šฉ (๋ฏธ๋ž˜ ๋‹จ์–ด ์ฐธ๊ณ  ๋ฐฉ์ง€)
    3. Softmax๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ฐ ๋‹จ์–ด์˜ ์ค‘์š”๋„๋ฅผ ๊ณ„์‚ฐ
    4. Value ๋ฒกํ„ฐ๋ฅผ ๊ฐ€์ค‘ํ•ฉํ•˜์—ฌ ์ตœ์ข…์ ์ธ ๋ฒกํ„ฐ ์ƒ์„ฑ

3. encoder-decoder attention : ์ธ์ฝ”๋” ๋ฒกํ„ฐ๋ฅผ ์ธํ’‹์œผ๋กœ ๋ฐ›๋Š” ์–ดํ…์…˜

  • ์—ญํ•  : ์ธ์ฝ”๋”์—์„œ ์ถœ๋ ฅํ•œ context vector๋ฅผ ๋””์ฝ”๋”์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐ
    โ†’ ๋””์ฝ”๋”์˜ query ์™€ ์ธ์ฝ”๋”์˜ key, value๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ฐ€์žฅ ๊ด€๋ จ ์žˆ๋Š” ์ •๋ณด ์ฐพ๊ธฐ

  • Q,K,VQ, K, V ์ถœ์ฒ˜

    • query : from decoder input
    • key = value : from encoder output
  • ๋™์ž‘ ๋ฐฉ์‹

    1. ๋””์ฝ”๋”์—์„œ Query ์ƒ์„ฑ (ํ˜„์žฌ๊นŒ์ง€ ์˜ˆ์ธกํ•œ ๋‹จ์–ด ๊ธฐ๋ฐ˜)
    2. query๊ฐ’์„ ์ธ์ฝ”๋”์˜ output, ์ฆ‰ context vector๋ฅผ ์›๋ณธ์œผ๋กœ ํ•˜๋Š” Key์™€ ๋น„๊ตํ•˜์—ฌ ์œ ์‚ฌ๋„ ๊ณ„์‚ฐ ํ›„, Softmax์— ํ†ต๊ณผ
    3. Value๋ฅผ ๊ฐ€์ค‘ํ•ฉํ•˜์—ฌ ์ตœ์ข…์ ์ธ ๋ฒกํ„ฐ ์ƒ์„ฑ

    โ†’ ๋””์ฝ”๋”๊ฐ€ ์ถœ๋ ฅ ๋ฌธ์žฅ์„ ๋” ์ž˜ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์›€


3.3 Position-wise Feed-Forward Networks

๊ฐ ์œ„์น˜์— ๋Œ€ํ•ด ๋…๋ฆฝ์ ์œผ๋กœ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฆ‰, ๊ฐ ๋‹จ์–ด์˜ ๋ฒกํ„ฐ๊ฐ€ ๊ฐœ๋ณ„์ ์œผ๋กœ FFN์„ ํ†ต๊ณผํ•˜์—ฌ ์ด์ „ ๋‹จ์–ด ํ˜น์€ ์ฃผ๋ณ€ ๋‹จ์–ด์™€ ๊ด€๊ณ„์—†์ด ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ณ„์‚ฐ๋œ๋‹ค.

์˜ˆ์‹œ : 4๊ฐœ ๋‹จ์–ด(ํ† ํฐ)๋กœ ๊ตฌ์„ฑ๋œ ์ž…๋ ฅ ์‹œํ€€์Šค
X=[x1,x2,x3,x4]X = [x_1, x_2, x_3, x_4]
โ†’ FFN(x1),FFN(x2),FFN(x3),FFN(x4)\text{FFN}(x_1), \text{FFN}(x_2), \text{FFN}(x_3), \text{FFN}(x_4)

๋‹ค์Œ 3๋ฒˆ์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. - ์„ ํ˜• ๋ณ€ํ™˜ โ†’ ReLU โ†’ ์„ ํ˜• ๋ณ€ํ™˜


  1. ์ฒซ ๋ฒˆ์งธ ์„ ํ˜• ๋ณ€ํ™˜
  • ์ž…๋ ฅ ์ฐจ์›: dmodel=512d_{\text{model}} = 512
  • ์ถœ๋ ฅ ์ฐจ์›: dff=2048d_{\text{ff}} = 2048
  • ์—ฐ์‚ฐ: xW1+b1xW_1 + b_1
  • ์—ฌ๊ธฐ์„œ W1W_1 ์€ 512ร—2048512 \times 2048 ํฌ๊ธฐ์˜ ํ–‰๋ ฌ
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ 512์ฐจ์› โ†’ 2048์ฐจ์›์œผ๋กœ ํ™•์žฅ๋จ

  1. ReLU ํ™œ์„ฑํ™” ํ•จ์ˆ˜ ์ ์šฉ
  • ๋น„์„ ํ˜•์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ณ , ์Œ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์—ญํ• 
  • ์—ฐ์‚ฐ: max(0,xW1+b1)max(0, xW_1 + b_1)

  1. ๋‘ ๋ฒˆ์งธ ์„ ํ˜• ๋ณ€ํ™˜
  • ์ž…๋ ฅ ์ฐจ์›: dff=2048d_{\text{ff}} = 2048
  • ์ถœ๋ ฅ ์ฐจ์›: dmodel=512d_{\text{model}} = 512
  • ์—ฐ์‚ฐ: maxโก(0,xW1+b1)W2+b2\max(0, xW_1 + b_1) W_2 + b_2
  • ์—ฌ๊ธฐ์„œ W2W_2๋Š” 2048ร—5122048 \times 512 ํฌ๊ธฐ์˜ ํ–‰๋ ฌ
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ 2048์ฐจ์› โ†’ ๋‹ค์‹œ 512์ฐจ์›์œผ๋กœ ์ถ•์†Œ๋จ


3.4 Positional Encoding

RNN ํ˜น์€ CNN ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์‹œํ€€์Šค์˜ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด์„œ ์ถ”๊ฐ€์ ์ธ ์œ„์น˜ ํ† ํฐ์„ ์‚ฝ์ž…ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด encoder์™€ decoder ํ•˜๋‹จ์˜ ์ž…๋ ฅ ์ž„๋ฒ ๋”ฉ์— "์œ„์น˜ ์ž„๋ฒ ๋”ฉ"์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

[๊ทธ๋ฆผ12] encoder์™€ decoder์—์„œ positional encoding์˜ ์œ„์น˜
(์ถœ์ฒ˜ : ๋”ฅ๋Ÿฌ๋‹์„ ์ด์šฉํ•œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ์ž…๋ฌธ - 16์žฅ [(https://wikidocs.net/35596])


์‚ฌ์ธ-์ฝ”์‚ฌ์ธ ๊ธฐ๋ฐ˜ ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ, ์ฐจ์›๋ณ„๋กœ ๋‹ค๋ฅธ ์ฃผํŒŒ์ˆ˜๋ฅผ ์ ์šฉํ–ˆ๋‹ค.
PE(pos,2i)=sinโก(pos100002idmodel)PE_{(pos, 2i)} = \sin \left(\frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)

PE(pos,2i+1)=cosโก(pos100002idmodel)PE_{(pos, 2i+1)} = \cos \left(\frac{pos}{10000^{\frac{2i}{d_{\text{model}}}}} \right)


ํ•ด๋‹น ๋ฐฉ์‹์€ ์ƒ๋Œ€์  ์œ„์น˜์— ๋”ฐ๋ผ ์„ ํ˜•์„ฑ์„ ์œ ์ง€ํ•˜์—ฌ ์–ดํ…์…˜ ํ•™์Šต์— ์œ ๋ฆฌํ•˜๋‹ค. "ํ•™์Šต๋œ ์œ„์น˜ ์ž„๋ฒ ๋”ฉ"๋„ ์‹คํ—˜ํ–ˆ์ง€๋งŒ, ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ๊ฑฐ์˜ ์—†์—ˆ๊ธฐ ๋Œ€๋ฌธ์— ์ผ๋ฐ˜ํ™” ๊ฐ€๋Šฅ์„ฑ์ด ๋” ๋†’์€ ์‚ฌ์ธ-์ฝ”์‚ฌ์ธ ๋ฐฉ์‹์„ ์ฑ„ํƒํ–ˆ๋‹ค.

[๊ทธ๋ฆผ13] positional encoding ๋ฐฉ๋ฒ•
(์ถœ์ฒ˜ : ๋”ฅ๋Ÿฌ๋‹์„ ์ด์šฉํ•œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ์ž…๋ฌธ - 16์žฅ [(https://wikidocs.net/35596])





4. Why Self-Attention

self-attention vs. RNN/CNN

[๊ทธ๋ฆผ14] layer ์ข…๋ฅ˜์— ๋”ฐ๋ฅธ ์—ฐ์‚ฐ ๋ณต์žก๋„, ๋ณ‘๋ ฌํ™” ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ๋Ÿ‰, ์ž…์ถœ๋ ฅ ๊ฐ„์˜ ๊ฒฝ๋กœ ๊ธธ์ด ๋น„๊ต
(์ถœ์ฒ˜ : ๋…ผ๋ฌธ ๋ฐœ์ทŒ)


  1. ์ธต๋ณ„ ์ „์ฒด ์—ฐ์‚ฐ ๋ณต์žก๋„ : ๋‚ฎ์Œ

  2. ๋ณ‘๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ๋Ÿ‰ : ์ ์Œ
    = ํ•˜๋‚˜์˜ ๋ณ‘๋ ฌ ์—ฐ์‚ฐ ๋ธ”๋ก ๋‚ด์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์—ฐ์‚ฐ๋Ÿ‰

  3. ์ž…๋ ฅ-์ถœ๋ ฅ ๊ฐ„์˜ ๊ฒฝ๋กœ ๊ธธ์ด : ์งง์Œ
    ์žฅ๊ธฐ ์˜์กด์„ฑ์„ ํ•™์Šตํ•˜๋Š” ๊ฒƒ์€ ์‹œํ€€์Šค ๋ณ€ํ™˜ ๋ฌธ์ œ์—์„œ ์ค‘์š”ํ•œ ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์žฅ๊ธฐ ์˜์กด์„ฑ์„ ๋งŽ์ด ํ•™์Šตํ•  ์ˆ˜๋ก ๋” ์ข‹์€ ์˜ˆ์ธก์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด์— ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ์š”์ธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ˆœ์ „ํŒŒ ๋ฐ ์—ญ์ „ํŒŒ ์‹ ํ˜ธ๊ฐ€ ํ†ต๊ณผํ•˜๋Š” ๊ฒฝ๋กœ์ด๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ๋„คํŠธ์›Œํฌ ๋‚ด์—์„œ ์ž…๋ ฅ-์ถœ๋ ฅ ๊ฐ„์˜ ๊ฒฝ๋กœ๊ฐ€ ์งง์„์ˆ˜๋ก, ์žฅ๊ธฐ ์˜์กด์„ฑ์„ ํ•™์Šตํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค.




5. Training

5.1 Training Data and Batching

๐Ÿ“Œ ํ† ํฐํ™”(Tokenization) ๋ฐฉ๋ฒ•

  • BPE (Byte-Pair Encoding): ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๋ฌธ์ž์—ด ํŒจํ„ด์„ ํ† ํฐ ๋‹จ์œ„๋กœ ์ธ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•
  • WordPiece: BPE์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ๋” ์ตœ์ ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ๋‹จ์–ด๋ฅผ ์„œ๋ธŒ์›Œ๋“œ ๋‹จ์œ„๋กœ ๋ถ„ํ• 

๐Ÿ“Œ ๋ฐ์ดํ„ฐ์…‹ ์ •๋ณด

  • ์˜์–ด-๋…์ผ์–ด: 450๋งŒ ๋ฌธ์žฅ(BPE, 37,000๊ฐœ ํ† ํฐ ์–ดํœ˜)
  • ์˜์–ด-ํ”„๋ž‘์Šค์–ด: 3,600๋งŒ ๋ฌธ์žฅ(WordPiece, 32,000๊ฐœ ํ† ํฐ ์–ดํœ˜)

๐Ÿ“Œ ๋ฐฐ์น˜ ๊ตฌ์„ฑ

  • ๋น„์Šทํ•œ ๊ธธ์ด์˜ ๋ฌธ์žฅ๋ผ๋ฆฌ ๋ฌถ์–ด ๋ฐฐ์น˜ ์ƒ์„ฑ
  • ๊ฐ ๋ฐฐ์น˜ = ์•ฝ 25,000๊ฐœ์˜ ์†Œ์Šค ํ† ํฐ + 25,000๊ฐœ์˜ ํƒ€๊ฒŸ ํ† ํฐ ํฌํ•จ

5.2 Hardware and Schedule

8๊ฐœ์˜ NVIDIA P100 GPU๊ฐ€ ์žฅ์ฐฉ๋œ ๋‹จ์ผ ๋จธ์‹ ์—์„œ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•˜์˜€๋‹ค.

  1. Base ๋ชจ๋ธ (๋…ผ๋ฌธ ์ „๋ฐ˜์— ๊ฑธ์ณ ์„ค๋ช…๋œ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉ)
  • ํ•™์Šต ์Šคํ…๋‹น ์—ฐ์‚ฐ ์‹œ๊ฐ„: ์•ฝ 0.4์ดˆ
  • ์ด ํ•™์Šต ์Šคํ… ์ˆ˜: 100,000 ์Šคํ…
  • ์ด ํ•™์Šต ์‹œ๊ฐ„: 12์‹œ๊ฐ„

  1. Big ๋ชจ๋ธ (Table 3์˜ ๋งˆ์ง€๋ง‰ ์ค„์— ์„ค๋ช…๋จ)
  • ํ•™์Šต ์Šคํ…๋‹น ์—ฐ์‚ฐ ์‹œ๊ฐ„: ์•ฝ 1.0์ดˆ
  • ์ด ํ•™์Šต ์Šคํ… ์ˆ˜: 300,000 ์Šคํ…
  • ์ด ํ•™์Šต ์‹œ๊ฐ„: 3.5์ผ

5.3 Optimizer

  • Adam ์‚ฌ์šฉ

hyper-parameters

  • 1์ฐจ ๋ชจ๋ฉ˜ํŠธ ๊ณ„์ˆ˜: ฮฒ1=0.9\beta_1 = 0.9
  • 2์ฐจ ๋ชจ๋ฉ˜ํŠธ ๊ณ„์ˆ˜: ฮฒ2=0.98\beta_2 = 0.98
  • ์ˆ˜์‹ ์•ˆ์ •ํ™”๋ฅผ ์œ„ํ•œ ์ž‘์€ ๊ฐ’: ฯต=10โˆ’9\epsilon = 10^{-9}
  • ์ดˆ๋ฐ˜ warm-up ๋‹จ๊ณ„์—์„œ๋Š” ํ•™์Šต๋ฅ ์„ ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ด
  • ์ดํ›„์—๋Š” ์Šคํ… ์ˆ˜์˜ ์—ญ์ œ๊ณฑ๊ทผ ๋น„์œจ๋กœ ๊ฐ์†Œ
  • warm-up ์Šคํ… ์ˆ˜: warmup_steps=4000\text{warmup\_steps} = 4000

โ†’ ์ดˆ๋ฐ˜์—๋Š” ํ•™์Šต๋ฅ ์„ ์ฒœ์ฒœํžˆ ์ฆ๊ฐ€์‹œ์ผœ ์•ˆ์ •์ ์ธ ํ•™์Šต์„ ์œ ๋„ํ•˜๊ณ , ์ดํ›„์—๋Š” ์ ์ง„์ ์œผ๋กœ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๋ฐฉ์‹


5.4 Regularization

  1. ์ž”์ฐจ ๋“œ๋กญ์•„์›ƒ
  • ๊ฐ ํ•˜์œ„ ๊ณ„์ธต์˜ ์ถœ๋ ฅ์— ๋“œ๋กญ์•„์›ƒ์„ ์ ์šฉํ•œ ํ›„,
    ์ด๋ฅผ ์ž…๋ ฅ๊ณผ ๋”ํ•œ ํ›„ ์ •๊ทœํ™” ์ˆ˜ํ–‰
  • ์ž„๋ฒ ๋”ฉ๊ณผ ์œ„์น˜ ์ธ์ฝ”๋”ฉ์˜ ํ•ฉ์—๋„ ๋“œ๋กญ์•„์›ƒ ์ ์šฉ
  • Base ๋ชจ๋ธ์—์„œ ๋“œ๋กญ์•„์›ƒ ๋น„์œจ: Pdrop=0.1P_{drop} = 0.1
  1. ๋ผ๋ฒจ ์Šค๋ฌด๋”ฉ
  • ์Šค๋ฌด๋”ฉ ๊ฐ’: ฯตls=0.1\epsilon_{\text{ls}} = 0.1
  • ๋‹จ์ : Perplexity ์ฆ๊ฐ€ (๋ชจ๋ธ์ด ํ™•์‹ ์„ ๋œ ๊ฐ€์ง€๋„๋ก ํ•™์Šต๋จ)
  • ์žฅ์ : BLEU ์ ์ˆ˜ ๋ฐ ๋ชจ๋ธ ์ •ํ™•๋„ ํ–ฅ์ƒ

์ตœ์ข… ๊ฒฐ๊ณผ

[๊ทธ๋ฆผ15] ์˜-๋…, ์˜-ํ”„ ๋ฐ์ดํ„ฐ์…‹์— ๋Œ€ํ•œ ๋ชจ๋ธ๋ณ„ BLEU ๊ฐ’
(์ถœ์ฒ˜ : ๋…ผ๋ฌธ ๋ฐœ์ทŒ)




๐Ÿค” My Thoughts

  • seq2seq with attention์„ ๊ณต๋ถ€ํ•œ ๋‹ค์Œ์— transformer๋ฅผ ๊ณต๋ถ€ํ–ˆ์—ˆ๋Š”๋ฐ, ๋‹น์‹œ self-attention ๊ฐœ๋…์ด ๋„ˆ๋ฌด๋‚˜๋„ ์ƒ์†Œํ•ด์„œ ์™„์ „ํžˆ ํ•™์Šตํ•˜๋Š” ๋ฐ์— ์˜ค๋žœ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์—ˆ๋‹ค.
  • ๋ฌด์—‡๋ณด๋‹ค query, key, value ๊ฐœ๋…์ด ์–ด๋ ค์› ๋‹ค.
  • attention๋งŒ ๊ฐ–๊ณ  ์˜ค๋Š” ์ƒ๊ฐ์€ ์–ด๋–ป๊ฒŒ ํ–ˆ์„๊นŒ... ๊ตฌ๊ธ€์ธ๋“ค์€ ์ฐธ ๋˜‘๋˜‘ํ•ด๋“ค..

์ฐธ๊ณ  ๋ฌธํ—Œ

  • ๋ฐ‘๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋”ฅ๋Ÿฌ๋‹2 - 8์žฅ
  • ๋”ฅ๋Ÿฌ๋‹์„ ์ด์šฉํ•œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ ์ž…๋ฌธ - 16์žฅ (https://wikidocs.net/35596)

profile
every high and every low

0๊ฐœ์˜ ๋Œ“๊ธ€