alterna ai
ALTERNA AI / ГЛАВА 15 · 04

15.4 Переработка каждого токена отдельно

На предыдущей странице: позиция через поворот координат.

Внимание переносит информацию между позициями. Небольшая сеть FFN затем отдельно преобразует представление каждой позиции.

Вектор получает позиционную информацию, обменивается сведениями и отдельно перерабатывает своё состояние. Остаточные суммы сохраняют прежний путь. Последняя таблица выдаёт оценки словаря.

Нелинейность внутри каждой позиции

Attention связывает позиции; FFN смешивает координаты отдельной позиции. В варианте ReLU:

F(X)=ReLU⁡(XW1+b1)W2+b2.F(X)=\operatorname{ReLU}(XW_1+b_1)W_2+b_2.

При X[n,d],W1[d,d_ff],W2[d_ff,d] выход снова[n,d]. Все позиции используют одинаковые weights, но разные слои имеют собственные матрицы.

SwiGLU в принятом безbias-варианте использует три матрицы:

G=SiLU⁡(XWg),U=XWu,F(X)=(G⊙U)Wd.G=\operatorname{SiLU}(XW_g),\quad U=XW_u,\quad F(X)=(G\odot U)W_d.

G и U имеют[n,d_ff], произведение покоординатное. Это не matmul G·U. Down projection возвращает ширинуd. L08 сравнивает варианты при скорректированной hidden width; наша лаборатория сохраняет d_ff=2d, поэтому SwiGLU содержит больше параметров, чем ReLU.

При d=4,d_ff=8 ReLU-FFN имеет32+8+32+4=76скаляров сbias. Безbias SwiGLU имеет3×32=96. Входы и выходы одинаковой формы не означают равную стоимость.

Исследовать. Сравните две архитектуры, отслеживая полный перечень weights, gate/up/product/down. Изменение architecture control заново инициализирует модель; сравнение случайных logits не является экспериментом о качестве обученных моделей. Нельзя говорить «SwiGLU понимает лучше» только по наличию gate.

d,hidden=4,8
relu_params=d*hidden+hidden+hidden*d+d
swiglu_params=3*d*hidden
assert (relu_params,swiglu_params)==(76,96)

Код повторяет только что разобранные операции. Полный проверяемыйPython-пример главы доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.

Gate/up/down; при фиксированном d_ff бюджет отличается от ReLU.

Несколько блоков подряд. Как этот вопрос продолжает полученный результат?

Python-примеры главы 15 Академическая база →