Active Prompting: как выбрать примеры для разметки — это метод, который сначала просит модель ответить на каждый вопрос несколько раз, измеряет расхождение между ответами и отдаёт человеку на разметку самые спорные вопросы. Так ручной труд уходит туда, где модель расходится сама с собой.
Что такое Active Prompting по первичному исследованию
Метод описан в работе Active Prompting with Chain-of-Thought for Large Language Models (Diao и соавторы, 2023), код и инструкции лежат в официальном репозитории shizhediao/active-prompt. Авторы формулируют задачу так: существующие подходы с цепочкой рассуждений опираются на фиксированный набор размеченных человеком примеров, и эти примеры не обязательно самые эффективные для конкретной задачи. Хороший результат требует ручной инженерии промпта, а она дорогая.
Исследование разводит инженерию промпта на две части: выбор вопросов и проектирование шаблона промпта. Решение касается первой части — определить, какие вопросы из пула запросов к задаче важнее и полезнее разметить. Идея заимствована у активного обучения по неопределённости: вводятся метрики, которые характеризуют неопределённость, и по ним отбираются самые неопределённые вопросы для разметки.
Схема из статьи состоит из четырёх стадий. Сначала оценка неопределённости: модель опрашивается k раз и генерирует возможные ответы с промежуточными шагами, затем по этим ответам считается неопределённость u. Потом отбор: по неопределённости выбираются самые спорные вопросы. Затем разметка: люди размечают выбранные вопросы. В конце инференс: каждый вопрос решается с новыми размеченными примерами.
Авторы сообщают, что на восьми задачах сложного рассуждения метод показал преимущество над конкурентными базовыми моделями. В README репозитория приведена цифра: с моделью text-davinci-002 active-prompt улучшает self-consistency на 7% (67.9 → 74.9). Это исторический результат конкретной модели и конкретного набора задач, он не переносится автоматически на другие модели.
Чем исследовательский метод отличается от бытового уточнения запроса
Название «active prompting» легко спутать с обычной практикой: пользователь задаёт уточняющий вопрос в чате, модель отвечает, диалог продолжается. В исследовании речь о другом. Там «активность» относится к отбору данных для разметки: система сама решает, какие вопросы показать человеку, а человек добавляет эталонные рассуждения и ответы.
Разница видна по ролям. В бытовом чате человек формулирует следующий запрос и оценивает ответ на глаз. В методе Active-Prompt человек не выбирает вопросы — их выбирает метрика неопределённости, а человек выполняет разметку отобранного. Цель тоже разная: в чате нужен ответ здесь и сейчас, в методе — собрать небольшой набор качественных примеров, который затем подставляется в промпт для будущих вопросов.
Авторы подчёркивают экономическую сторону: размечать восемь примеров для задачи дёшево по деньгам и человеческим усилиям, а ключевая проблема — понять, какие именно вопросы стоит размечать. Отсюда и построение: неопределённость как сигнал, куда направить ограниченный бюджет разметки.
Практический вывод для читателя: если задача — получить один ответ, Active-Prompt не нужен. Если задача — собрать набор примеров для повторяющегося класса вопросов, метод даёт процедуру отбора. Он отвечает на вопрос «что размечать», оставляя открытым «как формулировать шаблон промпта» — это вторая, отдельная часть инженерии.
Учебный вход: три вопроса и по три ответа
Ниже — полностью заданный учебный пример. Ответы придуманы автором статьи как условный вход для отработки процедуры; это не замер модели и не реальный ответ какого-либо сервиса. В таблице для каждого вопроса даны три ответа (k = 3).
| Вопрос | Ответ 1 | Ответ 2 | Ответ 3 |
|---|---|---|---|
| Q1: «8 − 3» | 5 | 5 | 5 |
| Q2: «Три набора по 4 детали, 2 детали отложили» | 10 | 12 | 10 |
| Q3: «Две коробки по 6 предметов, 4 отдали, 5 купили» | 13 | 17 | 8 |
Вход полностью определён: три вопроса, по три финальных ответа на каждый. Дальше по каждому вопросу нужно сгруппировать одинаковые финальные ответы и посчитать расхождение. Формула из статьи: u = h / k, где h — число различных финальных ответов после удаления дубликатов, k — общее число ответов.
Для Q1 все три ответа совпадают, различных значений одно: h = 1, k = 3, расхождение 1/3. Для Q2 различных значений два (10 и 12): h = 2, k = 3, расхождение 2/3. Для Q3 все три ответа разные: h = 3, k = 3, расхождение 1.
Такой вход удобен тем, что его можно пересчитать вручную и сверить с эталоном. Он не требует доступа к API, ключей или платных запросов: вся арифметика выполняется на бумаге или в таблице. Именно поэтому учебный пример годится для первого знакомства с процедурой — читатель видит, как метрика превращает набор ответов в число и как это число задаёт порядок разметки.
Готовый промпт для отбора вопросов
Промпт ниже решает одну задачу: по синтетической таблице сгруппировать одинаковые финальные ответы, посчитать h/k, отсортировать вопросы и выбрать самый спорный для ручной проверки. Его можно скопировать и вставить без правок.
В этой синтетической таблице:
Q1 «8−3» ответы [5,5,5];
Q2 «Три набора по 4 детали, 2 детали отложили» ответы [10,12,10];
Q3 «Две коробки по 6 предметов, 4 отдали, 5 купили» ответы [13,17,8].
Сгруппируй одинаковые финальные ответы, вычисли disagreement = h/k:
h — число разных ответов, k — число всех ответов.
Отсортируй вопросы по disagreement, выбери один для человеческой разметки.
Не трактуй disagreement как вероятность ошибки и не заменяй человека ответом модели.
Эталон: 1/3, 2/3, 1; выбрать Q3, человек проверяет 13.
Под себя меняют содержимое таблицы: вместо Q1–Q3 подставляют свои вопросы и свои наборы ответов, сохраняя структуру «вопрос — список ответов». Формулу h/k и запрет подменять человека ответом модели оставляют как есть, иначе теряется смысл процедуры.
Вариации той же задачи, если нужно расширить применение:
- добавить четвёртый вопрос с двумя разными ответами из четырёх и проверить, как изменится порядок;
- заменить числовые вопросы на текстовые и посмотреть, что считать «разными финальными ответами» при близких формулировках;
- увеличить k до пяти ответов на вопрос и пересчитать расхождения;
- попросить модель объяснить, почему вопрос с расхождением 1 попал в начало списка;
- попросить вывести только таблицу «вопрос — h — k — h/k» без выбора;
- добавить в промпт требование не использовать частоту класса как вероятность истины.
Эталон выбора и правило проверки результата
Эталон для учебного входа: расхождения 1/3, 2/3 и 1; на ограниченную разметку выбирается Q3 как самый спорный. Человеческая проверка Q3 даёт короткое решение: 2 × 6 − 4 + 5 = 13. Этот эталонный ответ человек вычисляет и вносит самостоятельно.
Правило проверки состоит из трёх шагов. Первый: сверить вычисленные расхождения с эталоном 1/3, 2/3, 1 — если числа не совпали, ошибка в подсчёте различных ответов или в k. Второй: убедиться, что выбран именно Q3, то есть вопрос с наибольшим расхождением. Третий: проверить, что внесённый человеком ответ равен 13 и что решение включает короткую цепочку шагов и финальное число.
Внесённая пара «вопрос + проверенное краткое решение» может стать обучающим примером в следующем промпте. Так замыкается цикл: неопределённость указала на вопрос, человек дал эталон, эталон попал в набор примеров. Проверку при этом проводят на новом вопросе, отдельном от размеченного, и не объявляют это доказанным улучшением.
Правило проверки важно потому, что метрика отбирает вопросы, но не подтверждает правильность ответа. Расхождение 1 означает лишь, что модель дала три разных ответа. Какой из них верный, определяет человек своим решением.
Отрицательный случай и ограничения метода
Отрицательный случай в учебном входе — Q1. Все три ответа совпали (5, 5, 5), расхождение 1/3, вопрос уходит в конец списка. Уверенное единогласие здесь не является общей гарантией правильности: модель может одинаково ошибаться. Метрика неопределённости измеряет разброс ответов. Истинность ответа проверяется отдельно.
Второе ограничение связано с человеческой меткой. Если человек разметит вопрос ошибочно, подбор примеров не исправит эталон — неверный пример попадёт в набор и будет подставлен в будущие промпты. Отбор решает, куда направить разметку, и не повышает её качество.
Третье ограничение — сама метрика. В статье рассмотрены несколько метрик неопределённости: расхождение, энтропия, дисперсия и самоуверенность. Авторы отмечают, что расхождение, энтропия и дисперсия работают сопоставимо хорошо, а самоуверенность не работает, поскольку модели склонны к переоценке своей уверенности. Выбор метрики влияет на результат, и переносить выводы одной метрики на другую без проверки нельзя.
Четвёртое ограничение — контекст эксперимента. Числа из статьи относятся к конкретным моделям (text-davinci-002, code-davinci-002), конкретным датасетам и конкретной дате. Исторические бенчмарки сохраняют модель и дату вместе с ограничениями; они не становятся числами для других моделей или других задач.
Когда метод полезен и что проверить
Метод полезен, когда есть пул однотипных вопросов и ограниченный бюджет ручной разметки. Тогда процедура «несколько ответов → расхождение → отбор самых спорных → разметка человеком» даёт порядок действий вместо случайного выбора примеров. Второй случай — когда нужно объяснить команде, по каким признакам вопросы получили приоритет для разметки.
Что проверить перед применением. Сначала — что задача повторяющаяся: разметка окупается, если примеры будут переиспользованы в промпте. Затем — что человек готов дать эталонные рассуждения вместе с финальными числами: в статье примеры включают цепочку шагов и ответ. Далее — что метрика неопределённости подходит задаче: расхождение просто считается, но для арифметики авторы отдельно рассматривали дисперсию.
Отдельно стоит проверить, как ведёт себя выбранная метрика на ваших данных. Учебный пример с тремя вопросами показывает механику, но не заменяет прогон на реальном пуле. Если расхождения у всех вопросов близки, отбор теряет смысл — тогда либо растёт k, либо меняется метрика.
И последнее: результат разметки проверяют на новом вопросе, отдельном от размеченного. Совпадение на размеченном вопросе ожидаемо и ничего не доказывает. Только отдельная проверка показывает, помогает ли собранный набор примеров.
Частые вопросы
Что такое active prompting простыми словами?
Это способ выбрать, какие примеры размечать человеку. Модель отвечает на каждый вопрос несколько раз, считается расхождение ответов, и на разметку уходят самые спорные вопросы. Так ручной труд направляется туда, где модель расходится сама с собой.
Чем active prompt learning отличается от обычного уточнения запроса в чате?
В чате человек сам формулирует следующий запрос и оценивает ответ. В методе вопросы для разметки выбирает метрика неопределённости, а человек размечает отобранное. Цель — собрать набор примеров для будущих вопросов.
Как считается метрика расхождения?
По формуле u = h / k, где h — число различных финальных ответов после удаления дубликатов, k — общее число ответов. В учебном примере для трёх вопросов получились 1/3, 2/3 и 1. Чем выше значение, тем спорнее вопрос.
Можно ли применять метод с цепочкой рассуждений?
Да, метод и описан для цепочки рассуждений: человек размечает выбранные вопросы рассуждениями и ответами, и эти примеры подставляются в промпт. В README оценка неопределённости запускается через uncertainty_estimation.py с методом few_shot_cot; для inference.py показан метод active_cot.
Гарантирует ли метод, что выбранные вопросы самые полезные?
Нет. Метрика измеряет разброс ответов; истинность требует отдельной проверки: единогласие может скрывать общую ошибку, а ошибочная человеческая метка испортит эталон. Результат проверяют на новом вопросе, отдельном от размеченного, и не объявляют доказанным улучшением.
