August 1

Обучение ИИ на скрытых мыслях

Сегодня пост в более традиционном для моего канала формате – обзор конкретной статьи. Она вышла в марте 2025 года и описывает обучение языковых моделей на скрытых мыслях, которые стоят за созданием текста. Звучит интригующе, так что поехали разбираться.

Что за скрытые мысли

Статья называется «Reasoning to Learn from Latent Thoughts» («Рассуждения для обучения на скрытых мыслях»). В ней авторы предлагают решение проблемы нехватки текстов для обучения больших языковых моделей. Проблема не новая, и я о ней как-то даже писала: чтобы очень хорошо и надежно обучить модель, ей нужно дать огромный массив текстов. В дело идет все: книги (иногда в обход авторских прав), посты в соцсетях, все статьи Википедии, огромные массивы научных публикаций. Объем текстов, который существует в Интернете, кажется бесконечным, но, если сильно постараться, можно их и закончить. Вот крупные разработчики больших языковых моделей к этому «закончить» подбираются.

И тогда встает закономерный вопрос: «А что дальше?» Нам все еще нужно улучшать качество работы моделей, что требует больше текстов, а больше текстов нет. Вот авторы статьи и подумали: «Каждый текст – это не только текст». Это еще и внутренний диалог автора с самим собой, который трансформируется на выходе в весьма сжатую форму. И именно эта сжатая форма идет на вход моделям как обучающий материал. Если распаковать скрытый от глаз читателя внутренний диалог, получится извлечь еще больший массив данных для обучения.

Нет, они не предлагают читать мысли.

Они говорят следующее: «Когда человек читает текст – например, статью – он интегрирует этот текст с уже имеющимися знаниями и восстанавливает внутренний мыслительный процесс автора». Помните в школе на уроках литературы вот это вот: «Как вы думаете, почему автор написал именно про желтые занавески?» Я люблю Достоевского, но эти желтые занавески из «Преступления и наказания» оставили шрам на моей душе.

В более здравой ситуации было бы так: «Помните, что в этот период своей жизни автор переживал то-то и то-то, а еще прочитал работы такого-то? А в мире тогда происходили вот эти события. Давайте порассуждаем, как все перечисленное повлияло на текст романа.» У меня было и такое, и спасибо за это мои учителям.

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

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

Как всё работает

Скрытые мысли сгенерировали с использованием языковой модели GPT-4o-mini. Ей давали на вход два абзаца текста и просили заполнить недостающие рассуждения, которые могли бы этим абзацам соответствовать. Промпт целиком и примеры авторы оставили в приложении к статье, можно изучить.

Делюсь своими скрытыми мыслями.

Сначала такой подход вызвал во мне некоторый скепсис, потому что обучение на синтетических данных (то есть, сгенерированных с использованием ИИ) уже и так существует. У него есть плюсы и минусы, но это рабочий метод в определенных ситуациях. Мой вопрос был: «А чем этот подход лучше прочих?»

Авторы отвечают на этот вопрос так: «Остальные генерируют просто новые тексты. А мы воспользуемся тем, что модели обучены рассуждать и используем рассуждения.» Если вы пользуетесь рассуждающими моделями (o3 от OpenAI, например), вы можете задать им вопрос, а потом развернуть «мыслительный процесс». Там будет что-то в духе: «Пользователь столкнулся с такой-то проблемой. Причины обычно следующие. Помогает часто то-то и то-то.» То есть, модель использует информацию из внешних источников и то, на чем была обучена, чтобы восстановить полную картину вокруг вашей задачи. Вот это звучит правда интересно.

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

Ответ – Бутстрэп (Bootstrap).

Тут важно не запутаться, потому что есть понятие «бутстрэп» в статистике, и оно не совсем про то. В статистике метод работает так:

  1. Есть Огромная выборка данных, и мы хотим по ней посчитать какую-нибудь статистику. Например, есть население целой страны, и мы хотим посчитать средний рост людей. Если мы прям всех возьмем сразу, у нас никакой компьютер не выдержит столько данных обрабатывать. Так что надо обрабатывать по частям.
  2. Мы берем некоторую подвыборку в N человек, где N – такое число, которое мы обработать можем, – и считаем средний возраст по ней.
  3. Потом «возвращаем выборку назад» и берем новую. В примере с ростом людей мы не в буквальном смысле кого-то возвращаем, а просто не записываем, кого уже посчитали, а кого нет. То есть, в итоге кого-то мы вообще не затронем, кто-то попадет в расчеты несколько раз, но это не страшно.
  4. Так мы делаем M раз и получаем M средних значений для роста. Если усреднить их, получится неплохое приближение среднего роста в популяции.

Я не буду тут приводить математическое доказательство, но, если взять достаточно много выборок, значения получатся достаточно точные. «Достаточно» определяется в рамках конкретного эксперимента.

Картинку нашла на geeksforgeeks. Там же есть более подробное объяснение, очень хорошее

В статье использован несколько другой механизм:

  1. Модель-Учитель (GPT-4o-mini в данном случае) генерирует скрытые мысли – по одной на каждый текст, который ей дали.
  2. Другая модель на них обучается. Назовем ее М1.
  3. Далее М1 сама генерирует к данным скрытые мысли – по несколько на один текст.
  4. Каждой мысли присваивается коэффициент важности, пропорционально которому им присваивается вероятность быть выбранной на следующем этапе.
  5. На следующем этапе выбирается по одной мысли на один текст. У более важных мыслей больше шансов быть выбранными, но ни для одной мысли шанс не равен ни нулю, ни единице. Вот это бутстрэп в контексте статьи.
  6. Дальше два варианта: либо М1 дообучается на новом наборе, либо обучается с нуля. В обоих случаях получается модель М2, которая лучше М1. И так энное количество раз.

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

И как результаты?

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

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

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

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