PATE, или Private Aggregation of Teacher Ensembles, представляет собой структуру машинного обучения, предложенную Papernot et al. в статье Полуконтролируемая передача знаний для глубокого обучения на основе данных частного обучения. Эта структура позволяет полу-контролируемое обучение с использованием личных данных, сохраняя при этом как интуитивно понятные, так и надежные гарантии конфиденциальности.

PATE основан на идее, что если несколько моделей, обученных на непересекающихся данных, соглашаются на ввод, то личные данные об их обучающих примерах не просачиваются, потому что все модели пришли к одному и тому же выводу. Получая только те результаты, которые имеют большую корреляцию между различными моделями «учителя», мы обеспечиваем интуитивно понятную конфиденциальность. С другой стороны, когда консенсус не достигается, получение рандомизированного вывода обеспечивает надежную гарантию конфиденциальности. Этот случайный выбор может быть получен путем агрегирования шума, и, следовательно, таким образом может быть достигнута (ε, δ) -дифференциальная конфиденциальность.

Более того, PATE Framework содержит дополнительный шаг, гарантирующий невозможность проведения атак на личные данные учителя, будь то посредством множественных запросов или проверки параметров модели. Для этого добавляется модель «ученик», которая учится на общедоступных данных, которые ранее были помечены учителями. Это устраняет необходимость учителей в последующих запросах и гарантирует, что модель ученика будет изучать только обобщение, предоставленное учителями.

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

В связи с этим предлагается дополнительный шаг, на котором ансамбль учителей рассматривается как «Машинное обучение как услуга» (MLaaS), и добавляется шифрование для обеспечения секретности набора данных учащегося. Здесь мы собираемся изучить, как применить эти изменения и как они влияют на процедуру PATE Framework.

Реализация PATE с Pytorch и Pysyft

Данное руководство основано на этом репо. Некоторые разделы кода будут пропущены или изменены для удобства чтения.

Начальная настройка

Во-первых, нам нужно импортировать необходимые библиотеки. В этом руководстве предполагается, что все библиотеки уже установлены локально.

Чтобы продемонстрировать, как работает PATE, мы будем использовать пример, показанный ниже:

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

Применим PATE Framework. Мы будем считать больницу S нашим студентом, а другие больницы - нашими учителями. Учителей просят обучить свои алгоритмы обучения, используя свои частные наборы данных.

1. Объявите работников для каждой больницы.

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

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

2. Определите и загрузите модели для учителей.

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

В этом руководстве предполагается, что все модели учителей уже обучены. Нам нужно только загрузить их и отправить на их машины. В реальной жизни ученик не играет никакой роли в этом процессе; вместо этого каждый учитель будет отвечать за создание своей модели.

3. Подготовьте данные об учениках.

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

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

На данный момент у нас есть все требования для PATE Framework. У нас есть немаркированный набор данных и несколько моделей, ранее обученных на частных, непересекающихся данных. Теперь нам нужно только получить метки нашего набора данных, объединив мнения всех учителей вместе.

4. Отправьте данные каждому учителю для анализа.

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

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

После завершения secure_worker будет иметь матрицу формы (data_size, num_teachers. Эта матрица содержит все предсказанные метки от всех учителей по точкам данных в наборе данных.

5. Обобщите мнения.

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

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

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

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

6. Получение итоговых этикеток.

Теперь, когда запрос агрегирования определен, мы можем получить результаты и провести сравнение с истинными метками.

Обратите внимание, что при сравнении полученных меток с метками, назначенными в наборе данных MNIST, мы получаем точность 90%. Это высокая точность, учитывая количество используемых нами эпсилонов. Вот полная схема того, что было сделано на данный момент.

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

Теперь, когда была объяснена концепция PATE Framework, давайте посмотрим, почему она не работает для этого сценария и какие изменения необходимо внести.

Делаем PATE двунаправленно приватным

Если внимательно посмотреть на предыдущую диаграмму, а также на реализацию PATE, становится ясно, что данные ученика должны быть отправлены всем учителям для анализа. Когда эти данные общедоступны, это не проблема. Но в некоторых сценариях это может быть не так. Пример нашей больницы - один из них. В таких ситуациях было бы предпочтительнее, если бы учителя могли анализировать данные, не имея прямого доступа к ним. Для этого мы можем использовать Additive Secret Sharing для шифрования немаркированного набора данных и моделей учителей. Это подразумевает некоторые дополнительные шаги и добавляет определенные требования к PATE Framework.

1. Убедитесь, что модели учителей можно зашифровать.

Добавление уровня шифрования подразумевает, что все операции, выполняемые с данными, должны быть совместимыми (и безопасными). На момент написания этой статьи в библиотеке PySyft еще не реализовано множество операций. Самое главное, что log_softmax() в настоящее время несовместимо. Это означает, что каждая модель, которая использует это на своем последнем уровне, должна быть изменена, чтобы разрешить шифрование. К счастью, это изменение не требует переобучения моделей.

2. Зашифруйте модели.

Теперь, когда модели совместимы с Additive Secret Sharing, их можно зашифровать. Этот вид шифрования требует, чтобы несколько сторон держали долю данных. Несмотря на то, что мы могли бы использовать любого из воркеров, уже инициализированных в этом примере, мы собираемся добавить два воркера с именами alice и bob. Их единственная задача - хранить все зашифрованные значения.

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

3. Зашифруйте набор данных и получите мнения

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

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

Теперь мы можем провести такое же сравнение с настоящими метками.

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

Заключение

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

Дополнительные замечания

Эта статья была написана в рамках программы Udacity Безопасный и частный AI Nanodegree. Цель этой статьи - представить и объяснить мой последний проект курса, и его следует рассматривать как таковой.

Библиография