Языковые модели преисполнились в копировании
Наткнулась на небольшую любопытную статеечку, хочу поделиться.
Статья называется «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) – один из соавторов статьи. Поэтому критики пишут: «Вы же сами ту же штуку назвали раньше по-другому, определитесь уже».