attention이 위치 간 정보를 섞은 다음, 모든 토큰이 위치별 feed-forward network(FFN)를 통과해 — 작은 MLP 하나가 위치마다 독립적으로 적용. FFN은 d_model을 d_ff("intermediate" 차원, 보통 4 × d_model)로 확장, 비선형 활성 적용, 다시 축소.
FFN(x) = Activation(x · W₁ + b₁) · W₂ + b₂
확장-후-축소 패턴 자체가 포인트. 중간 표현이 d_model의 4배 차원 — attention layer가 추출한 feature의 비선형 함수를 계산할 공간을 FFN한테 줘. 축소 projection이 학습된 reduction을 재사용해서 결과를 다시 d_model로 압축.
파라미터 예산이 얼마나 여기 사나
전형적 decoder block, d_model=4096, d_ff=14336(Llama 3 8B):
- Attention: 4 × d_model² = layer당 67M 파라미터.
- FFN(SwiGLU, 행렬 3개): 3 × d_model × d_ff ≈ layer당 176M 파라미터.