Выбор следующего токена
Определение
Выбор следующего токена — процедура, которая превращает оценки возможных продолжений текста в один токен: выбирает максимальную оценку или проводит случайную выборку.
Также ищут: декодирование языковой модели · next-token decoding
Зачем это знать
Одни и те же оценки модели могут дать разные продолжения при разных правилах выбора. Разобрав один шаг, можно объяснить результат настроек и сравнивать генерации при зафиксированных параметрах.
Top-k: кандидатов меньше, сумма снова 1
Карта понятия
Что подтверждено
При жадном выборе берут токен с наибольшей текущей оценкой; при случайной выборке токен выбирают по вероятностям, полученным после обработки оценок.
Граница применимости: Один шаг обычного авторегрессионного декодирования; максимум на шаге не означает оптимума всей последовательности.
Температура (temperature) T — положительный делитель числовых оценок токенов, логитов, перед softmax. Для исходных вероятностей p_i новые вероятности равны p_i^(1/T)/Σ_j p_j^(1/T). При T больше 1 различия между вероятностями сглаживаются, при T между 0 и 1 усиливаются; порядок токенов сохраняется.
Граница применимости: Температурное преобразование одного распределения. TemperatureLogitsWarper в Transformers 4.44.2 требует положительную T и отклоняет ноль.
Top-k при отсутствии равных оценок на границе оставляет k токенов с наибольшими оценками, а остальные исключает. Вероятности оставшихся токенов делят на их прежнюю сумму, чтобы новая сумма стала равна единице.
Граница применимости: k — от 1 до числа кандидатов. В Transformers 4.44.2 удаляются оценки строго ниже k-й; ничья на границе может сохранить больше k токенов.
Top-p оставляет кратчайший начальный отрезок списка токенов по убыванию вероятности, чья сумма достигает p. Порог считают по вероятностям на входе фильтра; вероятности оставшихся токенов делят на их сумму.
Граница применимости: Ядро случайной выборки при p больше 0 и не больше 1. В рассматриваемом обычном режиме Transformers 4.44.2 сохраняется минимум один токен; дополнительные ограничения числа кандидатов не включены.
В обычном generate() Transformers 4.44.2 при num_beams=1 и do_sample=False выбирается максимальная текущая оценка, а temperature, top_k и top_p не применяются. При do_sample=True выполняется случайная выборка с включёнными преобразованиями.
Граница применимости: Обычный режим без лучевого, контрастного и вспомогательного декодирования; речь о выборе токена после прочей обработки оценок.
В обычной случайной выборке Transformers 4.44.2 включённые temperature, top-k и top-p применяются в порядке: температура → top-k → top-p.
Граница применимости: Порядок _get_logits_warper() в v4.44.2. Другие преобразования здесь не рассматриваются; порядок не обобщается на остальные библиотеки и версии.
Для условного распределения A=0,4, B=0,3, C=0,2, D=0,1 top-k=2 даёт A=4/7 и B=3/7; top-p=0,6 без top-k оставляет A и B. При T=2 веса до нормировки равны квадратным корням исходных вероятностей, а порядок токенов сохраняется.
Граница применимости: Учебный расчёт для четырёх вероятностей без ничьих. Top-k и top-p разобраны отдельно при неизменной температуре; преобразование T=2 разобрано отдельно без фильтров.
Для вероятностей A=0,4, B=0,3, C=0,2, D=0,1 порядок top-k=2 затем top-p=0,55 оставляет только A, тогда как top-p=0,55 без предварительного top-k оставляет A и B.
Граница применимости: Учебный расчёт при T=1 и указанном порядке фильтров. Top-p вычисляет вероятности по оценкам, оставшимся после top-k; перед итоговой выборкой вероятности нормируются.
Что проверить
- Запишите do_sample, temperature, top_k, top_p и версию библиотеки.
- Проверьте, какой порядок фильтров применяет именно используемая библиотека.
Первоисточники
- Transformers v4.44.2: generation/utils.py
Код задаёт порядок температуры, top-k и top-p. В обычном режиме без лучевого поиска do_sample определяет выбор между случайной выборкой и максимальной текущей оценкой.
- Utilities for Generation, Transformers v4.44.2
Описания преобразований оценок, значения температуры, порога top-p, числа токенов top-k и зависимости от do_sample.
Утверждения: 02