[LLM] Understanding Encoder and Decoder

대형 언어 모델(LLM)에서 Encoder와 Decoder는 Transformer 구조의 두 핵심 구성 요소이다. 두 모듈은 서로 다른 역할과 구조적 특징을 가지고 있으며, 자연어 처리에서 입력을 이해하고 출력을 생성하는 데 중요한 역할을 한다.

Encoder

인코더는 입력 데이터를 처리하여 의미를 압축하고, 모델이 이해할 수 있는 벡터 표현으로 변환하는 역할을 한다.

구조적으로 Multi-Head Attention, Layer Normalization, Feed Forward Layer가 반복적으로 쌓인 형태다.

Encoder의 각 층 사이에는 Residual Connection이 있어, 입력 값을 변환 결과에 다시 더해 안정적인 학습이 가능하게 한다. Residual Connection은 깊은 네트워크에서 정보 손실을 방지하고, Vanishing Gradient 문제를 완화 한다.

입력 텍스트의 전후 관계를 이해하고, Context을 반영한 Embedding을 생성하고, 이 결과를 DecoderCross Attention단계에서 활용할 수 있게 한다.

Decoder

디코더는 인코더의 출력을 바탕으로 최종적으로 텍스트를 생성하는 역할을 한다.

구조적으로는 Encoder와 다르게 Multi-Head Attention대신 Masked Multi-Head Attention을 사용한다.

Cross Attention Layer를 통해서 Encoder의 결과를 입력으로 받아 사용한다.

토큰을 생성할 때, 사람의 글쓰기처엄 순차적으로 토큰을 하나씩 생성한다. 이미 생성된 토큰을 기반으로 다음 토큰을 예측한다.

학습할 때는 모두 완성된 텍스트를 입력 받는데 이 어텐션을 그대로 활용하는 경우 미래시점에 작성해야하는 텍스트를 미리 확인하게 되는 문제가 생긴다. 이런 문제를 막기위해 Masking을 적용한다.

[LLM] What is layer normalization?

딥러닝 모델을 학습할 때, 정규화(Normalization)는 빠르고 안정적인 학습을 위한 핵심 기법 중 하나다. 특히 자연어 처리(NLP)에서 사용되는 트랜스포머 기반 LLM(Large Language Model)에서는 층 정규화(Layer Normalization)가 중요한 역할을 한다.

정규화는 딥러닝 모델에서 입력 데이터가 일정한 분포(평균과 분산)를 갖도록 조정해주는 기법이다. 정규화를 통해 모델은 다음과 같은 이점을 얻을 수 있다

  • 학습이 더 안정적이고 빠르게 진행 됨.
  • 과적합(Overfitting)방지에 도움 됨.
  • DNN(Deep neural network) architecture에서도 정보 흐름이 원활 함.

Batch Normalization VS Layer Normalization

Batch Normalization

배치 정규화는 입력 데이터를 배치 단위로 묶어서 평균과 분산을 계산하고 정규화한다. 주로 이미지 처리 분야에서 사용되며, 자연어 처리에서는 아래 이미지 처럼 문장마다 길이가 다르더라도 일정한 길이로 맞추기 위해 PAD 토큰이 삽입된다.

배치 마다 구성데이터가 달라서 정규화 효과가 일정하지 않게 되서 LLM에서는 일반적으로 Bath Norm을 사용하지 않는다.

Layer Normalization

층 정규화는 각 샘플(토큰 임베딩)마다 독립적으로 정규화한다. 같은 문장 안의 각 단어 벡터를 기준으로 평균과 분산을 계산한다.

토큰 임베딩별 정규화를 수행하기 때문에 문장의 길이에 영향을 받지 않고 정규화를 동일하게 적용할 수 있다.

LLM과 같은 트랜스포머 기반 자연어 처리 모델에서는, 입력의 다양성과 길이의 불균형을 고려해 배치 정규화 대신 층 정규화를 사용한다. 이는 모델이 더 빠르고 안정적으로 학습될 수 있도록 돕고, 문맥 이해 능력을 향상시키는 중요한 기법이다.