# 트랜스포머: 디코더

트랜스포머(Transformer) 모델은 자연어 처리 분야에서 큰 혁신을 일으킨 모델 아키텍처로, "디코더"는 이 모델의 핵심 구성 요소 중 하나이다. 디코더는 주로 시퀀스 생성 작업, 예를 들어 번역, 텍스트 생성 등에서 사용된다. 여기서는 디코더의 구조와 작동 원리를 깊이 있게 설명하겠다.

#### 디코더의 구조

디코더는 트랜스포머 아키텍처의 구성 요소로, 기본적으로 다음과 같은 계층을 포함한다:

**입력 임베딩**

디코더는 입력 문장을 임베딩 벡터로 변환하여 처리한다. 이 임베딩 벡터는 단어 또는 서브워드 단위로 변환된 입력 토큰의 수치 표현이다. 디코더는 이 벡터를 다양한 계층을 통해 변형하여 최종 출력 시퀀스를 생성한다.

**포지셔널 인코딩**

디코더는 포지셔널 인코딩을 통해 입력 시퀀스의 순서 정보를 캡처한다. 포지셔널 인코딩은 각 위치에 대한 정보를 임베딩 벡터에 추가하여 시퀀스의 순서를 인식할 수 있도록 한다. 이는 모델이 단어의 위치와 순서를 고려하여 처리할 수 있게 해준다.

#### 디코더의 계층

디코더는 여러 개의 디코더 블록으로 구성되며, 각 블록은 다음의 주요 서브 컴포넌트로 이루어져 있다:

**자기 어텐션(Self-Attention) 메커니즘**

디코더의 첫 번째 주요 서브 컴포넌트는 자기 어텐션 메커니즘이다. 이 메커니즘은 입력 시퀀스의 각 단어가 시퀀스 내 다른 단어와 얼마나 관련이 있는지를 학습한다. 자기 어텐션은 각 단어가 시퀀스 내 다른 모든 단어와 상호작용할 수 있도록 하여, 문맥 정보를 효율적으로 반영할 수 있게 한다.

자기 어텐션은 "스케일드 닷-프로덕트 어텐션(Scaled Dot-Product Attention)"이라고도 불리며, 다음과 같은 단계로 진행된다:

* **쿼리(Query), 키(Key), 값(Value)**: 각 입력 벡터가 쿼리, 키, 값 벡터로 변환된다.
* **어텐션 스코어 계산**: 쿼리와 키 벡터의 내적을 통해 어텐션 스코어를 계산한다.
* **스코어 정규화**: 소프트맥스 함수를 사용하여 스코어를 정규화하고, 이를 통해 주의 집중도를 결정한다.
* **출력 계산**: 정규화된 스코어와 값 벡터의 곱을 통해 최종 출력을 계산한다.

**인코더-디코더 어텐션(Encoder-Decoder Attention)**

디코더는 인코더의 출력을 참조할 수 있도록 "인코더-디코더 어텐션" 계층을 포함한다. 이 계층은 디코더가 인코더의 출력 정보를 활용하여 더 정확한 출력을 생성할 수 있도록 도와준다. 인코더의 출력 벡터와 디코더의 쿼리 벡터 간의 어텐션 스코어를 계산하여 인코더에서 추출한 정보를 바탕으로 출력을 생성한다.

**피드포워드 네트워크**

디코더의 각 블록에는 피드포워드 네트워크가 포함되어 있다. 이 네트워크는 두 개의 선형 변환과 ReLU 활성화 함수를 포함하여 입력 벡터를 변환한다. 피드포워드 네트워크는 비선형 변환을 통해 디코더의 표현력을 높인다.

#### 레이어 노멀라이제이션 및 드롭아웃

디코더 블록의 각 서브 컴포넌트 후에는 레이어 노멀라이제이션과 드롭아웃이 적용된다. 레이어 노멀라이제이션은 각 층의 출력을 정규화하여 학습 안정성을 높이고, 드롭아웃은 네트워크의 과적합을 방지하는 데 도움을 준다.

#### 최종 출력

디코더는 최종적으로 선형 레이어와 소프트맥스 함수를 사용하여 출력 시퀀스를 생성한다. 선형 레이어는 디코더의 마지막 출력 벡터를 단어 집합의 차원으로 변환하며, 소프트맥스 함수는 이 벡터를 확률 분포로 변환하여 각 단어의 발생 확률을 예측한다.

***

관련 자료:

* Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Kaiser, Ł., ... & Polosukhin, I. (2017). Attention is All You Need. In Advances in Neural Information Processing Systems (NeurIPS).
* Brown, T. B., Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P., ... & Amodei, D. (2020). Language Models are Few-Shot Learners. In Proceedings of the 34th Conference on Neural Information Processing Systems (NeurIPS).
