안녕하세요! 이번 포스팅은 이전 포스팅에서 예고한대로 Encoder와 Decoder에 대해서 포스팅을 진행해볼까합니다.
이번 포스팅은 이전 포스팅에서의 Attention에 대한 이해가 기본이해가 선행되면 더욱 재밌게 보실 수 있습니다. 앞선 포스팅을 먼저 읽고 오시는 것을 추천드립니다!
https://coding-review.tistory.com/626
Attention is All You Need, Transformer의 시작
안녕하세요! 이번 포스팅에선 AI 이론 포스팅의 시작점이 되는 포스팅으로써 여태까지 공부했던 AI 이론을 하나의 흐름으로 꿰기위해 꼭 필요한 포스팅입니다. 들어가기 앞서 이 분야를 연구원
coding-review.tistory.com
https://coding-review.tistory.com/627
기획자에겐 그림판을, 개발자에겐 메모장을 쥐어줬다 (MHA, MQA, GQA)
안녕하세요! 조금 자극적인 제목으로 인사드립니다. 저번 포스팅에선 Attention 레이어, 그 중에서도 Q, K, V의 연산 과정 하나에 관한 내용을 포스팅했습니다. 그래서 이전 포스팅을 통해 Q, K, V가
coding-review.tistory.com
그럼 본격적으로 시작해보도록 하겠습니다!
Encoder와 Decoder
Encoder와 Decoder는 Q, K, V에 대한 이해가 있으면 이해하기가 너무 쉽습니다. 이 둘의 차이는 각 토큰이 어느 범위까지 볼 수 있느냐에 있습니다.
Encoder는 일반적으로 입력 문장의 모든 토큰을 양방향으로 모두 볼 수 있습니다.
예를 들어서 다음과 같은 문장이 있습니다.
"나는 은행에서 돈을 찾았다"
Encoder의 눈에는 "은행"토큰이 "나는"이라는 토큰도 볼 수 있고 "에서"라는 토큰도 볼 수 있습니다. 이거 뭐 볼 수 있으면 뭐가 좋은데요싶지만 Decoder의 설명을 들으시면 더 이해가 쉬울겁니다.
Decoder는 다음 토큰을 생성하는 입장입니다. 그렇기 때문에 뒤에 있는 미래의 토큰을 볼 수 없죠. 만약 "나는 은행에서"까지 입력이 되었다면 Decoder는 지금까지 등장한 토큰만을 이용해서 다음에 올 토큰을 예측해야됩니다.
Transformer 알고리즘 원 논문인 "Attention Is All You Need" 에서는 Encoder와 Decoder가 모두 등장합니다. 하지만 텍스트를 찍어야하는 LLM 입장에선 Encoder의 개념이 방해물이 되었습니다.
문제집을 풀어야되는데 문제지 뒤에 있는 답을 다 보고 문제를 찍는 것과 다를게 없어서 학습이 의미가 없어지는 현상이 생겼기 때문입니다.
그래서 LLM은 Decoder만을 가지고 있는 Decoder Only 모델이 되었습니다.
그래서 LLM은 학습할 때도 미래의 정답을 미리 보는 일이 없도록 Causal Mask라는 것을 사용합니다.
여기서 유추할 수 있는 사실은 Transformer는 공통 조상인 것이고 LLM이 하위 개념이라는 것이죠. 즉, Decoder Only 모델이 바로 LLM이고 Encoder Only도 존재합니다. Encoder Only에 대해서는 조금 뒤에 마저 설명하도록 하죠.
Decoder Only 모델에서 답변을 생성할 때 현재까지 입력된 모든 토큰이 각각 K/V를 제공합니다. 여기서 복습!
Q는 토큰을 뱉어야되는 놈, K/V는 토큰을 뱉기위한 정보를 가지고 있는 놈이었습니다.
그러니까 Decoder Only에서 입력된 모든 토큰이 각각 K/V를 제공한다는 말은 Q(토큰 뱉는 놈)가 K/V(정보 갖고있는 놈)의 정보를 갖고있어야되니 이 말은 "자기가 뱉은 토큰을 다시 입력으로 집어넣는다" 라는 뜻이 됩니다.
Encoder Model, Decoder Model
Encoder Only Model
우리는 앞서 Decoder Only 모델인 LLM을 알아봤죠? 이번엔 Encoder Only에 대해서도 알아보죠.
Encoder가 앞뒤 맥락을 모두 볼 수 있다는 것은 어떤 의미를 가지냐하면 모든 토큰과 상호작용 하면서 모든 토큰들의 맥락을 잡아낼 수 있다는 것이 핵심입니다.
토큰이 어떤 의미인지 맥락을 통해 알고 있고 이 토큰에 속성 혹은 의미를 부여해주는 모델!
맞습니다. 바로 "임베딩 모델"입니다.
임베딩 모델이 전형적인 Encoder Only 모델로서 LLM과는 전혀 다른 궤를 가지는 LLM과는 형제 모델이 되는 것이죠. Transformer는 부모격이고 LLM과 임베딩 모델이 형제로 존재하는 것이죠.
흔히 알려진 임베딩 모델은 BERT 모델인데요. 이 BERT모델의 자식이 존재합니다. 바로 classifier model입니다. 번역하면 "분류모델"이죠.
임베딩 모델은 엄밀히 말하면 "문장을 보고 벡터를 뱉는 모델"이라고 정의할 수 있습니다.
그리고 이 벡터값에 슬며시 decision head라는걸 붙이면 바로 분류모델이 됩니다.
저는 요즘 핫한 Jev가 바로 이쪽 모델이지않을까 조심스럽게 예측을 하고 있는데요. 어떤 형태의 모델인지 왜 공개를 안하는건지 잘 모르겠지만... 아무래도 보이는 형태는 mmBERT 계열인 것같고 분류모델의 한 종류인 것 같습니다.
다만 전통적인 classifier model이 이미 학습된 class 안에서만 분류가 되는 것과 다르게 Jev의 경우는 동적으로 이 class를 부여할 수 있다는 점이 특별한 부분이지만 이마저도 공개된지 며칠만에 오픈소스로 비슷한 모델이 등장한걸 보면 이세상에 없는 개념을 가지고 오픈한건 아닌것 같습니다.
Encoder-Decoder Model
이렇게 Only 모델이 있는가하면 이 둘을 적절히 사용하는 모델도 있습니다.
자 앞선 내용 정리하면서 여러분도 이 모델이 어떤 모델인지 맞춰보시죠!
Encoder는 토큰이 앞뒤 토큰을 모두 바라볼 수 있습니다. 그래서 토큰간 맥락을 더욱 뚜렷하고 풍부하게 만들 수 있고 그렇기 때문에 의미를 추출하는데 특화되어있습니다.
Decoder는 토큰을 뱉어내는데 특화되어있고 자신이 출력한 토큰을 다시 입력으로 집어넣으면서 토큰을 생성할 수 있습니다.
조금 어렵긴 하지만 이 모델은 바로바로..!
"번역 모델"입니다!!
번역에는 어떤 문장이 처음부터 주어지고 이 문장의 맥락을 풍부하게 입력받은 뒤 텍스트를 찍어내야합니다. 그러니까 Encoder와 Decoder를 모두 사용해야하는 모델이 되는 것이죠.
그런 의미에서 번역 모델도 LLM, 임베딩 모델과 형제 모델이라고 할 수 있습니다.
번외
Encoder-Decoder는 엄밀히 말해 아니지만 Encoder-Decoder 모델들이 사용하는 개념인 Cross Attention을 적극 활용하는 모델이 있습니다. 바로 멀티모달모델, 흔히 비전모델이라고 부르는 그것인데요. GPT나 Gemini가 이쪽 계열에 들어갑니다.
이미지를 보고 텍스트를 생성할 수 있는 모델, 반대로 텍스트를 보고 이미지를 만들 수 있는 모델 그게 바로 Cross Attention을 활용하는 모델입니다.
Decoder Only는 자신이 출력한 토큰을 입력으로 집어넣는다고 말씀드렸습니다. 하지만 이미지를 보고 텍스트를 뽑아내려면 Q와 KV가 서로 다른 곳을 바라보고 있어야합니다.
자 다시 한번 복습!
Q는 토큰을 뱉는 놈, KV는 정보를 가지고 있는 놈
그럼 사용자가 이미지를 한장 던져주고 "여기에 사람이 몇명이야?"라고 물어본다면
Q는 텍스트로 "3명입니다"라고 말하려면 KV가 자연스럽게 이미지가 됩니다. 왜냐하면 대답을 하려면 이미지를 읽어야하니까요.
마치며
이번 포스팅에선 Transformer가의 형제들을 몇명 만나봤습니다. 이 외에도 Difusion Model이 있지만 여기서 소개할 내용은 아니고 주류 모델도 아니니 여기까지 적도록 하겠습니다.
"Transformer 기반의 모델"이라고 하면 LLM이 가장 유명하고 가장 먼저 떠오르지만 사실 임베딩 모델이나 번역 모델 등이 LLM과 형제 모델로서 존재하고 있다는 사실이 이걸 처음 공부했었던 과거의 저에게는 조금 큰 충격이었는데요.
이렇게 남들은 모르는 변태같은 지식을 하나씩 습득할 때마다 왠지모를 뿌듯함을 느끼게 되네요. 이걸 공부하고 어디가서 아는척좀 해보려고 했더니만 이 주제에 대해서 얘기하는 사람이 아무도 없어서 조금 씁쓸하긴 합니다...
아무래도 제 주변에는 실무자들이 많고 AI를 어떻게 잘 써서 개발할까를 고민하지 이런 로우레벨은 많이 궁금해하지는 않는 것 같습니다. 그렇게 저도 자기들끼리 아는 얘기하는 AI계의 낄낄패거리가 되는 것이죠.
Decoder Only 모델인 LLM은 토큰의 뒤쪽 맥락은 아예 모르기 때문에 뒤에 뭐가 나올지 모르는 상황인데요. 그러다보니 한가지 문제가 생깁니다. 바로 언어에는 순서가 매우 중요하다는 것인데요.
"나는 키보드를 쳤다"와 "키보드는 나를 쳤다"는 완전히 다른 뜻이 되니까요.
LLM들은 이 문제를 어떻게 해결했을까요? 다음 포스팅은 LLM의 맥락 부여잡기 "Positional Encoding"에 대해서 알아보도록 하겠습니다.
긴글 읽어주셔서 감사합니다! 오늘도 즐거운 하루 되세요!
'AI Engineering > 이론' 카테고리의 다른 글
| LLM 모델의 튜닝 방법론 (LoRA, QLoRA, DoRA) (1) | 2026.09.25 |
|---|---|
| MLP레이어란? (MoE와 Hybrid 모델, Macaron 모델) (0) | 2026.09.25 |
| 기획자에겐 그림판을, 개발자에겐 메모장을 쥐어줬다 (MHA, MQA, GQA) (0) | 2026.09.24 |
| Attention is All You Need, Transformer의 시작 (0) | 2026.09.24 |
| Attention 레이어 해부하기 (QK회로, OV회로) (0) | 2026.09.24 |