Top-p
Top-p (англ. top-p sampling, также известен как англ. nucleus sampling) — стохастическая стратегия декодирования для генерации последовательностей из авторегрессионных вероятностных моделей. Метод был впервые предложен Ари Хольцманом (Ari Holtzman) и его коллегами в 2019 году для генерации естественного языка, чтобы решить проблему избыточно повторяющегося и бессмысленного текста, возникающую при использовании других популярных методов декодирования, таких как поиск по лучу (beam search)[1]. В дальнейшем техника топ-p применялась и в других научных областях, таких как белковая инженерия[2] и геофизика[3].
В топ-p применяется порог вероятности p: следующий элемент последовательности выбирается только среди наименьшего возможного множества кандидатов с наибольшей вероятностью, суммарная вероятность которых превышает p. Такой метод адаптирует размер пула кандидатов в зависимости от уверенности модели, делая его более гибким по сравнению с top-k-семплированием, где количество кандидатов фиксировано. Благодаря эффективности, top-p часто используется в современных приложениях крупных языковых моделей[4].
Техника
На каждом этапе генерации текста языковая модель вычисляет распределение вероятностей для следующего токена по всему словарю. Простейшие методы — выбор токена с наибольшей вероятностью (жадный поиск) или поиск среди ограниченного числа наиболее вероятных последовательностей (поиск по лучу) — приводят к формированию текста, который зачастую оказывается скучным, повторяющимся или бессмысленным[1]. Top-p вносит случайность в процесс, сохраняя качество текста.
Ключевая идея состоит в том, чтобы выбирать случайно среди небольшого, но надёжного множества токенов, называемого «ядро» (англ. nucleus). Это ядро включает в себя наиболее вероятные токены, чья совокупная (кумулятивная) вероятность чуть превышает пороговое значение p. Выбор только из этого динамически формируемого множества позволяет модели адаптироваться по ситуации: при высокой уверенности одного токена ядро невелико, а при неуверенности (вероятности более равномерны) — расширяется, обеспечивая больше разнообразия.
Алгоритм работы на каждом шаге:
- Модель вычисляет вероятности всех потенциальных следующих токенов.
- Токены сортируются по вероятности (по убыванию).
- Ядро формируется из верхней части списка — так, чтобы их суммарная вероятность превышала заданный порог p.
- Вероятности токенов ядра нормируются так, чтобы их сумма была равна 1. Все остальные токены исключаются (вероятность присваивается 0).
- Следующий токен выбирается случайно из нового распределения.
Формально ядро определяется как наибольшее множество токенов, удовлетворяющее условию:
Представим, что на некотором шаге языковая модель оперирует словарём из пяти слов: [the, a, cat, dog, eats] и вычислила такие вероятности:
- the: 0,5
- a: 0,2
- cat: 0,1
- dog: 0,1
- eats: 0,1
Если задать :
- Токены сортируются по вероятности: [the, a, cat, dog, eats].
- Считается накопленная вероятность:
- the: 0,5
- the + a: 0,5 + 0,2 = 0,7
- the + a + cat: 0,7 + 0,1 = 0,8
- Ядро — это наименьшее множество с суммарной вероятностью ≥ 0,8: .
- Вероятности этих токенов нормируются:
- P(the) = 0,5 / 0,8 = 0,625
- P(a) = 0,2 / 0,8 = 0,25
- P(cat) = 0,1 / 0,8 = 0,125
- Следующий токен выбирается случайно из этого распределения (dog и eats не будут выбраны).
Топ-k семплирование — схожий приём, но пул кандидатов ограничивается k наиболее вероятными токенами. Главное преимущество top-p — адаптивность: при высокой уверенности модели (кривая распределения вероятностей остро выражена) ядро может быть очень малым; при неуверенности (плоское распределение) ядро расширяется, добавляя разнообразие. В top-k всегда выбирается фиксированный объём токенов, который может быть недостаточным либо избыточным для разных ситуаций[1].
Применение
Хотя top-p в первую очередь ассоциируется с генерацией естественного языка и крупными языковыми моделями, техника используется и в других научных областях, где необходимо порождать или анализировать последовательные данные из вероятностных моделей.
В исходной сфере — генерации текстов — top-p ценится за способность производить более разнообразный и связный текст по сравнению с детерминистическими методами. Его эффективность особенно заметна при решении задач автоматического создания вопросно-ответных пар, где важна вариативность для обучения моделей ответов на вопросы[5].
В вычислительной биологии top-p-семплирование используют для генерации новых молекулярных и белковых последовательностей с помощью специализированных языковых моделей. В задачах de novo синтеза лекарств, химические языковые модели строят сфокусированные библиотеки новых кандидатов на препараты. В сочетании с моделями прогнозирования биологической активности исследователи выявляют ранее неизвестные, высокоэффективные ингибиторы киназ[6]. Аналогично и для белкового проектирования: применяя сэмплирование языков белков, исследуют огромное пространство возможных последовательностей аминокислот в поисках новых функциональных вариантов для медицины или новых материалов[2].
Методика top-p применяется и в геофизике — например, для шумоподавления аудиосигналов магнитотеллурических (AMT) данных. В некоторых подходах nucleus sampling встраивают в механизм внимания, чтобы эффективнее выделять и устранять сложные антропогенные шумы в геофизических сигналах. Это повышает качество интерпретации электропроводности недр Земли методом АМТ, важной, например, для разведки полезных ископаемых[3].
Ограничения и альтернативы
Хотя топ-p и топ-k устраняют значительную часть недостатков детерминированных методов (поиск по лучу), у них есть и свои ограничения. Согласно исследованиям, такие стохастические подходы могут приводить к нежелательным повторениям, а также не полностью отражать статистические свойства естественного языка[7].[8][9]
Для разрешения этих проблем были предложены альтернативные варианты:
- Фактуальное (factual-nucleus) сэмплирование. Предложено для борьбы с тем, что «равномерная случайность» внутри ядра может ухудшать фактуальность текста. Параметры случайности здесь динамически подстраиваются, чтобы повысить точность при сохранении качества текста[10].
- Локально-типичное сэмплирование (locally typical sampling) рассматривает генерацию текста с позиции информационной теории. Вместо выбора только самых вероятных токенов, здесь сэмплируют из множества таких, которые близки к «типичным» в смысле информации — это помогает уменьшить повторения и повысить качество[7].
- Приоритетное сэмплирование (priority sampling) — детерминированная альтернатива, устраняющая повторяющиеся или бессвязные варианты. Генерируется уникальный набор отсортированных по уверенности модели сэмплов; показано, что этот метод превосходит nucleus sampling в задачах оптимизации компиляторов[11].