Перейти к содержанию

Можно ли ИИ обучить пониманию математики

Материал из Викижурнал

Вопрос о том, можно ли искусственный интеллект обучить математике, кажется простым только на первый взгляд. Современные большие языковые модели, такие как ChatGPT, уже способны решать многие математические задачи, вести рассуждение, объяснять шаги решения и работать с текстовыми формулировками. Но из этого не следует, что мы полностью понимаем, какие именно внутренние механизмы позволяют им это делать, какую роль играют масштаб, данные, архитектура и подсказки, и где проходит граница между устойчивым правилом и статистическим воспроизведением.

В этой работе вопрос ставится уже: можно ли на ограниченных вычислительных мощностях обучить сравнительно небольшую нейросетевую модель математическим структурам так, чтобы она не просто запоминала примеры, а переносила правило на новые случаи?

Если модель правильно отвечает на примеры вида «2 + 2 = 4» или «99 + 1 = 100», значит ли это, что она действительно освоила правило? Или она лишь воспроизводит знакомые шаблоны, которые часто встречались в обучающих данных?

Эта разница принципиальна. Математика — это не только набор ответов. Это система понятий, правил и преобразований. Человек, освоивший сложение, обычно способен применить его к новым числам, даже если конкретный пример никогда не встречался раньше. Более того, человек может объяснить ход решения: разложить число на разряды, выполнить перенос, проверить результат обратным действием.

Для нейронной сети задача сложнее. Она получает данные в виде последовательностей символов или токенов и учится предсказывать правильный выход. Поэтому возникает центральный вопрос:

может ли нейронная сеть не просто запомнить множество математических примеров, а сформировать внутреннее представление правила и применять его к новым случаям?

Эта статья является вводной. Здесь описывается сама постановка задачи, теоретический подход, используемые типы нейросетевых моделей и принцип обучения. Речь идёт не о создании конкурента большим LLM, а о контролируемом исследовании на малых моделях, где можно явно задавать curriculum, тестовые разбиения и диагностические задачи. Конкретные эксперименты, результаты и выводы будут рассматриваться отдельно.

Чем эта задача отличается от возможностей больших LLM

Большие языковые модели уже демонстрируют впечатляющие математические способности. Они могут решать уравнения, преобразовывать выражения, работать с дробями, объяснять ход рассуждения и исправлять ошибки по обратной связи. Это важный факт: вопрос не в том, может ли современный ИИ вообще выдавать математические решения.

Однако большие LLM обучаются на огромных корпусах текстов и кода, используют миллиарды параметров и требуют значительных вычислительных ресурсов. Их поведение является результатом смешения многих факторов:

  • масштабной предобучающей выборки;
  • большого числа параметров;
  • архитектуры Transformer;
  • инструкционного обучения;
  • обучения на человеческой обратной связи;
  • возможного присутствия похожих задач в обучающих данных;
  • способности использовать языковые шаблоны рассуждения.

Из-за этого трудно отделить собственно освоение математической структуры от других факторов. Если большая модель правильно решает задачу, мы не всегда знаем, произошло ли это благодаря внутреннему алгоритмическому представлению, похожему примеру в данных, языковому шаблону или комбинации этих причин.

Поэтому здесь используется другой подход: взять небольшую нейросетевую модель, ограниченный набор синтетически сгенерированных задач и последовательно обучать её базовым математическим понятиям. Такая постановка проще, но научно полезна: она позволяет контролировать, какие примеры модель видела, какие были скрыты, какие понятия вводились явно и где именно возникает ошибка.

Таким образом, цель исследования — не доказать, что большие LLM не понимают математику, и не повторить их возможности в малом масштабе. Цель — понять, какие минимальные условия помогают нейросети формировать переносимые математические представления.

Что значит «понимать математику» для ИИ

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

Поэтому в исследовательском смысле удобнее говорить не о человеческом понимании, а о наблюдаемых признаках функционального понимания.

Модель можно считать приблизившейся к пониманию математического правила, если она:

  • решает задачи, которых не было в обучении;
  • переносит правило на новые числа, новые формы записи и новые диапазоны;
  • устойчиво работает на специальных случаях, например на переносе через 9;
  • использует промежуточные представления, соответствующие математической структуре задачи;
  • сохраняет правильность при усложнении входа;
  • может выдавать не только ответ, но и объяснимую цепочку преобразований.

Таким образом, практический критерий понимания — это не факт правильного ответа на знакомый пример, а способность к обобщению.

Запоминание и обобщение

Нейронная сеть может добиться высокой точности двумя принципиально разными способами.

Первый способ — запоминание. Если модель видела много похожих примеров, она может научиться воспроизводить ответы по статистическим шаблонам. Внутри обучающего диапазона это иногда выглядит убедительно: модель отвечает правильно, быстро и стабильно. Но при выходе за пределы знакомого распределения ошибки могут резко возрастать.

Второй способ — обобщение. В этом случае модель усваивает не отдельные ответы, а правило преобразования. Например, она понимает, что число в десятичной записи состоит из разрядов, что при прибавлении единицы изменяется младший разряд, а при переходе через 9 возникает перенос в следующий разряд.

Различить эти два режима можно только через аккуратный экспериментальный дизайн. Нельзя проверять модель только на примерах, похожих на обучающие. Нужно заранее выделять тестовые области, которые не попадали в обучение:

  • скрытые цифры или разряды;
  • новые диапазоны чисел;
  • специальные граничные случаи;
  • комбинации уже известных понятий в новой форме;
  • задачи, где правильный ответ требует нескольких связанных шагов.

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

Почему арифметика сложна для нейросети

Для человека простая арифметика кажется элементарной. Но для нейронной сети даже сложение может быть нетривиальной задачей.

Рассмотрим пример:

99 + 1 = 100

Чтобы решить его алгоритмически, нужно выполнить несколько операций:

  • распознать десятичную позиционную запись;
  • выделить единицы и десятки;
  • прибавить 1 к единицам;
  • понять, что 9 + 1 даёт 10;
  • записать 0 в младший разряд;
  • перенести 1 в следующий разряд;
  • повторить перенос, если следующий разряд тоже равен 9;
  • собрать новое число.

Если модель получает только строку `99+1=` и должна сразу вывести `100`, ей приходится самой обнаружить все эти промежуточные структуры. Она должна одновременно научиться:

  • что такое цифра;
  • что такое позиция цифры;
  • что такое десятичная система;
  • что такое операция сложения;
  • что такое перенос;
  • как собрать итоговую запись.

Это слишком много скрытых понятий для одного плоского отображения «входная строка → ответ». Поэтому более перспективным выглядит curriculum-подход: сначала обучать базовым представлениям, затем локальным операциям, затем композиции этих операций.

Curriculum-подход

Curriculum learning — это подход, при котором модель обучается не сразу на сложной задаче целиком, а проходит последовательность более простых этапов. Идея похожа на человеческое обучение: сначала понятие количества, затем цифры, затем разряды, затем операции над разрядами, затем полноценная арифметика.

В контексте обучения математике curriculum может выглядеть так:

  1. представление числа;
  2. цифры и разряды;
  3. десятичная позиционная запись;
  4. разложение числа на разряды;
  5. сборка числа из разрядов;
  6. переход к следующему числу;
  7. перенос через 9;
  8. сложение как последовательность локальных действий;
  9. вычитание как обратная операция;
  10. умножение как повторное сложение;
  11. деление как обратное умножение;
  12. дроби как части целого;
  13. рациональные числа;
  14. уравнения и преобразования выражений.

Такой подход позволяет не требовать от модели мгновенного открытия всей математики. Вместо этого модель получает последовательность понятий, где каждый следующий уровень опирается на предыдущий.

Важно, что curriculum не должен превращаться в ручное программирование ответа. Цель не в том, чтобы заменить нейросеть алгоритмом, а в том, чтобы дать модели структурированные обучающие сигналы, по которым она сможет сформировать устойчивые внутренние представления.

Представления как основа математического рассуждения

Ключевая идея подхода состоит в том, что математическая задача должна быть представлена не только как строка символов, но и как структура.

Например, число `1234` можно представить разными способами:

1234
1 thousands 2 hundreds 3 tens 4 ones
1000 + 200 + 30 + 4
[1,2,3,4]

Все эти формы описывают одно и то же число, но раскрывают разные аспекты его структуры.

Если модель умеет переходить между такими представлениями, она получает основу для более сложных операций. Например, прибавление единицы можно рассматривать уже не как магическое преобразование `1999 -> 2000`, а как переход:

1 thousands 9 hundreds 9 tens 9 ones
-> 2 thousands 0 hundreds 0 tens 0 ones

Такое представление делает перенос явным. Модель видит не только итоговую строку, но и структуру изменения разрядов.

Какие нейронные сети используются

Для подобных задач подходят модели, работающие с последовательностями. В первую очередь это encoder-decoder Transformer, также называемый seq2seq Transformer.

Выбор такой модели связан с практическим ограничением: она достаточно мала, чтобы обучаться на доступном компьютере, но при этом использует те же базовые идеи, что и крупные языковые модели: токены, embeddings, positional encoding, attention и последовательную генерацию ответа. Это делает её удобной лабораторной моделью для проверки гипотез о математическом обобщении.

Seq2seq-модель получает входную последовательность и генерирует выходную последовательность. Например:

input:
number_to_place: 1234

output:
1 thousands 2 hundreds 3 tens 4 ones

Или:

input:
place_to_number: 1 thousands 2 hundreds 3 tens 4 ones

output:
1234

Такая архитектура близка к одному из базовых принципов современных языковых моделей: выход строится токен за токеном, каждый следующий токен зависит от входа и уже сгенерированной части ответа. При этом важно понимать масштабное отличие: небольшая экспериментальная seq2seq-модель не обладает знаниями и универсальностью большой LLM. Она используется как контролируемый объект исследования.

Внутри модели используются несколько ключевых механизмов.

Токены

Входная строка разбивается на символы или токены. Каждый токен получает числовое представление. Для простых математических задач можно использовать character-level подход, где отдельными токенами являются цифры, буквы, пробелы и знаки.

Embeddings

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

Positional encoding

Порядок токенов важен. `123` и `321` состоят из одних и тех же символов, но означают разные числа. Поэтому модель должна получать информацию о позиции токена в последовательности.

Attention

Механизм attention позволяет модели связывать разные части входа и выхода. Например, при генерации разрядной записи модель может научиться смотреть на нужную цифру исходного числа и связывать её с соответствующей позицией: thousands, hundreds, tens или ones.

Attention не гарантирует понимание сам по себе, но даёт модели механизм для построения зависимостей между токенами.

Autoregressive generation

Ответ генерируется последовательно. Модель сначала выдаёт первый токен, затем следующий, затем следующий. Это важно для задач, где ответ имеет структуру:

2 thousands 3 hundreds 4 tens 5 ones

Каждая следующая часть зависит от того, что уже было сгенерировано.

Как происходит обучение

Обучение строится на парах:

source -> target

Например:

number_to_place: 2345
-> 2 thousands 3 hundreds 4 tens 5 ones

Во время обучения модель получает вход и правильный целевой ответ. Она пытается предсказать выходную последовательность. Затем вычисляется ошибка между предсказанием и правильным ответом. После этого веса модели корректируются методом обратного распространения ошибки.

На практике это повторяется много раз:

  • выбирается batch обучающих примеров;
  • модель делает предсказание;
  • считается loss;
  • выполняется шаг оптимизации;
  • через заданные интервалы модель проверяется на train, holdout и range test.

Важно, что хорошая точность на train сама по себе мало что доказывает. Train показывает, может ли модель выучить предоставленные примеры. Для вопроса понимания важнее holdout и range.

Train, holdout и range

Для проверки обобщения данные нужно разделять на несколько областей.

Train

Train — это данные, на которых модель обучается. Она видит эти примеры напрямую.

Holdout

Holdout — это скрытая часть того же общего пространства задач. Например, можно скрыть все числа, содержащие цифру 7, и проверить, сможет ли модель работать с ними после обучения.

Такая проверка показывает, не привязалась ли модель к конкретным цифрам или частным шаблонам.

Range test

Range test — это более сильная проверка. Модель обучается на одном диапазоне, а проверяется на другом. Например, обучается на `0..1999`, а проверяется на `2000..2999`.

Range test показывает, может ли модель перенести правило на новый числовой диапазон, который не был представлен обычными обучающими примерами.

Почему нужны промежуточные задачи

Если обучать модель только на прямом отображении:

input: 1999
output: 2000

то трудно понять, что именно она выучила. Она могла:

  • запомнить похожие шаблоны;
  • выучить поверхностную статистику;
  • угадать часть ответа;
  • не освоить перенос как процедуру.

Промежуточные задачи делают внутреннюю структуру более наблюдаемой:

number_to_place: 1999
-> 1 thousands 9 hundreds 9 tens 9 ones

place_transition:
1 thousands 9 hundreds 9 tens 9 ones
-> 2 thousands 0 hundreds 0 tens 0 ones

place_to_number:
2 thousands 0 hundreds 0 tens 0 ones
-> 2000

Такой подход позволяет проверять отдельно:

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

Это превращает обучение из «чёрного ящика» в более диагностируемый процесс.

Что считается успехом

Для исследования важно заранее определить критерии успеха. Модель не должна считаться успешной только потому, что она достигла высокой train-точности.

Более сильные критерии:

  • высокая точность на holdout;
  • высокая точность на range test;
  • успешное прохождение граничных случаев;
  • согласованность разных представлений одного числа;
  • правильная работа отдельных подзадач;
  • отсутствие характерных ошибок разрядного сдвига;
  • возможность ручного тестирования через playground.

Например, если модель получает:

place_to_number: 2 thousands 0 hundreds 0 tens 0 ones

и отвечает:

200

это означает, что она не закрепила позицию thousands и спутала её с hundreds. Такая ошибка важнее, чем просто один неправильный ответ: она показывает тип непонимания.

Ограничения подхода

Даже если модель успешно проходит один curriculum-уровень, это не означает, что она полностью понимает математику.

Есть несколько ограничений:

  • модель может хорошо работать только в пределах текущего формата записи;
  • успех на одной операции не гарантирует успех на другой;
  • обобщение на один новый разряд не доказывает обобщение на произвольное число разрядов;
  • промежуточные задачи помогают обучению, но могут задавать слишком сильную подсказку;
  • нейронная сеть может решать задачу не тем способом, который кажется естественным человеку;
  • правильный ответ не всегда означает правильное внутреннее рассуждение.
  • малая модель не обладает широкими знаниями и языковой гибкостью больших LLM;
  • результаты на синтетических задачах не следует напрямую переносить на все школьные и университетские задачи.

Поэтому каждый следующий уровень должен проверяться отдельно и аккуратно.

Общая исследовательская гипотеза

Основная гипотеза состоит в следующем:

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

В этом подходе математика рассматривается не как набор готовых ответов, а как система преобразований между представлениями.

Сначала модель учится отвечать на вопросы вида:

что такое разряд?
какая цифра стоит в этом разряде?
как число раскладывается на позиции?
как собрать число обратно?

Затем:

как меняется младший разряд?
что происходит при переходе через 9?
как перенос влияет на следующий разряд?

И только после этого:

как выполнять сложение, вычитание, умножение, деление и более сложные преобразования?

Дальнейшее направление

Следующие статьи могут идти по шагам:

  • обучение позиционной записи;
  • проверка переноса на новые разряды;
  • successor как минимальная арифметическая операция;
  • перенос через 9;
  • сложение как композиция локальных переходов;
  • вычитание как обратное действие;
  • переход к дробям;
  • решение простых уравнений;
  • построение объяснимого математического ассистента.

Цель такого исследования — не просто сделать программу, которая выдаёт правильный ответ. Большие LLM уже показывают, что ИИ может быть полезным математическим помощником. Наша цель уже и диагностичнее: понять, какие условия нужны, чтобы небольшая нейронная сеть на ограниченных ресурсах начала устойчиво работать с математическими структурами и переносить правила на новые случаи.

Именно здесь проходит граница между запоминанием примеров и тем, что можно осторожно назвать функциональным пониманием математики.