[Home] AI로 돌아가기

🔗 관련 문서: Wikipedia - 트랜스포머

트랜스포머[YouTube]Transformer

01. 트랜스포머의 등장 배경

트랜스포머(Transformer)란 이름을 사용하였을까? 이 모델의 주요 목적이 입력 시퀀스출력 시퀀스로 변환하는 것이었다. 특히 기계 번역에서 영어 문장독일어 문장으로 변환하는 작업을 수행하기 때문에 "변환기(transformer)"라는 의미가 적합했다.

트랜스포머(Transformer)는 2017년 구글 연구팀이 발표한 논문 "Attention is All You Need"에서 처음 소개된 딥러닝 모델 구조이다. 이전까지 자연어 처리 분야를 지배하던 순환신경망(RNN)장단기 메모리(LSTM)의 한계를 극복하기 위해 개발되었다. 현재 모든 인공지능 모델에서 사용되는 기본 모델이다.

순환신경망(RNN)의 주요 문제점은 다음과 같았다.

트랜스포머는 이러한 문제를 어텐션 메커니즘(Attention Mechanism)만으로 해결하여, 순환 구조 없이도 문맥을 이해할 수 있는 혁신적인 구조를 제시했다.


02. 트랜스포머의 구성요소

2.0 개요

...
트랜스포머 구조도
출처: https://doi.org/10.3390/a18070414
원출처: Vaswani, A.; Shazeer, N.; Parmar, N.; Uszkoreit, J.; Jones, L.; Gomez, A.N.; Kaiser, L.; Polosukhin, I. Attention Is All You Need. arXiv 2017, arXiv:1706.03762.

트랜스포머 구조 구성요소
➀ 2.1 임베딩(Embedding)
➁ 2.2 위치 인코딩(Positional Encoding)
➂ 3.1 인코더(Encoder)
    - 4.2 셀프 어텐션(Self-Attention)
    - 피드포워드 신경망(Feed-Forward Network, FFN)
➃ 3.2 디코더(Decoder)
    - 4.4 마스크드 셀프 어텐션(Masked Self-Attention)
    - 4.1 인코더-디코더 어텐션(Encoder-Decoder Attention)
    - 피드포워드 신경망(Feed-Forward Network, FFN)
➄ 5. 예측(Prediction)


2.1 임베딩(Embedding)

임베딩이란 단어(Token) 형태의 데이터를 수치로 변환하는 것을 말한다.


...
Example of word embedding representation
출처: DOI:10.1556/2062.2022.00576

2.2 위치 인코딩(Positional Encoding)

위치 인코딩이란 단어 사이의 순차성을 반영하기 위한 기법이다.

트랜스포머는 순환 구조가 없기 때문에 단어의 순서 정보가 자동으로 반영되지 않는다. 따라서 위치 인코딩(Positional Encoding)을 통해 각 단어의 위치 정보를 명시적으로 추가해야 한다.


... ...
워드 임베딩 + 위치 인코딩 = 최종 임베딩
출처: https://youtu.be/a_-YgMO0u0E

주기함수를 활용하여 positional encoding 구성한다.

공식:

1) 차원의 순서가 짝수일 때 (0, 2, 4, ...)

$$PE(pos, i) = \sin\!\left(\frac{pos}{10000^{\frac{2k}{d_{model}}}}\right),\quad \text{if } i=2k\ \ (k=0,1,\ldots)$$

2) 차원의 순서가 홀수일 때 (1, 3, 5, ...)

$$PE(pos, i) = \cos\!\left(\frac{pos}{10000^{\frac{2k}{d_{model}}}}\right),\quad \text{if } i=2k+1\ \ (k=0,1,\ldots)$$

여기서


...
출처: https://youtu.be/a_-YgMO0u0E

위치 인코딩(Sinusoidal position encoding) 특징

...
모든 타임스텝에 대한 위치 임베딩의 내적(Dot product)
출처: https://kazemnejad.com/blog/transformer_architecture_positional_encoding/

03. 트랜스포머의 구조

3.0 개요

트랜스포머는 크게 인코더(Encoder)디코더(Decoder)라는 2개의 주요 블록으로 구성된다. 각각은 여러 개의 동일한 층(layer)이 쌓여 있는 구조이다.

겉으로 보면 기존의 Seq2Seq(인코더-디코더) 구조와 비슷해 보이지만, 내부에서는 RNN 없이도 더 유연하고 강력하게 문장을 처리할 수 있는 비밀이 숨어 있다.

... ...
Transformer는 Encoders-Decoders 구조로 구성된다.

...
실제 Encoders와 Decoders는 다음과 같다.
  1. N개의 모듈(Encoder)로 구성되며, 각 모듈의 구조는 동일
  2. 각 모듈(Encoder)의 파라미터는 다름
  3. 이전 모듈의 output이 다음 모듈의 input이 됨 (단, 맨 처음은 입력값)
출처: https://jalammar.github.io/illustrated-transformer/

...
Transformer는 Encoder-Decoder로 구성
출처: https://youtu.be/a_-YgMO0u0E

3.1 인코더(Encoder)

인코더는 입력 문장을 받아 의미를 파악하고 표현하는 역할을 한다. 각 인코더 층의 구조는 동일하며, 다음 두 가지 구성 요소를 포함한다.

  1. 멀티-헤드 셀프 어텐션(Multi-Head Self-Attention)
    입력 문장의 각 단어가 다른 모든 단어들과의 관계를 파악한다.
  2. 피드포워드 신경망(Feed-Forward Network, FFN)
    각 위치에 독립적으로 적용되는 완전연결 신경망이다.

각 하위 층 주변에는 잔차 연결(Residual Connection)층 정규화(Layer Normalization)가 적용되어 학습 안정성을 높인다.

...
각 인코더(Encoder)의 구조는 동일하다.
출처: https://jalammar.github.io/illustrated-transformer/

...
Encoder 구조도
(출처: https://youtu.be/a_-YgMO0u0E)

...
"나는 학생 이다"를 번역하는 Encoder 과정
(출처: https://youtu.be/a_-YgMO0u0E)

3.2 디코더(Decoder)

디코더는 인코더의 출력을 받아 목표 문장을 생성하는 역할을 한다. 각 디코더 층의 구조는 동일하며, 다음 세 가지 주요 구성 요소를 포함한다.

  1. 마스크드 멀티-헤드 셀프 어텐션(Masked Multi-Head Attention)
    현재 위치 이전의 단어들만 참조할 수 있도록 제한한다.
  2. 인코더-디코더 어텐션
    인코더의 출력과 디코더의 현재 상태 간의 관계를 파악한다.
  3. 피드포워드 신경망(Feed-Forward Network, FFN)
    인코더와 동일한 구조의 완전연결 신경망이다.
...
각 인코더(Encoder)의 구조는 동일하다.
출처: https://jalammar.github.io/illustrated-transformer/

...
Decoder 구조도
(출처: https://youtu.be/a_-YgMO0u0E)

04. 어텐션 메커니즘

4.1 어텐션(Attention)


어텐션(Attention)은 트랜스포머의 핵심 메커니즘으로, "어떤 정보에 집중해야 하는가"를 학습하는 방법이다. 트랜스포머는 스케일드 닷-프로덕트 어텐션(Scaled Dot-Product Attention)을 사용한다.

스케일드 닷-프로덕트 어텐션:
\[ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V \]

여기서:


...
어텐션(Attention): 인코더-디코더 어텐션(Encoder-Decoder Attention) (출처: https://youtu.be/a_-YgMO0u0E)

4.2 셀프 어텐션(Self-Attention)

셀프 어텐션(Self-Attention)이란 이름을 사용했을까?


셀프 어텐션은 같은 문장 내의 단어들 간의 관계를 계산하는 어텐션이다. 예를 들어, "그는 학교에 갔다. 그는 공부했다"라는 문장에서 두 번째 "그는"이 첫 번째 "그"와 관련이 있음을 파악할 수 있다.

셀프 어텐션의 장점:

헤드 어텐션:
\[ \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) \]

...
"나는"에 해당하는 특징 벡터(\(z_1\))를 구하는 과정
(출처: https://youtu.be/a_-YgMO0u0E)
  1. Query Encoder 벡터(1x2) \(q_1 = x_1 W_E^Q\) = Embedding 벡터(1x4) \(x_1 \) \(\times\) Query 벡터(4x2) \( W_E^Q \)
  2. Attention Score = Query Encoder 벡터(1x2) \(q_1\) \( \cdot \) Key Encoder 벡터(1x2) \(k_1\)
  3. Scaled Attention Score = Attention Score / numbe of heads
  4. \( \text{softmax} \left(\frac{q_1 \cdot k_1}{\sqrt{d_k}}\right) = \) 각각 0.952, 0.047, 0.000이다.
  5. 수정 Value 벡터 \( v_1' \)= \( \text{softmax} \left(\frac{q_1 \cdot k_1}{\sqrt{d_k}}\right) \times \) Value 벡터(1x2) \(v_1\)
  6. 특징 벡터(1x2) \(z_1 \) = 수정 Value 벡터의 합 \( \sum{v'_i}\)

4.3 멀티-헤드 어텐션(Multi-Head Attention)

트랜스포머는 하나의 어텐션만 사용하는 것이 아니라, 여러 개의 어텐션을 병렬로 수행하는 멀티-헤드 어텐션을 사용한다. 이를 통해 다양한 관점에서 문맥을 파악할 수 있다. 예를 들어, 8개의 헤드를 사용한다면 각 헤드에서부터 서로 다른 측면(문법적 관계, 의미적 유사성, 위치 관계 등)을 학습할 수 있다.


...
싱글-헤드 어텐션 (Single-Head Attention) 예시
Encoder에서 "it"이라는 단어를 Encoding하는 동안, 주홍색 Attention 헤드에서 일부는 "The Animal"에 집중했고, 그 표현의 일부를 "it"의 Encoding에 포함시켰다.
(출처: https://jalammar.github.io/illustrated-transformer/)

...
멜티-헤드 어텐션 (Single-Head Attention) 예시
멀티-헤드 어텐션은 여러 개의 머리를 가진 괴물(The Beast With Many Heads, 말하자면, 여러 생각을 갖는 ADHD)이다.
2개-헤드 Encoder에서 "it"이라는 단어를 Encoding하는 동안, 첫 번째 주홍색의 Attention-Head는 "The Animal"에 집중했고, 두 번째 녹색의 Attention-Head는 "tire"에 집중했다.
즉, 이 모델은 "it"이라는 단어를 표현하는 방식에는 "The Animal"과 "tire"라는 두 가지 의미의 표현이 모두 포함되었다.
(출처: https://jalammar.github.io/illustrated-transformer/)
멀티-헤드 어텐션:
\[ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O \]
\[ \text{head}_i = \text{Attention}(QW_i^Q, KW_i^K, VW_i^V) \]

...
"나는 학생 이다"에 해당하는 최종 특징 벡터(\(Z\))를 구하는 과정
최종 특징 벡터(\(Z\)) = Self-Attention Score 벡터(\(S\)) \( \times \) Value 벡터(\(V\))
(출처: https://youtu.be/a_-YgMO0u0E)

...
싱글-헤드에서 Q-K-V에 대해 멀티 필터(가중치 행렬)를 사용하여 멀티-헤드로 확장하는 과정
CNN에서는 서로 다른 필터 사용
(출처: https://youtu.be/a_-YgMO0u0E)

...
멀티-헤드 어텐션 (Multi-Head Attention) 과정 요약
  1. 자연어 문장인 "Thinking Machines"을 입력
  2. 워드 임베딩 + 위치 인코딩 → Embedding 벡터(2x4) \(X\)
  3. 8개의 멀티-헤드를 사용한 8개 Q/K/V Encoder 벡터(2x3) \(Q, K, V \)생성
    \(Q_0 = X W_0^Q = X \times \) Query 벡터(4x3) \( W_0^Q \)
      \( \cdots \)
    \(Q_7 = X W_7^Q = X \times \) Query 벡터(4x3) \( W_7^Q \)
  4. Attention 벡터 (2x3) \( V_i' \) 생성
    \( V_0' \)= \( \text{softmax} \left(\frac{Q_0 K_0^T}{\sqrt{d_k}}\right) \times V_0\)
      \( \cdots \)
    \( V_7' \)= \( \text{softmax} \left(\frac{Q_7 K_7^T}{\sqrt{d_k}}\right) \times V_7\)
  5. 특징 벡터 (2x3) \( Z_i \) 생성
    \( Z_0 \)= 수정 Value 벡터의 합 \( \sum{V'_0}\)
      \( \cdots \)
    \( Z_7 \)= 수정 Value 벡터의 합 \( \sum{V'_7}\)
  6. 특징 벡터 \( Z_i \)에 가중치 \(W_i^0 \)를 곱해 최종 특징 벡터 (2x4) \( Z \) 생성
    \( Z = \sum_{i=0}^{7} Z_i W_i^0 \)
(출처: https://jalammar.github.io/illustrated-transformer/)

4.4 마스크드 셀프 어텐션(Masked Self-Attention)

문장을 한 단어씩, 미리 보지 않고 추측하는 방법을 누군가에게 가르친다고 가정해 보자. 세 번째 단어를 예측할 때는 첫 번째와 두 번째 단어만 볼 수 있고, 앞으로 나올 단어(네 번째, 다섯 번째…)는 볼 수 없다. 이것을 마스킹(Masking)이라고 한다. 미래를 숨기거나 차단하는 것이다. 이렇게 하면 모델이 미래를 미리 보는 부정행위를 하는 것을 방지할 수 있다.

{Q} 미래 시점에 대해 마스킹하는 이유는?
모델은 순차에서 선행하는 단어에만 중요도를 부여하여, 이전 예측 단어를 기반으로 올바른 예측 단어를 생성하도록 학습하기 위함이다.


... ...
디코더(Decoder): 마스크드 셀프 어텐션(Masked Self-Attention) (출처: https://youtu.be/a_-YgMO0u0E)

05. 예측(Prediction)


...
디코더(Decoder): 예측(Prediction) (출처: https://youtu.be/a_-YgMO0u0E)

06. 트랜스포머의 응용과 변형 모델들

6.1 응용

트랜스포머는 자연어 처리 분야에서 혁명적인 성과를 가져왔으며, 현재 다양한 분야에서 활용되고 있다.

(1) 자연어 처리

(2) 컴퓨터 비전

Vision Transformer(ViT)는 이미지를 패치로 나누어 트랜스포머에 입력함으로써, 기존 CNN 방식을 능가하는 성능을 보여주었다.

(3) 멀티모달

텍스트, 이미지, 음성 등 여러 형태의 데이터를 동시에 처리하는 멀티모달 모델에서도 트랜스포머가 활용된다. CLIP, DALL-E 등이 대표적인 예이다.


6.2 변형 모델들

트랜스포머 구조를 기반으로 다양한 변형 모델들이 개발되었다.

(1) BERT(Bidirectional Encoder Representations from Transformers)

구글이 개발한 모델로, 트랜스포머의 인코더만 사용한다. 양방향으로 문맥을 이해하여 텍스트의 깊은 의미를 파악한다. 문장의 빈칸 채우기(Masked Language Model) 방식으로 사전학습된다.

(2) GPT(Generative Pre-trained Transformer)

OpenAI가 개발한 모델로, 트랜스포머의 디코더만 사용한다. 이전 단어들을 바탕으로 다음 단어를 예측하는 방식으로 학습되며, 뛰어난 텍스트 생성 능력을 보인다. GPT-3, GPT-4 등으로 발전했다.

(3) T5(Text-to-Text Transfer Transformer)

모든 NLP 작업을 텍스트-투-텍스트 문제로 통일한 모델이다. 번역, 요약, 분류 등 모든 작업을 동일한 형식으로 처리한다.

(4) 기타 변형 모델


07. 트랜스포머의 핵심 요약

트랜스포머는 현대 인공지능의 핵심 구조로 자리잡았으며, ChatGPT, Claude, Gemini 등 최신 언어 모델들의 기반이 되고 있다. RNN의 한계를 극복하고 Attention 메커니즘만으로 강력한 성능을 달성함으로써, 자연어 처리와 인공지능 분야의 패러다임을 완전히 바꾸어 놓았다.


00. 학습자료

[YouTube]

[핵심 머신러닝] Transformer (52분, 고려대 김성범 교수)

[Blog]