들어가며
이 글은 LG aimers 9기 온라인 학습 과정 강의를 수강한 후 공부한 내용을 정리한 글입니다
이번 글에서는 RNN 모델의 한계를 극복한 Transformer 모델과
Transformer 모델의 핵심 알고리즘인 Attention 메커니즘까지 알아볼 것이다
RNN의 한계를 극복한 LSTM이라는 모델이 나왔음에도
여전히 병렬 계산이 불가능하여 시간적으로 비효율적이고
아주 긴 문장에서는 앞의 정보가 소실되는 문제가 여전히 존재한다
이 문제를 해결하기 위해 병렬 계산이 가능한 Transformer 모델이 등장하였다
Seq2Seq
사실 transformer가 등장하기 전 여러 모델들이 연구되었다
그 중 하나가 Seq2Seq라는 모델인데
기본 형태의 RNN 모델은 입력과 출력이 1:1로 대응되므로
입력길이와 출력길이가 다르면 처리하기 어려워지는 문제가 발생한다(ex 번역, 요약 task)
이 문제를 해결하기 위해 Seq2Seq 모델이 제안되었다

Encoder-Decoder 구조의 모델이며
한국어를 영어로 번역하는 task를 예로 들면
Encoder 부분에서 한국어 문장을 순차적으로 RNN을 통해 입력으로 받아 context vector로 만든다
그리고 Decoder 부분에서 Context vector를 바탕으로 영어 단어를 하나 씩 생성하는 구조이다

조금 일반화해서 설명하자면
Seq2Seq은 Encoder RNN과 Decoder RNN 2개로 구성되어 있으며
Encoder RNN은 입력 문장을 Encoding하는 구조로 이루어져 있다
즉 input 문장을 이해하여 요약하는 역할을 수행하고
Encoder의 마지막 hidden state에 input을 이해하여 생긴 context vector가 만들어지고
이를 Decoder RNN에 넘겨줘서 context vector의 정보를 바탕으로 output을 출력하는 구조이다
하지만 seq2seq 모델에서도 RNN의 근본적인 문제가 여전히 해결되지 않은 상태로 있다
바로 input sequence length가 지나치게 길어지게 되면
앞선 부분을 잊어버리게되어 그 부분이 제대로 encoding이 안되어 있을 수 있다
Attention Mechanism
이 문제를 해결하기 위해 나온 것이 바로 Attention 메커니즘이다
attention 메커니즘의 아이디어는 Encoder의 모든 hidden state를 저장해두고 필요한 정보를 그때그때 가져오자는 것이다
Decoder에서 다음 단어를 생성할 때
이전 hidden state 정보(Si-1)와 이전 output(Yi-1) 그리고 context vector(Ci)가 필요하다

이 때 핵심은 context vector인데
Encoder hidden state들의 weighted sum으로 계산된다

αij는 attention weight이며 alignment score를 통해 계산되며
계산된 score를 softmax function에 적용시켜 αij를 구한다

alignment score 계산 식은 위와 같은데
이전 Decoder hidden state와 Encoder의 모든 hidden state와의 연관성을 측정하는 것이다
이후 만들어진 hidden state와 context vector를 이용하여 최종 단어를 생성하는 것이다
하지만 seq2seq에 attention을 결합한 구조이더라도 결국 RNN을 사용하는 것이기에
vanishing gradient problem이 여전히 존재하고
계산적인 측면에서 느리고 효율적이지 못한 문제가 있다
Transformer
이러한 RNN의 한계를 완전히 극복하고자
RNN과는 완전히 다른 새로운 구조를 가진 transformer가 나오게되었다
Transformer는 RNN을 아예 사용하지 않고 오직 attention만 활용한 self-attention이라는 개념에 기초한다
전체적인 architecture는 아래와 같다

Encoder 부분, Decoder 부분으로 구성되어 있고
Encoder 부분에서는 self-attention과 FFN를 하나의 layer로 구성하여 층층이 쌓일 수 있고
Decoder는 self-attention과 Enc-Dec Attention이라는 것과 FFD를 하나의 layer로 구성한 모습이다
Input 부분에 positional embedding이라는 과정을 거치는 것이 보이는데
transformer는 단어를 순차적으로 넣는 것이 아닌 한 번에 집어 넣으므로
어느 단어가 몇 번째 단어인지에 대한 정보가 없다
따라서 단어 위치에 대한 정보를 주는 과정을 positional embedding이라고 한다
Self-Attention
self-attention은 문장 속에서 서로 다른 위치에 있는 단어들이 맺고있는 관계를 병렬적으로 파악하여
단어의 representation을 업데이트 해나가는 과정이다
문장이 들어오면 이를 Query, Key, Value로 나누는 작업을 먼저 수행한다

Query는 말 그대로 질문을 나타내며
"지금 내가 어떤 정보를 찾아야하지?"를 나타내는 벡터로
현재 토큰 하나를 나타낸다
Key는 Query와 얼마나 관련있는지를 나타내는 벡터이며
문장 내의 모든 토큰으로 구성된다
질문에 답하기 위해 각 단어에 어느정도 주목해야하는지를 나타낸다
Value는 Query가 참고해야할 실제 정보를 제공하며
Key와 마찬가지로 모든 토큰으로 구성된다
위의 그림에서 볼 수 있듯이
Query, Key, Value는 각각 실제 단어 벡터 X와 가중치의 곱으로 생성된다
이후 Query와 Key를 Dot product와 softmax함수를 통해 일종의 중요도를 나타내는 가중치를 구하고
Value vector에 구한 가중치를 곱하여 가중합하면 Query에 대한 새로운 representation이 나오는 것이다

Multi-Head Attention
multi-head attention은 여러개의 self-attention을 병렬적으로 수행하고
서로 다른 representation을 결합하여 더 풍부한 정보를 학습하는 구조이다

각 head마다 중요하다고 생각되는 관점이 다 다르게 가중치가 학습되어
더 다양한 정보를 학습할 수 있는 것이다
Residual Connection

layer가 여러 개 쌓이다보면 정보 손실이 일어날 수 있고
학습 과정에서 gradient가 소실되는 문제도 일어날 수 있다
이 부분을 해결하기 위해 나온게 residual connection이며
attention과 FFN 과정 이후 출력에 입력을 한 번 더 더해주는 구조이다

이를 통해 기존 정보를 보존하면서 Attention과 FFN가 학습한 새로운 정보를 추가한다
또한 깊은 네트워크에서 안정적인 학습과 gradient가 원활하게 전달될 수 있도록 도와준다
Encoder-Decoder Attention(Cross Attention)
위의 Transformer의 architecture의 Decoder부분을 보면
Encoder처럼 Multi-head attention과 FFD가 있지만
추가적으로 Enc-Dec attention이 있는 것을 볼 수 있다
Enc-Dec attetion은 RNN attention의 아이디어를 계승한 것으로
Query는 Decoder의 hidden state를 가지고
Key, Value는 Encoder의 hidden state를 가지게된다
다시 말해서 Query는 Decoder의 Multi-head attention을 거친 representation으로 구성되고
Key와 Value는 Encoder의 output으로 나온 각 단어의 문맥 정보를 포함하는 representation으로 구성된다
이 부분에서 Decoder와 Encoder의 상호작용이 이루어진다는 점이 RNN attention과 성격이 비슷하다고 볼 수 있다

Transformer의 전체적인 architecture는 위와 같다
마치며
이번 글에서는 RNN의 한계를 극복하기 위한 seq2seq 모델과
seq2seq와 결합한 attention 메커니즘,
그리고 RNN의 근본적 문제 해결을 위한 transformer 모델까지 알아보았다
기본적으로 architecture 형태가 공부했던 것들 중 제일 복잡했으며
전체적인 흐름을 이해하는 것에서부터 시간을 굉장히 할애했다
하지만 사람들의 일상과 밀접하게 맞닿아있는 기술의 과정과 원리를 고민해보며
기술을 바라보는 시야를 넓힐 수 있었던 기회였다고 생각한다
'AI > Deep Learning' 카테고리의 다른 글
| [DL] 자연어처리 기초와 RNN (0) | 2026.07.30 |
|---|---|
| [DL] 신경망 규제 (1) | 2026.07.14 |
| [DL] 학습률 스케줄링 (0) | 2026.07.13 |
| [DL] 고속 옵티마이저 (0) | 2026.07.12 |
| [DL] 배치 정규화(batch normalization) (0) | 2026.07.11 |
