September 26

Языковые модели преисполнились в копировании

Наткнулась на небольшую любопытную статеечку, хочу поделиться.

Статья называется «Language Models “Grok” to Copy» – «Языковые модели преисполнились в копировании».

Термин «grok», который используют авторы, попал в язык из романа «Чужак в чужой стране». Он примерно означает «понимать что-то очень глубоко на интуитивном уровне». Авторы статьи его используют вслед за другой работой: «Grokking: Generalization Beyond Overfitting on Small Algorithmic Datasets». Начнём с неё.

«Grokking…» рассматривает очень узкий феномен: обучение моделей на небольших наборах данных через переобучение. Переобучение – это состояние, в котором модель хорошо решает задачу на тренировочной выборке данных, но очень плохо справляется с тестовой выборкой. В таком случае говорят, что модель «запомнила правильные ответы» на тренировочные вопросы и не может ответить на те, которых никогда не видела ранее. Математически это значит, что коэффициенты внутри так подобраны, чтобы на тренировочной выборке всегда получать правильный ответ.

Недообучение, оптимальный вариант, переобучение

Это картинка с сайта geeksforgeeks. На ней показано три варианта поведения модели:

·         Недообучение (слева): цель – подобрать кривую, которая будет хорошо описывать распределение зелёных крестиков. Очевидно, что красная прямая совершенно не соответствует этому распределению;

·         Оптимальное состояние: красная кривая проходит не через все точки, но хорошо отражает форму распределения. Если добавить больше зелёных крестиков и продлить кривую, она по-прежнему будет хорошо описывать распределение, потому что отражает общую закономерность;

·         Переобучение: красная кривая проходит через каждый крестик. Однако, если добавить больше крестиков, она промахнётся, потому что её форма слишком сложная и непредсказуемая.

Так вот, авторы «Grokking…» говорят, что даже после переобучения языковая модель может внезапно преисполниться в своём познании и начать давать очень точные ответы.

График из статьи

На приведённом графике показана точность ответов модели на тренировочной и тестовой выборке. Проследим сначала за красной кривой: в самом начале она проходит близко к нулю (околонулевая точность), затем по мере обучения растёт и, наконец, выходит на плато на значениях, близких к 100%. Это значит, что на тренировочной выборке модель показывает стопроцентную точность.

Зелёная кривая показывает точность во время тестирования. В самом начале она совпадает с тренировочной кривой, что понятно: модель пока ничего не умеет и делает ошибки и в процессе тестирования, и во время обучения. Потом наступает длинный промежуток, когда между зелёной и красной кривой есть большой разрыв: на тренировочных данных точность идеальная, на тестовых – нулевая, это и есть переобучение. А потом происходит «грок», и точность во время теста резко подскакивает до почти максимальной.

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

«Grokking…» написала команда исследователей из OpenAI в 2022 году. В 2019 году другая группа, но из той же компании*, написала статью «Deep Double Descent: Where Bigger Models and More Data Hurt» («Двойной глубокий спуск: где модели и наборы данных большего размера только вредят»).

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

Предполагаю, что новый термин придумали, чтобы было что-то легко запоминающееся и однозначно связанное с именем компании. Мол, «чтоб все знали, что это мы первые заметили». Но это так, спекуляция.

В любом случае, оно воспроизводится.

Статья «Language Models “Grok” to Copy» опубликована в 2025 году и продолжает исследовать то же направление. В частности, её авторы обнаружили, что в определенный момент обучения модель обретает способность очень хорошо копировать контекст.

Когда мы даём модели несколько примеров и говорим: «Теперь сделай такое же ещё сто раз», это называется «обучение в контексте» (in-context learning, оно же few-shot learning, да, опять проблемы с устойчивостью терминологии).

Пример:

«Напиши простые предложения для первоклассника, который учится читать. Например, “Мама мыла раму”, “Собака гуляет во дворе”».

“Мама мыла раму”, “Собака гуляет во дворе” – это и есть контекст, который модель копирует. Копирование не дословное, а скорее структурное: модель будет возвращать предложения в формате «подлежащее + сказуемое + простое дополнение или обстоятельство».

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

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

*OpenAI официально основана немного позже в том же в 2019 году, так что фактически не «из той же компании». Но сооснователь OpenAI Илья Суцкевер (Ilya Sutskever) – один из соавторов статьи. Поэтому критики пишут: «Вы же сами ту же штуку назвали раньше по-другому, определитесь уже».