Внедрение федеративного обучения с использованием НЕ-независимого и идентично распределенного (не IID) набора данных.
Ссылка на часть 1 (Основы федеративного обучения): https://towardsdatascience.com/preserving-data-privacy-in-deep-learning-part-1-a04894f78029
Ссылка на часть 2 (Распространение CIFAR10 в набор данных реального и не-IID):
https://towardsdatascience.com/preserving-data-privacy-in-deep-learning-part-2-6c2e9494398b
Большое спасибо известному аналитику данных Mr. Акшаю Кулкарни за его вдохновение и руководство по этому уроку.
Что такое федеративное обучение? Что такое набор данных, не относящихся к IID? Какие изменения необходимо внести для накопления данных, не относящихся к IID, в федеративном обучении? Каковы варианты использования этого типа метода глубокого обучения?
Это некоторые из вопросов, из-за которых вы здесь. Этот блог является частью 3 из серии Сохранение конфиденциальности данных при глубоком обучении и посвящен реализации федеративного обучения с набором данных, не относящимся к IID. В части 1 этой серии мы исследовали базовую архитектуру федеративного обучения и его базовую реализацию с использованием PyTorch. Но часть 1 не смогла справиться с набором данных реального мира, где любой клиент может иметь любое количество изображений из заданных классов. Чтобы решить эту проблему, во части 2 мы распределили CIFAR 10 (сбалансированный набор данных) в не-IID / реальный дистрибутив и далее разделили его на клиентов. Теперь, чтобы построить федеративную модель обучения для наборов данных из реального мира / не-IID, я пишу это руководство. В этой части серии мы будем использовать архитектуру федеративного обучения (в части 1) с клиентами, не относящимися к IID (в части 2); таким образом, его можно рассматривать как реальный вариант использования федеративного обучения.
После прохождения этого урока вы будете знать:
- Федеративное обучение
- Архитектура федеративного обучения для данных, не относящихся к IID
- Переподготовка и коммуникационный подход в федеративном обучении
- Средневзвешенное значение как метод агрегирования
Что такое федеративное обучение? (Краткое резюме)
Федеративное обучение - это метод сохранения конфиденциальности, который направлен на обучение модели ИИ на нескольких устройствах (клиентах), обладающих личными данными, без явного обмена или хранения образцов данных. Глобальная модель (веса) передается на эти устройства, где фактическое обучение происходит одновременно с включением специфичных для клиента функций и последующим обновлением (агрегированием) глобальной модели со всеми новыми функциями, изученными во время обучения на отдельных устройствах.
Предсказание следующего слова с помощью клавиатуры Google - выдающийся пример федеративного обучения. Федеративное обучение обрабатывает историю устройства (историю ввода), чтобы предложить улучшения для следующей итерации модели предложения запросов Gboard.
Федеративное обучение очень похоже на цветок. Точно так же, как все лепестки (клиенты) удерживаются цветоножкой (глобальный сервер), причем каждый лепесток имеет разные размеры и узор, но похож на другие лепестки, которые составляют цветок (набор данных, не относящихся к IID), и как все питательные вещества (веса модели) переносятся цветоножкой на лепестки одновременно, цветок - реальная аналогия федеративного обучения.
Для более глубокого понимания базовой реализации федеративного обучения с использованием Pytorch перейдите к Части 1 этой серии.
Теперь мы готовы перейти к следующему и самому захватывающему разделу этого блога - игре с кодом. В этом руководстве с нуля создается федеративная модель обучения с использованием PyTorch путем преобразования сбалансированного набора данных CIFAR10 в набор данных, не относящихся к IID / реальный. Существует множество методов агрегирования для федеративного обучения, но в этом исследовании используется взвешенное среднее всех весов.
1. Импорт библиотек
2. Гиперпараметры
- classes_pc: классов для каждого клиента, в дальнейшем это используется для разделения сбалансированного набора данных на набор данных, не относящихся к IID, путем создания несбалансированного представления классов среди клиентов. Например, если classes_pc = 1, то у всех клиентов будут изображения только из одного класса, что создаст значительный дисбаланс среди клиентов.
- num_clients: количество клиентов, среди которых будут распространяться изображения.
- num_selected: количество случайно выбранных клиентов из числа num_clients в начале каждого цикла связи. Для использования на этапе обучения глобальной модели. Обычно num_selected составляет около 30–40% от num_clients.
- num_rounds: общее количество раундов связи для обучения глобальной модели. В каждом раунде общения обучение отдельных клиентов происходит одновременно.
- эпох: количество локальных учебных раундов на каждом клиентском устройстве.
- batch_size: загрузка данных в загрузчик данных партиями.
- baseline_num: общее количество базовых изображений, которые будут сохранены на глобальном сервере для повторного обучения модели клиента перед агрегированием. Этот метод переобучения всех моделей на глобальном сервере работает с наборами данных, не относящимися к IID / реальным.
- retrain_epochs: общее количество раундов переподготовки на глобальном сервере после получения весов модели от всех клиентов, участвовавших в раунде связи.
3. Преобразование и разделение сбалансированного CIFAR10 в набор данных, не относящихся к IID.
Набор данных CIFAR10 преобразуется в набор экстремальных данных, не относящихся к IID (см. Часть 2). CIFAR10 состоит из 60 000 цветных изображений 32x32 пикселей в 10 классах. Обучающий набор состоит из 50 000 изображений, а остальные 10 000 изображений предназначены для тестовых целей.
Ниже приведен код, который подробно объясняется во второй части этой серии. Пожалуйста, перейдите к части 2, чтобы понять следующий фрагмент более подробно.
Чтобы получить более полное представление о перечисленных выше функциях, прочитайте часть 2 этой серии, где каждая функция подробно описана.
4. Построение нейронной сети (модельная архитектура)
В этом руководстве используется VGG19 (16 слоев свертки, 3 полностью связанных слоя, 5 слоев MaxPool и 1 слой SoftMax).
5. Вспомогательные функции для федеративного обучения
Функция baseline_data создает загрузчик для базовых данных, на которых клиентская модель повторно обучается перед агрегированием весов на глобальном сервере. «Num» - это количество изображений, на которых предполагается провести переобучение модели клиента на глобальном сервере. Строки 9–10 получают данные CIFAR10 и перемешивают обучающий набор. Строка 12 выбирает num изображений из этого перемешанного набора данных, после чего используется для создания загрузчика данных в строке 14.
Функция client_update обучает модель клиента на заданных данных частного клиента. Это локальный раунд обучения, который проводится для каждого выбранного клиента, то есть num_sleected (в нашем случае 6).
Функция client_sync синхронизирует клиентскую модель (перед обучением) с глобальными весами. Это помогает в случае, когда конкретный клиент не участвовал в предыдущих раундах общения, поэтому он гарантирует, что все выбранные клиенты имеют предварительно обученные веса из глобальной модели.
Функция server_aggregate агрегирует веса модели, полученные от каждого клиента, и обновляет глобальную модель обновленными весами. В этом руководстве вычисляется средневзвешенное весов. В части 1 этого ряда вместо взвешенного среднего в качестве метода агрегирования используется среднее.
Функция test - это стандартная функция для оценки глобальной модели с тестовым набором данных. Он возвращает потерю теста и точность теста, которые используются для сравнительного исследования различных подходов.
Теперь мы закончили всю предварительную обработку данных и некоторые вспомогательные функции для федеративного обучения. Итак, давайте углубимся в обучение модели, то есть федеративное обучение с набором данных, не относящимся к IID.
6. Обучение модели.
Глобальная модель, клиентские модели инициализируются с помощью VGG19, а обучение выполняется на графическом процессоре. Строка 6–11 инициализирует модель с помощью VGG19 на графическом процессоре (Cuda). В строке 14 оптимизатор (SGD) определяется вместе со скоростью обучения. Мы также можем добавить член импульса в наш оптимизатор. В строке 17 базовые данные добавляются в загрузчик с изображениями baseline_num, то есть 100 изображениями, как определено выше.
Данные, не относящиеся к IID, загружаются в train_loader с использованием вышеуказанных функций, что гарантирует, что данные не относятся к IID. Classes_pc = 2, num_clients = 20, batch_size = 32.
Строки 1–4 создают список для отслеживания потерь и точности модели в наборе данных поезда и тестирования. Строка 7 начинает обучение индивидуальных клиентов раундам общения (num_rounds). В каждом раунде связи сначала для выбранных клиентов обновляются глобальные веса. Затем локальная модель обучается на самом клиентском устройстве, после чего на глобальном сервере проходит раунд переобучения. После переобучения модели клиента происходит агрегирование весов.
Строка 9 выбирает клиентов num_selected из числа num_clients, то есть шесть клиентов выбираются случайным образом из 20 клиентов. Обучение на клиентском устройстве выполняется (строки 13–17) с использованием client_sync (строка 15), где локальные модели обновляются глобальными весами перед обучением, а затем функция client_update (строка 16) используется для начала обучения. После обучения локальных моделей на самом устройстве, что обеспечивает конфиденциальность личных данных, они отправляются на глобальный сервер. Сначала проводится переподготовка (строки 12-17) этих моделей с использованием исходных данных. За этим следует агрегирование (строка 27) этих локальных моделей (весов) в одну глобальную модель. После обновления глобальной модели эта глобальная модель используется для тестирования обучения (строка 28) с помощью функции тестирования, определенной выше.
Этот процесс продолжается для num_rounds, то есть в нашем случае 150 раундов связи. Это пример федеративного обучения с набором данных, не относящимся к IID, и то же самое можно сделать для набора данных реального мира (определенного в части 2), который в дальнейшем может быть применен к реальной клиентской системе.
7. Результаты
Ниже приведен усеченный результат теста с 6 выбранными клиентами, каждый из которых выполняет 5 локальных эпох и остается на глобальном сервере с 20 эпохами на вершине 150 раундов связи.
Для сравнения, подход, использованный в этом руководстве, дает точность около 72%, тогда как подход, использованный в части 1 этой серии, дает точность около 35% при применении к не-IID. набор данных. Более того, текущий подход (переподготовка на глобальном сервере) намного более стабилен по сравнению с другими доступными методами.
При сравнительном исследовании этого подхода (сохранение на глобальном сервере со средневзвешенным значением) с подходом, использованным в части 1, то есть базовым федеративным обучением со средним значением, подход 2 (переподготовка на глобальном сервере) превзошел тот, который использовался в Часть 1. Все это руководство демонстрирует важность сохранения на глобальном сервере для решения проблемы набора данных, не связанной с IID. Следовательно, это исследование является отличным методом для решения проблемы, связанной с набором данных, не относящихся к IID, и может использоваться в реальных случаях использования.
РЕЗЮМЕ
В этом руководстве вы узнали, как сохранить конфиденциальность данных в моделях глубокого обучения с помощью федеративного обучения с PyTorch и как его можно применить к реальным проблемам.
В частности, вы узнали:
- Внедрение федеративного обучения с набором данных, не относящимся к IID
- Средневзвешенное значение как метод агрегирования (мы использовали среднее значение весов в части 1)
- Синхронизация клиентов с глобальными весами перед обучением и переобучением клиентских моделей с базовыми данными на глобальном сервере.
Ниже представлена блок-схема для быстрого просмотра всего процесса.
ВЫВОД
Федеративное обучение - один из ведущих методов сохранения конфиденциальности данных в моделях машинного обучения. Безопасность данных клиента обеспечивается отправкой только обновленных весов модели, но не данных. Такой подход переобучения модели каждого клиента с использованием исходных данных решает проблему данных, не относящихся к IID. Кроме того, синхронизация модели каждого клиента с глобальными весами вместе с weighted_mean как совокупность методов помогает получить хорошую точность этой модели. В этом руководстве рассматривается крайний случай набора данных, не относящегося к IID, но при использовании для реальных данных он работает лучше, чем эти наши результаты, и это связано с тем, что текущие данные на самом деле более усечены, чем те, которые мы действуйте по сценарию из реальной жизни.
В следующих уроках вы не только узнаете о различных методах агрегации в федеративном обучении, но и о гомоморфном шифровании весов модели, о дифференциальной конфиденциальности и его гибридном с федеративным обучением, а также еще о нескольких темах, помогающих сохранить конфиденциальность данных. .
ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА
[1] Феликс Саттлер, Надежное и эффективное для коммуникации федеративное обучение на основе данных, не относящихся к IID, arXiv: 1903.02891
[2] Х. Брендан МакМахан, Коммуникационно-эффективное обучение глубоких сетей на основе децентрализованных данных, Труды 20-й Международной конференции по искусственному интеллекту и статистике (AISTATS) 2017. JMLR: W&CP volume 54