Skip to main content

[LLM] 12. Transformer Block 이해하기


Transfromer Block​


Transformer Block을 이해하기 위해서는 다음 개념들을 알고 있어야합니다.

Multi-Head Attention, LayerNorm, FFN, Residual Connection

실행 흐름​

입력 (Token Embedding + Positional Encoding)  
↓
LayerNorm (Self-Attention 전에 정규화)
↓
Multi-Head Self-Attention (문장에서 중요한 단어 찾기)
↓
Residual Connection (원래 정보 유지)
↓
LayerNorm (FFN 전에 정규화)
↓
Feed Forward Network (FFN, Self-Attention 결과를 정제)
↓
Residual Connection (원래 정보 유지)
↓
출력 (다음 Transformer 블록으로 전달 or 최종 예측)

Transformer Block은 위와 같은 프로세스로 문장의 의미를 파악하고 학습합니다.

LayerNorm​


뉴런 출력을 정규화하여 학습을 안정적으로 만드는 기법입니다. 즉 그냥 출력 정규화입니다.

필요한 이유​

  1. 기울기 소실/발산 문제 (Gradient Vanishing/Exploding)
    • 네트워크가 깊어지면 뉴런의 출력을 계속 곱하고 합쳐지면서 갑이 너무 커지거나 작아질 수 있습니다.
    • 값이 너무 크면 Exploding -> 학습이 불안정해지고 NaN이 발생할 수 있습니다.
    • 값이 너무 작으면 Vanishing -> 모델이 제대로 학습을 못할 수도 있습니다.
  2. 뉴런의 값 분포가 균일하지 않는 문제
    • 어떤 뉴런은 평균적으로 10을 출력하고 어떤 뉴런은 0.1을 출력하게 되면 학습이 불균형 해지고 특정 뉴런의 영향력만 커집니다.

그래서 LayerNorm을 사용해서 뉴런 간 균형을 맞춥니다.

동작원리​

LayerNorm은 뉴런들의 값을 정규화하는데 Self-Attention과 FFN 전 또는 후에 적용하게 됩니다.

$\hat{x} = \frac{x - \mu}{\sigma + \epsilon} * \gamma + \beta$​

  • ✅ 프로세스
    1. 입력 x의 평균을 빼서 평균 0으로 맞추고
    2. 표준편차로 나눠서 출력의 크기를 균일하게 만든다.
    3. 이후에 학습 가능한 파라미터를 곱하고 더하여 최적의 스케일을 조정합니다.

방식​

  • Post-LayerNorm 방식

    • Self-Attention과 FFN 후에 LayerNorm을 하는 경우이다.
  • Pre-LayerNorm 방식

    • Self-Attention과 FFN 전에 LayerNorm을 하는 경우이다.
    • 최근에는 이 방식이 더 안정적이라서 GPT 모델에서 사용한다.

FFN이란​


FFN은 Transformer 블록 내에서 토큰을 개별적으로 가공하는 중요한 신경망 모듈입니다.

Self-Attention이 문맥을 반영한 정보를 전달하면 FFN은 이를 더 정교하게 하여 풍부한 의미를 갖는 표현으로 만든다고 합니다.

FFN 동작 방식​

  1. 차원확장

    • 입력토큰을 더 넓은 차원으로 변환합니다.
  2. 비선형 변환

    • GELU를 적용하여 더욱 복잡한 패턴을 학습하도록 합니다.
  3. 차원 축소

    • 다시 차원을 축소하여 모델이 효율적으로 처리할 수 있도록 합니다.

ReLU vs GELU​

  • ✅ ReLU (Rectified Linear Unit)

    • 양수는 남기고 음수를 0으로 바꾸는 함수입니다.
    • 불필요한 정보를 제거해서 더 간결한 표현을 만들고자 하는 목표를 갖고 있습니다.
  • ✅ GELU (Gaussiian Error Linear Unit)

    • ReLU보다 조금 더 부드럽게 처리합니다. 약한 음수를 조금 남겨둡니다.
    • 작은 값들은 0 근처에서 천천히 변하고 큰 값들은 빠르게 증가합니다.

비선형 함수를 사용해야 하는 이유​

선형 계층만 있다면 하나의 선형 변환을 한 효과만 나타난다고 합니다. 수학적인 부분이라 넘어가도록 합니다.

Residual Connection 이란? ( Shortcut Connection )​

원래 정보를 유지하면서 새로운 정보를 추가하는 기법입니다.

Self-Attention과 FFN을 통과한 이후에도 원본 정보를 유지할 수 있도록 해줍니다.

Residual Connection이 필요한 이유​

  1. 기울기 문제..

    • LayerNorm에서도 마주한 기울기 문제인데 깊은 네트워크에서는 초기 입력과 출력간의 차이가 커질 수 있습니다. 역전파 할 때 Gradient가 사라지는 문제가 발생하기 때문입니다.
  2. 정보 손실

    • Self-Attention과 FFN을 통과하면서 새 정보를 추가하다보면 기존 중요 정보가 사라질 수도 있습니다.
  3. 학습 속도 향상

    • 원래 정보 유지하면서 새 정보 추가하기 때문에 학습 속도가 향상되고 성능이 나빠지는 문제 방지 가능합니다.

동작 방식​

$y = f(x) + x$​

  • ✅ 프로세스
    1. $x$: 원본 입력 (Self-Attention , FFN 통과 이전 값)
    2. $f(x)$: 새로운 정보 (Self-Attention 또는 FNN을 통과한 출력)
    3. $y$: 최종 출력 (원본 입력 + 새로운 정보)

결론​

  • ✅ Residual Connection을 사용한다면
    • 정보 손실이 적다 -> 문맥 유지 가능
    • 학습이 더 빨리 진행된다 -> 네트워크가 깊어져도 안정적임
    • 모델 성능 향상 -> 정보가 풍부하게 남음.