В эпоху смартфонов проблема конфиденциальности становится все более актуальной. Каждый владелец смарт-устройства генерирует множество данных, и эти данные имеют большой потенциал для улучшения нашего общения, а также выполнения наших повседневных задач. Например, предположим, основываясь на наших сообщениях и электронных письмах, которые мы вводим с помощью клавиатуры, если бы мы могли получить более точные предложения для вводимых сообщений или даже написания историй (например, GPT2), не стало бы наша жизнь намного проще? так как это сэкономит нам время, набирая одни и те же ответы на часто задаваемые вопросы. Но ведь здесь есть загвоздка? Обучение LSTM или любой модели, основанной на внимании, на данных, сгенерированных пользователем, даст более персонализированные рекомендации, а не обучение их на большом общем корпусе. Проблема здесь в том, что данные покидают устройство и должны передаваться в модель, работающую на центральном сервере. Мы бы не хотели, чтобы то, что мы печатаем на наших смартфонах, было доступно центральному серверу.

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

Прежде чем мы начнем федеративное обучение, общий вопрос, который мог бы прийти в голову, это «подождите, если данные, покидающие устройство, являются проблемой, почему бы не настроить всю модель в устройстве и не обучить ее локально?». Что ж, это не сработает по двум причинам:

  1. Данные об одном клиенте очень ограничены.
  2. Другие клиенты не участвуют в обучении модели, и мы рискуем переобучиться данными устройства, а модель не очень умна. Короче говоря, предложение может стать скорее раздражением, чем удобством.

Итак, что, если мы все еще можем обучить централизованную модель на децентрализованных данных, не вторгаясь в конфиденциальность. Вот где приходит FL. Более интуитивным объяснением FL было бы «приведение модели к данным, а не данных к модели, как при традиционном подходе».

Как работает FL?

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

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

Что ж, приведенная выше методология звучит довольно круто. Но в FL (федеративном обучении) есть некоторые проблемы:

  1. Распределение, из которого отбираются данные, варьируется от клиента к клиенту. В традиционном распределенном обучении есть способы обеспечить хорошее представление данных. Но в FL, поскольку пользователи выбираются случайным образом, вполне возможно, что два набора данных двух случайных клиентов полностью из разных распределений. Кроме того, у каждого пользователя может быть разное количество выборок. Один мог сгенерировать только 10 образцов, в то время как другой мог сгенерировать большее количество в зависимости от использования.
  2. Проблемы со связью возникают из-за того, что устройства могут принадлежать разным сетям (меньшая пропускная способность и т. Д.).

И еще одна проблема, которую мы не обсуждали при обсуждении того, как работает, - это конфиденциальность.

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

Есть несколько способов решить эту проблему.

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

ЗАКЛЮЧЕНИЕ:

Я надеюсь, что это дает представление о том, как работает FL. Интересно то, что в Google Board FL используется для персонализированных предложений. Не беспокойтесь о том, что во время тренировки модели разряжается аккумулятор, так как это происходит только тогда, когда устройство подключено к сети.