Нейросеть — плохой калькулятор: почему LLM ошибается в арифметике и что с этим делать
LLM уверенно ошибается в середине шестизначного умножения — верные края, выдуманная середина. Это не баг: трансформер предсказывает токены по статистике…
AI-обработка оригинала Habr AI; редакция Hamidun News
LLM уверенно выдаёт неверный результат умножения шестизначных чисел — верные цифры на краях, ошибка в середине. Это не баг и не недоработка конкретной модели: трансформер предсказывает токены по статистике, а не исполняет алгоритм умножения в столбик.
Токен против алгоритма: в чём разница
Умножение в столбик — процедура с разрядами, переносами, промежуточными суммами и строгим порядком операций. Процессор её исполняет. Школьник исполняет. Трансформер за один проход — нет: он порождает текст, похожий на правильный ответ, опираясь на статистику обучающих данных.
Короткая арифметика работает именно как память, а не вычисление:
- Таблица умножения встречается в обучающих данных миллионы раз
- «7 × 8 = 56» модель не считает — она помнит
- При двух-трёх значных числах знакомых паттернов ещё достаточно
- С шестизначными — знакомых примеров почти нет, модель начинает «правдоподобно продолжать»
- Уверенность при выдаче ответа не связана с точностью результата
Почему ошибка оказывается именно в середине числа?
Крайние цифры результата можно вывести из первых и последних цифр множителей — это паттерн, который модель выучивает. Средние разряды требуют честной цепочки переносов, которую трансформер за один авторегрессивный проход не строит.
Характерный почерк: правый край (единицы, десятки) и левый край (старшие разряды) часто верны, серединные цифры — выдуманы. При этом у модели нет внутреннего сигнала «я не уверен» — токен-предиктор просто продолжает последовательность максимально правдоподобно.
Как индустрия это решает
Решение пришло не изнутри архитектуры, а снаружи: инструменты. Code Interpreter в ChatGPT, Python-блоки в Claude, вызов калькулятора через function calling — модель делегирует вычисления тому, кто умеет вычислять.
«Делает, и довольно успешно, просто не там, где кажется» — прогресс
идёт не в том, чтобы научить LLM считать самостоятельно, а в том, чтобы она умела вызвать нужный инструмент.
Chain-of-thought (явная запись промежуточных шагов) частично помогает: точность на многозначных числах растёт. Но каждый токен в цепочке сам является предсказанием, поэтому 100%-ную надёжность этот приём не даёт.
Параллельно идут исследования по специализированному дообучению для математики — модели, натренированные преимущественно на научных текстах, лучше понимают задачи. Но и они не заменяют вычислитель: ценность таких моделей — в правильной постановке задачи для инструмента, а не в самостоятельном счёте.
Что это значит
Ожидать от LLM поведения калькулятора — архитектурное недопонимание. Правильный паттерн: модель понимает задачу, строит логику, делегирует числа инструменту, интерпретирует вывод. Доверять юнит-экономику напрямую в чат без инструментов — значит проверять не модель, а везение.
Частые вопросы
Почему модель не предупреждает, что не умеет считать?
У языковой модели нет внутреннего сигнала неопределённости при генерации числа. Она выдаёт следующий токен с максимальной вероятностью — и одинаково уверенно выдаёт как правильный, так и неправильный результат. Это фундаментальное свойство авторегрессивной генерации, а не ошибка в коде.
Помогает ли chain-of-thought при сложной арифметике?
Да, но ограниченно. Пошаговая запись переносов повышает точность, потому что модель «видит» промежуточные результаты как контекст следующего предсказания. Однако каждый шаг по-прежнему является предсказанием, и ошибки накапливаются — для критических вычислений нужен внешний инструмент.
Хотите не читать про ИИ, а внедрить его?
«AI News» — это полезные новости из мира ИИ. Системно научиться работать с нейросетями и применять их в работе — в Hamidun Academy.
Главное из мира ИИ — раз в неделю
7 ключевых событий недели, отобранных вручную. Без шума, репостов и пресс-релизов.
Готово! Проверьте почту — мы отправили подтверждение.