Deep Learning/Transformer

[Transformer] Transformer 왜 개발함?

MongTae 2025. 1. 30. 01:14

 

Motivation of Transformer

Transformer는 왜 개발됨?

  • 기존 LM(Language Model)에서 발생하는 문제점을 해결하기 위해서 고안.
  • 기존 RNN 기반 모델에서는 인코더에서 계산한 결과가 고정된 길이의 Context Vector로 압축되어 정보를 담아내다보니 정호가한 정보를 담아내지 못함. 이러한 문제를 해결하기 위해서 Transformer 개발함.
  • 또한 RNN 기반의 LLM(Large Language Model)은 Long term dependency 문제가 있음. Long term dependency는 긴 문장에서의 각 토큰 간의 상호 의존성에 문제가 있음. 문장이 길 경우 앞쪽의 단어들은 잊어버리는 문제점이 있었음.
  • 즉, RNN 기반의 언어 모델에는 두 가지 한계가 있음. 1) 문장이 길수록 정보를 더 많이 잃어버림. 모든 정보를 하나의 고정된 크기의 벡터로 압축하기 때문에 정보 손실이 발생함. 2) 기울기 소실(Gradient vanishing) 문제. 역전파에서 미분한 값이 0에 가까우면 학습이 되지 않게 되버리면서 문제가 발생함.

 

 

다시 한 번..

1. RNN에서 왜 기울기 소실이 발생함?

  • RNN은 이전 상태(Hidden state)를 계속 전달하면서 학습하는 구조임. 그런데 시퀀스 길이가 길어질수록 역전파(backpropagation) 할 때 기울기가 작아짐. 이게 바로 기울기 소실 문제임.
  • 왜 작아지냐고? 활성함수(sigmoid, tanh) 때문임.

Sigmoid 활성함수가 문제임 이유.

  • Sigmoid 함수의 미분(기울기)이 0 ~ 0.25 사이로 매우 작음.
  • 예를 들어, 0.1 같은 작은 값이 계속 곱해지면? → 기울기가 0으로 수렴함.
  • 이러면 역전파할 때 초반 레이어까지 기울기가 전달되지 않음 → 가중치 업데이트가 안 됨 → 장기 의존성 문제가 발생

그러면 다른 활성함수 쓰면 해결되는 거 아님?

  • ReLU 같은 걸 쓰면 기울기 소실 문제는 좀 덜함.
  • 하지만 RNN은 기본적으로 순차적으로 연산을 수행하는 구조라, 병렬처리가 안 됨.
  • 이게 Transformer를 만들어야 했던 진짜 이유임.

 

2. 왜 Transformer가 나왔냐?

1️⃣ 병렬처리 불가능 문제

  • RNN은 순차적이라 병렬처리가 안 됨.
  • 문장 길이가 길어지면 학습 속도 엄청 느려짐.

2️⃣ 기울기 소실 문제를 해결해도 '장기 의존성' 문제가 남아있음.

  • LSTM이나 GRU 같은 거 써도, 결국 긴 문장에서 처음 단어와 마지막 단어 간의 연관성 학습이 어려움.

3️⃣ Self-Attention의 등장

  • 한 번에 전체 문장을 보면서 학습 가능 → 병렬 처리도 가능.

 

 3. Transformer vs RNN 정리

구분 RNN Transformer
활성함수 Sigmoid, Tanh ReLU, Softmax
기울기 소실 O (발생함) X (없음)
병렬처리 X (불가능) O (가능)
장기 의존성 X (잘 안 됨) O (Self-Attention으로 해결)
속도 느림 빠름

 

 

4. 결론

  • "기울기 소실 = Sigmoid 때문" → 맞긴 한데, 활성함수 바꾼다고 RNN이 갑자기 좋아지진 않음.
  • Transformer는 기울기 소실 문제뿐만 아니라, 병렬화랑 장기 의존성 문제까지 해결하려고 나온 거임.
  • 그래서 요즘 자연어 처리(NLP)에서 RNN은 거의 안 쓰고 Transformer 기반 모델(GPT, BERT 등)을 씀.

Transformer가 그냥 뜬 게 아니고, RNN의 "기울기 소실 + 병렬처리 불가 + 장기 의존성 문제" 3가지 문제를 한 방에 해결하려고 나온 거라고 보면 됨.