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. Выбор только из этого динамически формируемого множества позволяет модели адаптироваться по ситуации: при высокой уверенности одного токена ядро невелико, а при неуверенности (вероятности более равномерны) — расширяется, обеспечивая больше разнообразия.

Алгоритм работы на каждом шаге:

  1. Модель вычисляет вероятности всех потенциальных следующих токенов.
  2. Токены сортируются по вероятности (по убыванию).
  3. Ядро формируется из верхней части списка — так, чтобы их суммарная вероятность превышала заданный порог p.
  4. Вероятности токенов ядра нормируются так, чтобы их сумма была равна 1. Все остальные токены исключаются (вероятность присваивается 0).
  5. Следующий токен выбирается случайно из нового распределения.

Формально ядро определяется как наибольшее множество токенов, удовлетворяющее условию:

Пример

Представим, что на некотором шаге языковая модель оперирует словарём из пяти слов: [the, a, cat, dog, eats] и вычислила такие вероятности:

  • the: 0,5
  • a: 0,2
  • cat: 0,1
  • dog: 0,1
  • eats: 0,1

Если задать :

  1. Токены сортируются по вероятности: [the, a, cat, dog, eats].
  2. Считается накопленная вероятность:
    • the: 0,5
    • the + a: 0,5 + 0,2 = 0,7
    • the + a + cat: 0,7 + 0,1 = 0,8
  3. Ядро — это наименьшее множество с суммарной вероятностью ≥ 0,8: .
  4. Вероятности этих токенов нормируются:
    • P(the) = 0,5 / 0,8 = 0,625
    • P(a) = 0,2 / 0,8 = 0,25
    • P(cat) = 0,1 / 0,8 = 0,125
  5. Следующий токен выбирается случайно из этого распределения (dog и eats не будут выбраны).

Топ-k семплирование

Топ-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].

Примечания