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

16.2 Ошибка и влияние весов

Сначала измеряем уверенность в правильном ответе, затем идём назад по вычислениям. Производная оценки превращается во влияние на вес.

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

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

На предыдущей странице: что считать правильным ответом.
Сначала измеряем уверенность в правильном ответе, затем идём назад по вычислениям. Производная оценки превращается во влияние на вес.
Каждый известный токен готовит прогноз следующего. Ошибка проходит назад по программе, оптимизатор меняет веса, а отдельные данные проверяют результат. Разметка диалога и предпочтений меняет objective.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Градиент начинается с logits
Для одного target
y
softmax превращает logits
z
в распределение, а negative log-likelihood штрафует вероятность правильного ID. Устойчивая реализация вычитает максимум до
exp
. При softmax вместе с cross-entropy производная по каждому logit имеет особенно простую форму. F06.
p
j
=
e
z
j
−
m
∑
k
e
z
k
−
m
,
L
=
−
log
⁡
p
y
,
∂
L
∂
z
j
=
p
j
−
1
[
j
=
y
]
.
p_j=\frac{e^{z_j-m}}{\sum_k e^{z_k-m}},\quad
L=-\log p_y,\quad
\frac{\partial L}{\partial z_j}=p_j-\mathbf 1[j=y].
p
j
​
=
∑
k
​
e
z
k
​
−
m
e
z
j
​
−
m
​
,
L
=
−
lo
g
p
y
​
,
∂
z
j
​
∂
L
​
=
p
j
​
−
1
[
j
=
y
]
.
Положительные компоненты уменьшают неверные logits при gradient descent, отрицательная компонента повышает target logit. Их сумма равна нулю: добавление одной константы ко всем logits не меняет softmax. Для batch/token matrix сначала применяют mask, затем явно выбирают
sum
или mean по числу
валидных targets
, а не по размеру padded tensor.
Что показывает модель.
Inspector показывает logits, shifted target, probabilities, token loss и
dL/dz
до прохождения backward через LM head и blocks. Perplexity
exp(mean NLL)
имеет смысл только при одинаковом tokenizer и одинаковой политике masking; значение нельзя честно сравнивать между произвольными словарями как универсальную шкалу качества.
Граница применимости.
Низкая next-token loss не доказывает factuality, безопасность или способность следовать инструкции. Floating-point overflow предотвращается устойчивой формой, но training всё ещё может получить NaN из activations, gradients или optimizer state. Gradient clipping ограничивает norm update-сигнала, а не «исправляет» плохие данные и не гарантирует сходимость.
from math import exp,log
logits_16b=[1.0,0.0,-1.0]; target_16b=0; pivot_16b=max(logits_16b)
raw_16b=[exp(v-pivot_16b) for v in logits_16b]; probs_16b=[v/sum(raw_16b) for v in raw_16b]
loss_16b=-log(probs_16b[target_16b]); grad_16b=[p-(i==target_16b) for i,p in enumerate(probs_16b)]
assert abs(loss_16b-0.40760596444438046)<1e-12 and abs(sum(grad_16b))<1e-12
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Mask исключает позицию из objective, но token может оставаться входным context.
Исправляем и независимо проверяем. Как этот вопрос продолжает полученный результат?
Python-примеры главы 16
Академическая база →

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