Привет, Хабр! Меня зовут Миша Паутов, я аспирант Сколтеха и научный сотрудник группы Доверенные и безопасные интеллектуальные системы Института AIRI. Совсем недавно мы вместе коллегами предложили новый метод создания цифровых водяных знаков для нейронных сетей. Такие объекты, по‑другому называемые ватермарками, можно использовать для определения того, что вашу нейросеть кто‑то скопировал и выдаёт за свою. Здесь я расскажу, в чем состоит идея предложенного метода, а более детально о нем можно почитать в препринте статьи, принятой на международную конференцию IJCAI.
Сама формулировка этого вопроса сейчас звучит необычно, но, видимо, в будущем нам придётся к ней привыкнуть. Воровство нейросетей — это, по сути, кража интеллектуальной собственности в области искусственного интеллекта. Одна из основных причин кражи — ликвидировать отставание от конкурентов либо получить преимущество в данной области.
Кража нейросетей может позволить злоумышленникам обойти длительные процессы исследований и разработок архитектуры, обучения, тестирования и тому подобного. Также кража может дать доступ к конфиденциальной информации, например, в случае банковских, биометрических или других чувствительных данных, обрабатываемых нейросетями.
Все способы кражи моделей можно расположить на шкале, по которой отложено количество известной злоумышленнику информации о модели: архитектура, обучающие данные, гиперпараметры и так далее.
Слева можно расположить ситуацию, когда злоумышленник обладает полной копией модели. Чтобы такое произошло, нейросеть должна физически утечь с серверов своих создателей. Для этого можно организовать хакерсткую атаку на инфрастркутуру, а также использовать социальную инженерию. Наконец, бывает и чисто человеческий фактор — именно так недавно утекла Mistral 7B
Другой край шкалы — ситуация «чёрного ящика», когда у пользователя (и, соответственно, злоумышленника) нет никакой информации об устройстве нейросети. Взаимодействие с такой моделью построено следующим образом: пользователь отправляет запросы и получает ответы (предсказания) нейронной сети, в общем случае не зная ни архитектуру модели, ни данные, на которых та обучалась. Примером такой модели является ChatGPT.
Всё, что посередине, можно обозвать моделями типа «серый ящик».
Понятно, что атаки в разных точках нашей шкалы будут принципиально отличаться. Можно предположить, что владелец нейросети способен защитить свои сервера, а также обучить своих сотрудников правилам безопасности, исключив возможность утечки «белого ящика». Однако крайне сложно защититься от кражи модели «чёрного ящика», особенно если к ней предоставлен массовый доступ. Метод создания цифровых водяных знаков, который мы придумали, заточен как раз под такие атаки, хотя может использоваться и в других сценариях.
Предложенный подход основан на создании так называемого триггерного множества — набора входных данных, объектам которого нейронная сеть ставит в соответствие специфические (часто заранее определенные) предсказания: например, для классификационной нейронной сети это может быть набор картинок котиков, определяющихся нейронной сетью как собаки.
Стоит сказать, что цель создания водяных знаков для нейронной сети — определить, что она была незаконно получена или, по‑простому, украдена злоумышленником. Каким же образом злоумышленник может украсть нейронную сеть, не имея к ней почти никакого доступа? Давайте разбираться!
Атака, направленная на кражу функциональности нейронной сети — это способ получить модель, которая решает исходную задачу так же хорошо, как и исходная модель, при этом не имея информации об архитектуре, тренировочной выборке или процедуре обучения исходной нейронной сети.
Одним из самых эффективных способов кражи нейронной сети‑черного ящика является дистилляция. Прибегая к этому способу, злоумышленник подготавливает суррогатный набор данных
в котором входным объектам в качестве истинных меток ставятся в соответствие предсказания дистиллируемой нейронной сети. Затем злоумышленник обучает отдельную, суррогатную нейронную сеть, минимизируя ошибку на датасете D̅.
Важным свойством дистилляции является то, что полученная модель, хоть и решает исходную задачу так же хорошо, как и дистиллируемая, не обязательно наследует предсказания последней на триггерном множестве. В нашей работе мы нашли элегантный способ улучшить переносимость поведения на триггерном множестве на краденные модели.
Несмотря на то, что дистилляция — наиболее распространенный и эффективный способ кражи моделей, в работе мы также исследовали эффективность наших водяных знаков к таким преобразованиями нейросети, как дообучение и прунинг. Хоть и нельзя сказать, что они являются способами кражи моделей, их применения тоже может привести к удалению водяных знаков.
Учитывая, что злоумышленник волен выбирать сценарий кражи модели, архитектуру суррогатной модели и суррогатный датасет, мы воспринимаем кражу как случайный процесс, который ставит в соответствие исходной модели f некоторую модель из множества B потенциально украденных моделей. Это множество может быть параметризовано: например, в него могут быть включены все модели из определенного списка архитектур, производительность которых в исходной задаче отличается от производительности модели f не более, чем на τ — некоторый заранее заданный порог производительности. В нашей работе мы рассматриваем множество сценариев атаки на кражу функциональности нейронной сети — предполагается, что потенциальному злоумышленнику может быть известна как архитектура исходной сети, так и ее обучающая выборка.
Предложенный метод состоит из двух этапов: на первом этапе мы ищем в пространстве входных данных Х объекты‑кандидаты на включение в триггерное множество, а на втором — убеждаемся в том, что поведение исходной сети на этих кандидатах хорошо переносится на модели из множества B.
Оговорюсь, что речь о пойдет о задаче классификации: нейросеть f ставит в соответствие входным объектам метки классов.
Поиск точек‑кандидатов основан на известном подходе mixup: для пары объектов x1 (класса y1 ), x2 (класса y2 ) ∈ X мы строим выпуклую комбинацию
где λ ~ U(0,1). Такая точка рассматривается как кандидат на включение в триггерное множество только если исходная модель не относит ее ни к классу y1 ни к классу y2.
Для того, чтобы убедиться в переносимости предсказания нейросети на точке‑кандидате x мы применили трюк: случайным образом выбрали набор моделей f1, f2,…, fm из множества B и проверили, присваивают ли они объекту x такой же класс, что и исходная модель f. Иными словами, объект считается достойным кандидатом на включение в триггерный набор, если выполнено равенство
Случайное сэмплирование модели можно делать, например, путем сэмплирования случайного вектора весов для фиксированной архитектуры.
Внимательный читатель может отметить: если водяные знаки играют роль индикатора кражи нейронной сети, то поведение независимых моделей на них не должно совпадать с поведением исходной сети. Как этого достичь?
Аналогично, мы случайным образом выбираем набор моделей g1, g 2,…, gm ∈ B̅ — дополнения множества B, соответствующего не ворованным моделям — и проверяем, что выполняется следующая система неравенств:
Таким образом, точки, прошедшие такую процедуру верификации (случайные модели f1,…, fm ∈ B ведут себя на них так же, как f, а случайные модели g1,…, gm ∈ B̅ — нет) включаются в триггерный набор.
Для того, чтобы оценить, насколько хорошо работает метод нанесения водяных знаков, мы провели несколько экспериментов.
Сначала для данной модели f и набора ее тренировочных данных D мы подготовили набор триггерных данных D*. Затем, применяя дистилляцию модели, мы получили несколько ее суррогатных копий и проверили, как предсказания исходной модели на триггерном множестве переносится на эти триггерные модели‑копии.
В таблице в строчках 1 и 3 представлена точности исходной модели и суррогатных моделей на тренировочной выборке D Интуитивно, чем выше точность суррогатной модели на D тем успешнее атака на кражу функциональности. Строчки 2 и 4 же иллюстрируют то, насколько успешно поведение на триггерном множестве D* переносится на суррогатные модели: чем выше доля совпадения предсказаний, тем точнее метод определяет факт копирования нейронной сети. С помощью этой таблицы можно убедиться, что наш метод (выделен жирным) в большинстве случаев бьет все SOTA.
Стоит отметить, что проведенный эксперимент соответствует сценарию, когда злоумышленнику известна архитектура нейронной сети и обучающие данные. Естественно проверить, как предложенный метод работает в условия, когда архитектура или обучающая выборка неизвестна злоумышленнику, проводящему атаку на кражу функциональности.
Для фиксированной архитектуры исходной модели f мы провели соответствующий эксперимент: предположили, что архитектура суррогатной модели f* не совпадает с ней (иными словами, что архитектура модели f неизвестна злоумышленнику), а также что суррогатная модель обучена на своем датасете D̅ независимом от тренировочной выборки D модели f.
В таблице ниже мы сравнили результаты с предыдущим state‑of‑the‑art методом. Можно увидеть, что это уже не state‑of‑the art 😈
Помимо дистилляции, в нашей работе мы рассмотрели прунинг и дообучение как преобразования, которые могут привести к деградации поведения нейронной сети на водяных знаках.
Для прунинга мы показали, что поведение модели на водяных знаках деградирует вместе с точностью решения исходной задачи: иными словами, если водяные знаки перестают хорошо работать в качестве индикатора кражи, это не страшно — полученная модель сама по себе уже работает плохо.
Дообучение же хоть и приводит к некоторой деградации поведения модели на водяных знаках, не существенно снижает эффективность последних как индикатора «цифровой подписи» модели.
Атаки, направленные на кражу функциональности — вид правонарушений, с которым индустрия и право сегодня сталкиваются нечасто. Возможно, дело в том, что задача копирования больших, боевых моделей по сложности сопоставима с их обучением с нуля и, как следствие, не под силу большей части сообщества.
Увидим ли мы в ближайшем будущем рост числа случаев кражи моделей и связанных с этим судебных разбирательств? Сложно дать какой‑то прогноз. Но если это и произойдет, методы защиты приватности моделей, в том числе подобные описанному здесь, могут облегчить выявление подобных случаев и сохранить репутацию столкнувшихся с этим разработчиков.