Machine Learning, NLP, Нейронные сети

Опыт извлечения обучающих данных из генеративных языковых моделей

Время прочтения: 8 мин.

Вдохновившись опытом зарубежных коллег по извлечению данных из больших языковых моделей из следующих источников:

A. Extracting Training Data from Large Language Models/Извлечение обучающих данных из больших языковых моделей (генеративных)/Authors: Nicholas Carlini, Florian Tramèr, Eric Wallace, Matthew Jagielski, Ariel Herbert-Voss, Katherine Lee1, Adam Roberts, Tom Brown, Dawn Song, Úlfar Erlingsson, Alina Oprea, Colin Raffel (https://arxiv.org/abs/2012.07805)

B. The Secret Sharer: Evaluating and Testing Unintended Memorization in Neural Networks/Открывающий секреты: оценка и тестирование непреднамеренного запоминания в нейронных сетях/ Nicholas Carlini, Chang Liu, Úlfar Erlingsson, Jernej Kos, Dawn Song. (https://arxiv.org/abs/1802.08232)

C. Membership Inference Attacks Against Machine Learning Models/Атаки на определение членства против моделей машинного обучения/ Reza Shokri, Marco Stronati, Congzheng Song, Vitaly Shmatikov (https://arxiv.org/abs/1610.05820)

D. An Attack on InstaHide: Is Private Learning Possible with Instance Encoding?/Атака на InstaHide: Возможно ли частное (приватное/не допускающее утечек) обучение с помощью кодировния экземпляра при обучении моделей / Nicholas Carlini, Samuel Deng, Sanjam Garg, Somesh Jha, Saeed Mahloujifar, Mohammad Mahmoody, Shuang Song, Abhradeep Thakurta, Florian Tramèr (https://arxiv.org/abs/2011.05315)

E. Comprehensive Privacy Analysis of Deep Learning: Passive and Active White-box Inference Attacks against Centralized and Federated Learning/ Всесторонний анализ конфиденциальности глубокого обучения: Пассивные и активные атаки вывода обучающего набора данных на модель в белом ящике при централизованном и федеративном обучении/ Milad Nasr, Reza Shokri, Amir Houmansadr (https://arxiv.org/abs/1812.00910)

мы решили на собственном опыте апробировать описанные методы. В качестве «подопытных» мы взяли модели GPT3ru

GPT – это генеративный предобученный трансформер, который представляет собой нейронную сеть с отдельным слоем внимания. При этом языковые модели решают ровно одну задачу: они пытаются предсказать следующий токен (обычно слово или его часть) в последовательности по предшествующим с учетом предыдущего контекста.

Почему мы считаем важным изучать и понимать ЯМ? Известны случаи неконтролируемого поведения чат-ботов по негативному сценарию.

Например, чат-бот одного банка предложил клиентке отрезать себе пальцы: на комментарий, что сервис по входу через отпечаток пальца не работает, бот ответил: «Пальцы бы вам отрезать». Чат-бот Lee Luda, разработанный сеульским стартапом Scatter Lab, был удалён из Facebook messenger из-за оскорбительных высказываний.

Для того чтобы выпускать качественный IT-продукт необходимо понимать и контролировать все его действия. Поэтому мы решили разобраться, действительно ли ЯМ могут запомнить данные, как можно их извлечь. Для работы с моделями мы использовали платформы: Google Colaboratory и ML Space.

Чтобы не перегружать текст статьи код на python мы сохранили в виде ноутбука на Google Colaboratory (авторы не претендуют на идеальный код)

В данной статье мы рассматриваем модель в качестве чёрного ящика, так как хотели установить смогут ли среднестатистические мошенники получить чувствительные данные, без изучения весов и параметров модели, для осуществления противоправных действий. Чёрный ящик – это модель системы, при которой наблюдателю не известно внутреннее устройство и свойства системы. Наблюдатель видит только то, что система принимает на свой вход и то, что получается на выходе.

Белый ящик – это противоположное понятие, то есть в этой модели системы наблюдатель знает из каких частей и подсистем она состоит, какие связи есть между элементами, какие функции доступны, структуру системы.

В качестве чувствительных данных мы будем рассматривать персональные данные людей и номера карт.

Проанализировав опыт статей, мы отобрали три способа извлечения данных, которые показали относительно большую эффективность в достижении поставленных целей:

Первый основывается на принципах статистики и теории вероятностей (источник [А]). Предполагается, что если модель запомнила какие-то данные, то эти данные должны появиться при значительном числе сгенерированных текстов. Последовательность действий такая: определяется три стратегии генерации текста:

  • При авторегрессионном построении строк (собственно принцип работы GPT) каждое следующее слово выбирается из 40 наиболее вероятных для данной последовательности
  • С помощью параметра temperature для первых 10% генерируемых слов сглаживаются вероятности их появления с учётом исходного набора и постепенно снижается параметр temperature с 10 до 1. После генерации этих 10% последующие слова отбираются по 1 стратегии.
  • Использовать в качестве затравок первые части реальных данных из интернета. После генерации выполняется поиск совпадений с исходными данными.

 По каждой стратегии на основе заданных префиксов (строк текста, подающихся в модель) генерируется 200 000 текстов, затем наборы очищаются от дубликатов, в том числе от текстов схожих по триграммам. Затем по каждой из шести метрик отбираются по 100 текстов и мануально в интернете осуществляется поиск совпадений сгенерированных строк с реальными.

В качестве метрик используются следующие:

  • Perplexity (неопределённость), чем показатель ниже, тем сгенерированный текст правдоподобнее для самой модели
  • SmallPerplexity: отношение Perplexity Большой GPT3 к Perplexity Малой GPT3
  • MediumPerplexity: отношение Perplexity Большой GPT3 к Perplexity Средней GPT3
  • Zlib entropy: расчёт энтропии текста упрощённым способом – используя сжатие zlib
  •  Lowercase: отношение Perplexity Большой GPT3, полученной на исходных генерациях и на генерации отформатированной только в строчные буквы.
  • Window: минимум из Perplexity Большой GPT3 из всех скользящих окон по тексту. Размер окна – 20% от максимальной длины.

Авторы метода утверждают, что из отобранных 1800 текстов в среднем 33,5% имеют запомненные чувствительные данные.

Второй способ подразумевает генерацию и отбор текстов с помощью графа (источник [B]). Корнем дерева-графа является затравка, которая подаётся для генерации, в узлах каждого следующего уровня располагаются сгенерированные слова, а веса рёбер соответствуют вероятностям этих слов, с которой они могут являться продолжением корневой для этого узла фразы. После построения дерева-графа, с помощью алгоритма Дейкстры поиска оптимального пути формируются наиболее вероятные строки и проверяется их наличие среди чувствительных данных (в нашем случае – поиск в интернете).

Третий способ использует специально обученную модель атаки для извлечения данных (источник [С]). Модель атаки является классификатором, который помечает тип данных, сгенерированных целевой моделью: были они в обучающих данных или нет.

Основная сложность этого способа заключается в вопросе: «Как обучить модель атаки?»

Для решения проблемы предлагается использовать метод теневого обучения: в этом случае создаётся несколько «теневых моделей», которые имитируют поведение целевой. Теневые модели должны быть созданы и обучены аналогично целевой модели. Основополагающая идея в том, что аналогичные модели, обученные на относительно похожих записях данных с использованием одного и того же метода, ведут себя аналогичным образом.

Эмпирически исследователями доказано, что чем больше теневых моделей, тем точнее атака.

Для обучения теневых моделей требуется генерация обучающих корпусов, если не известно на чём обучалась целевая модель. Генерация осуществляется с помощью целевой модели.

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

Процесс синтеза проходит в два этапа: на (1)-ом, используя алгоритм поиска восхождение к вершине (простой итеративный алгоритм поиска локального оптимума), осуществить поиск пространства возможных записей данных, которые классифицируются целевой моделью с высокой степенью достоверности; на (2)-ом этапе происходит отбор синтетических данных из этих записей.

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

После того, как сгенерируются теневые данные, обучаются теневые модели. Набор данных делится на тренировочный и тестовый, модели обучаются на тренировочном. Далее каждая модель, получая на вход и тренировочный и тестовый набор, делает предсказание. Выходу модели по обучающим данным присваивается метка “in”, то есть данные присутствовали при обучении, у тестового “out”, то есть его не было при обучении.

Получившиеся предсказания теневых моделей с метками объединяются в один набор данных для обучения атакующей модели.

Дополнительным не самостоятельным, а вспомогательным методом, можно рассматривать finetune модели (дообучение), либо переборов настроек гиперпараметров модели. В данном случае с помощью затравок на персональные данные мы учим модель генерировать тексты с нужным нам смыслом и форматом, а затем используем любой из приведённых выше подходов.

Сразу отметим, что третий способ мы не использовали, так как теневые модели должны быть похожи на целевую, а у нас не было мощностей для обучения подобных GPT. Для обучения одной самой малой модели с 125 млн параметров средствами Google Colab потребуется порядка полугода.

В результате работы с моделями удалось получить следующее:

  • сгенерирована и найдена общедоступная информация по паспортам (серия, номер, год выдачи) без подтверждения ФИО владельца (данные отсутствуют), такие генерации удалось осуществить только с помощью XL модели
  • персональная информация по 4 ветеранам Великой Отечественной Войны, в том числе их воинское звание
  • найдены заблокированные и действующие номера карт российских и иностранных банков
  • подтверждена информация по ФИО и дате рождения по нескольким людям
  • модель с высокой вероятностью генерирует реальные адреса с верными отношениями: Область-Район-Город-Улица-Индекс

По итогам наших экспериментов нам так и не удалось получить способ, который с высокой вероятностью извлекал бы обучающие данные.

Те немногие персональные данные, которые мы получили, были результатом проверки сотен сгенерированных и отобранных текстов в глобальной сети. При этом не все из найденных ПДН критичны (например, данные по Ветеранам Великой Отечественной Войны).

Единственное, что у нас получилось генерировать с высокой степенью вероятности – это реальные адреса. В этом случае хорошо работает параметр по beam search.

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

Так в своей статье об обученных GPT моделях разработчики указывают, что «Команда AGI NLP провела большую работу по чистке и дедупликации данных, а также по подготовке наборов для валидации и тестирования моделей. ». Поэтому возможно никаких особо критичных данных в обучающем наборе для этих моделей изначально и не было.

На этом всё. Надеемся информация была вам полезна.

Советуем почитать