alterna ai
ALTERNA AI / ГЛАВА 16 · 01

16.1 Что считать правильным ответом

Есть decoder, ошибка, обратный проход и оптимизатор.

Сдвинем предложение на один токен: текущая позиция должна предсказать следующий. Начнём с одной пары входа и ответа.

Каждый известный токен готовит прогноз следующего. Ошибка проходит назад по программе, оптимизатор меняет веса, а отдельные данные проверяют результат. Разметка диалога и предпочтений меняет objective.

Одна последовательность задаёт много учебных пар

Авторегрессионная модель оценивает вероятность последовательности как произведение условных вероятностей. Tokenizer сначала превращает текст в IDs, а training window длины n даёт n-1 предсказаний: вход обрывается перед последним token, target начинается со второго. F01.

pθ(t1,…,tn)=∏i=1n−1pθ(ti+1∣t≤i),X=t1:n−1,Y=t2: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}.

Сдвиг является частью контракта данных, а не скрытой операцией 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 Академическая база →