TL;DR
Power Sampling — метод сэмплирования из базовой LLM, который возводит вероятность каждой последовательности в степень α (обычно α=4) и сэмплирует из этого распределения. Звучит технически, но суть простая: вместо того чтобы дообучать модель с RL, исследователи берут базовую модель и заставляют её генерировать текст так, чтобы она сильнее предпочитала высоковероятные пути. Результат — на задачах по математике, коду и науке базовая модель показывает результаты как после RL-дообучения, а иногда даже лучше.
Главная находка: low-temperature сэмплирование (температура <1) работает не так как все думают. Когда мы понижаем температуру, модель просто делает каждый следующий токен более "жадным". Но она не учитывает что будет дальше — выбирает токен с высокой вероятностью сейчас, даже если он ведёт в тупик через 10 токенов. Power sampling учитывает "будущие пути": он предпочитает токен, у которого мало продолжений, но они все высоковероятные, а не токен с кучей продолжений, но все посредственные. Это критично для reasoning — одна ошибка в середине рассуждения убивает весь ответ.
Метод требует доступа к вероятностям токенов и MCMC-сэмплирования (Metropolis-Hastings), что невозможно в обычном чате. Но принцип применим: генерируй несколько вариантов ответа, выбирай тот который модель считает наиболее вероятным (уверенным), а не первый попавшийся. Вместо одного прохода с низкой температурой — несколько проходов с выбором лучшего. Исследование объясняет ПОЧЕМУ это работает: базовая модель уже знает правильный ответ, просто стандартное сэмплирование часто его пропускает.
Схема метода
Power Sampling (исследовательский вариант, требует API):
ИНИЦИАЛИЗАЦИЯ: Сгенерируй первый блок токенов (192 токена) базовой моделью
ЦИКЛ (для каждого следующего блока из 192 токенов):
ШАГ 1: Сгенерируй продолжение → получи кандидат полной последовательности
ШАГ 2: (повтори N раз, обычно 10-20):
- Выбери случайную позицию в тексте
- Пересэмплируй от неё до конца
- Вычисли p(новый_вариант)^α / p(старый_вариант)^α
- Прими новый вариант с вероятностью = этому отношению
- Если принял → используй новый, если нет → оставь старый
ШАГ 3: Зафиксируй этот блок, переходи к следующему
ВЫХОД: Итоговая последовательность из высоковероятных путей
Весь процесс идёт в коде/API — модель многократно пересэмплирует и сравнивает варианты по их вероятностям.
Пример применения
⚠️ Оригинальный метод требует API. Ниже — адаптация принципа для чата.
Задача: Нужно решить нетривиальную задачу по комбинаторике для подготовки олимпиадника — "Сколькими способами можно расставить 8 ладей на шахматной доске так, чтобы они не били друг друга?"
Промпт:
Реши задачу: Сколькими способами можно расставить 8 ладей на шахматной доске 8×8
так, чтобы они не били друг друга?
Сгенерируй 3 независимых решения. Для каждого:
1. Покажи ход рассуждений
2. В конце укажи свою уверенность в правильности (0-100%)
После трёх решений выбери то, в котором ты наиболее уверен, и объясни почему.
Результат:
Модель выдаст три разных подхода к решению. В каждом будет своя логика рассуждений. Какие-то варианты могут начаться правильно, но зайти в тупик (модель поставит низкую уверенность). Другие пройдут чисто от начала до конца — там уверенность будет выше.
В финале модель выберет решение с наивысшей собственной оценкой уверенности — это аналог выбора высоковероятного пути в power sampling. Вы получите не первый попавшийся ответ, а лучший из нескольких попыток.
Почему это работает
Слабость LLM: При обычном сэмплировании модель выбирает каждый следующий токен жадно — берёт тот, что выглядит хорошо прямо сейчас. Но она не заглядывает вперёд. Результат — выбрала токен с вероятностью 0.6, у него 10 продолжений по 0.1 каждое. Альтернативный токен имел вероятность 0.4, но у него было одно продолжение с вероятностью 0.8. Модель выбрала первый → завела рассуждение в тупик.
Сильная сторона LLM: Модель умеет оценивать вероятность целых последовательностей, не только следующего токена. Если дать ей готовый текст, она скажет насколько он вероятен. Базовые модели уже содержат правильные ответы в своём распределении — просто они "размазаны" среди множества вариантов.
Как метод использует это: Power sampling возводит вероятности в степень — это резко увеличивает разницу между "хорошими" и "плохими" последовательностями. Вместо p(хорошая)=0.01 и p(плохая)=0.001 получаем p(хорошая)^4=0.0000000001 vs p(плохая)^4=0.000000000000001 — в миллион раз больше разница! Дальше MCMC-сэмплирование многократно пересэмпливает куски текста и выбирает варианты с высокими вероятностями. Это как "выуживание" редких правильных ответов из базовой модели.
Рычаги управления (для API-версии): - Степень α (обычно 4.0) — больше = жёстче фильтрация, но можно пропустить разнообразные решения - Число MCMC шагов (10-20) — больше = точнее сэмплирование, но дольше - Размер блока B (192 токена) — меньше = чаще проверки, лучше для коротких задач - Температура proposal (0.25) — влияет на разнообразие кандидатов при пересэмплировании
Принципы для чата (адаптация)
Сам power sampling требует API, но принципы применимы:
1. Генерируй несколько — выбирай лучший
Вместо одного ответа с низкой температурой делай 3-5 попыток и выбирай.
Реши задачу: {задача}
Сгенерируй 3 независимых решения.
В каждом в конце укажи свою уверенность (0-100%).
Потом выбери решение с наивысшей уверенностью.
Почему работает: Модель сама оценивает "вероятность правильности" каждого пути. Это приближение к выбору высоковероятной последовательности.
2. Думай о будущих шагах, не только о следующем
Проси модель планировать наперёд, не действовать жадно.
Перед решением:
1. Набросай 2-3 возможных подхода к задаче
2. Для каждого оцени: куда он приведёт через 3-4 шага
3. Выбери подход, который выглядит наиболее "гладким" от начала до конца
4. Реши выбранным подходом
Почему работает: Явно заставляем модель учитывать "будущие пути", а не хватать первый пришедший в голову токен.
3. Используй температуру осторожно
Low temperature делает каждый шаг жадным, но не улучшает планирование.
# Вместо этого:
temperature=0.1 → один проход
# Делай это:
temperature=0.7 → три прохода → выбор лучшего
Почему работает: Небольшая температура даёт разнообразие. Несколько попыток покрывают разные ветки рассуждений. Выбор лучшего = аналог power sampling.
Ограничения
⚠️ Требует API для полной версии: Настоящий power sampling работает только через API с доступом к token probabilities и программируемому сэмплированию. В ChatGPT/Claude веб-интерфейсе нет доступа к этим настройкам.
⚠️ Медленно: Метод делает десятки inference вызовов для одного ответа. На сложной задаче по математике — 10-20× больше токенов чем обычная генерация. В API это дорого. В чате — долго ждать при ручной адаптации (регенеришь 5 раз).
⚠️ Не для творческих задач: Метод оптимизирован для задач где есть "правильный ответ" (математика, код, наука). На AlpacaEval (общая полезность) прирост скромнее. Для креатива нужно разнообразие, а power sampling делает наоборот — сужает к высоковероятному.
⚠️ Адаптация в чате — приближённая: Промпты выше используют модельную самооценку уверенности, а не истинные вероятности. Модель может врать о своей уверенности. Это слабее чем математически точный power sampling, но лучше чем ничего.
Как исследовали
Исследователи взяли три базовые модели (Qwen2.5-Math-7B, Qwen2.5-7B, Phi-3.5-mini) и протестировали их в трёх режимах: обычное сэмплирование, после RL-дообучения (GRPO), и power sampling без дообучения.
Проверяли на четырёх бенчмарках: MATH500 (математика), HumanEval (код), GPQA (наука), AlpacaEval 2.0 (общая полезность). Измеряли два типа метрик: pass@1 (правильный ли первый ответ) и pass@k (есть ли правильный среди k попыток, обычно k=10).
Сравнение показало неожиданное: RL-модели бьют базовые на pass@1, но на pass@10 базовые часто лучше! То есть базовая модель "знает" правильный ответ, просто с первой попытки не всегда его выдаёт. RL как бы "перераспределяет" эту способность — делает первую попытку успешнее, но убивает разнообразие (все 10 попыток становятся почти одинаковыми).
Power sampling показал лучшее из двух миров: на pass@1 сравнялся с RL (на MATH500: base=60.4%, GRPO=79.2%, power=78.0%), а на pass@10 обогнал всех (base=83.6%, GRPO=82.8%, power=95.4%). Более того, на out-of-domain задачах (HumanEval, GPQA) power sampling переиграл RL даже на pass@1.
Почему так? Команда проанализировала вероятности сгенерированных ответов. Оказалось, правильные ответы после RL имеют высокую вероятность под базовой моделью. То есть RL не учит модель новому — он просто сдвигает сэмплирование к тому, что базовая модель уже считала вероятным. Power sampling делает то же самое, но без дообучения и потери разнообразия.
Интересная деталь: они доказали математически (Proposition 1), что low-temperature sampling ≠ sampling from p^α. Все думали что это одно и то же, а на самом деле low-temp работает "жадно" на каждом токене, а power distribution учитывает будущие пути. Это объясняет почему низкая температура помогает, но не так хорошо как могла бы.
