С развитием больших языковых моделей перед инженерами встает серьезный вызов: как эффективно исправлять ошибки искусственного интеллекта после его развертывания, избегая ресурсоемкого и дорогого процесса обновления весов? Популярный ИИ-исследователь и блогер Янник Килхер (Yannic Kilcher) представил подробный разбор научной статьи, посвященной системе MemPrompt. Предложенный авторами метод динамического редактирования промптов на основе внешней памяти позволяет корректировать поведение таких масштабных моделей, как GPT-3, в реальном времени прямо во время пользовательской сессии.
🧠 Проблема «застывших» моделей и концепция MemPrompt 1:33
Янник Килхер начинает обзор с упоминания того, что современные сверхбольшие языковые модели практически невозможно оперативно дообучать (fine-tune) «на лету». Для этого требуется колоссальное количество вычислительных ресурсов и гораздо больше данных, чем два или три примера исправлений от пользователя. Исследователи Аман Мадаан (Aman Madaan), Никет Тандон (Niket Tandon) и их коллеги предложили альтернативный интерактивный подход. Вместо изменения внутренних весов нейросети они разработали внешний плагин, управляющий контекстом и дополняющий базовый запрос.
В качестве примера спикер описывает типичную ситуацию непонимания между машиной и человеком. Пользователь задает вопрос: «Какое слово похоже на "good"?». GPT-3 выдает ошибочную интерпретацию, заявляя, что омонимом к слову "good" является "wood". Однако пользователь имел в виду синонимы, а не созвучные слова. В рамках предложенной системы человек отправляет текстовое уточнение: «"Похоже" означает близкое по значению». Этот фидбек сохраняется во внешнюю память плагина. При следующем запросе в рамках текущей сессии (например, «Какое слово похоже на "surprised"?») система автоматически извлекает сохраненное правило, дополняет им промпт, и GPT-3 корректно находит синонимы, выдавая ответ: «Синонимом к слову "surprised" является "amazed"».
По словам Янника Килхера, прелесть такого подхода в том, что обычные пользователи именно так и представляют себе работу идеального ИИ — как систему, которая способна учиться на паре замечаний и становиться лучше со временем.
🛠️ Четыре столпа архитектуры MemPrompt 13:00
Для реализации этой логики авторы исследования разделили свой плагин на четыре ключевых компонента, которые могут быть развернуты поверх любой предобученной языковой модели без ее изменения:
- Память (Memory): Постоянно растущая таблица пар «ключ-значение», где ключами выступают ошибочно понятые моделью вопросы, а значениями — текстовый фидбек пользователя. Память заполняется исключительно тогда, когда пользователь недоволен результатом и вносит исправление.
- Функция поиска (Lookup function): Обучаемый ретривер (retriever), который сопоставляет текущий запрос пользователя со всеми ключами, хранящимися в памяти. Поиск может осуществляться через семантическое сходство векторов предложений (эмбеддингов Transformer-моделей) или посредством лексического расстояния Левенштейна.
- Комбинатор (Combiner): Фильтрующая функция (gating function), которая отсекает нерелевантный фидбек на основе заданного порога косинусного сходства.
- Промптер (Prompter): Модуль конкатенации, который собирает финальную строку для отправки в LLM. Если ретривер нашел совпадение в памяти, промптер соединяет исходный шаблон, текущий вопрос и пользовательское уточнение.
🔄 Мета-промпты и механика интерактивного цикла 5:25
В стандартном режиме работы без памяти пользователь отправляет запрос, который предваряется базовым шаблоном (инструкциями), и сразу получает ответ, качество которого никак не регулируется постфактум. Система MemPrompt коренным образом меняет этот цикл взаимодействия.
Главная инновация промпт-инжиниринга в данной работе, как подчеркивает Янник Килхер, заключается в использовании специального «мета-промпта». Авторы настроили GPT-3 таким образом, чтобы она выдавала не просто сухой ответ, а предварительно формулировала свое понимание задачи. Благодаря этому пользователь видит логику ИИ (например, «модель решила искать омоним») и может предоставить точечное исправление на естественном языке.
При повторных обращениях система действует по следующему алгоритму:
- Новый запрос пользователя анализируется ретривером на предмет схожих контекстов в памяти.
- Происходит поиск прошлых ошибок с использованием порога косинусного сходства 0.9.
- В случае совпадения фидбек присоединяется к запросу через специальный разделитель (символ пайпа
|и тегclarification:). - Модель, обученная на демонстрационных примерах внутри промпта, учитывает это уточнение и исправляет логику ответа.
📊 Промпт-инжиниринг и методология тестирования 15:11
Для проверки работоспособности концепции исследователи сформировали тестовую среду из 10 задач, разделенных на две равные группы:
- Манипуляции со словами: 5 задач на перестановку букв, анаграммы и реверс строк.
- Лексические вопросы и ответы: 5 задач на поиск синонимов, антонимов и омонимов.
Базовый контекст, передаваемый GPT-3, содержит жестко заданные человеком примеры правильного поведения. Модель заранее «прогревают» примерами, где демонстрируется, как текстовые уточнения должны влиять на финальный результат. Это необходимо, чтобы ИИ научился обращать внимание на поле clarification и перестраивать свое «понимание» задачи.
Оценивая процесс создания датасета, Янник Килхер обращает внимание на то, что авторы вручную создали 15 шаблонов задач с 3 вариантами формулировок для каждого вопроса. Симуляция пользовательского фидбека также осуществлялась на основе эвристических алгоритмов, отслеживающих, была ли модель понята правильно.
⚖️ Анализ результатов и скепсис Янника Килхера 10:48
Несмотря на общую перспективность идеи, Янник Килхер высказывает ряд критических замечаний относительно методологии исследования. Прежде всего его смущает заявление авторов о том, что их главная цель — «предоставить фреймворк», а не гнаться за предельными метриками эффективности (State-of-the-Art). По мнению блогера, подобные формулировки в научных статьях часто служат удобным оправданием не самых выдающихся результатов или попыткой искусственно разделить одно полноценное исследование на несколько публикаций.
Также Килхер видит потенциальную проблему в ручном формировании датасета. По его мнению, здесь кроется очевидный конфликт интересов: создавая задачи и примеры фидбека самостоятельно, исследователи могли неосознанно подогнать условия под максимальную эффективность своего алгоритма.
Спикер выделяет еще несколько слабых мест системы:
- Риск деструктивного фидбека: Если поисковый модуль извлечет из памяти ошибочное или нерелевантный фидбек, GPT-3, жестко запрограммированная следовать инструкциям из поля
clarification, гарантированно испортит даже изначально правильный ответ. - Недоработки базовых линий (Baselines): Сравнение проводилось с методом
GrowPrompt, при котором промпт просто раздувается за счет механического добавления прошлых пар вопросов и ответов. Килхер считает такое сравнение не совсем корректным, так какGrowPromptне изолирует точечный фидбек. - Странное поведение метрик: На графиках видно, что в самом начале взаимодействия точность MemPrompt резко падает из-за ложных срабатываний памяти. Кроме того, эксперимент со сниженной до 0.5 вероятностью извлечения фидбека со временем показал точно такую же финальную эффективность, как и при полноценной работе памяти, что кажется блогеру логически противоречивым.
Тем не менее Янник Килхер признает ценность работы в контексте кастомизации ИИ. По его мнению, данный фреймворк — это отличный способ мягкой персонализации интерфейсов под нужды конкретного пользователя без необходимости проводить дорогостоящее и ресурсоемкое дообучение нейросети.