Оптимальный транспорт, чтобы взвешивать в ответе модели то, что действительно важно

Контекст

Языковые модели уже давно вышли за рамки поисковой строки: они пишут код, тексты и помогают с ресёрчем. Сегодня доступ к ним — через мобильные приложения и API — есть у каждого. Ассистенты становятся частью повседневности: от советов по личным вопросам и факт-чекинга (при том, что модели честно предупреждают о возможных ошибках) до планов питания и выбора следующего отпуска.

С ростом мощности моделей растёт и требование к доверию: можно ли опираться на их ответы и согласованы ли они с человеческими ценностями и предпочтениями? Это давняя тема. Перед публичным релизом модели обычно дообучают на данных человеческих предпочтений (запрос, выбранный ответ, отклонённый ответ). Вокруг алайнмента (alignment) накопилось много подходов; самый популярный — Direct Preference Optimization (DPO) за счёт простоты и эффективности.

Но у DPO есть системное ограничение: он равномерно взвешивает токены при подсчёте вероятности ответа. Люди же естественно придают больший вес смысловым кускам. Пример:

Пользователь: Назови столицу Франции
LLM: Столица Франции — Париж. Это красивый город с множеством достопримечательностей.

Для нас критично одно слово — «Париж». DPO же даёт одинаковый вклад «Парижу», «это», «красивый» и т.д., размывая обучающий сигнал.

Попытки поправить это уже были — например, SimPO и SamPO. В мае 2025 появился ещё один вариант: OTPO. Идея простая: использовать оптимальный транспорт, чтобы автоматически поднимать веса семантически ключевых токенов и ослаблять второстепенные. Дальше разберём, как это работает и почему помогает точнее согласовывать поведение модели с человеческими предпочтениями.

Почему равномерное взвешивание токенов не работает

Чтобы понять, зачем нужно взвешивать токены, посмотрим, как именно устроен DPO. Типичный пайплайн такой: модель предварительно обучают на корпусах из триллионов токенов (сама модель содержит миллиарды/триллионы параметров), затем делают «инструкционное дообучение (SFT) и уже после — оптимизацию предпочтений методом DPO, чтобы алайнить поведение с человеческими предпочтениями перед публичным релизом.

DPO сравнивает лог-правдоподобия выбранного и отклонённого ответов на уровне токенов. Для каждого примера с выбранным ответом y_w и отклонённым y_l вычисляется целевая функция:

Изображение из статьи о DPO
Изображение из статьи о DPO

πθ (Pi_theta) — это оптимизируемая модель, π_ref (Pi_reference) — эталонная модель, а π∗(y|x) обозначает вероятность отклика y при заданном пользовательском вводе x.

Вероятность π∗(y|x) раскладывается на вычисления по токенам. Для выбранного отклика, состоящего из токенов [t₁, t₂, …, tₙ], логарифм вероятности выражается как:

log π∗(y|x) = Σᵢ log π(tᵢ|x, t₁…tᵢ₋₁)

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

Запрос: What is the capital of France?
Выбранный ответ: The capital of France is Paris.
Отклоненный ответ: The capital of France is Italy, which is actually incorrect.

DPO складывает лог-вероятности токенов с одинаковым весом:

  • Выбранный: log P("The") + log P("capital") + log P("of") + log P("France") + log P("is") + log P("Paris") + log P(".")

  • Отклоненный: log P("The") + log P("capital") + ... + log P("Italy") + ... + log P("incorrect") + log P(".")

Критическая фактическая разница — “Paris” vs “Italy” — но в DPO они получают тот же вес, что и артикли/предлоги и прочие служебные токены. Возникает рассинхрон между тем, на чём фокусируется оптимизация, и тем, что реально важно человеку.

Отсюда и смещение к многословию: из-за аддитивности по длине длинные ответы дают больший суммарный вклад в метрику, и модель может неявно «вознаграждаться» за болтологию. Когда смысловые токены усредняются вместе со стилистическими, обучающий сигнал становится шумным и менее надёжным — качество обучения по предпочтениям падает.

Решение очевидно: в расчёте вероятности ответа поднимать вес действительно значимых токенов и ослаблять второстепенные. Именно это и делает OTPO.

Взвешивание токенов на основе оптимального транспорта (OTPO)

Теперь, когда мы разобрались, почему равномерные веса в DPO — это проблема, посмотрим, как OTPO решает её через теорию оптимального транспорта. Мы трактуем оптимизацию предпочтений как транспортную задачу — какая минимальная стоимость преобразования одного ответа в другой?

Например, какова стоимость превращения «Столица Франции — Париж» в «Столица Франции — Италия»? Большинство токенов совпадают, но замена «Париж» → «Италия» — это серьёзная семантическая трансформация.

Формально OTPO строит два распределения массы на носителях из токенов: выбранного ответа (источник) и отклонённого (приёмник). Стоимость переноса отражает семантическую близость пар токенов: близкие пары (например, «Париж» и «Лондон») имеют низкую стоимость, далёкие (скажем, «Париж» и «яблоко») — высокую.

Алгоритм находит транспортный план с минимальной общей стоимостью — по сути, как перераспределить массу между парами токенов. Масса действительно тянется к семантически близким парам (с низкой стоимостью). Однако веса токенов получают суммированием оптимального транспортного плана Γ по соответствующему измерению (без умножения на стоимость); стоимость влияет лишь опосредованно — через Γ. Это поднимает вклад смысловых различий (например, “Paris” ↔ “Italy”) и ослабляет второстепенные — тем самым адресуя проблему равномерного взвешивания в DPO.

Математическая основа OTPO

Теперь перейдём к математической основе OTPO. Алгоритм включает три ключевых компонента: построение матрицы стоимостей, решение задачи оптимального транспорта и вычисление взвешенных потерь по токенам.

Шаг 1. Матрица стоимостей

OTPO начинается с построения матрицы стоимостей M, которая измеряет семантическое расстояние между каждой парой токенов. Для i-го токена в выбранном (w) ответе и j-го токена в отклонённом (l) ответе стоимость задаётся как:

M[i][j] = ( h[w][i] — h[l][j] )²

где h[w][i] и h[l][j] — это скрытые представления токенов на последнем слое модели. Это евклидово расстояние отражает семантическую близость. Похожие токены, такие как “Paris” и “London”, имеют низкую стоимость, а далёкие, например “Paris” и “apple”, — высокую.

Шаг 2: Задача оптимального транспорта

OTPO формулирует взвешивание токенов как задачу несбалансированного оптимального транспорта:

Изображение из статьи OTPO
Изображение из статьи OTPO

Здесь Γ — это транспортный план (переменная, которую мы ищем), сопоставляющий токены между выбранным и отклонённым ответами. Ω управляет энтропийной регуляризацией. Слагаемые с KL-дивергенцией обеспечивают, чтобы маргинальные распределения Γ были близки к наивным равномерным весам DPO. Решение Γ* показывает, как оптимально переносить вероятностную массу между токенами выбранного и отклонённого ответов.

Шаг 3: Вычисление весов токенов

На основе решения задачи оптимального транспорта мы получаем веса для отдельных токенов путём суммирования по измерениям:

Изображение из статьи OTPO
Изображение из статьи OTPO

Здесь Γ(i,j) обозначает вес, присвоенный паре токенов (i, j) из выбранного ответа w и отклонённого ответа r. Эти веса в дальнейшем используются в функции потерь DPO вместо равномерного взвешивания.

Разница в вознаграждении с новым методом взвешивания также представлена на изображении из статьи.

Результаты экспериментов и ограничения

OTPO тестировали на разных задачах, но в контролируемых условиях. В задачах суммаризации он показал прирост качества примерно на +8,6 % относительно лучшего бейзлайна (SamPO), судья — GPT-4o. На проверке устойчивости к смещению в пользу более длинных ответов (length bias) на датасете UltraFeedback и на моделях меньшего размера, таких как Llama-3 8B, OTPO выдавал более короткие ответы. Предварительные результаты указывают, что метод помогает снизить многословие и повышает долю ответов, которые людей устраивают чаще.

Однако масштаб экспериментов пока недостаточен, чтобы делать обобщённые выводы об эффективности метода на разных типах задач; на ряде датасетов результаты получились неоднозначными. Кроме того, OTPO вычислительно затратен: требуется считать матрицу стоимостей и транспортный план. В качестве оценщика качества ответов использовалась сама LLM, после чего ответы дополнительно проверялись вручную небольшой группой рецензентов. Эти процедуры полезны, но их надёжность существенно зависит от оценщиков и может смещаться в пользу некоторых типов данных.

Заключение

Алайнмент LLM с человеческими предпочтениями остаётся одной из центральных тем исследований, и OTPO показывает обнадёживающие результаты в контролируемых условиях. Подход не идеален, но взвешивание токенов задаёт хорошую основу для более тонкой настройки моделей под предпочтения пользователей.


В завершение рекомендую к посещению бесплатные уроки, которые будут полезны начинающим специалистам по ML:

А для системного и полного обучения машинному обучению с нуля есть специализация Machine Learning. Ее разработали и ведут эксперты индустрии, опираясь на рабочие кейсы.

Комментарии (0)