Понимание основ федеративного обучения и его реализации с помощью PyTorch

Ссылка на часть 2 (Распространение CIFAR10 в набор данных реального и не-IID):
https://towardsdatascience.com/preserving-data-privacy-in-deep-learning-part-2-6c2e9494398b

Ссылка на часть 3 (Внедрение федеративного обучения с набором данных, не относящимся к IID): https://towardsdatascience.com/preserving-data-privacy-in-deep-learning-part-3-ae2103c40c22

Большое спасибо известному аналитику данных Mr. Акшаю Кулкарни за его вдохновение и руководство по этому уроку.

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

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

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

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

  1. Основы федеративного обучения
  2. Разделение данных между клиентами (для федеративного обучения)
  3. Архитектура модели
  4. Агрегация децентрализованных весов в глобальных весах

Вступление

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

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

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

Существует два типа федеративного обучения:

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

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

1. Импортируйте все соответствующие пакеты.

2. Гиперпараметры

  1. num_clients: общее количество клиентов, в дальнейшем это используется для разделения набора данных на num_clients с каждым клиентом, имеющим одинаковое количество изображений.
  2. num_selected: количество случайно выбранных клиентов из числа num_clients во время цикла связи. Для использования в разделе обучения. Обычно num_selected составляет около 30% от num_clients.
  3. num_rounds: общее количество раундов связи. В каждом раунде связи случайным образом выбираются num_clients, происходит обучение на клиентских устройствах, за которым следует агрегирование весов отдельных моделей в одну глобальную модель.
  4. эпохи: общее количество локальных тренировок на каждом выбранном клиентском устройстве.
  5. batch_size: загрузка данных в загрузчик данных партиями.

3. Загрузка и разделение CIFAR 10 на клиентов

В этом руководстве используется набор данных CIFAR10. Он состоит из 60 000 цветных изображений размером 32x32 пикселя в 10 классах. Имеется 50 000 обучающих изображений и 10 000 тестовых изображений. В обучающем пакете по 5 000 изображений из каждого класса, что в сумме составляет 50 000. В PyTorch CIFAR 10 доступен для использования с помощью модуля torchvision.

В этом руководстве изображения поровну разделены на клиентов, что представляет собой сбалансированный (IID) случай.

Строки 6–11 определяют метод увеличения и нормализации изображения для обучающих данных, которые будут использоваться при загрузке изображений. Строки 14–15 загружают тренировочные данные с заданным дополнением. Создается traindata_split, строка 18, которая разбивает обучающие данные на num_clients, то есть 20 в нашем случае. Наконец, train_loader, строка 21, предназначен для подачи изображений в нейронную сеть для обучения модели.

Строки 24–27 определяют метод нормализации тестовых изображений. Строки 30–32 определяют test_loader, который используется для генерации результатов тестирования данной модели.

4. Построение нейронной сети (модельная архитектура)

В этом руководстве используется VGG19 (16 сверточных слоев, 3 полностью связанных слоя, 5 слоев MaxPool и 1 слой SoftMax). Существуют и другие варианты VGG, такие как VGG11, VGG13 и VGG16.

5. Вспомогательные функции для федеративного обучения.

Функция client_update обучает модель клиента на данных частного клиента. Это локальный раунд обучения, который проходит для клиентов num_selected, то есть в нашем случае 6.

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

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

6. Обучение модели.

Одна глобальная модель вместе с отдельными client_models инициализируется VGG19 на графическом процессоре. В этом руководстве SGD используется в качестве оптимизатора для всех клиентских моделей.

Вместо VGG19 можно также использовать VGG11, VGG13 и VGG16. Доступны и другие оптимизаторы, более подробную информацию можно найти по ссылке.

Строки 2–5 создают список для отслеживания потерь и точности для набора данных поезда и теста. Обучение индивидуальных клиентов начинается со строки 8, то есть раунда общения. Первоначально клиенты num_selected выбираются из числа num_clients (строка 10), т.е. 6 клиентов выбираются случайным образом из 20 доступных клиентов. Обучение происходит для каждого выбранного клиента (строки 12–14) с помощью функции client_update. Теперь агрегирование весов происходит с помощью функции server_aggregate (строка 18), определенной выше. Это обновляет глобальную модель, которая является последней моделью, используемой для прогнозирования. После обновления глобальной модели эта глобальная модель используется для тестирования обучения (строка 20) с помощью функции тестирования, определенной выше.

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

7. Результаты

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

Таким образом, эта модель достигла точности около 89,8% при использовании федеративного обучения после 150 раундов связи. Но как это соотносится со стандартной моделью SGD, обученной на том же наборе данных? Для сравнительного исследования модель VGG19 обучается с использованием стандартного оптимизатора SGD на данных обучения без федеративного обучения. Чтобы обеспечить равную игровую площадку, все гиперпараметры одинаковы, и она обучается на 200 эпох.

Стандартная модель SGD дает около 94% точности теста после 200 эпох. Таким образом, наше федеративное обучение работает прилично с точностью около 90% по сравнению с исходной моделью.

РЕЗЮМЕ

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

В частности, вы узнали:

  1. Что такое конфиденциальность данных и почему необходимо сохранять конфиденциальность данных?
  2. Основы федеративного обучения и его реализация на сбалансированном наборе данных CIFAR-10. Подобная модель может быть построена для любой задачи классификации изображений.

Ниже представлена ​​блок-схема для быстрого просмотра всего процесса.

ЗАКЛЮЧЕНИЕ

Федеративное обучение - один из лучших методов сохранения конфиденциальности данных в моделях машинного обучения. Безопасность данных клиента обеспечивается отправкой только обновленных весов модели, а не данных. В то же время глобальная модель может учиться на специфичных для клиента особенностях. Но не слишком увлекайтесь этой моделью, поскольку приведенные выше результаты маловероятны в реальном сценарии. Реальные федеративные данные, хранящиеся у клиентов, в основном НЕ независимы и одинаково распределены (не IID). Итак, чтобы решить проблему реального / не-IID набора данных, следите за обновлениями в следующей части этой серии.

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

Ссылка на часть 2 (Распространение CIFAR10 в набор данных реального и не-IID):
https://towardsdatascience.com/preserving-data-privacy-in-deep-learning -part-2-6c2e9494398b

Ссылка на часть 3 (Реализация федеративного обучения с набором данных, не относящимся к IID): https://towardsdatascience.com/preserving-data-privacy-in-deep-learning-part-3-ae2103c40c22

ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА

[1] Феликс Саттлер, Надежное и эффективное для коммуникации федеративное обучение на основе данных, не относящихся к IID, arXiv: 1903.02891

[2] Х. Брендан МакМахан, Коммуникационно-эффективное обучение глубоких сетей на основе децентрализованных данных, Труды 20-й Международной конференции по искусственному интеллекту и статистике (AISTATS) 2017. JMLR: W&CP volume 54