컴퓨터공학/Transformer

Transformer 이해하기

airoot 2024. 8. 21. 12:21

먼저 Transformer 개요 보기

 

오늘은 Transformer를 이해하는 시간을 가져보고자 한다. Transformer를 이해함으로서 인공지능 알고리즘에 대한 접근에 좀더 다가갈 수 있겠지만 이미 아는 바와 같이 Transformer 알고리즘을 구현해서 효과를 보기 위해서는 엄청난 양의 학습데이터와 학습시간(리소스)을 요구하기 때문에 사실상 구현은 가능하지만 효과를 보기는 쉽지 않다. 그럼에도 Trasformer 에 대해 이해의 관점으로 접근하고자 한다.

 

이해해야 하는 기본 내용은 "Attention Is All You Need"의 구성도이다.

1. 기본 용어 정리

  • Tensor(T) : 수학에서 사용하는 다차원 배열
  • Query(q) : 하나의 텐서. 입력의 단위
  • Weight(w) : 연산에서의 가중치. 하나의 Query의 정보를 어느 정도를 수용할 지를 결정한다.
  • Key(k) : 여기서는 Value의 대표값을 의미한다.
  • Value(v) : 대상이 되는 값
  • Weighted sum : Q1 X W1 + Q2 X W2 = SUM, 각 Query의 특성을 가중치(W)만큰 추출하여 합함. 결과적으로 각 Query의 특성이 가중치만큼 혼합된 텐서가 나온다. 이는 특성의 혼합을 뜻한다.
  • Inner product(내적) : Q1 · K1 = T1, 내적의 결과인 T의 특성은 Q와 K의 유사도이다. 특성이 유사하면 큰값이 나오고 유사하지 않으면 상대적으로 작은 값이 나온다

2. Embedding

입력 문장을 벡터로 변환하는 과정이다. 2017년 논문에서는 37,000개의 단어를 512차원의 벡터로 단어 임베딩을 사용하였다고 한다.

 

3. Attention

이해를 위해 여기서는 하나의 Q와 4개의 K를 사용한다.

여기에 가중치를 곱한다. (Weight for Query, Weight for Key, Weight for Value)

Query Keys Values
Q X Wq = Qq K1 X Wk = K1k
K2 X Wk = K2k
K3 X Wk = K3k
K4 X Wk = K4k
Value는 키를 그대로 사용한다.(Self-Attention)
K1 X Wv = K1v
K2 X Wv = K2v
K3 X Wv = K3v
K4 X Wv = K4v

 

이후 Q와 K의 내적(Q  · K)을 구한다. 즉 입력된 Query와 유사도가 높은 K 또는 V를 찾는다.

Qq  · K1k

Qq  · K2k

Qq  · K3k

Qq  · K4k

 

이에 대한 Weighted sum을 수행한다.

Qq X (exp(Qq  · K1k) / sum(exp( Qq  · Knk))) = Wqk1

다만  Weighted sum을 수행하기 위해 각 Knk가 양수여야 하고 Knk의 합이 1이어야 한다. 이를 위해 수행한다. exp(양수화), 각 Knk를 Knk의 합으로 나눈기를 수행한다.

 

최종적으로 Value들의 합을 구한다.

Wqk1 X K1v + Wqk1 X K2v + Wqk1 X K3v + Wqk1 X K4v = SUMq

* 이 과정에서 SUMq는 Knv의 모든 특성을 포함하게 되어 자연스럽게 문장에 대한 맥락정보를 얻게 된다.

 

4. Positional encoding

Attention에는 순서에 대한 정보가 없기 때문에 이 정보를 통합하여야 한다. 이를 위해 Attention전에 Positional encoding을 수행한다. 구조도의 아래 부분이다.

Positional encoding은 각 순서에 대한 벡터(Vn)를 정해주고 이를 더하는 방식을 사용한다.

Q1 + V1

Q2 + V2

Q3 + V3

     :

즉 텐서에 순서에 대한 특성을 추가하는 것이다.

실재 논문에서 위치 벡터(Vn)을 만들기 위해 사용한 공식은 아래와 같다.

 

5. Masking

Transformer의 학습과정에서 학습 데이터를 학습할 때 단어의 순서에 따라 학습시키기 위한 기술이다. 학습데이터는 전체 문장을 모두 가지고 있어 이를 통째로 학습하면 오히려 이를 찾는 것이 어렵게 된다. 따라서 학습 시 문장 내 단어의 순서에 따라 학습을 시키게 된다. 이는 구조도의 아래 부분이다.

참고로 문장의 위치나 순서를 정학히 하기 위해 입력 데이터에 [SOS]와 [EOS]의 특별 단어를 포함하여 처리한다.

 

Masking 처리는 Self-Attention 시에 Mask 필터를 추가하여 처리할 수 있다. 다음 예는 Q가 문장의 첫번째 단어인 경우의 예이다. K3k 이후의 가중치들은 가장 큰 음수로 지정함으로써 사실상 0으로 처리되게 한다.

기존 Self-Attention Masked Self-Attention
Qq  · K1k[SOS]
Qq  · K2k
Qq  · K3k
Qq  · K4k
Qq  · K1k[SOS]
Qq  · K2k
Qq  · -99999999.0
Qq  · -99999999.0

 

6. 합과 정규화

다중헤드의 아웃풋과 입력을 다시 합하고 이를 표준편차로 정규화하는 과정으로 학습 과정에서의 기울기 소실문제를 완화시키는 효과가 있고 기존 정보를 어느 정도 보존하면서 새로운 정보(어텐션)을 가미하는 효과가 있다.

 

7. Transformer의 알려진 문제점들

현재까지 알려진 기본 Transformer의 알려진 문제점들이 있고 이를 개선하기 위한 여러 논문들이 나오고 있다.

1) Limited Context Length

2) O(n2) memory complexity

3) Fixed Positional Encoding

 

8.  Transformer에서 느끼는 의문점

 Transformer는 입력된 문장들을 한꺼번에 처리하는 구조이다. 이는 인간의 지능과 방식이 다르다. 알다시피 인간은 연속적으로 들어오는 글자단위로 처리하는 방식이다. 즉  Transformer에서는 질문을 모두 입력하고 엔터를 눌러야 한다는 것이다.

하지만 우리가 번역을 할 때를 생각하면 실시간 번역보다는 문장단위의 번역이 품질이 더 높을 수 밖에 없다. 그래서 현재의 ChatGPT의 품질에 사람들이 만족해하는 것이다. 의문은 미래의 인공지능을 생각할 때  "Transformer의 방식이 미래 지향적인가?"이다. 실시간은 품질이 떨어지지만 보다 인간에 가깝고  Transformer는 비 실시간이지만 품질이 높으니 현재로서는 딜레마이다. 당장은 품질이 너무나 중요하다.

'컴퓨터공학 > Transformer' 카테고리의 다른 글

Vision Transformer  (1) 2024.10.19
Switch Transformer  (0) 2024.08.18
BERT(Bidirectional Encoder Representations from Transformers)  (0) 2024.08.18
GPT(Generative pre-trained transformer)  (0) 2024.08.18
Attention is All You Need  (0) 2024.08.18