
Transformer 구조는 현대 인공지능과 자연어 처리 분야를 이해하기 위해 반드시 알아야 할 핵심 개념이다. ChatGPT와 같은 대규모 언어 모델뿐 아니라 번역, 요약, 문서 검색, 코드 생성 등 다양한 AI 기술의 기반에도 Transformer가 사용된다.
Transformer의 핵심은 입력 문장을 순서대로 하나씩 처리하던 기존 RNN 방식에서 벗어나, 문장 전체를 한꺼번에 바라보면서 중요한 단어 관계를 계산한다는 점이다. 이때 사용되는 핵심 장치가 바로 Attention, 즉 어텐션 메커니즘이다. 어텐션은 문장 안의 각 단어가 다른 단어들과 어떤 관계를 맺고 있는지 계산하여, 더 정확한 문맥 이해를 가능하게 한다.
Transformer는 무엇인가
Transformer는 인코더-디코더 구조를 가진 시퀀스-투-시퀀스 모델이다. 쉽게 말해, 입력된 문장을 이해하는 부분과 그 이해를 바탕으로 새로운 문장을 생성하는 부분으로 나뉜다.
예를 들어 번역기를 생각하면 이해하기 쉽다. 영어 문장 “I am a student”가 입력되면, 인코더는 이 문장의 의미를 벡터 형태로 변환한다. 이후 디코더는 인코더가 만든 문맥 정보를 참고하여 “저는 학생입니다”와 같은 출력 문장을 한 단어씩 생성한다.
즉, 인코더는 입력을 이해하는 역할을 하고, 디코더는 이해한 내용을 바탕으로 결과를 생성하는 역할을 한다.

기존 RNN과 Transformer의 차이
기존 RNN 계열 모델은 문장을 순서대로 처리했다. 첫 번째 단어를 보고, 두 번째 단어를 보고, 그다음 단어를 보는 방식이다. 이 구조는 문장의 순서를 반영하기에는 자연스럽지만, 긴 문장을 처리할 때 앞부분 정보가 희미해지거나 병렬 처리가 어렵다는 한계가 있었다.
Transformer는 이 문제를 다르게 해결했다. 문장 전체를 한 번에 입력으로 받고, 각 단어가 문장 안의 다른 단어들과 얼마나 관련이 있는지를 Attention으로 계산한다.
예를 들어 “그 동물은 너무 피곤해서 길을 건너지 않았다”라는 문장에서 “그”가 무엇을 가리키는지 이해하려면 앞에 나온 “동물”과의 관계를 알아야 한다. Transformer는 Self-Attention을 통해 이런 단어 간 관계를 계산한다.
Encoder 구조: 입력 문장을 문맥 벡터로 바꾸는 과정
Transformer 인코더는 입력 문장을 받아 문맥이 반영된 벡터 표현으로 변환한다. 하나의 인코더 블록은 크게 두 부분으로 구성된다.
첫 번째는 Multi-Head Self-Attention이고, 두 번째는 Feed-Forward Network이다. 여기에 Residual Connection과 Layer Normalization이 더해져 학습이 안정적으로 이루어지도록 돕는다.
1단계: 임베딩과 위치 인코딩
Transformer는 단어를 그대로 이해하지 못한다. 먼저 단어를 숫자 벡터로 변환해야 한다. 이 과정을 임베딩이라고 한다.
예를 들어 “나는 학생이다”라는 문장이 있다면, “나는”, “학생”, “이다” 같은 토큰이 각각 고정된 크기의 벡터로 변환된다. 하지만 Transformer는 RNN처럼 순서대로 단어를 처리하지 않기 때문에, 단어의 위치 정보를 별도로 알려줘야 한다.
이때 사용되는 것이 Positional Encoding, 즉 위치 인코딩이다. 위치 인코딩은 각 단어가 문장 안에서 몇 번째에 있는지를 모델에 알려주는 역할을 한다. 단어 임베딩 벡터에 위치 인코딩 벡터를 더하면, 모델은 단어의 의미뿐 아니라 순서 정보까지 함께 사용할 수 있다.
2단계: Self-Attention으로 단어 간 관계 계산
Self-Attention은 Transformer의 핵심이다. 각 단어가 문장 안의 다른 단어를 얼마나 참고해야 하는지 계산하는 구조다.
Self-Attention에서는 각 단어 벡터로부터 세 가지 벡터를 만든다.
Query는 현재 단어가 무엇을 찾고 있는지를 나타낸다. Key는 다른 단어들이 어떤 정보를 가지고 있는지를 나타낸다. Value는 실제로 전달될 정보를 담고 있다.
Query와 Key의 유사도를 계산하면 현재 단어가 다른 단어들과 얼마나 관련이 있는지 알 수 있다. 이 점수를 Softmax로 변환하면 가중치가 되고, 이 가중치를 Value에 곱해 새로운 단어 표현을 만든다.
쉽게 말하면, Self-Attention은 각 단어가 문장 안의 다른 단어들을 참고하여 자신의 의미를 다시 구성하는 과정이다.
3단계: Multi-Head Attention으로 여러 관계를 동시에 본다
Transformer는 Attention을 한 번만 계산하지 않는다. 여러 개의 Attention Head를 병렬로 사용한다. 이것이 Multi-Head Attention이다.
하나의 Head는 가까운 단어 관계를 볼 수 있고, 다른 Head는 주어와 대명사의 관계를 볼 수 있으며, 또 다른 Head는 문장 전체의 의미 흐름을 볼 수 있다. 여러 Head가 서로 다른 관점에서 문장을 바라보기 때문에, 모델은 더 풍부한 문맥 정보를 얻을 수 있다.
이 구조 덕분에 Transformer는 단순히 단어의 나열을 처리하는 것이 아니라, 문장 안의 의미 관계를 입체적으로 파악할 수 있다.
4단계: Feed-Forward Network로 표현을 정제한다
Attention을 통과한 벡터는 Feed-Forward Network를 거친다. 이 단계에서는 각 단어 벡터를 독립적으로 변환하여 더 복잡한 특징을 추출한다.
Attention이 단어 간 관계를 반영하는 역할이라면, Feed-Forward Network는 각 단어 표현 자체를 더 정교하게 가공하는 역할이다.
이후 Residual Connection과 Layer Normalization이 적용된다. Residual Connection은 기존 입력을 다음 계산 결과에 더해 정보 손실을 줄이고, Layer Normalization은 학습이 안정적으로 진행되도록 돕는다.
이 과정을 여러 인코더 층에서 반복하면, 최종적으로 입력 문장의 의미와 문맥이 충분히 반영된 벡터들이 만들어진다.
Decoder 구조: 문맥을 바탕으로 출력을 생성하는 과정
디코더는 인코더가 만든 문맥 벡터를 참고하여 출력 문장을 생성한다. 번역 모델이라면 원문 문장의 의미를 바탕으로 번역문을 한 단어씩 만들어낸다.
디코더는 인코더와 비슷하지만, 중요한 차이가 있다. 디코더는 아직 생성되지 않은 미래 단어를 보면 안 된다. 그래서 Masked Self-Attention을 사용한다.
1단계: Masked Self-Attention
디코더는 출력을 한 번에 완성하지 않는다. 첫 번째 단어를 만들고, 그다음 단어를 만들고, 이런 식으로 순차적으로 생성한다.
예를 들어 “저는 학생입니다”라는 문장을 생성한다고 하자. “학생입니다”를 예측할 때는 앞에 나온 “저는”만 참고해야 한다. 아직 나오지 않은 뒤쪽 단어를 미리 보면 학습과 추론 구조가 맞지 않는다.
그래서 디코더의 Self-Attention에는 마스크가 적용된다. 현재 위치보다 뒤에 있는 단어는 Attention 계산에서 제외된다. 이를 통해 디코더는 이전에 생성된 단어만 참고하면서 다음 단어를 예측한다.
2단계: Cross-Attention으로 인코더 출력을 참고한다
디코더의 가장 중요한 부분은 Cross-Attention이다. Cross-Attention은 디코더가 인코더의 출력 정보를 참고하는 단계다.
구조적으로 보면 Query는 디코더에서 오고, Key와 Value는 인코더의 출력에서 온다. 즉, 디코더는 현재까지 생성한 문맥을 기준으로 입력 문장의 어느 부분을 참고해야 하는지 계산한다.
번역 예시로 보면, 디코더가 “학생”이라는 단어를 만들 때 인코더 출력 중 “student”에 해당하는 부분에 더 강한 Attention을 줄 수 있다. 이처럼 Cross-Attention은 입력 문장과 출력 문장 사이의 의미 정렬을 학습하는 역할을 한다.
3단계: Feed-Forward Network와 최종 단어 생성
Cross-Attention을 거친 디코더 벡터는 다시 Feed-Forward Network를 통과한다. 이후 Linear Layer와 Softmax를 거쳐 어휘집 전체에 대한 확률 분포가 만들어진다.
예를 들어 다음 단어 후보가 “나는”, “저는”, “우리는”이라면, Softmax는 각 단어가 선택될 확률을 계산한다. 가장 높은 확률을 가진 단어가 현재 시점의 출력으로 선택된다.
선택된 단어는 다시 다음 디코더 입력으로 들어간다. 이 과정을 종료 토큰이 나올 때까지 반복하면 최종 문장이 완성된다.
Encoder와 Decoder의 협력 흐름
Transformer의 전체 흐름은 다음과 같이 이해할 수 있다.
먼저 입력 문장이 토큰으로 나뉘고, 각 토큰은 임베딩 벡터로 변환된다. 여기에 위치 인코딩이 더해져 단어의 순서 정보가 반영된다.
그다음 인코더는 Self-Attention과 Feed-Forward Network를 반복하면서 입력 문장의 문맥 정보를 벡터에 녹여낸다. 이렇게 만들어진 인코더 출력은 입력 문장의 의미를 압축한 표현이라고 볼 수 있다.
디코더는 시작 토큰에서 출발해 이전까지 생성한 단어를 참고한다. 동시에 Cross-Attention을 통해 인코더 출력을 확인하면서 입력 문장의 어느 부분에 집중해야 할지 판단한다.
마지막으로 Softmax를 통해 다음 단어를 선택하고, 이 단어를 다시 입력으로 넣어 다음 단어를 생성한다. 이 반복 과정이 끝나면 최종 출력 문장이 만들어진다.
Transformer 구조를 이해할 때 중요한 핵심
Transformer를 이해할 때 가장 중요한 개념은 세 가지다.
첫째, 인코더는 입력 문장을 문맥 벡터로 변환한다.
둘째, 디코더는 인코더의 문맥 벡터와 이전 출력 단어를 참고하여 다음 단어를 생성한다.
셋째, Attention은 단어와 단어 사이의 관계를 계산하여 어떤 정보에 집중할지 결정한다.
이 세 가지를 이해하면 Transformer의 전체 구조를 훨씬 쉽게 파악할 수 있다.
정리
Transformer 구조는 단순히 복잡한 딥러닝 모델이 아니라, 문장 안의 관계를 계산하고 문맥을 반영하여 새로운 출력을 생성하는 구조다. 인코더는 입력을 이해하고, 디코더는 그 이해를 바탕으로 결과를 만들어낸다. 그리고 이 둘을 연결하는 핵심 장치가 Attention이다.
기존 RNN이 순서 중심으로 문장을 처리했다면, Transformer는 관계 중심으로 문장을 이해한다. 이 차이가 자연어 처리 성능을 크게 끌어올렸고, 이후 BERT, GPT, T5와 같은 다양한 언어 모델의 기반이 되었다.
Transformer를 학습할 때는 수식부터 외우기보다 흐름을 먼저 잡는 것이 중요하다. 입력이 벡터로 바뀌고, Self-Attention으로 문맥을 반영하며, Cross-Attention으로 입력과 출력을 연결하고, Softmax로 다음 단어를 선택한다. 이 흐름을 이해하면 LLM, RAG, AI Agent 구조를 공부할 때도 훨씬 탄탄한 기반을 만들 수 있다.

'✍️ 텍스트 생성 AI > 자연어 처리 (NLP)' 카테고리의 다른 글
| 자연어 처리(NLP) - Word2Vec 와 Sentence-Transformers (0) | 2026.05.10 |
|---|---|
| 형태소분석 - KoNLPy 사용하여 한국어 자연어 처리 (0) | 2026.05.08 |
| 토큰화와 임베딩 - LLM이 언어를 이해하는 방식 (0) | 2026.05.08 |
| Seq2Seq 모델 - Encoder와 Decoder 구조 이해 (0) | 2026.05.08 |
| 순환신경망 RNN - 텐서플로 코드로 동작 원리 쉽게 이해 (0) | 2026.05.08 |