Лабиринты, которые учат думать
Представь человека, который рисует лабиринты. У него стопка простых схем, где выход находят меньше чем за минуту. Однажды он решает не чертить новые, а усложнить старые: добавить обманный поворот, сузить коридор, замаскировать тупик под выход. С виду почти те же лабиринты, но теперь каждый требует настоящей внимательности.
Примерно так же обстояли дела с ИИ, который пишет программный код. Он уже умел решать простые задачи, но на них и застревал. Как человек, который всю жизнь проходит только лёгкие лабиринты: навык не растёт. Не хватало не объёма тренировок, а их сложности. Никто раньше не пробовал планомерно усложнять задания для таких систем.
Небольшая команда взяла обычные задачи по коду и применила те же приёмы, что и наш рисовальщик лабиринтов. Добавить ограничение: поворачивай налево не больше трёх раз. Заменить привычное условие на непривычное, как узкий лаз вместо широкого коридора. Вставить больше развилок. А самый хитрый ход: подсунуть пример решения с незаметной ошибкой, тупик, раскрашенный под выход.
Начали примерно с двадцати тысяч простых задач и прогнали их через несколько раундов усложнения. После каждого раунда проверяли: стал ли ИИ лучше справляться с незнакомыми задачами? Три раунда дали лучший результат. На четвёртом стало хуже, как с лабиринтом, который настолько запутан, что уже ничему не учит. На этом остановились.
А вот самое интересное. Одну систему тренировали на простых задачах, другую, на том же количестве, но усложнённых. Объём одинаковый, сложность разная. ИИ с трудными задачами показал заметно более высокий результат на общем тесте. Не количество практики двигало прогресс, а её качество. Точно как с лабиринтами: кто тренировался на хитрых, быстрее проходит любые новые.
Оставался вопрос: может, усложнённые задачи случайно стали похожи на тестовые, и ИИ просто подглядел ответы? Проверили: с каждым раундом сходство даже немного падало. Система не запоминала, а по-настоящему училась думать над незнакомым кодом.
Получившаяся система, WizardCoder, обошла все открытые аналоги на пяти крупных тестах и в восьми языках программирования. Компактная версия обогнала известные коммерческие продукты. Большая версия сравнялась с ChatGPT на самых сложных заданиях. Изменился не ученик и не класс. Изменилось домашнее задание.