쉽게 말하면, 디코더는 AI 내부에서 압축해 둔 정보를 사람이 쓸 수 있는 결과물로 풀어내는 부분이다. 번역문, 생성된 그림, 복원된 입력, 분할 마스크가 모두 디코더가 만드는 결과다. GPT 계열 같은 대규모 언어 모델은 디코더 층을 여러 겹 쌓고, 토큰을 하나씩 이어 붙여 글을 만든다.
| 분류 | 신경망에서 최종 결과를 만드는 부분 |
|---|---|
| 역할 | 압축·추상화된 표현을 번역문, 이미지, 분할 마스크 등으로 변환 |
| 주요 쓰임 | 시퀀스-투-시퀀스 모델, 트랜스포머, 오토인코더, U-Net |
| 현대적 개념 정립 | 2014년 시퀀스-투-시퀀스(seq2seq) 구조 등장2,3 |
| 현재 주류 형태 | 디코더 전용 트랜스포머(대규모 언어 모델의 기반)4 |
1. 정의
디코더(decoder)는 신경망에서 내부의 압축되거나 추상화된 표현을 원하는 출력으로 바꾸는 부분이다. 출력은 번역문, 생성된 이미지, 복원된 입력, 분할 마스크 등이다. 디코더는 시퀀스-투-시퀀스 모델, 트랜스포머, 오토인코더, U-Net 같은 딥러닝 구조에 등장하며, 사용자가 실제로 보는 결과를 만드는 것이 바로 디코더다. GPT 계열 같은 최근 대규모 언어 모델에서는 트랜스포머 디코더 층을 쌓아 토큰을 하나씩 생성한다. 각 단계에서 이전의 모든 토큰을 바탕으로 다음 토큰을 예측하며, 이를 자기회귀 생성이라고 부른다.5
디코더의 개념은 인코더와 밀접하게 연결돼 있다. 대부분의 구조에서 인코더는 입력 데이터를 잠재(latent) 또는 은닉 표현으로 압축하고, 디코더는 이 과정을 거꾸로 수행한다. 그러나 GPT 계열처럼 인코더 없이 디코더만으로 된 구조도 강력한 생성 모델이 될 수 있다. 디코더 전용 트랜스포머는 2020년 무렵부터 대규모 언어 모델의 주류 구조가 되었는데, 주로 단순하고 확장하기 쉽기 때문이다.4
가장 일반적으로 보면 디코더는 표현 공간에서 출력 공간으로 되돌아가는 대응을 한다. 인코더-디코더 쌍에서 인코더는 입력에 무엇이 들어 있는지를 은닉 표현으로 나타내고, 디코더는 그 표현을 펼쳐 출력이 무엇이어야 하는지를 구조화된 데이터로 만든다. 출력은 텍스트나 코드, 오디오 토큰 같은 시퀀스일 수도 있고, 픽셀 격자인 이미지나 픽셀별 라벨 지도인 분할 마스크일 수도 있다. 이 쓰임들을 묶는 공통점은 디코더가 입력을 분류하거나 점수 매기지 않고 출력을 만들어 낸다는 점, 즉 생성적이거나 복원적이라는 점이다.
2. 등장 배경
인코딩 네트워크와 디코딩 네트워크를 짝지어 쓰는 발상은 1980년대와 1990년대 오토인코더 초기 연구로 거슬러 올라간다. 당시 연구자들은 데이터를 압축한 뒤 복원하도록 신경망을 학습시켰다. 시퀀스 모델링에서 현대적 의미의 디코더는 2014년 시퀀스-투-시퀀스(seq2seq) 구조가 등장하며 자리 잡았고, 기계 번역에서 인코더-디코더 틀을 제시한 대표 논문이 두 편 나왔다.
Cho et al.(2014)은 게이트 순환 유닛(GRU)이라는 새로운 은닉 유닛을 갖춘 순환 신경망으로 인코더-디코더 구조를 제안했다. 같은 해 구글 소속의 Sutskever, Vinyals, Le도 독자적으로 다층 LSTM을 인코더와 디코더로 함께 쓴 「Sequence to Sequence Learning with Neural Networks」를 발표해, 영어-프랑스어 번역에서 좋은 결과를 얻었다.2,3
초기 seq2seq 모델의 중요한 한계는 병목이었다. 입력 문장 전체를 길이가 고정된 문맥 벡터 하나로 압축해야 했기 때문이다. 2015년 Bahdanau, Cho, Bengio는 「Neural Machine Translation by Jointly Learning to Align and Translate」(ICLR 2015 발표)에서 어텐션 메커니즘을 도입했다. 어텐션은 디코더가 벡터 하나에 기대지 않고, 생성 단계마다 인코더 출력의 서로 다른 부분에 선택적으로 집중하게 했다. 이 혁신은 특히 긴 문장의 번역 품질을 크게 높였다.6
Vaswani et al.(2017)의 「Attention Is All You Need」는 순환 구조를 없애고 셀프 어텐션과 크로스 어텐션으로 대체한 트랜스포머를 제안해, 학습을 훨씬 빠르게 하고 성능을 높였다. Transformer big 모델은 WMT 2014 영어-독일어 과제에서 28.4 BLEU를 기록했다. 영어-프랑스어 과제에서는 8개 GPU로 3.5일 학습해 당시 최고 수준인 41.8 BLEU를 냈다. 트랜스포머 디코더는 이후 현대 대규모 언어 모델의 기반이 되었다.7
3. 시퀀스-투-시퀀스 모델의 디코더
시퀀스-투-시퀀스(seq2seq) 모델에서 디코더는 인코더가 만든 문맥 표현을 바탕으로 출력 시퀀스를 만든다. 인코더는 입력 시퀀스(예: 영어 문장)를 읽어 하나의 문맥 벡터나 은닉 상태 시퀀스를 만들고, 디코더는 이를 이용해 출력 시퀀스(예: 같은 문장의 프랑스어 번역)를 한 번에 한 토큰씩 만든다.
3.1. 구조
고전적인 seq2seq 모델의 디코더는 보통 LSTM이나 GRU 같은 순환 신경망이다. 각 시간 단계에서 디코더는 다음 세 가지를 입력받는다.
- 디코더의 이전 은닉 상태
- 이전 단계에서 생성한 출력 토큰(첫 단계에서는 시퀀스 시작 토큰)
- 인코더에서 온 문맥 정보.
디코더는 각 단계에서 새 은닉 상태를 만들고, 이를 선형 층과 softmax 함수에 통과시켜 출력 어휘 전체에 대한 확률 분포를 얻는다. 가장 확률이 높은 토큰(또는 분포에서 샘플링한 토큰)이 그 단계의 출력이 되고, 다음 단계의 입력으로 다시 들어간다.
3.2. 교사 강요
학습 중에는 교사 강요(teacher forcing)를 자주 쓴다. 디코더가 매 단계에서 자신의 직전 예측 대신 목표 시퀀스의 정답 토큰을 입력받는다. 이 방식은 수렴을 빠르게 하고 학습을 안정시키지만, 추론 실행 단계에서는 모델이 자기 예측에 의존해야 하므로 학습 조건과 차이가 생길 수 있다. Bengio et al.(2015)이 소개한 스케줄 샘플링(scheduled sampling)은 학습 중 정답 토큰에서 모델 자신의 예측으로 점차 옮겨 가며 이 불일치를 줄인다.
3.3. 어텐션 메커니즘
기본 seq2seq 디코더는 병목 문제를 겪는다. 입력에 관한 모든 정보를 길이가 고정된 문맥 벡터 하나에 담아야 하기 때문이다. 입력이 길면 이 벡터가 관련 세부 정보를 모두 담지 못해 번역 품질이 떨어진다.
어텐션 메커니즘은 디코더가 생성의 매 단계마다 인코더의 모든 은닉 상태를 보도록 해서 이 문제를 푼다. 각 디코더 시간 단계에서 인코더 은닉 상태들에 대한 어텐션 가중치를 계산하고, 그 가중합을 문맥 벡터라고 한다. 문맥 벡터는 단계마다 바뀌므로, 디코더는 출력의 서로 다른 부분을 만들 때 입력의 서로 다른 부분에 집중할 수 있다.
어텐션의 대표적인 변형은 다음과 같다.
| 어텐션 유형 | 설명 | 제안 출처 |
|---|---|---|
| 가산(Bahdanau) 어텐션 | 학습된 순전파 신경망으로 디코더 상태와 각 인코더 은닉 상태 사이의 정렬 점수를 계산 | Bahdanau et al.(2015) |
| 곱셈(Luong) 어텐션 | 디코더 상태와 인코더 상태의 점곱(또는 일반 쌍선형 곱)으로 정렬 점수를 계산 | Luong et al.(2015) |
| 스케일드 점곱 어텐션 | 점곱을 키 차원의 제곱근으로 나눈 방식으로, 트랜스포머에서 사용 | Vaswani et al.(2017) |
4. 트랜스포머의 디코더
Vaswani et al.(2017)의 「Attention Is All You Need」는 트랜스포머를 소개하며 디코더의 작동 방식을 새로 정의했다. 트랜스포머 디코더는 순환 구조 대신 셀프 어텐션, 크로스 어텐션, 순전파 네트워크를 쌓은 층으로 이루어진다. 이 설계 덕분에 순환형 디코더보다 학습을 훨씬 많이 병렬화할 수 있다. 원 논문에서 인코더와 디코더는 모두 같은 층 6개(N = 6)를 쌓은 구조다.7
4.1. 디코더 층의 구조
트랜스포머 디코더의 각 층(블록)은 세 개의 하위 층으로 이루어진다.
- 마스크된(인과적) 셀프 어텐션: 디코더가 이미 생성한 출력 토큰만 참조한다. 인과 마스크가 미래 위치를 가려 자기회귀 특성을 지키며, 미래 토큰의 어텐션 점수는 softmax 전에 음의 무한대로 설정되어 사실상 0이 된다.
- 크로스 어텐션(인코더-디코더 어텐션): 디코더가 인코더의 출력 전체를 참조한다. 쿼리는 디코더 셀프 어텐션의 출력에서, 키와 값은 인코더에서 온다. 인코더 출력은 디코딩 전에 모두 계산되므로 이 하위 층에는 마스크가 필요 없다.
- 위치별 순전파 신경망: 각 위치에 독립적으로 완전 연결 순전파 신경망을 적용한다. 보통 선형 변환 두 개 사이에 ReLU 또는 GELU 활성화 함수를 둔다.
각 하위 층은 잔차 연결과 층 정규화로 감싸며, 각 하위 층 뒤에는 규제를 위해 드롭아웃을 적용한다.
4.2. 위치 인코딩
RNN과 달리 트랜스포머는 본래 시퀀스 순서를 알지 못하므로, 입력 임베딩에 위치 인코딩을 더한다. 원 트랜스포머는 사인 함수 기반의 위치 인코딩을 썼고, 이후 모델들은 학습되는 위치 임베딩이나 회전 위치 임베딩(RoPE)을 채택했다.
4.3. 자기회귀 생성 과정
추론 실행 단계에서 트랜스포머 디코더는 출력 토큰을 자기회귀 방식으로 하나씩 생성한다. 각 단계에서 지금까지 만든 모든 토큰을 입력받아 마스크된 셀프 어텐션과 크로스 어텐션 층을 거친 뒤, 다음 토큰에 대한 어휘 확률 분포를 낸다. 선택된 토큰은 시퀀스 끝에 붙고, 종료 토큰이 나오거나 최대 길이에 이를 때까지 반복된다.
반면 학습 중에는 트랜스포머 디코더가 교사 강요를 써서 목표 토큰 전체를 병렬로 처리한다. 인과 마스크 덕분에 각 위치는 앞선 위치만 참조하므로, 모델은 올바른 자기회귀 분포를 학습하면서도 병렬 계산의 이점을 누린다.
5. 인과 마스킹의 개념과 중요성
인과 마스킹(look-ahead mask라고도 한다)은 디코더 모델에서 자기회귀 특성을 강제하는 메커니즘이다. 시퀀스의 각 위치가 미래 위치를 참조하지 못하게 막아, 어떤 토큰의 예측이 이미 관측된 토큰에만 의존하도록 한다. 원 트랜스포머 논문은 디코더의 셀프 어텐션이 각 위치에서 그 위치까지의 모든 위치를 참조하도록 하며, softmax 입력 중 허용되지 않은 연결에 해당하는 값을 음의 무한대로 가려 이 특성을 지킨다고 설명한다.7
5.1. 인과 마스킹의 작동 방식
표준 셀프 어텐션에서는 모든 위치가 다른 모든 위치를 참조할 수 있어, 양방향 문맥을 모두 반영한다. 이는 BERT처럼 이해 과제에는 유용하지만, 생성에는 근본적인 문제가 된다. 생성 중에는 현재 위치 뒤의 토큰이 아직 존재하지 않으므로, 학습 때 미래 문맥에 의존하도록 배운 모델은 추론 실행 때 실패한다.
인과 마스킹은 softmax 연산 전에 하삼각 이진 행렬을 어텐션 점수에 적용해 이 문제를 푼다. 미래 토큰에 해당하는 위치는 음의 무한대로 설정되어 softmax 후 어텐션 가중치가 0이 된다. 그 결과 각 토큰의 표현은 자기 자신과 앞선 모든 토큰의 정보만으로 계산된다.
길이가 n인 시퀀스에서 인과 마스크 M은 다음과 같이 정의된다.
$$M[i][j] = 0$$ (j ≤ i: 현재 및 과거 위치 참조 허용)
$$M[i][j] = -\infty$$ (j > i: 미래 위치 차단)
$$\mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}} + M\right) V$$5.2. 인과 마스킹이 중요한 이유
인과 마스킹이 없으면 전체 시퀀스로 학습한 모델이 미래 토큰을 엿보며 '부정행위'를 할 수 있다. 그러면 학습 손실은 낮아질 수 있지만, 모델은 추론 실행 때 쓸 수 없는 정보에 의존하게 된다. 인과 마스킹은 모델이 실제 예측 능력을 기르도록 강제해 학습 분포를 추론 실행 때의 분포와 맞춘다.
인과 마스킹은 병렬 학습도 가능하게 한다. 학습 중에 토큰을 하나씩 생성하는 것은 극히 느린 방식이므로, 모델은 한 번의 순전파로 시퀀스 전체를 처리한다. 마스크 덕분에 각 위치는 여전히 앞선 토큰만 '보게' 되어, 자기회귀 특성을 지키면서 모든 위치를 동시에 계산할 수 있다.
6. 디코더 전용 모델
디코더 전용 트랜스포머 모델은 인코더와 교차 어텐션 하위 층을 없애고, 마스크된 셀프 어텐션과 순전파 하위 층만 남긴다. 이 모델은 단일 시퀀스를 처리한다. 입력 프롬프트를 받아 그 뒤를 자기회귀 방식으로 이어 생성하며, 프롬프트가 셀프 어텐션을 통해 문맥을 제공함으로써 인코더의 역할을 대신한다.
디코더 전용 구조는 대규모 언어 모델의 주류 패러다임이 되었다. 이 모델들은 인과적 언어 모델로 학습되어, 대규모 텍스트 말뭉치에 대한 자기지도 학습으로 앞선 모든 토큰이 주어졌을 때 다음 토큰을 예측한다. 이 단일 목표를 키우면서 눈에 띄는 창발적 능력이 나타났다. GPT-3의 저자들은 GPT-3를 매개변수가 1,750억 개이고 이전의 비희소 언어 모델보다 10배 많은 자기회귀 언어 모델이라고 설명했으며, GPT-3는 그래디언트 업데이트나 미세 조정 없이 몇 개의 텍스트 예시만으로 새 과제를 수행할 수 있었다.4,5
6.1. 주요 디코더 전용 모델
| 모델 | 개발사 | 연도 | 주요 특징 |
|---|---|---|---|
| GPT | OpenAI | 2018 | 최초의 대규모 디코더 전용 트랜스포머. 1억 1,700만(117M) 매개변수. 사전 학습 후 미세 조정 효과를 입증 |
| GPT-2 | OpenAI | 2019 | 15억(1.5B) 매개변수. 강한 제로샷·퓨샷 능력을 보여 줌 |
| GPT-3 | OpenAI | 2020 | 1,750억(175B) 매개변수. 문맥 내 학습과 퓨샷 프롬프팅을 대중화 |
| GPT-4 | OpenAI | 2023 | 멀티모달(텍스트·이미지 입력). 추론 능력이 크게 향상 |
| LLaMA | Meta | 2023 | 공개 가중치 모델(70억~650억 매개변수). RMSNorm, SwiGLU 활성화, 회전 위치 임베딩(RoPE) 사용 |
| LLaMA 2 | Meta | 2023 | 2조 토큰으로 학습. RLHF를 적용한 대화 최적화 변형 포함 |
| LLaMA 3 | Meta | 2024 | 80억, 700억, 4,050억(405B) 매개변수로 확장. 128K 토큰 컨텍스트 창 |
| Mistral 7B | Mistral AI | 2023 | 효율을 위해 그룹 쿼리 어텐션과 슬라이딩 윈도 어텐션 사용 |
| PaLM | 구글 | 2022 | 5,400억(540B) 매개변수. Pathways 분산 학습 시스템 사용 |
6.2. 구조 변형
디코더 전용 모델은 기본 구조를 공유하지만 구현 세부는 다르다.
- 정규화: 원 트랜스포머는 잔차 덧셈 뒤에 층 정규화를 적용하는 사후 정규화를 썼다. 대부분의 최신 모델은 하위 층 앞에 정규화를 적용하는 사전 정규화를 써서 학습 안정성을 높였다. LLaMA는 표준 층 정규화 대신 RMSNorm을 쓴다.
- 활성화 함수: 원 트랜스포머는 ReLU를 썼다. 최근 많은 모델은 GELU나 SwiGLU를 쓰며, 이들이 성능을 높이는 것으로 나타났다.
- 위치 인코딩: GPT-1과 GPT-2는 학습되는 절대 위치 임베딩을 쓴다. LLaMA 같은 최근 모델은 상대 위치를 인코딩하는 회전 위치 인코딩(RoPE)을 써서 긴 시퀀스로 더 잘 확장된다.
- 어텐션 최적화: 그룹 쿼리 어텐션(GQA)은 여러 쿼리 헤드가 키-값 헤드를 나눠 써서 메모리 사용을 줄인다. 플래시 어텐션(Flash Attention)은 메모리를 고려한 타일링으로 어텐션 연산의 계산 효율을 높인다.8
7. 디코더와 인코더의 차이
트랜스포머 기반의 세 가지 주요 패러다임은 각각 원래 트랜스포머 구조의 다른 부분을 쓰며, 서로 다른 유형의 과제에 적합하다.
| 속성 | 인코더 전용(BERT) | 디코더 전용(GPT) | 인코더-디코더(T5) |
|---|---|---|---|
| 어텐션 방향 | 양방향 | 단방향(인과적) | 인코더는 양방향, 디코더는 인과적 |
| 학습 목표 | 마스크드 언어 모델(MLM) | 다음 토큰 예측 | 스팬 손상 / 텍스트-투-텍스트 |
| 출력 방식 | 은닉 상태 위의 분류 헤드 | 자기회귀 토큰 생성 | 크로스 어텐션을 포함한 자기회귀 토큰 생성 |
| 대표 과제 | 텍스트 분류, 개체명 인식, 추출식 질의응답 | 텍스트 생성, 챗봇, 코드 완성, 요약 | 번역, 요약, 생성식 질의응답 |
| 주요 모델 | BERT, RoBERTa, ELECTRA, DeBERTa | GPT 시리즈, LLaMA, Mistral, PaLM | T5, BART, mBART, Flan-T5 |
인코더 전용 모델인 BERT는 입력 전체의 문맥을 이해해야 하는 과제에 강하지만(양방향 어텐션), 과제별 분류 헤드가 필요하고 기본적으로 텍스트를 생성하지 못한다. 디코더 전용 모델인 GPT는 생성 과제에 뛰어나며 확장성이 높다는 것이 확인되었다. 인코더-디코더 모델인 T5는 양방향 인코딩과 자기회귀 디코딩을 결합해, 한 시퀀스를 다른 시퀀스로 바꾸는 과제(예: 기계 번역, 요약)에 적합하다.4,9
실제로 대규모 언어 모델링은 2020년 무렵부터 디코더 전용 구조가 주도해 왔으며, 주로 단순하고 확장하기 쉽기 때문이다. 다만 인코더-디코더 모델은 특정 과제에서 여전히 경쟁력이 있다. Yi Tay 등 공동 연구자들의 최근 연구는 매우 큰 규모에서 인코더-디코더 구조가 충분히 탐구되지 않았을 수 있다고 주장했다.4
8. 오토인코더의 디코더
오토인코더에서 디코더는 인코더가 만든 압축된 잠재 표현으로부터 원래 입력을 복원한다. 오토인코더는 차원 축소, 특징 학습, 잡음 제거, 이상 탐지에 쓰이는 비지도 모델이다.
표준 오토인코더에서 인코더는 입력 x를 저차원 잠재 표현 z로 매핑하고, 디코더는 z를 원래 입력의 재구성 x'로 되돌린다. 전체 네트워크는 재구성 손실을 최소화하도록 종단간(end-to-end)으로 학습되며, 연속형 데이터에는 보통 평균 제곱 오차(MSE), 이진 데이터에는 이진 교차 엔트로피를 쓴다.
디코더 구조는 인코더를 거꾸로 뒤집은 모양이다. 인코더가 차원을 점차 줄이는 선형 층을 쓰면 디코더는 차원을 점차 늘리는 선형 층을 쓴다. 이미지 데이터에서 인코더가 풀링을 동반한 합성곱 신경망 층을 쓰면, 디코더는 전치 합성곱(디컨볼루션이라고도 함)으로 특징 맵을 원래 해상도로 키운다.
8.1. 변분 및 잡음 제거 오토인코더
디코더는 Kingma와 Welling이 2013년에 소개한 생성 모델인 변분 오토인코더(VAE)에서 특히 중요한 역할을 한다. 일반 오토인코더의 인코더가 잠재 공간의 한 점을 내놓는 것과 달리, VAE 인코더는 확률 분포(보통 가우시안)의 평균과 분산을 출력한다.10
학습 중에는 재매개변수화 기법(기울기가 샘플링 단계를 통과하도록 하는 기법)으로 이 분포에서 잠재 벡터 z를 뽑는다. 디코더는 z를 받아 출력을 만든다. VAE는 두 손실을 함께 최소화하며 학습한다. 재구성 손실은 디코더 출력이 원래 입력과 얼마나 맞는지를 재고, KL 발산은 학습된 잠재 분포가 표준 정규 사전 분포에서 얼마나 벗어나는지를 재서 매끄럽고 잘 짜인 잠재 공간을 유도한다.
VAE 디코더는 인코딩된 입력뿐 아니라 잠재 공간의 어느 점에서든 출력을 만드는 법을 배우므로 독립된 생성 모델로 쓸 수 있다. 학습 후에는 사전 분포에서 z를 샘플링해 디코더에 넣으면 새 데이터가 만들어진다. 잠재 공간이 매끄러운 덕분에 두 잠재 벡터를 선형 보간해 중간 점을 디코딩하면 두 출력 사이의 점진적 변화를 관찰할 수 있다.
잡음 제거 오토인코더에서 인코더는 잡음이 섞이거나 일부가 가려진(무작위 마스킹) 입력을 받고, 디코더는 깨끗한 원본을 복원해야 한다. 그래서 네트워크는 입력을 그대로 베끼는 대신 강건한 특징을 배운다. 이 설정에서 디코더는 잠재 표현으로부터 빠지거나 손상된 정보를 추론할 만큼 강력해야 한다.
9. 이미지 디코더
이미지 디코더는 압축되었거나 추상화된 특징 표현을 공간적인 이미지 데이터로 되돌린다. 오토인코더, 생성적 적대 신경망(GAN), 분할 모델, 확산 파이프라인에 등장한다. 이미지 디코더의 핵심 과제는 업샘플링, 즉 세밀한 디테일을 살리면서 특징 맵의 공간 해상도를 높이는 것이다.
9.1. 업샘플링 기법
이미지 디코더에서 공간 업샘플링에 쓰이는 방법은 다음과 같다.
| 기법 | 설명 | 장점 | 단점 |
|---|---|---|---|
| 전치 합성곱 | 입력 원소 사이에 0을 끼워 넣고 합성곱을 적용하는 학습 가능한 연산으로, 업샘플링과 합성곱을 결합 | 완전히 학습 가능하고 복잡한 공간 패턴을 포착할 수 있음 | 커널 크기와 스트라이드가 맞지 않으면 체커보드 아티팩트가 생기기 쉬움 |
| 최근접 이웃 업샘플링 + 합성곱 | 각 픽셀 값을 반복해 해상도를 높인 뒤 표준 합성곱으로 다듬음 | 체커보드 아티팩트를 피하며 구현이 단순함 | 두 단계 과정이며 매개변수 효율이 약간 낮음 |
| 이중선형 보간 + 합성곱 | 이중선형 보간으로 부드럽게 업샘플링한 뒤 합성곱을 적용 | 최근접 이웃보다 결과가 부드러움 | 전치 합성곱보다 유연성이 낮음 |
| 픽셀 셔플(서브픽셀 합성곱) | 채널(깊이) 차원의 원소를 공간 차원으로 재배열 | 계산 효율이 높고 아티팩트를 피함 | 채널 수가 업스케일 배율의 제곱의 배수여야 함 |
전치 합성곱은 가장 흔한 학습형 업샘플링 방식이다. 특징 맵 원소 사이에 0을 끼우고 가장자리를 채운 뒤 표준 합성곱을 적용하는 방식으로 작동한다. 커널 가중치는 학습 중에 배우므로 네트워크가 공간 디테일을 복원하는 방법을 스스로 찾는다. 다만 커널 크기가 스트라이드로 나누어떨어지지 않으면 출력에 체커보드 아티팩트가 생길 수 있다. 널리 쓰이는 대안은 최근접 이웃이나 이중선형 업샘플링 뒤에 표준 합성곱을 적용하는 것으로, 공간 확대 단계와 특징 변환 단계를 분리한다.
9.2. U-Net과 확산 모델의 디코더
U-Net 아키텍처는 Ronneberger, Fischer, Brox가 2015년 생체 의료 영상 분할을 위해 도입한 구조로, 스킵 연결을 갖춘 독특한 인코더-디코더 구조가 특징이다.11
U-Net 디코더(확장 경로 또는 업샘플링 경로라고도 함)는 채널 수를 줄이면서 특징 맵의 공간 해상도를 점차 높인다. 각 단계에서 디코더는 다음을 수행한다.
- 업샘플링: 전치 합성곱(업 합성곱)으로 특징 맵의 공간 차원을 두 배로 늘린다.
- 스킵 연결을 통한 결합: 업샘플된 특징 맵을 같은 해상도 단계의 인코더 특징 맵과 이어 붙인다. 이 스킵 연결이 U-Net의 핵심이며, 다운샘플링 중에 사라질 고해상도 공간 정보를 디코더가 쓸 수 있게 한다.
- 합성곱: ReLU 활성화(선택적으로 배치 정규화)를 동반한 3x3 합성곱 두 개가 이어 붙인 특징을 다듬는다.
디코더의 마지막 층은 1x1 합성곱으로, 특징 채널을 픽셀 단위 분류에 필요한 출력 클래스 수로 바꾼다.
스킵 연결이 없다면 디코더는 네트워크 바닥의 저해상도 고수준 특징만으로 세밀한 공간 디테일을 복원해야 한다. 스킵 연결은 인코더에서 디코더로 공간 정보가 직접 흐르는 지름길을 제공해 정밀한 위치 파악을 가능하게 한다. 이 설계가 효과적이어서 SegNet, 특징 피라미드 네트워크(FPN), U-Net++, 어텐션 U-Net 등 후속 구조에도 스킵 연결이 널리 채택되었다.
잠재 확산 모델인 Stable Diffusion에서 VAE 디코더는 생성 과정의 마지막 단계를 맡는다. 확산 과정은 픽셀 공간이 아니라 VAE 인코더가 압축한 잠재 공간에서 이루어져, 학습과 추론이 훨씬 효율적이다. U-Net이 반복적인 역확산 단계로 잠재 표현에서 노이즈를 제거하고 나면, VAE 디코더가 최종 잠재 표현을 전체 해상도의 픽셀 이미지로 바꾼다. 이 디코더는 생성 과정의 끝에서 한 번만 실행된다.12
10. 텍스트 생성을 위한 디코딩 전략
디코더 모델을 학습한 뒤에는 추론 실행 중에 토큰을 고르는 방법이 생성 텍스트의 품질, 다양성, 일관성에 크게 영향을 준다. 이 방법을 디코딩 전략(또는 디코딩 알고리즘)이라고 한다. Holtzman et al.(2020)은 빔 서치 같은 최대화 기반 디코딩이 밋밋하고 일관성이 없거나 반복 루프에 갇힌 출력으로 퇴화한다고 밝혔다. 이 발견은 개방형 생성에서 샘플링 기반 전략으로 옮겨 가는 계기가 되었다.13
10.1. 그리디 디코딩과 빔 서치
그리디 디코딩은 매 단계에서 가장 확률이 높은 토큰 하나를 고른다. 계산이 싸고 결정적이지만 다른 경로를 전혀 고려하지 않아, 반복적이거나 최적이 아닌 텍스트를 자주 낳는다. 단계마다 국소적으로 최적인 선택이 전체 시퀀스의 전역 최적을 보장하지는 않는다.
빔 서치는 매 단계에서 확률이 높은 부분 시퀀스(빔) k개를 유지한다. 각 빔을 가능한 모든 다음 토큰으로 확장한 뒤 점수가 높은 후보 k개만 남긴다. 그리디보다 넓은 가능성을 탐색하면서도 계산량이 다룰 만하다. 출력 품질이 중요하고 약간의 다양성이 허용되는 음성 인식과 기계 번역에서 널리 쓰인다. 빔 폭(보통 4~10)이 계산량과 탐색의 철저함 사이의 균형을 정한다. 다만 일반적이고 확률이 높은 텍스트를 만들기 쉬우며 여전히 반복될 수 있다. 창작이나 대화처럼 개방형 생성에는 샘플링 기반 방법이 선호된다.
10.2. 샘플링 기반 전략
Top-k 샘플링은 매 단계의 후보를 확률이 가장 높은 k개 토큰으로 제한한 뒤, 재정규화한 분포에서 샘플링한다. 매우 낮은 확률의(종종 맥락에 맞지 않는) 토큰을 고르지 않게 하면서도 통제된 무작위성을 준다. Fan et al.(2018)이 이 방식을 널리 알렸다. k는 고정된 값이며 흔히 40 또는 50을 쓴다.14
Top-p 샘플링(뉴클리어스 샘플링이라고도 함)은 Holtzman et al.(2020)이 제안했으며, 후보 집합의 크기를 동적으로 조정한다. k를 고정하는 대신, 누적 확률이 임계값 p(보통 0.9 또는 0.95)를 넘는 가장 작은 토큰 집합을 고른다. 모델이 확신할 때는 집합이 작고, 분포가 평평하면 커진다. 이 적응적 특성 덕분에 top-p는 top-k보다 유연하며 대체로 더 자연스러운 글을 만드는 경향이 있다.13
샘플링 온도는 확률 분포를 계산하기 전에 logit(softmax 이전의 원점수)의 크기를 조절하는 매개변수다. 온도가 1.0보다 낮으면 분포가 날카로워져 모델이 더 확신하고 결정적으로 된다. 1.0보다 높으면 분포가 평평해져 무작위성과 다양성이 늘어난다. 온도가 0에 가까우면 그리디 디코딩과 같아지고, 아주 높은 온도에서는 거의 균등한 무작위 샘플링이 된다. 온도는 흔히 top-k나 top-p와 함께 쓰며, 예를 들어 창작 텍스트 생성에는 온도 0.8에 top-p 0.95를 조합하는 설정이 흔하다.
10.3. 디코딩 전략 비교와 고급 기법
| 전략 | 결정적인가 | 다양성 | 주요 쓰임 | 핵심 매개변수 |
|---|---|---|---|---|
| 그리디 | 예 | 낮음 | 빠른 프로토타이핑, 단순한 과제 | 없음 |
| 빔 서치 | 예(빔 폭이 같을 때) | 낮음~보통 | 기계 번역, 음성 인식, 요약 | 빔 폭(k) |
| Top-k 샘플링 | 아니오 | 보통 | 개방형 텍스트 생성 | k(예: 40) |
| Top-p(뉴클리어스) 샘플링 | 아니오 | 보통~높음 | 대화, 창작 글쓰기 | p(예: 0.9) |
| 온도 조절 | 기반 방법에 따라 다름 | 조절 가능 | 샘플링 방법과 결합 | 온도(예: 0.7) |
최근 연구는 더 정교한 디코딩 기법을 도입했다.
- 대조 디코딩(contrastive decoding): Li et al.(2023)이 소개했으며, 큰 모델의 로짓과 작은 '아마추어' 모델의 로짓 차이를 이용해 생성을 이끈다. 큰 모델은 선호하지만 작은 모델은 선호하지 않는 토큰일수록 고품질일 가능성이 높다는 직관에 바탕을 둔다.
- 최소 베이즈 위험(MBR) 디코딩: 가장 확률이 높은 시퀀스를 고르는 대신 여러 후보 시퀀스를 생성한 뒤, 기대 손실을 최소화하는 후보를 고른다. 예컨대 BLEU 같은 지표로 볼 때 다른 모든 후보와 가장 비슷한 후보를 고르는 방식이다.15
11. KV 캐시
KV 캐시(KV cache)는 트랜스포머 모델의 자기회귀 디코딩을 크게 빠르게 하는 최적화 기법이다. 자기회귀 생성에서는 모델이 토큰을 하나씩 만들고, 매 단계 셀프 어텐션이 지금까지의 모든 토큰에 대해 계산해야 한다. 캐시가 없으면 앞선 모든 토큰의 키(K)와 값(V) 투영을 매 단계 다시 계산하게 되어, 시퀀스 길이에 따라 제곱으로 늘어나는 중복 계산이 생긴다.
KV 캐시는 이전 시간 단계의 키 행렬과 값 행렬을 저장해 재사용한다. 새 단계에서는 새로 생성된 토큰의 키와 값 벡터만 계산해 캐시에 덧붙인다. 현재 토큰의 쿼리(Q) 벡터는 캐시된 전체 키와 값에 대해 계산된다. 이로써 단계당 계산량이 O(n²)에서 O(n)으로 줄어든다(n은 현재 시퀀스 길이).
11.1. 메모리 고려 사항
KV 캐시의 메모리 사용량은 시퀀스 길이, 층 수, 모델의 은닉 차원에 비례해 선형으로 늘어난다. 컨텍스트 창이 긴 큰 모델에서는 KV 캐시가 GPU 메모리를 상당히 차지할 수 있다. 예를 들어 16비트 정밀도의 LLaMA 2 7B 모델을 배치 크기 1로 돌리면 KV 캐시는 약 2GB가 필요하며, 배치가 커지거나 문맥이 길어지면 이 값이 빠르게 늘어난다.
KV 캐시의 메모리 사용을 줄이는 기법은 다음과 같다.
| 최적화 기법 | 설명 |
|---|---|
| 다중 쿼리 어텐션(MQA) | 모든 쿼리 헤드가 키-값 헤드 한 세트를 공유해 캐시 크기를 크게 줄임 |
| 그룹 쿼리 어텐션(GQA) | 쿼리 헤드 묶음끼리 키-값 헤드를 공유하며, 전체 멀티헤드 어텐션과 MQA의 중간 절충안 |
| KV 캐시 양자화 | 캐시 값의 정밀도를 낮춰(예: 16비트에서 4비트) 품질 영향을 거의 주지 않고 메모리를 절약 |
| 캐시 축출 전략 | 덜 중요한 항목을 골라 캐시에서 제거하고 가장 관련 높은 토큰만 남김 |
| 슬라이딩 윈도 어텐션 | 전체 시퀀스 대신 최근 토큰의 고정된 창으로 어텐션 문맥을 제한 |
실제 벤치마크에서 KV 캐시를 쓰면 1,000개 토큰을 생성하는 데 약 11~12초가 걸리고, 쓰지 않으면 56초가 넘게 걸린다. 운영 환경의 실시간 추론 실행에서 이 기법이 매우 중요하다는 점이 드러난다.
12. 추측 디코딩
추측 디코딩(speculative decoding)은 출력 분포를 바꾸지 않으면서 자기회귀 생성을 빠르게 하는 추론 실행 가속 기법이다. Leviathan, Kalman, Matias(2023)가 소개했고, Chen et al.(2023)도 독자적으로 같은 기법을 제시했다. 저자들은 근사 모델의 출력에 대해 큰 모델을 병렬로 실행해 정확한 디코딩을 빠르게 하며, 출력 분포를 바꾸지 않고 표준 구현 대비 2~3배 가속을 낸다고 보고했다.16
12.1. 추측 디코딩의 작동 원리
핵심 아이디어는 더 작고 빠른 드래프트(draft) 모델로 후보 토큰 열을 만든 뒤, 더 큰 목표(target) 모델이 이를 한 번의 순전파로 검증하는 것이다. 목표 모델은 학습 때처럼 여러 토큰을 병렬로 처리할 수 있어, 토큰을 하나씩 만드는 것보다 검증이 훨씬 싸다. 알고리즘은 다음과 같다.
- 드래프트 모델이 감마(gamma) 개의 후보 토큰을 자기회귀로 생성한다(감마는 보통 3~8).
- 목표 모델이 후보 토큰 전체를 한 번의 순전파로 처리해 각 위치의 확률 분포를 얻는다.
- 각 후보 토큰은 드래프트 모델의 확률과 목표 모델의 확률을 비교해 수락하거나 거절한다. 수락된 토큰은 유지하고, 처음 거절된 토큰은 보정된 분포에서 다시 샘플링한다.
- 새 시퀀스 위치에서 이 과정을 반복한다.
수락과 거절 단계에는 특정 수학적 보정이 쓰이므로, 추측 디코딩의 출력 분포는 목표 모델만 쓴 표준 자기회귀 디코딩과 같다고 증명된다. 따라서 이 가속은 품질 손실이 없다(lossless).
12.2. 성능과 채택
추측 디코딩은 드래프트와 목표 모델의 유사도, 과제의 성격에 따라 보통 2~3배 빨라진다. Leviathan 등은 감마=5와 감마=7일 때 번역과 요약 과제에서 2.3~3.4배 가속을 측정했다. 업계 전반의 상용 시스템에서 채택되었고, Google은 여러 제품에 추측 디코딩을 적용했다. Apple은 생성의 직렬 병목을 더 줄이기 위해 Mirror Speculative Decoding과 Speculative Streaming 같은 변형을 개발했다.16
2024년과 2025년에는 드래프트 모델과 목표 모델 사이의 어휘 불일치를 처리하는 기법, 여러 모델로 추측하는 방식, 별도의 드래프트 모델 대신 조기 종료(early-exit) 전략을 쓰는 SpecEE 같은 방법이 나왔다.
13. 학습
구조와 상관없이 디코더 학습은 일반적으로 출력 시퀀스가 정답 목표 시퀀스와 맞도록 최적화하는 일이다.
13.1. 손실 함수
시퀀스 생성 작업(번역, 텍스트 생성)에서 표준 손실 함수는 각 출력 위치에서 계산되는 교차 엔트로피 손실이다. 목표 토큰 시퀀스가 주어지면, 각 단계의 손실은 디코더가 예측한 분포에서 정답 토큰 로그 확률에 음수를 취한 값이다. 전체 손실은 모든 위치에 대한 합(또는 평균)이다.
재구성 작업(오토인코더)의 경우 연속형 데이터에는 보통 평균 제곱 오차(MSE)를, 이진 데이터에는 이진 교차 엔트로피를 손실로 사용한다.
13.2. 최적화
디코더는 역전파와 함께 경사 하강법(보통 Adam 또는 AdamW)으로 학습된다. Transformer 기반 모델에서는 학습률 워밍업 뒤에 코사인 또는 역제곱근 감쇠 스케줄을 적용하는 것이 표준 관행이다. 대형 디코더 모델은 혼합 정밀도 학습, 그래디언트 체크포인팅, 여러 GPU 또는 TPU에 걸친 분산 학습이 필요할 수 있다.
13.3. 규제
과적합을 방지하기 위해 디코더 계층 안에 드롭아웃을 적용한다. 레이블 스무딩은 하드 원-핫 목표값을 부드러운 분포로 대체하는 방식으로, 디코더 학습에서 흔히 쓰이는 또 다른 규제 기법이다. 가중치 감쇠(L2 규제) 역시 표준적으로 사용된다.
13.4. 평가
디코더 출력의 품질은 과제에 따라 다르게 평가한다.
- 기계 번역: BLEU, METEOR, chrF, COMET이 흔히 쓰인다. BLEU는 생성된 번역과 기준 번역 사이의 n-gram 겹침을 잰다.
- 텍스트 생성: 퍼플렉시티(perplexity)는 모델의 예측 확률 분포가 시험 말뭉치의 실제 분포와 얼마나 맞는지를 잰다. 값이 낮을수록 좋은 모델이다. 자동 지표와 함께 사람 평가를 쓰는 경우가 많다.
- 이미지 재구성(오토인코더): 평균 제곱 오차, 구조적 유사도 지수(SSIM), 최대 신호 대 잡음비(PSNR)가 표준이다.
- 이미지 분할(U-Net): IoU(교집합 대 합집합), Dice 계수, 픽셀 정확도가 흔히 쓰인다.
14. 활용 분야
디코더는 매우 다양한 딥러닝 응용 분야에서 쓰인다.
- 기계 번역: 디코더가 번역된 문장을 목표 언어로 한 번에 한 토큰씩 생성한다.
- 텍스트 생성과 챗봇: GPT나 ChatGPT 같은 디코더 전용 모델이 대화, 콘텐츠 제작, 코드 생성 등에서 유창하고 문맥에 맞는 텍스트를 생성한다.
- 음성 인식: Whisper 같은 모델은 인코더-디코더 구조를 쓰며, 디코더가 오디오 특징을 텍스트로 옮긴다.
- 이미지 캡셔닝: 이미지 인코더가 추출한 시각 특징을 바탕으로 디코더가 이미지에 대한 자연어 설명을 생성한다.
- 이미지 분할: U-Net 디코더가 의료 영상, 위성 영상 등에서 픽셀 단위 분류 맵을 생성한다.
- 이미지 생성: VAE 디코더와 확산 모델 디코더가 잠재 표현에서 이미지를 생성한다.
- 텍스트 요약: 인코더-디코더 모델이 긴 문서의 간결한 요약을 생성한다.
- 코드 생성: Codex나 Code LLaMA 같은 코드 학습 디코더 전용 모델이 자연어 설명에서 프로그래밍 코드를 생성한다.
15. 5살 아이에게 설명하기 (ELI5)
블록 상자가 있고 아주 멋진 성을 만들었다고 상상해 보자. 이제 그 성을 친구에게 보내고 싶은데 너무 커서 우편으로 보낼 수 없다. 그래서 성을 사진으로 찍어 대신 보낸다. 사진은 훨씬 작지만 중요한 세부 사항은 담고 있다.
친구는 사진을 받아 자기 블록으로 성을 다시 만든다. 모든 세부 사항을 정확히 맞추지 못할 수도 있지만, 원래 성과 아주 비슷한 것을 다시 만들 수 있다.
머신러닝에서 인코더는 사진을 찍는 것과 같다. 크고 복잡한 정보를 작고 간결한 형태로 압축한다. 디코더는 사진을 보고 성을 다시 만드는 친구와 같다. 이 간결한 정보를 받아 번역된 문장, 생성된 이미지, 질문에 대한 답처럼 원래 크기의 유용한 결과로 되돌린다.
어떤 디코더는 더 영리하다. 다른 사람이 찍은 사진이 필요하지 않고, 지금까지 놓은 블록들을 모두 보고 다음에 놓을 블록을 하나씩 정하면서 완전히 새로운 성을 스스로 만들 수 있다. ChatGPT 같은 챗봇이 이렇게 작동한다. 지금까지 쓴 내용을 계속 보면서 다음 단어를 하나씩 정하여 텍스트를 생성한다.
출처 16개
- AI Wiki: Decoder (2026-06-22 수정본) aiwiki.ai · CC BY 4.0 · 확인 2026-10-22
- Sequence to Sequence Learning with Neural Networks arxiv.org · 확인 2026-10-22
- Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation arxiv.org · 확인 2026-10-22
- Language Models are Few-Shot Learners arxiv.org · 확인 2026-10-22
- Radford, A., Narasimhan, K., Salimans, T., & Sutskever, I. (2018). "Improving Language Understanding by Generative Pre-Training." OpenAI. (AI Wiki 참고문헌) aiwiki.ai · 확인 2026-10-22
- Neural Machine Translation by Jointly Learning to Align and Translate arxiv.org · 확인 2026-10-22
- Attention Is All You Need arxiv.org · 확인 2026-10-22
- LLaMA: Open and Efficient Foundation Language Models arxiv.org · 확인 2026-10-22
- Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer arxiv.org · 확인 2026-10-22
- Auto-Encoding Variational Bayes arxiv.org · 확인 2026-10-22
- U-Net: Convolutional Networks for Biomedical Image Segmentation arxiv.org · 확인 2026-10-22
- High-Resolution Image Synthesis with Latent Diffusion Models arxiv.org · 확인 2026-10-22
- The Curious Case of Neural Text Degeneration arxiv.org · 확인 2026-10-22
- Hierarchical Neural Story Generation arxiv.org · 확인 2026-10-22
- Contrastive Decoding: Open-ended Text Generation as Optimization arxiv.org · 확인 2026-10-22
- Fast Inference from Transformers via Speculative Decoding arxiv.org · 확인 2026-10-22