Feed-Forward Network
Attention이 다른 positions에서 정보를 가져왔다면, FFN은 각 position에 모인 features를 변환한다. 같은 network를 모든 token에 적용하지만 각 token의 값은 독립적으로 계산한다. 핵심은 단순히 dimension을 늘리는 것이 아니라 넓힌 feature 공간에서 비선형 계산을 하고, 필요한 update를 Residual Stream의 폭으로 돌려주는 것이다. SwiGLU는 이 FFN을 gated branches로 구성하는 한 방식이다.
- token x()
- up projection
- activation / gated branches
- down projection
- update()
Position-Wise Computation
Vanilla FFN은 이며 다. 모든 token에 같은 weights를 적용하지만 다른 위치를 직접 읽지는 않는다.
주요 matrix weights는 Attention , FFN 로 FFN 비중이 이다. GPT-2 Small 에서 Attention≈2.36M, FFN≈4.72M/block, 12 blocks의 FFN≈57M이다. Embedding 등을 제외한 block matrix 조건이다.
Why Expand and Return?
선형 변환만 연달아 적용하면 그 합성은 다시 하나의 선형 변환으로 표현할 수 있다. 사이의 activation이 있어야 더 복잡한 패턴에 반응하는 feature를 학습할 수 있다. Up projection은 많은 feature 조합을 만들 공간을 주고, 비선형 activation은 그 조합에 따라 반응을 달라지게 한다. Down projection은 그 반응을 원래 차원의 update로 모은다.
다시 로 줄이는 것은 정보량을 무조건 원상복구하자는 뜻이 아니다. FFN output을 기존 차원 state에 더하는 Residual addition의 shape를 맞추어야 한다. Position끼리 직접 섞는 연산은 없지만 입력에는 앞 Attention의 문맥이 이미 들어 있으므로, context-blind word lookup과 같지 않다.
교수님이 설명한 key-value memory 관점에서는 up projection과 activation이 입력에 맞는 패턴을 찾는 Key 쪽 역할, down projection이 그에 대응하는 정보를 내보내는 Value 쪽 역할로 해석된다. 이것은 FFN을 이해하는 해석 관점이며 실제 Attention dictionary와 동일한 연산이라는 뜻은 아니다. 일부 model editing 연구가 down projection을 조정하는 이유도 전달할 Value를 바꾼다는 직관과 연결된다.
SwiGLU
는 scalar activation이다. 는 gate/value branch와 output projection을 포함하는 transformation이다.
세 matrices의 3dm을 vanilla 와 맞추면 이다. Llama 2 7B의 , m=11008은 implementation에 맞춘 폭이다. 반드시 이 비율을 써야 한다는 보편 규칙은 아니다.
Following the Two Branches
SwiGLU에서는 같은 가 gate branch와 value branch로 갈라진다.
는 같은 coordinate끼리 곱하는 elementwise product다. Gate가 작게 반응하는 coordinate의 value 기여는 약해지고, 다르게 반응하는 features는 다른 비중으로 down projection에 들어간다. 여기서 SiLU의 출력 자체를 반드시 0과 1 사이인 probability라고 해석하지 않는다. SiLU는 이며 sigmoid 하나와 다르다.
ReLU는 음수를 0으로 보내고, GELU는 , SiLU는 를 이용해 부드럽게 반응을 바꾼다. 이것들은 scalar activation인 반면, SwiGLU는 세 learned matrices와 두 branches의 곱을 포함한 FFN transformation 전체다. Adaptation이나 quantization에서 이를 activation 이름으로만 생각하면 gate projection 도 다루어야 한다는 점을 놓칠 수 있다.
세 matrices를 같은 폭 으로 만들면 주요 weights는 이다. 기존 FFN의 와 같게 비교하려고 을 선택하는 것이 parameter-matched setting이다. 이 비율은 공정한 비교를 위한 선택이지 SwiGLU가 성립하는 필수 조건은 아니다. 일 때 약 10,923을 실제 구현에 맞추어 11,008로 정한 Llama 2 7B 예시도 이 구분으로 읽는다.
Attention과 FFN의 특징과 차이를 서술할 수 있어야 한다.
FFN의 weights는 위치마다 새로 만드는 것이 아니다. 동일한 network를 각 token에 독립 적용한다.
FFN이 독립적으로 계산해도 입력 hidden state에는 이미 Attention의 문맥 정보가 들어 있다.
SwiGLU는 SiLU 하나가 아니라 gated FFN transformation이다.
Attention · FFN
교수님이 안내한 첫 서술형 준비 방향: 두 sublayer의 차이를 Residual Stream과 연결한다.
| Aspect | Attention | FFN |
|---|---|---|
| 정보 접근 | Allowed positions 간 혼합 | 각 position 독립 계산 |
| 주요 연산 | → scale/mask → Softmax → AV | Up → activation/gate → down |
| Output | Value의 weighted mixture | Token features의 비선형 변환 |
| Vanilla matrix weights | ///O: | →4d→: |
| Vanilla forward | projections + | |
| Residual 역할 | 위치 간 통신 update를 더함 | 위치별 계산 update를 더함 |
| 확장 개념 | MHA / GQA / MLA | SwiGLU / MoE |
FFN 입력은 이미 Attention의 문맥을 포함할 수 있다. 위 상수는 dense vanilla / FFN4d / multiply-add2 FLOPs 가정이다.
Check
Attention과 FFN을 정보 접근 범위·계산·shape·parameter 비중으로 비교하라.
Answer
Attention은 allowed positions의 Value를 혼합한다. FFN은 각 위치에 같은 비선형 network를 독립적으로 적용한다. Vanilla FFN은 →4d→이며 block matrix weights에서 로 Attention의 보다 많다. 둘 다 폭 update를 Residual Stream에 더한다.
SiLU와 SwiGLU를 같은 activation function이라고 부르면 어떤 구조를 놓치는가?
Answer
SiLU는 scalar xσ(x)다. SwiGLU는 SiLU gate branch와 별도 up branch를 elementwise 곱한 뒤 down projection하는 gated FFN 구조다.
FFN을 key-value memory로 보는 교수님 예시에서 model editing은 어느 projection과 연결됐는가?
Answer
첫 projection/activation을 pattern-key, down projection을 전달할 value로 보는 해석에서 down projection 편집을 예시로 들었다. 모든 FFN의 고정된 역할이라고 단정하지 않는다.
FFN이 token별로 계산된다면 어떻게 context에 따라 다른 update를 만들 수 있는가?
Answer
FFN에 들어오는 state가 이미 Attention을 통해 context를 포함할 수 있기 때문이다. Position마다 같은 weights를 사용해도 입력 state가 다르면 비선형 변환 결과도 달라진다. 직접 다른 positions를 읽는 연산과, context를 담은 현재 state를 계산하는 연산은 다르다.
SwiGLU의 두 branch와 output projection을 순서대로 설명하라.
Answer
xW_g에 SiLU를 적용한 gate와 xW_u의 value branch → elementwise product → down projection. Scalar SiLU와 전체 transformation을 구분한다.
SiLU · SwiGLU · MoE를 축별로 비교하고 그 차이가 필요한 이유를 설명하세요.
Answer
Scalar function, gated FFN, 여러 FFN의 routing을 서로 다른 층위로 읽는다.
구조: SiLU=Scalar xσ(x) / SwiGLU=두 input branches + down projection / MoE=Router + 선택된 expert FFNs
핵심 연산: SiLU=원소별 activation / SwiGLU=SiLU(xW_g) ⊙ (xW_u) / MoE=Top- expert weighted sum
연결: SiLU=Gate branch에 사용 가능 / SwiGLU=Dense expert의 FFN 형태 가능 / MoE=Token마다 다른 experts 선택
비용 관점: SiLU=단일 함수 / SwiGLU=3dm matrix weights / MoE=Total vs active parameters 구분