Feedforward и layer norm в блоке
FFN обрабатывает каждый токен отдельно и содержит большую часть параметров, а layer norm приводит вектор к нулевому среднему и единичной дисперсии.
Зачем это нужно
Attention смешивает информацию между токенами, а FFN перерабатывает её внутри каждого токена. Layer norm держит значения в диапазоне, с которым легко учиться градиентным спуском.
Как это работает
FFN — это двухслойная полносвязная сеть с одним скрытым слоем. Её веса одинаковы для всех позиций, но разные у разных слоёв. Обычно скрытый размер в 4 раза больше d. По словам источника, большая часть параметров трансформера лежит именно здесь, и, судя по исследованиям, там кодируются фактические знания. Большинство современных LLM используют gated FFN с SwiGLU.
Layer norm считает среднее μ и σ по элементам одного вектора, вычитает среднее, делит на σ и умножает на γ, прибавляя β. Вариант RMSNorm не вычитает среднее и делит только на среднеквадратичное значение.
Пример
В оригинальном трансформере d = 512, скрытый размер FFN d_ff = 2048.
Что запомнить
- FFN работает с каждым токеном отдельно.
- Большинство параметров блока лежит в FFN.
- Layer norm нормализует один вектор; RMSNorm проще, без центрирования.
Где читать дальше
- SLP3, гл. 7 «Transformers and Pretraining», разделы 7.2.1–7.2.2