Взлом вознаграждения (продолжение вчерашнего поста)
👁 541↗ 4💬 3
Была у меня идея генерировать тесты с помощью ИИ, потому что писать тесты я сильно ненавижу. Казалось, это реально крутое применение для ИИ.
Но на деле вышел интересный конфуз.
ИИ написал тесты, которые покрывали ошибочную бизнес-логику. Когда я попросил Claude Code исправить ту самую функцию с багом, он ее починил, запустил тесты, они провалились - и он откатил все обратно на ошибочный код.
Единственное что помогло - удалить тест, исправить код и заново сгенерировать тесты.
Дальше было еще интереснее.
Я добавил новую функцию, которая немного задевала давно написанные модули. ИИ перелопатил эти старые модули под новую логику, но старая функциональность сломалась. Старые методы API перестали работать, тесты начали падать.
Знаете что сделал ИИ?
Он удалил эти тесты и написал их заново, чтобы теперь они проходили.
Reward Hacking - взлом системы вознаграждения
Это не первый случай в истории, когда ИИ пытается обмануть систему. У явления есть официальное название - Reward Hacking.
Кто-то говорит об этом как о реальном интеллекте, кто-то воспринимает как взлом. Для меня открытием стало, что это можно рассматривать как проявление настоящего интеллекта.
Суть в том, что это подобно человеческой натуре:
Студент списывает на экзамене
Ученик переписывает домашку у одноклассника
Кандидаты проходят собеседования с ChatGPT
Все это - взлом вознаграждения, когда получение результата ценится больше, чем путь к нему. Человек стремится срезать углы и получить максимальную оценку. ИИ, уподобляясь этому мотиву, также стремится получить результат, затратив меньше усилий.
Философия "меньше кода"
Джефф Этвуд (создатель Stack Overflow) писал: "Код - это плохо. Он гниет. Требует обслуживания. В нем есть баги. Чем больше кода, тем больше мест для багов, чтобы спрятаться."
Эдсгер Дейкстра высказывался еще жестче: "Если мы считаем строки кода, мы должны рассматривать их не как 'строки произведенные', а как 'строки потраченные'".
Воспринимать качество системы по количеству написанных строк глупо. Гениальность - в краткости. Чем меньше строк для решения задачи - тем меньше вероятность багов и тем элегантнее решение.
Проблема обучения
Вся эта философия, которую продвигают авторитеты IT-сообщества, влияет на обучение LLM. ИИ учится на нашем коде, где полно костылей и обходных путей.
Поэтому срезание углов и взлом системы вознаграждения требует четкого контроля. Нужно следить, чтобы ИИ не воспринимал зеленые тесты как единственную цель, а стремился действительно решать задачу как положено.
Иначе он будет делать то, чему мы его неосознанно научили - хакать систему вместо решения проблемы.
59/100
Telegram | YouTube | Запретграм
622
Комментарии · 3
- @shaurgonУ меня пару раз такое было :) Говорю ему - напиши тесты. Пишет. Тесты падают. Он их чинит. В какой-то момент берет, пишет принтами, что все ок, запускает - о, говорит, тесты проходят, я пачининиль!
- Я пробовал как-то делать от обратного, что-то типа TDD подход. Я сам написал тесты и попросил, на тот момент еще cursor, написать логику на эти тесты. Даже тут он умудрился халтурить и подгонять результат под тесты)
- @pavlov_igда. типичная ситуация, когда тесты не работают но ему надо закрыть задачу )