Alterna · учебный материал

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

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

Что в этом материале

Содержание и основные понятия

На предыдущей странице: позиция через поворот координат.
Внимание переносит информацию между позициями. Небольшая сеть FFN затем отдельно преобразует представление каждой позиции.
Вектор получает позиционную информацию, обменивается сведениями и отдельно перерабатывает своё состояние. Остаточные суммы сохраняют прежний путь. Последняя таблица выдаёт оценки словаря.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Нелинейность внутри каждой позиции
Attention связывает позиции; FFN смешивает координаты отдельной позиции. В варианте ReLU:
F
(
X
)
=
ReLU
⁡
(
X
W
1
+
b
1
)
W
2
+
b
2
.
F(X)=\operatorname{ReLU}(XW_1+b_1)W_2+b_2.
F
(
X
)
=
ReLU
(
X
W
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
⁡
(
X
W
g
)
,
U
=
X
W
u
,
F
(
X
)
=
(
G
⊙
U
)
W
d
.
G=\operatorname{SiLU}(XW_g),\quad U=XW_u,\quad
F(X)=(G\odot U)W_d.
G
=
SiLU
(
X
W
g
​
)
,
U
=
X
W
u
​
,
F
(
X
)
=
(
G
⊙
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
Академическая база →

Структурная карта учебников