9 분 소요

본 글은 스탠포드 대학교의 CS231n 11강 Attention and Transformers 강의1를 바탕으로 핵심 개념을 정리한 내용입니다. 개인 공부 목적으로 작성되었으며, 설명이 맞지 않거나 글 오타가 있으면 알려주시길 바랍니다.

이 글에서 다루는 것

  • Sequence to Sequence: 인코더-디코더 RNN 구조와 고정 크기 컨텍스트 벡터의 병목 현상
  • Attention 메커니즘: Alignment score, 정규화된 가중치, 동적 컨텍스트 벡터 산출 및 이미지 캡셔닝 적용
  • Self-Attention & Multi-Head Attention: Query, Key, Value 기반 어텐션 연산과 순열 불변성, 병렬 헤드 구조
  • Positional Encoding & Masking: 위치 정보 주입 원리와 디코더의 미래 정보 마스킹 메커니즘
  • Transformer 아키텍처: 인코더·디코더 블록의 Residual Connection, Layer Normalization, Scaled Dot-Product Attention
  • Vision Transformer (ViT): CNN 없는 순수 트랜스포머 기반 이미지 패치 처리 및 비전 분야의 최신 확장

    Sequence to Sequence

  • Sequence to Sequence(seq2seq)는 many-to-one, one-to-many 두 개의 RNN으로 구성된 모델이다.
    • 기계번역, 챗봇 등에 많이 쓰인다.
  • many-to-one을 encoder라 하고 입력 시퀀스를 읽어 단일 벡터를 출력한다. 정보를 압축하기 위함이다. 이때 단일 벡터를 context vector라 한다.
    • 컨텍스트 벡터(context vector) : 입력 시퀀스의 각 항목을 처리하고 캡처한 정보가 담긴 벡터
      • 보통 컨텍스트 벡터는 256, 512, 1024 같은 크기로 설정한다. (즉, 입력 시퀀스의 길이와 상관없이 고정된 길이)
      • 가변 길이의 데이터를 고정 크기의 데이터로 표현하는 이유는 시퀀스의 길이를 맞춰야 매 단계마다 빠르게 계산할 수 있기 때문이다. 2
      • ex. 왕 - 남자 + 여자 = 여왕
      • ex. 단어 or 어간
  • one-to-many를 decoder라 하고 context vector를 읽어 새로운 데이터인 출력 시퀀스를 내보낸다.

이미지 출처 3

  • 위 그림은 seq2seq를 활용한 기계 번역 예시이다.

이미지 출처 4

  • seq2seq 모델의 내부 동작을 구체적으로 살펴본다.
  • 인코더와 디코더는 모두 RNN이기 때문에 입력 및 이전 hidden 상태를 기반으로 현재 hidden 상태를 업데이트한다.
  • 그리고 디코더는 현 timestep 단계에서 다음 timestep 단계로 넘어갈 때 hidden state를 유지한다.

  • seq2seq를 수식으로 접근하면,
  • Input : 시퀀스 $x_1, …, x_T$
  • Encoder : $h_t=f_W(x_t, h_{t-1})$
  • Context vector : $c$
  • Decoder : $s_t=g_U(y_{t-1},s_{t-1},c)$
    • encoder의 마지막 hidden 상태가 decoder의 초기 hidden 상태로 사용이 된다.
  • Output : 시퀀스 $y_1, …, y_T$

Attention

  • 하지만 seq2seq는 입력 시퀀스가 길어질 경우 모든 입력 정보를 단일 고정 크기 컨텍스트 벡터에 압축해야 하므로 정보 손실과 병목 현상(bottleneck)이 발생한다.
  • 따라서 첫 번째 아이디어로 디코더의 각 timestep마다 새로운 컨텍스트 벡터를 동적으로 생성하여 사용한다.
    • 디코더에서 출력 단어를 예측하는 매 시점(time step)마다, 인코더의 전체 입력 문장을 다시 한 번 참고한다. 이때 예측해야 할 단어와 연관이 있는 인코더 은닉 상태를 집중적으로 참조한다. 5
  • 어텐션(attention)은 입력 시퀀스가 길어지면 출력 시퀀스의 정확도가 떨어지는 것을 보정해주기 위해 제안된 기법이다. 6
  • 이제 그림을 통해 어텐션의 세부 동작 흐름을 살펴본다.

Sequence to Sequence with RNNs and Attentions

  • 여기까지는 Vanilla RNN의 인코더부분과 똑같다.

  • 위 그림과 같이 각 입력 시퀀스마다 hidden 상태가 있는데, alignment score를 계산한다.(= $e$)
    • Alignment : 원래의 문장에서 대응하는 번역 단어와 일치시키는 과정 7
    • alignment score = matching score
    • $e_{t,i}=f_{att}(s_{t-1},h_i)$, $f_{att}$=MLP
    • $e_{t,i}$는 디코더의 시점 $t-1$ 은닉 상태가 인코더의 시점 $i$ 은닉 상태와 얼마나 유사한지를 나타내는 척도이다. 8
  • alignment score에 softmax를 계산한다.

  • 이제 위 그림과 같이 softmax를 거친 $a$ 값과 encoder의 hidden 상태를 각각 곱해서 context vector를 구한다.
    • 수식으로 나타내면 $c_t=\sum_i a_{t,i} h_i$와 같다.
      • $c_t$ : context vector의 약어를 뜻한다.
    • $a_{t,i}$는 현재 디코더 시점 $t$가 인코더의 시점 $i$와 얼마나 높은 연관성을 갖는지를 나타내는 어텐션 가중치이다. 9

  • decoder에서 context vector를 사용하게 된다.
    • 수식으로 나타내면 $s_t=g_U(y_{t-1},s_{t-1},c_t)$
      • $s_t$ : decoder의 hidden 상태
    • context vector는 입력 시퀀스의 관련된 부분을 따른다.
    • 소프트맥스를 거친 어텐션 가중치 $a_{t,i}$가 큰 인코더 상태일수록 컨텍스트 벡터에 더 많이 반영된다.
  • 만들어진 context vector는 이제 decoder의 입력으로 들어간다.
  • 한 가지 중요한 점은 전체 연산 과정이 모두 역전파 가능한 미분 가능(differentiable) 함수로 구성되어 종단간(end-to-end) 학습이 가능하다는 점이다.

  • 위 과정들을 다시 반복하는데, $s_1$을 사용해서 새로운 context vector $c_2$를 계산한다.

  • 구한 $c_2$를 이용해서 $s_2, y_2$를 계산한다.
  • 이런 과정을 계속 반복한다.

  • 따라서 decoder의 각 timestep마다 다른 context vector를 사용하는 것이 핵심이다.
  • 그러면 입력 시퀀스는 병목 현상이 일어나지 않으며, 각 decoder의 timestep마다 컨텍스트 벡터는 입력 시퀀스의 다른 부분을 보게 된다.

Example : seq2seq with attention

  • 영어를 프랑스어로 번역하는 예시인데,
  • 그림과 같이 학습 과정에서 입력되는 두 개의 언어를 어떻게 맞출지 학습이 된다.
  • 파란색 부분 중 대각선 모양처럼 보이는 것은 단어가 순서대로 대응한다는 것을 의미한다.
  • 빨간색 부분처럼 반대 방향의 대각선 보일 때는 attention이 다른 단어의 순서를 알아냄을 의미한다.

Image Caption using spatial features

  • 다음으로 어텐션을 적용하기 전의 전통적인 이미지 캡셔닝(Image Captioning) 모델을 살펴본다.
  • input : image $I$
  • output : 시퀀스 $y=y_1,y_2,…,y_T$
  • encoder : $h_0=f_w(z)$
    • $z$ : 공간적 CNN 특성 맵(Spatial CNN Features, $H \times W \times D$)
    • $f_w(.)$ : 다층 퍼셉트론(MLP; multi-layer perceptron)
      • 입력층과 출력층 사이에 하나 이상의 은닉층을 가지고 있는 신경망 10
    • $h_t$ : hidden 상태의 약어
  • decoder : $y_t=g_v(y_{t-1},h_{t-1},c)$
    • $c$는 context vector의 약어로 초기에 $h_0$이 $c$가 된다.
    • 출력 시퀀스 $y_0$와 $c$의 정보가 hidden 상태 $h_1$에 들어가고 $y_1$를 내보낸다.
  • 하지만 전과 마찬가지로 출력 시퀀스가 길어지면 병목 현상이 발생하므로, 이를 보정할 시각적 어텐션(Visual Attention)을 도입한다. 11
    • 각 timestep마다 새로운 context vector를 생성한다.
    • 각 context vector는 다른 이미지 지역들을 집중(attend to)할 것이다.

  • Encoder
  • 먼저 HxW 크기의 alignment score를 계산한다.
    • alignment score : $e_{t,i,j}=f_{att}(h_{t-1},z_{i,j})$
      • $f_{att}$ : MLP
  • alignment score가 softmax를 거쳐 HxW 크기의 attention score를 생성한다.
    • $a_{t,:,:} = softmax(e_{t,:,:})$
    • 즉, alignment score를 정규화(normalize)하여 attention weight를 얻는다.
  • 그리고 context vector를 계산한다.
    • $c_t=\sum_{i,j}a_{t,i,j}z_{i,j}$

  • Decoder
  • 먼저 decoder식은 다음과 같다.
    • $y_t=g_v(y_{t-1},h_{t-1},c_t)$
  • encoder에서 계산한 context vector $c_1$과 출력 시퀀스 $y_0$와 $h_1$(=$h_0$) 3가지 값으로 $y_1$를 구한다.
  • $y_1$은 다음 출력을 예측하기 위한 새로운 입력 데이터가 된다. 이 과정을 반복한다.

  • 위 그림은 encoder와 decoder의 전체 과정이다.
  • 모든 프로세스는 미분이 가능(differentiable)하다.

Recap

  • 이미지 캡셔닝에서 어텐션의 전체 연산 흐름을 요약하면 다음과 같다.
  • 특성 맵 $z_{i,j}$ ($H \times W \times D$)와 은닉 상태 $h$ ($D$)가 입력 데이터로 주어지며, 이를 통해 alignment score $e_{i,j}$를 계산한다.
  • alignment score를 softmax 함수에 통과시켜 attention score $a_{i,j}$를 구하고, 기존 특성 맵 $z_{i,j}$와 요소별 곱(element-wise multiplication)을 수행하여 합산한다.
  • 그 결과 얻어지는 벡터가 시점별 context vector $c$ ($D$)가 된다.

General attention layer

  • 하지만 어텐션 연산은 순열 불변성(permutation invariant)을 가지므로 특성의 순서에 구애받지 않는다. 따라서 공간 특성 맵 $H \times W$를 $N$개의 1차원 벡터 시퀀스로 평탄화(flatten)하여 처리한다.
    • 그 결과, input vector의 shape은 $N \times D$가 된다.
  • 원래 alignment $e_{i,j}$를 계산할 때 MLP 기반 가산 어텐션($f_{att}$)을 사용하던 방식에서, 행렬 곱으로 효율적인 연산이 가능한 닷 프로덕트 어텐션($q \cdot k_i$)으로 간소화하였다. 또한 내적 값을 $\sqrt{D_k}$로 나누어주는 스케일링을 적용하는데, 이는 벡터 차원이 커질수록 내적 결과의 분산이 증가하여 소프트맥스 함수의 기울기가 소실되는(vanishing gradient) 문제를 방지하기 위함이다.

  • 일반화된 어텐션 계층(General Attention Layer)의 주요 구성 요소를 세부적으로 살펴보면 다음과 같다.
  • 입력의 Queries $q$가 $M \times D_q$로 주어지면, 출력 컨텍스트 벡터 $y$의 형상 또한 $M \times D_v$로 결정된다.
  • 입력 벡터 시퀀스는 키(Key)와 밸류(Value) 역할을 수행하기 위해 선형 변환(Fully-Connected Layer)을 거쳐 $k_i \in \mathbb{R}^{D_k}$와 $v_i \in \mathbb{R}^{D_v}$로 변환된다.
  • 이와 같은 선형 투영 계층을 통해 입력과 출력의 차원을 유연하게 조정하며 효율적인 행렬 연산을 수행한다.

Self attention layer

  • 입력 벡터(input vector) 자체로부터 쿼리, 키, 밸류 벡터를 계산하므로 이를 Self-Attention 계층이라 정의한다.
  • 쿼리 벡터 또한 학습 가능한 선형 가중치 행렬 $W_Q$를 통해 계산된다.
  • 따라서 별도의 외부 쿼리 입력 없이 단일 시퀀스 내 토큰 간의 상호작용을 모델링한다.

  • 위 그림은 self attention layer의 전체를 보여준다.
  • 노란색 부분을 self-attention으로 한다면, 오른쪽과 같이 나타낼 수 있다.

  • self-attention의 핵심 동작 과정을 정리하면 다음과 같다. 12
  • $N\times D$ 형태의 입력 벡터 $x$가 들어온다. 시퀀스 문장이라 한다면, 각각을 토큰(Token)이라 부른다.
    • 토큰(token) : 일련의 문자열을 구분할 수 있는 단위 13
  • 각각의 입력 벡터(=토큰)로부터 key vector, value vector, query vector를 생성한다.
    • Query 벡터: 현재 토큰을 기준으로 다른 토큰들과의 관계를 묻는(질의하는) 주체 벡터
    • Key 벡터: Query의 질의 대상이 되며, 유사도(어텐션 가중치)를 계산하기 위한 식별자 벡터
    • Value 벡터: 어텐션 가중치에 따라 가중합되는 토큰의 실질적 정보 벡터
  • 인코더 과정에서 현재 위치의 토큰이 다른 토큰들과 얼마나 연관되어 있는지 점수를 계산한다.
    • 어떤 토큰과 가장 연관성이 높은지 어텐션 분포를 도출한다.

Positional encoding

  • attention은 기존 RNN, LSTM과는 달리 시간적 연속성을 다루지 않는다.
  • 그럼에도 불구하고 단어를 처리할 때 단어의 위치 정보가 필요하기 때문에, 이를 보완하고자 positional encoding이 나왔다.

  • 그렇다면, 어떻게 위치 정보를 부여할 것인지에 대한 과제가 남아 있다.
  • positional encoding에서는 특수한 positional encoding $p_j$를 각 입력 벡터 $x_j$에 연결한다.
    • 함수 $pos$를 두어 d-dimensional vector안에 j번째 벡터를 처리한다.
    • $p_j=pos(j)$로 표현한다.
    • 이 과정은 attention layer에 들어가기 전에 진행된다.

Desiderata of pos(.)

  • $pos()$의 요구되는 조건은 다음과 같다.
  1. 각 timestep마다 하나의 유일한(unique) 인코딩 값을 출력해내야 한다.
  2. 서로 다른 길이의 문장에 있어서 두 timestep간 거리는 일정해야(consistent) 한다.
  3. 모델이 일반화가 되어서 더 긴 길이의 문장도 아무 문제없이 작동되어야 한다. 값들이 특정 범위 내에 있어야 한다.
  4. 결정론적(deterministic)이어야 하며, 동일한 위치 인덱스에 대해 항상 일관된 인코딩 값이 생성되어야 한다. 14

Options for pos(.)

  • $p(t)$에 Positional Encoding이 적용되어 사인(sin)과 코사인(cos) 주기 함수가 사용된다.
  • $p(t)$ 식은 다음과 같다.

    이미지 출처 15

  • sin, cos 조합으로 토큰의 순서 및 상대적 위치 정보를 표현한다.

Masked self-attention layer

  • 앞서 self attention의 encoder를 살펴보았다.
  • 하지만 decoder에서는 생성 시점 이후의 미래 토큰이 self-attention에 영향을 주지 않도록 Masked Self-Attention을 사용한다.
  • 가리고자(mask) 하는 미래 위치에 $-\infty$ 값을 더하여 softmax를 거치면 확률이 0이 되므로 attention 가중치에서 완전히 배제된다.
  • 즉, 디코더는 이전 시점까지 생성된 정보만을 바탕으로 자기 주의집중(self-attention)을 수행한다. 16

Multi-head self attention layer

  • Multi-Head Attention은 쿼리, 키, 밸류를 서로 다른 $h$개의 부분 공간(subspace)으로 독립적으로 선형 사영한 뒤 어텐션을 병렬 수행하고, 결과를 연결(concatenate)하여 선형 변환함으로써 다양한 관점의 문맥을 동시에 포착한다.

Example: CNN with Self-Attention

  • 위 그림은 cnn과 self-attention을 적용한 내용이다.

Attention is all you need

지금까지 살펴본 Seq2Seq와 어텐션 메커니즘, 그리고 Self-Attention과 Positional Encoding의 개념을 바탕으로, 이제 RNN을 완전히 배제하고 순수하게 Attention만으로 아키텍처를 구성한 트랜스포머(Transformer)의 전체 구조와 컴퓨터 비전으로의 확장(Vision Transformer)을 살펴본다.

  • 2017년 google에서 발표한 transformer는 rnn이나 lstm을 사용하지 않고 attention 만으로도 자연어 처리 모델을 학습할 수 있음을 보여주었다.
  • Transformer 모델은 인코더-디코더(Encoder-Decoder) 구조를 기반으로 앞서 살펴본 Self-Attention, Multi-Head Attention, Positional Encoding 등의 핵심 블록들이 유기적으로 결합되어 동작한다.
  • “attention is all you need” 논문 리뷰는 추후에 올리도록 하겠다.

Image Captioning using Transformers

  • Image Captioning 트랜스포머 모델 또한 인코더-디코더 어텐션 구조를 동일하게 따른다.
  • one-to-many 모델로, encoder에서 입력은 이미지 $I$, 출력은 시퀀스 $y=y_1,y_2,…,y_T$가 될 것이다.
  • $c=T_w(z)$은 encoder 식이다.
    • $c$ : context vector의 약어
      • context vector : 인코더가 입력 이미지 $I$를 받아 이해하고 만든 결과를 벡터화 17
    • $T_w(.)$ : transformer encoder 모델
    • $z$ : spatial CNN features

  • decoder는 encoder에서 생성한 context vector와 출력 시퀀스 $y_t$ 정보를 이용해 새로운 시퀀스를 내보내는 과정이다.
  • $y_t=T_D(y_{0:t-1}, c)$은 decoder 식이다.
    • $T_D(.)$ : transformer decoder 모델
  • 출력 시퀀스에서 [START]와 [END]를 지정해 한 블록 단위가 언제 시작하고 언제 끝나는지를 명시한다.
    • [END] 표시가 나올 때까지 decoder가 작동된다.

The Transformer encoder block

  • transformer의 encoder를 자세히 살펴본다.
  • N개의 encoder 블록을 만들어 놓는다.
    • In vaswani et al. 논문에서는 $N=6, D_q=512$로 설정했다.
  • 입력 시퀀스의 벡터화는 위치 정보를 포함하기 위해 positional encoding를 거친다.
  • Multi-head self-attention에서 서로 다른 표현 부분 공간(representation subspaces)의 정보에 동시에 주목할 수 있도록 모델 표현력을 확장한다. 18
  • Residual connection(잔차 연결)을 통해 신경망이 깊어져도 기울기 소실(Vanishing Gradient) 없이 그래디언트가 원활히 역전파되도록 돕는다.
  • 각 벡터마다 레이어 정규화(Layer Normalization)를 적용한다.
  • 다층 퍼셉트론(MLP)이 각 벡터마다 적용된다.
  • 그 전에 다시 Residual connection을 거쳐 성능을 향상시킨다.

  • transformer encoder block이 반복되는데, 여기서 각 레이어는 서로 다른 파라미터를 가진다.
  • transformer encoder는 높은 확장성(scalable), 높은 병렬성(parallel), 그렇지만 높은 메모리 사용량(memory usage)이 특징이다.

The Transformer decoder block

  • 다음은 트랜스포머의 decoder block 이다.
  • 구조를 보면 알겠지만, 대부분의 레이어가 encoder와 거의 같다는 걸 확인할 수 있다.

  • decoder에서 multi-head attention block은 transformer encoder에서 나온 출력값(output)들을 모두 어텐션한다.
    • 출력값은 context vectors이다.
    • 여기서, key(k), value(v), query(q)가 작동한다.
    • 즉, 디코더의 두 번째 Multi-Head Attention 블록은 Query는 디코더 이전 계층에서 받고 Key와 Value는 인코더의 최종 출력 컨텍스트 벡터로부터 전달받는 교차 어텐션(Cross-Attention)이므로 순수 Self-Attention이 아니다.

이미지 출처 19

  • 위 그림은 multi-head attention 구조를 좀 더 구체적으로 나타낸 것이다.
  • Scaled Dot-Product Attention 수식은 다음과 같다:
    • $\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$

      이미지 출처 20

Comparing RNNs to Transformer

  • transformer를 RNN과 비교해보면 다음과 같다.

RNN

  • Pros
    • LSTM은 긴 문장인 입력에 잘 작동한다.
  • Cons
    • 순서가 지정된 입력의 순서를 예상한다.
    • sequential computation : 이후의 hidden 상태는 이전 값이 끝난 후에만 계산할 수 있다.

Transformer

  • Pros
    • 긴 시퀀스에서 잘 작동한다. 각 attention 계산은 모든 입력을 살펴본다.
    • positional encoding을 이용하여 순서가 정해져있거나 정해져있지 않은 시퀀스에서 잘 작동한다.
    • parallel computation : 모든 입력에 대한 alignment와 attention은 병렬로 잘 수행된다.
  • Cons
    • $\mathcal{O}(N^2)$ 메모리 및 연산 복잡도: 시퀀스 길이 $N$에 대해 모든 토큰 쌍 간의 어텐션 맵($N \times N$)을 계산하고 저장해야 하므로 긴 시퀀스에서 GPU 메모리 소모가 급증한다.

Image Captioning using ONLY transformers

  • 트랜스포머 구조를 비전에 적용하면 합성곱(CNN) 없이도 시각적 특징을 학습할 수 있다.

  • 이미지를 패치(patch) 단위로 분할하여 1차원 토큰 벡터로 사영한 뒤, 자연어 단어 토큰과 동일한 방식으로 Self-Attention 계층에 입력한다.

  • Dosovitskiy et al.(2020)의 실험 결과에 따르면, JFT-300M 등 대규모 데이터셋으로 사전 학습된 Vision Transformer(ViT-H/14)는 기존 대표 CNN 모델(ResNet-152x4)의 ImageNet Top-1 정확도를 상회하는 88.55%를 기록하였다. 21

  • Vision Transformer의 연산 복잡도를 완화하고 데이터 효율성을 개선하기 위해 Swin Transformer, DeiT 등 다양한 후속 아키텍처가 제안되고 있다.

  • 위 실험 결과는 증류 토큰(Distillation Token)을 도입한 DeiT(Data-efficient Image Transformers)의 성능 비교이다. DeiT-B 모델은 대규모 사전학습 없이 ImageNet-1K 단독 학습만으로도 동등한 파라미터 수준의 EfficientNet 계열 CNN 모델과 대등하거나 높은 83.1%~85.2%의 Top-1 정확도를 달성하였다. 22

한계 및 트레이드오프

  • 이차 복잡도(Quadratic Complexity): Self-Attention 연산은 시퀀스 길이 $N$에 대해 $\mathcal{O}(N^2)$의 시간 및 메모리 복잡도를 가지므로, 고해상도 이미지 패치나 초장문 시퀀스 처리 시 하드웨어 메모리 병목이 발생한다.
  • 귀납적 편향(Inductive Bias) 부족: CNN 특유의 국소성(Locality) 및 이동 불변성(Translation Invariance) 가정이 배제되어 있어, 중소형 데이터셋(예: ImageNet-1K) 단독 학습 시 과적합 위험이 크고 대규모 데이터 사전학습이 요구된다.
  • 위치 정보의 불안전한 보존: 순열 불변성을 보완하기 위한 Positional Encoding은 상대적 기하 구조나 공간 변형을 충분히 반영하지 못하며, 사전 학습 시 정의되지 않은 가변 해상도 입력에 대해 보간(Interpolation) 오차가 유발될 수 있다.

핵심 정리

  • Seq2Seq와 병목 현상: 고정된 단일 컨텍스트 벡터로 가변 길이의 입력을 모두 압축하려던 기존 Seq2Seq 모델의 한계를 극복하기 위해, 디코더의 각 시점마다 입력 시퀀스를 동적으로 참조하는 어텐션(Attention)이 도입되었다.
  • 어텐션(Attention)의 동작 원리: 인코더의 은닉 상태와 디코더의 이전 은닉 상태 간의 유사도를 측정(Alignment Score)하고 Softmax를 거쳐 가중합을 계산함으로써 시점별 최적의 컨텍스트 벡터를 생성한다.
  • Self-Attention과 Q, K, V: 입력 시퀀스 자체로부터 Query, Key, Value를 사영하여 토큰 간의 상호 연관성을 계산하며, 합성곱이나 순환 신경망과 달리 전역적인 문맥(Global Context)을 한 번에 파악한다.
  • Positional Encoding과 Masking: 시간적 순서 정보가 없는 Self-Attention의 순열 불변성을 보완하기 위해 사인·코사인 함수 기반 위치 정보를 더해주며, 디코더에서는 미래 토큰 참조를 방지하기 위해 Masked Attention을 적용한다.
  • Transformer 아키텍처: RNN의 순차적(sequential) 연산을 탈피하여 완전 병렬화(parallel computation)를 구현하였으며, Multi-Head Attention과 Layer Normalization, Residual Connection을 결합해 깊은 네트워크를 안정적으로 학습시킨다.
  • Vision Transformer(ViT)의 도약: 이미지를 패치(patch) 단위로 분할하여 1차원 토큰 시퀀스로 변환함으로써, 합성곱 연산(CNN) 없이 순수 트랜스포머 구조만으로도 대규모 비전 과제에서 SOTA 성능을 달성할 수 있음을 입증했다.

References

  1. Stanford CS231n: Lecture 11 - Attention and Transformers (2017/2022) ↩

  2. [CS224n] Lecture 14 - Transformer and Self-Attention - tobigs-text1314 ↩

  3. Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention) - Jay Alammar ↩

  4. Visualizing Neural Machine Translation Mechanics: Hidden State Transfer - Jay Alammar ↩

  5. 1) 어텐션 메커니즘 (Attention Mechanism) - 딥 러닝을 이용한 자연어 처리 입문 ↩

  6. Neural Machine Translation by Jointly Learning to Align and Translate - Dzmitry Bahdanau et al. (ICLR 2015) ↩

  7. Sequence to Sequence with Attention - Incredible.AI ↩

  8. 어텐션 메커니즘과 transformer(self-attention) - platfarm tech team ↩

  9. Attention Mechanism in Neural Networks - FloydHub Blog ↩

  10. MLP 신경망 (Multi-Layer Perceptron) - 헬로월드! ↩

  11. Show, Attend and Tell: Neural Image Caption Generation with Visual Attention - Kelvin Xu et al. (ICML 2015) ↩

  12. Self-Attention과 Masked Self-Attention - AimB ↩

  13. 데이터 토큰 (문자열) - 해시넷 ↩

  14. positional encoding이란 무엇인가 - skyjwoo ↩

  15. Transformer Architecture: The Positional Encoding - Amirhossein Kazemnejad ↩

  16. [NLP] Transformer : Masked Multi-Head Attention - part3 - Acdong ↩

  17. Attention Mechanism이란? - inistory ↩

  18. [머신러닝/딥러닝] 10-3. Transformer Model - 손쓰 ↩

  19. Deep Learning Bible - wikidocs ↩

  20. Attention Is All You Need - Ashish Vaswani et al. (NeurIPS 2017) ↩

  21. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale - Alexey Dosovitskiy et al. (ICLR 2021) ↩

  22. Training data-efficient image transformers & distillation through attention - Hugo Touvron et al. (ICML 2021) ↩

댓글남기기