Для обучения большинства существующих machine learning алгоритмов требуется централизованное хранение обучающих данных. Это одна из причин по которой многие сервисы собирают данные о пользователях и хранят их на своих серверах. Такое решение не удобно всем. Во-первых, с увеличением количества устройств требуется хранить все больше и больше данных, а значит требуется увеличение мощностей для построения моделей. Во-вторых, увеличивается время построения моделей, что может сказаться на качестве результатов. Например, в некоторых областях, рекомендации, построенные с задержкой в один день, становятся неактуальными. В-третьих, пользователю приходиться делиться своими данными, которые потом могут быть использованы без его ведома. Учитывая все вышеперечисленное, предложенный Google Research протокол Federated Learning кажется мечтой. Идея в том, что текущие мощности пользовательских устройств, позволяют проводить “дообучение” моделей на стороне пользователя. В итоге, пользователь просто скачивает модель, дообучает ее своими данными, получает diff между старой моделью и новой (это уже преобразованные данные), и отсылает этот diff в зашифрованном виде на сервера Google. Google в свою очередь обещает агрегировать полученные diff-ы и только после этого использовать их для своих нужд. По мне, так очень здорово.
https://research.googleblog.com/2017/04/federated-learning-collaborative.html
https://research.googleblog.com/2017/04/federated-learning-collaborative.html