AI

[AI] SwiGLU는 어떤 함수일까?

청귤파파 2024. 10. 9. 21:58

Transformers 아키텍처에서 자주 사용되는 SwiGLU activation function 은 어떤 함수일까? 이를 이해하기 위해 Swish, GLU, SwiGLU 를 차례대로 이해할 필요가 있다. 결론만 먼저 얘기하면 아래와 같다.


📌 Summary

  • Swish: $\beta$ 값에 따라 다른 특성을 가질 수 있는 activation function 의 한 종류이다.
  • GLU: Component-wise product of two linear transformations of input
  • SwiGLU: Swish 를 non-linear function 으로 사용하고, GLU 를 적용한 activation function 이다.

1. Swish

1.1 Swish 의 특징

$$
\text{Swish}(x) = x \cdot \sigma(\beta x)
$$

  • beta 는 상수 혹은 학습 가능한 파라미터이고 beta 의 값에 따라,
    • $\beta = 1$ 일 때, Sigmoid-weighted Linear Unit (SiLU) 로 동작한다.
    • $\beta = 0$ 일 때, $\sigma(0) = 0.5$ 가 되어 scaled linear function 이 된다. ($x/2$)
    • $\beta = inf$ 일 때, $\sigma$ 가 0-1 function 처럼 되어 ReLU 와 유사해진다.
  • 즉, $\beta$ 가 학습 파라미터라면 linear function 과 ReLU 간의 nonlinearly interpolate 하는 smooth function 으로 볼 수 있고, 모델 학습에 의해 결정된다.

1.2 Swish 의 실험 결과

  • Swish 특징에 의해, 다양한 모델에 대하여 ReLU 보다 성능이 좋다. 그 외 성질로는 0 보다 큰 값에 대하여 unbound 하고, 0 보다 작은 값에 대하여 bounded 하다. (그러나 ReLU 와 달리 작은 음수값에 대하여 허용하고 있다.)
  • 또한 Non-monotonicity (Non-단조함수) 성질을 가지고 있는데, 이는 일반적인 activation function 과 구분되는 특징이다. 특히, 아래 이미지를 보면 preactivation 분포에서 상당수의 값이 bump 영역 $(-5 < x < 0)$ 에 빠지게 되므로 ReLU 와 달리 이 값을 허용하는 것이 중요하다.
  • 다양한 모델에 대하여 다른 activation 보다 성능이 우수하다. (ImageNet, ResNet, MobileNet, MT-Transformer 등)

2. SwiGLU

  • GLU Variants Improve Transformer (2020, Google): 다양한 activation 에 GLU 를 적용하였을 때, Transformer 의 성능을 향상시킨다는 논문이다.
  • MetaAI 에서 공개한 Open LLM 모델인 LLaMA1, LLaMA2 은 모두 SwiGLU 를 채택하고 있다.

2.1 GLU

  • GLU(Gated Linear Units) 는 component-wise product of two linear transformations of input 으로, non-linear function 으로 $\sigma(x)$ 사용한다.

$$
\text{GLU}(x, W, V, b, c) = \sigma(xW + b) \otimes (xV + c)
$$

2.2 SwiGLU 의 실험 결과

  • SwiGLU 는 GLU 의 non-linear function 으로 $\sigma(x)$ 대신 $\text{Swish}(x)$ 를 사용하는 형태이다.

$$
\text{SwiGLU}(x, W, V, b, c, \beta) = \text{Swish}_\beta(xW + b) \otimes (xV + c)
$$

  • 논문에서는 T5 architecture 의 FFN layer 에 다양한 GLU 를 적용하여 실험 진행하였다. Pre-training & log-perplexity 결과와 Fine-tuning 실험 결과 (GLUE) 는 각각 아래와 같다.
    $$
    \text{FFN}_\text{SwiGLU}(x, W, V, W_2) = (\text{Swish}_1(xW) \otimes xV)W_2
    $$

2.3 SwiGLU 실험 결론

  • Transformer architecture 에 다양한 activation 형태의 GLU 를 적용하여 실험하였고, 그 결과 SwiGLU 가 괜찮은 성능을 보였다.