Feed-forward network — двухслойный проекционный блок внутри трансформера, который преобразует скрытые признаки и усиливает нелинейность модели.
Определение
Feed-forward network (FFN) — это компонент трансформерного блока, выполняющий точечное преобразование признаков после attention-слоя. В классической архитектуре FFN представляет собой двухслойную нейронную сеть с нелинейностью, одинаковую для всех позиций последовательности. В отличие от attention, который моделирует связи между токенами, FFN работает независимо для каждого токена, расширяя представление и возвращая его в исходное пространство признаков.
FFN задаёт основную часть параметров трансформера и влияет на глубину, выразительность и способность модели извлекать сложные зависимости.
Как работает
FFN принимает на вход вектор скрытых признаков размера dmodel, преобразует его в более высокомерное пространство и затем возвращает в исходную размерность. Стандартная структура выглядит так:
- линейная проекция вверх — расширение признаков до dff (обычно в 2–4 раза больше dmodel);
- нелинейность — функции ReLU, GELU или SwiGLU в современных моделях;
- линейная проекция вниз — возврат к исходной размерности dmodel;
- нормализация и residual — FFN интегрируется в блок трансформера через residual-коннект.
Формула FFN для одного токена x:
FFN(x) = W₂ · f(W₁ · x + b₁) + b₂
Где f — нелинейная активация. Несмотря на простоту, FFN обрабатывает большую часть вычислений трансформера, поскольку применяется ко всем токенам независимо.
Где применяется
- Все трансформерные архитектуры: LLM, мультимодальные модели, аудио- и видео-трансформеры.
- Модели для кодогенерации и анализа больших текстов.
- Системы, где требуется глубокая обработка признаков.
- Модели с расширенными проекциями для long-context задач.
- Гибридные архитектуры, где FFN сочетается с gating и экспертными блоками.
Практические примеры использования
В больших языковых моделях FFN выполняет роль «внутреннего преобразователя», который усиливает и модифицирует признаки, полученные из attention-блока. Attention собирает информацию между токенами, а FFN — перерабатывает её внутри каждого токена, превращая сырые связи в полезные высокоуровневые представления.
В современных LLM FFN часто заменяют на вариации с gated-структурами (например, SwiGLU), которые улучшают устойчивость обучения и повышают качество без значительного роста параметров.
В мультимодальных моделях FFN адаптирует визуальные, аудио- или сенсорные признаки к размерности и структуре трансформера, обеспечивая согласованность модальностей.
В системах генерации кода FFN усиливает семантические зависимости внутри токена-кандидата, улучшая способность модели к формированию корректных продолжений.
Вариации и усовершенствования FFN
Современные модели используют расширенные версии FFN, которые улучшают производительность или уменьшают затраты:
- SwiGLU — gated-вариант FFN, применяемый в LLaMA и других современных LLM;
- GEGLU — версия FFN с GLU-гейтом и улучшенной устойчивостью градиентов;
- MoE-FFN — использование экспертов внутри FFN-блока для увеличения параметров без роста вычислений;
- Parallel FFN — одновременное выполнение attention и FFN-проекций (архитектуры «parallel transformer»);
- Grouped FFN — разбиение признаков на каналы для ускорения вычислений.
В таких вариациях FFN становится адаптивным и более выразительным, сохраняя структуру базовой архитектуры.
Преимущества и ограничения
- Плюс: даёт модели нелинейность и способность к сложным преобразованиям.
- Плюс: содержит большую часть параметров трансформера.
- Плюс: работает независимо по позициям и хорошо масштабируется.
- Плюс: легко комбинируется с gating и MoE-подходами.
- Минус: увеличивает количество вычислений при длинных последовательностях.
- Минус: чувствителен к выбору нелинейности и ширины dff.
- Минус: без gating может создавать избыточные проекции.
- Минус: увеличивает VRAM при больших batch size.
Связанные термины
- Self-attention
- Transformer block
- SwiGLU
- MoE
- Residual connections
- Layer normalization
- Gated attention