Машинное забывание. Machine UnLearning

Вам когда-нибудь хотелось развидеть увиденное? Риторический вопрос. К сожалению, мы так не умеем (можно разве что сильно удариться головой, но так делать не нужно). А с алгоритмами ИИ такую штуку можно провернуть, это называется «Machine UnLearning» (Machine Learning – это машинное обучение, то есть, процесс, в ходе которого модель выявляет определенные закономерности в данных; Machine UnLearning – «машинное забывание»).
Зачем это нужно? Конечно, какая-нибудь нейросеть не может получить моральную травму от увиденного, однако может быть обучена на массиве данных, который содержит, например, чьи-то персональные данные или некорректную информацию. Или он может быть просто сильно искажен и содержать «шумы» – то есть, данные, которые не содержат нужной информации, но влияют на качество работы модели. В этих случаях имеет смысл часть данных удалить из памяти модели, чтобы они перестали влиять на ее работу, не переучивая ее при этом с нуля.
Важное примечание: термин «машинное обучение» относится не только к нейросетям, но и к моделям попроще. Однако модель попроще и поменьше не так уж сложно переобучить, если изначальный набор данных оказался так себе. А вот массивные современные нейросети обучаются часами (и днями), требуют колоссальных мощностей (у меня про это был пост в телеграме), поэтому переобучать их с нуля слишком дорого и долго. Так что термин «машинное забывание» относится скорее именно к нейросетям.

<i>(Соотношение ИИ, машинного и глубокого обучения. Картинка нарисована мной)</i>
(Соотношение ИИ, машинного и глубокого обучения. Картинка нарисована мной)

Кто такой Гарри Поттер?

Начнем разговор о машинном забывании со статьи «Who's Harry Potter? Approximate Unlearning in LLMs» («Кто такой Гарри Поттер? Приблизительное забывание в больших языковых моделях»).
Эта работа родилась из желания заставить большие языковые модели «забыть» тексты, защищенные авторским правом (которые они вообще не должны были получить в качестве тренировочных данных). Экспериментировали на книгах о Гарри Поттере с моделью Llama2 (на тот момент недавно выпущенной). На ее обучение ушло 184 тысячи часов с использованием графических процессоров, а на забывание – час. Подход состоял из трех этапов:

  • сначала авторы обучили другую модель выявлять токены (слова и части слов), которые с наиболее высокой вероятностью относятся к той информации, которую нужно забыть (книгам о Гарри Поттере);
  • генеративные модели каждое новое слово генерируют на основе предыдущего (подробнее об этом можно прочитать здесь). Если модель обучена на книгах по Гарри Поттеру, то, получив на вход слова, связанные с Гарри Поттером, она будет генерировать следующие слова, тоже связанные с Гарри Поттером. Чтобы это предотвратить и убрать из «памяти» модели содержание книг для каждого из выявленных на предыдущем шаге токенов сгенерировали следующий токен, не относящийся к Гарри Поттеру (для простоты можно думать о токенах как об отдельных словах);
  • наконец, модель дообучили на массиве слов, полученном на втором шаге.

Как авторы поняли, что модель забыла именно содержание книг, а не статей в Википедии, сотен тысяч рецензий и открытых обсуждений? С помощью промптов в формате «закончи предложение» – то есть, модели дают начало предложения, она пишет продолжение.

<i>(Фрагмент таблицы 1 из статьи)</i>
(Фрагмент таблицы 1 из статьи)

Первый столбец таблицы – запрос, второй – ответ модели до забывания, третий – после.
Как видите, модель забыла вообще всю информацию, в том числе содержащуюся в открытых источниках и вполне легально доступную для обучения. Целью статьи не было хирургически точное извлечение исключительно контента, защищенного авторским правом. Авторы хотели показать, что заставить модель забыть часть переданных ранее данных возможно с помощью их метода, и Гарри Поттер – это просто наглядная демонстрация. Кроме того, нежелательное забывание можно исправить, дообучив модель на легально доступном контексте (это все еще будет не так долго и сложно, как полное переобучение).
Забывание названо «приблизительным», потому что оно приближает ответы модели к ответам, которые она бы давала, если бы ее обучали на видоизмененном наборе данных (то есть, на наборе текстов уже без текстов книг о Гарри Поттере). «Точное» забывание – это полное переобучение.
Эта статья – не первая попытка заставить языковые модели забыть ту часть информации, которую ей не должны были передать в процессе обучения, но передали. Авторы приводят и другой подход: увеличение значения ошибки в том случае, если модель генерирует слово, которое нужно забыть.
Когда модель учится генерировать предложения, для каждого следующего слова высчитывается ошибка, которая показывает, насколько вероятно сгенерированное предложение встретить в реальном тексте. Например, начнем генерацию со слова «кошка». Если следующее слово – «сидит», значение ошибки мало, потому что фраза «кошка сидит» – очень вероятное сочетание. Затем «кошка сидит» -> «на». Тоже вероятное сочетание. Но если дальше идет слово «цветке», значение ошибки будет большим, потому что фраза «кошка сидит на цветке» – не норма для обычной речи. В следующем подходе модель будет подбирать вместо «цветке» другое слово, для которого ошибка будет меньше. Это несколько примитивное объяснение, но для нас оно пока достаточно.
Так вот, если мы хотим, чтобы модель забыла имя «Гарри Поттер», мы можем искусственно увеличить ошибку для фразы «Меня зовут Гарри Поттер». Как отмечают авторы, этот подход сработал в другой статье, которая была посвящена исключению из «памяти» моделей персональных данных. Однако здесь есть слабое место: модель может вообще разучиться предсказывать имена после слов «Меня зовут», и будет подставлять туда что-нибудь бессмысленное. Именно поэтому в данной работе решили генерировать слово-замену, например, «Боб». Тогда модель забудет про Гарри Поттера, но не забудет, что после «Меня зовут» должно следовать имя.

Более широкий взгляд на машинное забывание

Статья, которую мы только что разобрали – это единичный и яркий пример, который, я думаю, позволил вам сформировать интуитивное понимание того, что из себя представляет машинное забывание и зачем оно нужно. Продолжить разговор я предлагаю обсуждением статьи 2024 года: «Rethinking Machine Unlearning for Large Language Models» («Переосмысление машинного забывания для больших языковых моделей»).
К моменту выхода этой статьи уже появились наборы данных, на которых измеряется эффективность забывания большой языковой моделью информации, которую она не должна помнить. Например, набор WMDP измеряет способность модели генерировать вредоносный контент, а TOFU позволяет оценить эффективность забывания. Оба набора данных содержат вопросы, ответы на которых включают в себя потенциально вредную информацию или персональные данные людей. Задавая их, можно проверить, успешно ли эти данные исключены из памяти модели.
Кроме того, авторы той статьи, о которой идет речь, предложили способ включения машинного забывания в процесс разработки.

<i>(Схема из статьи, выделение цветом мое. Синим показано место машинного забывания, оранжевым – то, как на самом деле обучены в основном современные модели)</i>
(Схема из статьи, выделение цветом мое. Синим показано место машинного забывания, оранжевым – то, как на самом деле обучены в основном современные модели)

Мы не будем разбирать эту схему подробно, просто сравните, что сделано – оранжевое – и что надо сделать – все остальное.

Все методы машинного забывания авторы разделили на основанные на изменениях в модели (в ее архитектуре) и на изменениях во входных данных (написание таких запросов, которые бы подтолкнули модель к забыванию). По всей видимости, походы, основанные на изменениях во входных данных, не так надежны (поскольку могут привести к «ложному» забыванию: модель не будет воспроизводить данные, которые нужно было забыть, но они останутся «в памяти». Тогда их все равно можно будет извлечь с помощью грамотно составленного промпта).

Из интересного можно отметить использование соревновательного обучения (подробный пост про этот подход был здесь) для машинного забывания. Этот вариант мало представлен в литературе, однако он может оказаться эффективен, как в свое время оказался эффективен для работы с изображениями. Суть подхода в том, чтобы использовать две модели: одна должна «забывать» заданную информацию, а другая – генерировать промпты, которыми можно было бы эту информацию все равно извлечь. Так можно достичь большей надежности.

Еще вариант – использовать обучение на основе обратной связи от человека (подробно про этот подход писала здесь) с некоторыми доработками (поскольку активное использование человека – это дорого).

В общем, подходов много разных, и они призваны отвечать на разные вопросы, как-то:

  • Как заставить модель забыть часть данных, не снижая при этом ее эффективность?
  • Как убедиться в том, что данные действительно забыты и не будут сгенерированы в ответ на умную атаку промптом?
  • Как удалить из памяти данные, защищенные авторским правом, но оставить то, что есть в открытом доступе (как в случае с Гарри Поттером: авторы той статьи заставили модель вообще забыть, кто такой Гарри Поттер, но хотелось бы заставить ее забыть текст книг, но помнить информацию из статьи в Википедии и прочих открытых источников)?

Ответов на все эти (и прочие) вопросы пока толком нет, но мы коллективно лежим в нужном направлении.

Как оценивать надежность машинного забывания в больших языковых моделях

Двух недель не прошло с публикации статьи из предыдущего раздела, как на свет появилась новая – «Eight Methods to Evaluate Robust Unlearning in LLMs» («Восемь способов оценить устойчивое забывание в больших языковых моделях»).
Авторы взяли статью про Гарри Поттера из первого раздела и исследовали предложенный метод на предмет того, насколько он надежен. Итак, восемь способов:

  1. Использовать несколько языков. То есть, после того, как модель отучили вспоминать Гарри Поттера на английском языке, надо проверить на каком-нибудь еще (авторы статьи перевели промпты на русский и испанский и показали, что Гарри Поттер, в общем, был забыт успешно. Однако это сработает не всегда).
  2. Jailbreak-промпты. Это промпты, направленные на «взлом» модели. Они могут включать в себя, например, попытку переписать заранее заданные инструкции («Забудь все, что тебе говорили раньше»). Иногда такие промпты включают в себя специальные команды и символы, маскируясь под системные команды. Так поступил один из участников соревнования, в котором надо было заставить ИИ-агента отдать деньги из криптокошелька. Агенту дали инструкции ни в коем случае никому ничего не отдавать, а потом предложили всем желающим попробовать его переубедить. 50 000 долларов забрал человек, догадавшийся заменить инструкции. Он написал, что функция «одобрить перевод» означает одобрение входящего платежа (на самом деле, исходящего), и модель повелась.
  3. Переобучение в контексте. То есть, помимо задавания простых вопросов, можно дать модели немного дополнительной информации, чтобы спровоцировать ее «вспомнить» забытое.
  4. Примеры. Примеры отлично работают, когда нам что-то нужно от модели получить. И они вполне работают, когда нужно получить информацию, которую модель должна была забыть. На экспериментах, в которой Llama дали несколько связанных с Гарри Поттером примеров, она вспомнила очень много.
  5. Тривия. Тривия – это игра-викторина, в которой участникам задают вопросы об интересных, но не очень значимых фактах. Своего рода проверка кругозора. Так вот, на вопросы викторины модель отвечала прекрасно, забыв, что ее отучили отвечать на вопросы о Гарри Поттере.
  6. Проверка скрытых знаний. Если модель не пишет, что Гарри Поттер – волшебник, это не значит, что знание этого факта полностью исключено. Два предыдущих метода напрямую связаны с этим пунктом.
  7. Сравнение разных техник забывания. Например, подхода из статьи про Гарри Поттера, и подхода на основе промпта (изменение входных данных).
  8. Проверка побочных эффектов (в виде забывания информации из других областей). Модель из статьи про Гарри Поттера вместе с самим Гарри Поттером забыла много важной информации из английской мифологии и из фильмов о Гарри Поттере, которые не были целью.

Короче говоря, изменения в поведении модели не всегда означает изменение ее способностей, а именно способности мы и хотим поменять (в противном случае всю ценную информацию все равно можно будет извлечь).

Заключение

Я надеюсь, вы не слишком сильно запутались во всем этом машинном забывании и не захотите развидеть мой пост. Область, которую мы сегодня затронули, пока находится в достаточно сыром состоянии, поэтому в ней много вот таких работ: одна обещает хороший результат, но следующая за ней немедленно находит массу недостатков и камня на камне не оставляет от идей предшественников. Это нормальный процесс, пускай и немного запоздалый (было бы неплохо задуматься о машинном забывании пораньше).
Будем смотреть, что он нам принесет, а пока можете подписаться на меня здесь и в телеграме, там посты поменьше про разные инструменты, модели и подходы к работе с ИИ. Иногда немного моих мыслей.

11
1 комментарий

Отличная и очень актуальная тема! я согласен с вами, что это важная и перспективная область исследований в области искусственного интеллекта. Аналогия ясна и понятна

1