3,583 papers
arXiv:2509.18565 83 23 сент. 2025 г. FREE

EVoSS: двойная проверка через точный расчёт и прикидку

КЛЮЧЕВАЯ СУТЬ
Парадокс: LLM отлично прикидывает порядок величины («примерно 50 рублей»), но катастрофически плохо считает точно — может выдать 273 вместо 50. EVoSS использует это: модель решает задачу двумя путями — точно (уравнения + внешний решатель) и приблизительно («на глаз»). Если расхождение больше 50% — значит ошибка в расчётах. Когда LLM сыпется в арифметике, он промахивается не на проценты, а в разы — грубая проверка ловит это идеально.
Адаптировать под запрос

TL;DR

EVoSS — метод решения математических задач, который использует два параллельных подхода: сначала LLM разбирает задачу на компоненты, превращает их в уравнения и решает точно (через внешний решатель), а затем отдельно прикидывает ответ на глаз. Если точный расчёт и прикидка не сходятся — значит где-то ошибка.

LLM хорошо умеет прикидывать ("примерно 50 рублей"), но плохо считает точно (может выдать 47.3 вместо 50). При этом когда LLM ошибается в точных расчётах, он обычно промахивается сильно — не на 5%, а в разы. Это делает проверку через грубую оценку очень эффективной: если оценка "примерно 50", а точный ответ "273" — точно что-то не так.

Метод работает в 4 шага: (1) разбить задачу на утверждения, (2) превратить в уравнения, (3) решить через символьный решатель, (4) попросить LLM отдельно оценить ответ без точных вычислений. Если расхождение больше 40-50% — запускается исправление с подсказкой из оценки.


🔬

Схема метода

ШАГ 1: Декомпозиция
Задача → [утверждения] + [вопрос]

ШАГ 2: Генерация уравнений
[утверждения] → система уравнений

ШАГ 3: Точное решение
Уравнения → внешний решатель → точный ответ

ШАГ 4: Проверка через оценку
Задача → LLM оценивает "на глаз" → приблизительный ответ

ШАГ 5: Верификация
|точный - оценка| / точный < 50% → ✓ верно
|точный - оценка| / точный > 50% → ✗ исправление с подсказкой

Все шаги выполняются отдельными запросами к LLM.


🚀

Пример применения

Задача: Рассчитываешь юнит-экономику для доставки еды в Казани. CAC (стоимость привлечения клиента) = 800₸, средний чек = 2400₸, маржинальность 35%, клиент делает 4 заказа в среднем. Окупается ли клиент?

Промпт (точное решение):

Разбей задачу на утверждения:
- CAC = 800₸
- Средний чек = 2400₸ 
- Маржа = 35%
- Частота заказов = 4

Создай уравнения и найди:
- Прибыль с одного заказа
- Прибыль с клиента за весь цикл
- LTV (lifetime value)
- Окупаемость (LTV - CAC)

Промпт (проверка оценкой):

Та же задача, но не решай точно — прикинь примерно:
Если чек 2400₸, маржа треть, то с заказа примерно 800₸.
За 4 заказа примерно 3200₸. 
Минус CAC 800₸ → чистая прибыль около 2400₸.

Грубая оценка: клиент окупается ~в 3 раза.

Результат:

Получишь два ответа — точный расчёт (например, LTV-CAC = 2560₸) и прикидку (~2400₸). Если близко — верификация пройдена. Если точный расчёт выдал "13700₸" — явно ошибка в уравнениях, LLM ошибся.


🧠

Почему это работает

Слабость LLM: Модель хорошо понимает логику задачи, но арифметика — слабое место. При сложных расчётах с несколькими шагами вероятность ошибки растёт экспоненциально. Особенно если в задаче 2-3 уравнения и большие нецелые числа.

Сильная сторона LLM: Зато модель отлично прикидывает порядок величины. Когда просишь "оцени примерно", LLM включает другой режим — округляет, упрощает, думает в целых числах. Это гораздо надёжнее.

Как метод использует это: Точные вычисления делегируются внешнему символьному решателю (например, Python SymPy), который не ошибается в арифметике. А LLM занимается тем, что умеет хорошо — разбирает логику задачи и проверяет разумность результата через прикидку. Два независимых пути к ответу делают систему устойчивой к ошибкам.

Важный инсайт: Когда LLM ошибается в точных расчётах, он обычно ошибается сильно — не на 10%, а в разы. Поэтому грубая проверка "ответ должен быть около X" очень эффективна для отлова ошибок.

Рычаги управления:

  • Порог верификации (α): можно менять от 40% до 60% — чем выше, тем мягче проверка (меньше ложных срабатываний, но выше риск пропустить ошибку)
  • Число попыток генерации уравнений: авторы используют максимум 3 — можно увеличить для сложных задач
  • Подсказка при исправлении: можно давать не только оценку, но и конкретные правила ("проверь знаки", "пересчитай третье уравнение")

📋

Шаблон промпта

**ШАГ 1: Точное решение**

Разбери задачу на компоненты:
{описание задачи}

1. Выдели все числовые данные
2. Определи что нужно найти
3. Создай уравнения
4. Реши систему уравнений
5. Выдай ответ в формате "Ответ: {число}"

**ШАГ 2: Проверка оценкой**

Не решай точно — прикинь примерно:
{та же задача}

Округли все числа до удобных, упрости расчёт в уме.
Выдай оценку: "Примерно {число}"

**ШАГ 3: Сравнение**

Точный ответ: {ответ из шага 1}
Оценка: {ответ из шага 2}

Расхождение больше 50%? Если да — объясни где могла быть ошибка и пересчитай.

Что подставлять:

  • {описание задачи} — полный текст задачи с данными
  • {число} — числовой ответ
  • Порог 50% можно менять: для простых задач хватит 40%, для сложных можно 60%

🚀 Быстрый старт — вставь в чат:

Вот шаблон метода двойной проверки через точный расчёт и прикидку. 
Адаптируй под мою задачу: {твоя задача с расчётами}
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит про конкретные числа и что нужно найти — потому что для генерации уравнений нужны все переменные явно. Она возьмёт паттерн "точно → оценка → сравнение" и адаптирует под задачу.


⚠️

Ограничения

⚠️ Сложные системы уравнений: Если задача требует 4+ уравнений с нелинейными зависимостями, LLM может ошибиться в их составлении. Точный расчёт будет корректен только если уравнения верны.

⚠️ Ложные совпадения: Если LLM ошибся одинаково в точном решении и в оценке (редко, но бывает), верификация пройдёт, хотя ответ неверен.

⚠️ Задачи без числового ответа: Метод работает только там, где можно прикинуть порядок величины — в символьных преобразованиях или доказательствах не применим.


🔍

Как исследовали

Исследователи взяли три популярных датасета математических задач разной сложности (GSM8K — школьные задачи, SVAMP — простые арифметические, Algebra — средняя школа с уравнениями) и сравнили EVoSS с девятью современными методами: Chain-of-Thought, Program-aided Learning, BRIDGE и другими. Все методы тестировали на GPT-3.5-turbo с одинаковыми настройками (temperature 0.4).

Ключевой вопрос — насколько добавление проверки через оценку улучшает точность? Провели ablation study: сравнили решатель без верификации (просто уравнения → SymPy) и с верификацией через оценку. Разница оказалась 8-13% в точности. Это огромный скачок для такого простого дополнения.

Что удивило — метод работает не только на арифметике. Создали новый датасет Trig300 с тригонометрическими задачами (синусы, косинусы, тангенсы), где традиционные методы показывали 4-17% точности, а EVoSS достиг 65.5%. Оказалось, прикидка работает и для тригонометрии: можно упростить "sin(40°) ≈ 0.64" и прикинуть ответ.

Ещё нашли 50 ошибок в популярном датасете SVAMP (вопросы были некорректны, двусмысленны или физически невозможны) и опубликовали исправленную версию SVAMPClean. После исправлений все методы показали на 1-3% лучше — подтверждает, что проблема была в данных.

Вывод исследования — двойная проверка через разные методы (точный vs приблизительный) эффективнее чем просто повторять один и тот же метод (как в self-consistency). EVoSS обошёл self-consistency на 2-7% именно потому что два пути к ответу независимы: точные расчёты могут ошибиться в одном месте, прикидка — в другом, и они взаимно ловят ошибки.


📄

Оригинал из исследования

Контекст: Авторы показывают полный промпт для генерации уравнений (с примером из датасета Algebra). Это важно, потому что структура промпта влияет на качество уравнений.

Let a be the price of the monthly pass [[var a]]. 
Let b be the price of the bundle with 20 day passes [[var b]]. 
We have [[eq b = a + 10]]. 
Since the bundle costs $10 more than the monthly pass, we have [[eq b = 1.2 * a]]. 
The answer is the value of a [[answer a]].

Формат с [[var X]], [[eq ...]], [[answer X]] помогает LLM структурировать вывод и упрощает парсинг для отправки в SymPy.

Промпт для оценки (из той же задачи):

To find a rough estimation, we can assume the monthly pass costs $x. 
According to the first statement, the bundle with 20 day passes costs 1.2 times more, 
so it would be 1.2x. And according to the second statement, the bundle costs $10 more 
than the monthly pass, so 1.2x = x + 10. Solving for x: 1.2x = x + 10, 0.2x = 10, x = 50. 
Therefore, the price of the monthly pass is roughly $50.

LLM сам решает при оценке, но делает это через упрощённые шаги в голове. Ключевое слово "roughly" (примерно) настраивает модель на менее строгий режим.


💡

Адаптации и экстраполяции

💡 Адаптация для финансового планирования:

Метод отлично работает для проверки личных финансовых расчётов — ипотека, инвестиции, накопления.

**Задача:** Планирую досрочное погашение ипотеки. 
Остаток долга: 3,200,000₸
Ставка: 15% годовых
Срок: 10 лет
Хочу платить +50,000₸ сверху каждый месяц

**Точный расчёт:**
Создай формулы для:
- Ежемесячный платёж по графику
- Новый платёж с доплатой
- Когда закрою досрочно
- Сколько процентов сэкономлю

**Проверка оценкой:**
Прикинь без формул:
Переплата по ставке ~половина долга за 10 лет (упрощённо).
Доплата 50к/месяц = 600к/год → за ~5 лет доплачу 3 млн.
Значит закрою примерно в 2 раза быстрее → сэкономлю процентов примерно вполовину от переплаты.

🔧 Техника: добавить третий метод проверки → триангуляция

Вместо двух путей (точный + оценка) можно добавить третий — решение через аналогию:

**ШАГ 3: Проверка через аналогию**

Найди похожую задачу из общих знаний:
"Стандартная окупаемость клиента в e-commerce при марже 30% 
и среднем чеке 2000₸ — около 3-4 заказов."

Сравни с твоим результатом. Если сильно отличается — объясни почему.

Три независимых подхода дают ещё более надёжную верификацию.

💡 Экстраполяция на нечисловые задачи:

Принцип "решай двумя способами и сравнивай" работает не только для чисел. Можно использовать для:

Проверки логики аргумента:

ШАГ 1: Построй формальную логическую цепочку доказательства
ШАГ 2: Объясни ту же мысль простыми словами, как для ребёнка
ШАГ 3: Если формальное доказательство приводит к выводу A, 
а простое объяснение к выводу B — где противоречие?

Проверки технических решений:

ШАГ 1: Спроектируй архитектуру системы детально (компоненты, связи, протоколы)
ШАГ 2: Опиши ту же систему на уровне "что видит пользователь при каждом действии"
ШАГ 3: Если на схеме компонент X критичен, но в пользовательском сценарии его роль не видна — либо он лишний, либо в схеме ошибка

🔗

Ресурсы

Solving Math Word Problems Using Estimation Verification and Equation Generation — Mitchell Piehl, Dillon Wilson, Ananya Kalita, Jugal Kalita (University of Iowa, University of Colorado, University of Washington)

Код и датасеты: https://github.com/mitchellpiehl/EVoSS

Ключевые ссылки:

  • Chain-of-Thought prompting (Wei et al., 2022)
  • Plan-and-Solve prompting (Wang et al., 2023)
  • BRIDGE (Wang et al., 2024)
  • Declarative prompting с SymPy (He-Yueya et al., 2023)

📋 Дайджест исследования

Ключевая суть

Парадокс: LLM отлично прикидывает порядок величины («примерно 50 рублей»), но катастрофически плохо считает точно — может выдать 273 вместо 50. EVoSS использует это: модель решает задачу двумя путями — точно (уравнения + внешний решатель) и приблизительно («на глаз»). Если расхождение больше 50% — значит ошибка в расчётах. Когда LLM сыпется в арифметике, он промахивается не на проценты, а в разы — грубая проверка ловит это идеально.

Принцип работы

Два независимых пути к ответу вместо одного расчёта. Путь 1: разбор задачи → уравнения → внешний решатель (точный ответ). Путь 2: прикинь «в уме» — округли числа, упрости, оцени порядок величины. Точный «2560₸», прикидка «около 2400₸» — расхождение 6%, всё ок. Точный «13700₸», прикидка «2400₸» — явно ошибка в уравнениях.

Почему работает

LLM хорошо понимает логику, но арифметика — слабое место. При расчётах в несколько шагов ошибки копятся экспоненциально. Зато модель отлично прикидывает: просишь «оцени примерно» — она округляет, упрощает, думает в целых числах. Это гораздо надёжнее. Ключевой инсайт: когда LLM ошибается в точных вычислениях, он промахивается сильно — не на 10%, а в разы. Грубая проверка «ответ должен быть около X» ловит большинство ошибок.

Когда применять

Расчётные задачи с несколькими шагами → юнит-экономика, финансовые модели, системы уравнений, особенно когда в задаче 2-3 уравнения и нецелые числа. НЕ подходит для символьных преобразований и доказательств (там нечего прикидывать).

Мини-рецепт

1. Точное решение: Разбей задачу на утверждения, создай уравнения, реши через решатель (или попроси LLM решить пошагово)
2. Грубая оценка: В отдельном промпте попроси прикинуть ответ — округли числа до удобных, упрости расчёт в уме
3. Сравнение: Посчитай |точный - оценка| / точный. Если больше 50% — запусти исправление с подсказкой из оценки
4. Настройка порога: Для простых задач 40%, для сложных 60%

Примеры

[ПЛОХО] : Рассчитай LTV для доставки: CAC 800₸, чек 2400₸, маржа 35%, частота 4 заказа. Окупается ли клиент? — LLM может ошибиться в промежуточных расчётах, ты не узнаешь где.
[ХОРОШО] : Два промпта. Первый: Разбери на утверждения: CAC=800, чек=2400, маржа=35%, частота=4. Создай уравнения и найди: прибыль с заказа, LTV, окупаемость (LTV-CAC). Второй: Та же задача, но не решай точно — прикинь примерно: если чек 2400₸, маржа треть, то с заказа ~800₸. За 4 заказа ~3200₸. Минус CAC → чистая прибыль около? Получил точный ответ 2560₸ и прикидку 2400₸ — расхождение 6%, всё верно. Если бы точный выдал 13700₸ — сразу видна ошибка.
Источник: Solving Math Word Problems Using Estimation Verification and Equation Generation
ArXiv ID: 2509.18565 | Сгенерировано: 2026-01-12 01:31

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с