Alterna · учебный материал
16.1 Что считать правильным ответом
Сдвинем предложение на один токен: текущая позиция должна предсказать следующий. Начнём с одной пары входа и ответа.
Что в этом материале
- Одна последовательность задаёт много учебных пар
Содержание и основные понятия
Есть decoder, ошибка, обратный проход и оптимизатор.
Сдвинем предложение на один токен: текущая позиция должна предсказать следующий. Начнём с одной пары входа и ответа.
Каждый известный токен готовит прогноз следующего. Ошибка проходит назад по программе, оптимизатор меняет веса, а отдельные данные проверяют результат. Разметка диалога и предпочтений меняет objective.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Одна последовательность задаёт много учебных пар
Авторегрессионная модель оценивает вероятность последовательности как произведение условных вероятностей. Tokenizer сначала превращает текст в IDs, а training window длины
n
даёт
n-1
предсказаний: вход обрывается перед последним token, target начинается со второго. F01.
p
θ
(
t
1
,
…
,
t
n
)
=
∏
i
=
1
n
−
1
p
θ
(
t
i
+
1
∣
t
≤
i
)
,
X
=
t
1
:
n
−
1
,
Y
=
t
2
:
n
.
p_\theta(t_1,\ldots,t_n)=\prod_{i=1}^{n-1}p_\theta(t_{i+1}\mid t_{\le i}),
\qquad X=t_{1:n-1},\quad Y=t_{2:n}.
p
θ
(
t
1
,
…
,
t
n
)
=
i
=
1
∏
n
−
1
p
θ
(
t
i
+
1
∣
t
≤
i
)
,
X
=
t
1
:
n
−
1
,
Y
=
t
2
:
n
.
Сдвиг является частью контракта данных, а не скрытой операцией LM head. Если вход
[2,5,1,4]
, то logits позиции0 сравниваются с ID5, а не с ID2. EOS может быть target, чтобы модель училась завершать последовательность. Padding не должен вносить искусственные ошибки: для него задают mask или
ignore_index
, но ID padding всё равно может присутствовать во входном контексте.
Что показывает модель.
Визуальная модель должна перемещать одну и ту же линейку IDs на один шаг и связывать каждую строку logits ровно с одним target. При упаковке нескольких документов boundary token обязан быть виден: без него модель получает ложный переход от конца одного документа к началу другого.
Граница применимости.
Хорошо сформированные targets не гарантируют хороший корпус. Дубликаты, персональные данные, лицензии, перекос языков, contamination validation и токсичный контент требуют отдельного аудита. Random split отдельных строк может допустить почти одинаковые фрагменты в train и validation; в реальном pipeline деление делают по документам или источникам до chunking.
tokens_16a=[2,5,1,4]
inputs_16a,targets_16a=tokens_16a[:-1],tokens_16a[1:]
assert inputs_16a==[2,5,1] and targets_16a==[5,1,4]
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Input prefix должен предсказывать следующий ID; окна не пересекают границы документов.
Ошибка и влияние весов. Как этот вопрос продолжает полученный результат?
Python-примеры главы 16
Академическая база →