Alterna · учебный материал
16.4 Учебные примеры вопроса и ответа
Вопрос остаётся входным контекстом. Настройка по ответам может измерять ошибку только на токенах ответа — это обучение по размеченным диалогам.
Что в этом материале
- Prompt задаёт контекст, answer задаёт supervised targets
Содержание и основные понятия
На предыдущей странице: исправляем и независимо проверяем.
Вопрос остаётся входным контекстом. Настройка по ответам может измерять ошибку только на токенах ответа — это обучение по размеченным диалогам.
Каждый известный токен готовит прогноз следующего. Ошибка проходит назад по программе, оптимизатор меняет веса, а отдельные данные проверяют результат. Разметка диалога и предпочтений меняет objective.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Prompt задаёт контекст, answer задаёт supervised targets
SFT обучает модель на demonstrations: instruction и дополнительный context подаются слева, ожидаемый answer расположен справа. В распространённом response-only контракте loss prompt-токенов маскируется, но они остаются во входе и участвуют в causal attention при предсказании ответа. Это отличается от удаления prompt. F03.
L
S
F
T
=
−
1
∣
A
∣
∑
i
∈
A
log
p
θ
(
t
i
∣
t
<
i
)
,
A
=
{
i
:
token
i
принадлежит answer
}
.
L_{SFT}=-\frac{1}{|A|}\sum_{i\in A}\log p_\theta(t_i\mid t_{<i}),
\qquad A=\{i:\text{token }i\text{ принадлежит answer}\}.
L
SFT
=
−
∣
A
∣
1
i
∈
A
∑
lo
g
p
θ
(
t
i
∣
t
<
i
)
,
A
=
{
i
:
token
i
принадлежит
answer
}
.
Chat template, роли, separators и EOS являются частью model contract. Если training использует один template, а serving — другой, IDs и позиции меняются до первого model layer. Packing нескольких dialogues допустим только с явными boundaries и корректной attention/loss mask. Mean нужно делить на число answer targets, иначе длинный padding меняет масштаб gradient.
Что показывает модель.
В визуальной модели prompt cells окрашены как context-only, answer cells — как targets. Переключатель
all tokens/answer only
должен менять только loss mask, а не историю, которую видит ответ. Data collator показывает labels после shift, чтобы последняя prompt-позиция могла предсказывать первый answer token.
Граница применимости.
Demonstrations отражают политику составителей и могут содержать ошибки. SFT учит имитировать conditional distribution примеров, но не проверяет факты во внешнем мире. Скрытие prompt loss — инженерный выбор, не универсальный закон; pretraining, continued pretraining и некоторые template objectives используют другие masks.
from math import log
labels_16d=[-100,-100,4,1]; target_probs_16d=[0.5,0.25]
active_16d=[label for label in labels_16d if label!=-100]
sft_loss_16d=-sum(log(p) for p in target_probs_16d)/len(active_16d)
assert active_16d==[4,1] and abs(sft_loss_16d-log(8)/2)<1e-12
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Prompt участвует в forward, а supervised loss начинается на response.
Учимся по сравнению двух ответов. Как этот вопрос продолжает полученный результат?
Python-примеры главы 16
Академическая база →