Вряд ли кто-то возьмется оспаривать потенциал нейронных сетей — очевидно, что за ними будущее ИТ. В довесок к искусственному интеллекту эта технология будет управлять автономными и самоуправляемыми автомобилями, рассчитывать траектории полетов космических ракет, прогнозировать эпидемиологические вспышки, моделировать сейсмическую активность или проводить диагностику заболеваний. Но чтобы нейронные сети могли всё это делать качественно, их необходимо «насытить» информацией.
Стандартные методы машинного обучения требуют, чтобы набор данных для обучения модели был собран в одном месте — на одном компьютере, сервере или в одном дата-центре или облаке. В случае с кластером компьютеров в дата-центре применяется метод стохастичного градиента (Stochastic Gradient Descent, SGD) — алгоритм оптимизации, который постоянно проходит по частям набор данных, гомогенно распределённый по серверам в облаке. Google, Apple, Facebook, Microsoft и остальные игроки в сфере ИИ давно занимаются именно этим: собирают данные — иногда конфиденциальные — с компьютеров и смартфонов пользователей в единое (предположительно) защищённое хранилище, на котором тренируют свои нейросети.
Инженеры Google Research предложили новый способ машинного обучения, который поможет осуществить качественный скачок в данной области. Они разработали систему распределённого машинного обучения (Federated Learning), которая будет снабжаться данными с миллиарда Android-смартфонов. Замысел компании состоит в том, чтобы обучить её собственные мобильные сервисы работать более предсказуемо на основании усредненной модели использования.
Схема работы системы состоит в следующем: модель машинного обучения для каждого из сервисов Google загружается на конкретный смартфон и затем на каком-то отрезке времени суммирует накопившиеся изменения в работе сервисов в отдельный апдейт; содержащиеся в нем данные шифруются и отправляются на серверы Google. Получив сведения, компания сопоставляет их с миллионами других апдейтов и выводит усредненную модель использования сервиса тем или иным пользователем. Это позволяет в итоге определить наиболее комфортную схему взаимодействия между облаком Google и клиентами.
Что немаловажно, Google тренирует свою нейронную сеть на смартфонах пользователей, снижая тем самым нагрузку на свои ЦОДы. Но выгоду получают также и пользователи смартфонов: становясь участниками распределенной программы обучения, они тем самым ускоряют появление новых функций в сервисах типа Gmail, YouTube, Google Play, Chrome и др. Отправная точка для их появления — алгоритм распределенного усреднения: собрав патчи с изменениями в работе своих мобильных сервисов, компания выпускает на смартфон пользователя новую версию модели машинного обучения. И так по кругу.
Google тестирует Federated Learning на приложении Gboard — виртуальной клавиатуре для смартфонов. На примере её работы нейросеть запоминает вводимые пользователем символы и другую информацию, чтобы давать затем более дельные советы. Сообщается, что для тренировки ИИ используется мини-версия программы TensorFlow. В основе программы — открытые библиотеки Google для машинного обучения. Компания обещает, что смартфон будет производить вычисления для распределённой системы ИИ только в моменты простоя, так что это никак не скажется на производительности. Более того, можно установить, чтобы это происходило, только когда смартфон подключен к электросети. Таким образом, эти расчёты не повлияют на время работы от аккумулятора.
Federated Learning — не единственная система для распределенных вычислений. Подобной деятельностью занимается SETI@home — крупнейший некоммерческий проект по поиску внеземного разума с помощью анализа радиосигналов с радиотелескопа Аресиб. Но проекты преследуют разные задачи: если SETI@home использует вычислительные мощности для поиска, то Google — для обучения нейронных сетей. Для запуска уже обученных моделей таких сетей у Google имеются проекты Mobile Vision API и On-Device Smart Reply.