Transformer에서의 Feed-Forward Network
Transformer의 Encoder와 Decoder 모듈 내에 위치한 `Feed-Forward Network(FFN)`은 attention mechanism이 처리하는 데이터를 정제하는데 중요한 역할을 한다. 먼저 `Multi-head Attention Sublayer`와 `Post-Layer Normalization(Post-LN)`을 거친 output은 $d_{model}=512$의 차원을 유지하며, FFN에 입력된다. 이 FFN은 시퀀스의 각 position에서 독립적으로 데이터를 순차적으로 처리하는 데 중요한 역할을 수행한다.
Transformer의 인코더와 디코더 내부의 FFN은 `fully connected network`이면서 동시에 `position-wise network`에 해당한다. 이러한 설계는 입력 시퀀스의 각 위치가 개별적으로 처리되지만, 동일한 방식으로 처리되므로 입력 데이터의 `positional integrity`를 유지하는데 매우 중요하다.
FFN의 주요 특성
- Fully-Connected Layer
- 2개의 fully-connected linear layer로 구성되어 input data를 처리
- 첫 번째 layer는 input dimension $d_{model}=512$를 더 큰 차원인 $dff=2048$로 확장
- 두 번째 layer는 이를 다시 $d_{model}=512$ 차원으로 돌려놓음
- Activation Function
- 두 linear layer 사이에 `Rectified Linear Unit(ReLU)` 적용
- $ReLU(x)=max(0,x)$
- 모델에 비선형성을 도입하여 더 복잡한 패턴을 학습할 수 있도록 지원하는 역할
- 두 linear layer 사이에 `Rectified Linear Unit(ReLU)` 적용
- Position-wise Processing
- 입력 데이터의 순차적 특성에도 불구하고 각 position(즉, 문장에서 각 단어의 representation)은 동일한 FFN으로 독립적으로 처리
- 모든 position에 동일한 변환을 적용하는 것과 유사
- 입력 시퀀스의 다양한 부분에서 feature를 추출할때의 `uniformity`를 보장
FFN의 수학적 표현
$FFN(x)=ReLU(xW_1+b_1)W_2+b_2$
- $W_1$과 $W_2$는 각각 첫 번째 layer와 두 번째 layer의 weight matrix
- $b_1$과 $b_2$는 각각 첫 번째 layer와 두 번째 layer의 bias
- 첫번째 선형 변환 이후 `ReLU` activation이 element-wise하게 적용