El aprendizaje federado (también llamado aprendizaje colaborativo) es una técnica de aprendizaje automático que entrena un algoritmo a través de una arquitectura descentralizada formada por múltiples dispositivos los cuales contienen sus propios datos locales y privados. Creado por Google en el año 2017, este enfoque contrasta con las técnicas tradicionales de aprendizaje automático centralizado y de enfoques descentralizados más clásicos, en las que todos los conjuntos de datos se cargan en un servidor de manera idéntica a como están almacenados en local. Gracias a esto se conserva la integridad de la información que está siendo utilizada para el aprendizaje sin poner en peligro la privacidad y seguridad.
El aprendizaje federado es una herramienta muy potente en el sector médico, defensa, telecomunicaciones, IoT o farmacia entre muchos otros campos.
Definición
El aprendizaje federado tiene como objetivo entrenar un algoritmo de aprendizaje automático, por ejemplo, redes neuronales profundas, a múltiples actores y así construir un modelo de aprendizaje automático común y robusto sin intercambiar explícitamente muestras de datos. El principio general de este aprendizaje consiste en entrenar modelos locales sobre muestras de datos también locales e intercambiar con cierta frecuencia parámetros (por ejemplo, los pesos de una red neuronal profunda) entre estos nodos locales para generar un modelo global compartido por todos los nodos.
La principal diferencia entre el aprendizaje federado y el distribuido radica en los supuestos que se hacen sobre las propiedades de los conjuntos de datos locales ya que el aprendizaje distribuido tiene como objetivo original paralelizar la potencia de cálculo, mientras que el aprendizaje federado tiene como objetivo original el entrenamiento en conjuntos de datos heterogéneos. Los clientes que participan en el aprendizaje federado pueden ser poco fiables, ya que están sujetos a más fallos o abandonos, ya que suelen depender de medios de comunicación menos potentes y de sistemas alimentados por baterías. En contraparte, en el aprendizaje distribuido los nodos suelen ser centros de datos que tienen potentes capacidades de cálculo y están conectados entre sí con redes rápidas.
Algoritmo Centralizado En el aprendizaje federado centralizado se utiliza un servidor central que ejerce de director para coordinar los pasos del algoritmo y coordinar el resto de nodos. Este servidor central es el responsable de la elección de los nodos participantes al inicio del algoritmo, de su entrenamiento y de las actualizaciones pertinentes durante el algoritmo.
El principal problema de esta distribución centralizada es que todos los nodos participantes tienen que enviar actualizaciones a una única entidad (nodo central) por lo que este puede convertirse un cuello de botella para el sistema.
Algoritmo Descentralizado El algoritmo descentralizado, a diferencia del centralizado, no tiene un servidor central que gobierne el algoritmo. En este entorno se sigue una topología de red, donde serán los propios nodos quienes se coordinen entre sí, sin la necesidad de ser gobernados por un servidor central. De esta forma se evita el problema del cuello de botella que ocurría en la arquitectura centralizada. No obstante, el uso de esta descentralización provocará una serie de complicaciones que pueden afectar en el proceso de aprendizaje de esta.
Algoritmo Heterogéneo Un número cada vez mayor de dominios de aplicación implican un gran conjunto de clientes heterogéneos. Este caso se puede dar en dispositivos como teléfonos móviles o dispositivos IoT. La mayoría de las estrategias de aprendizaje federado existentes asumen que los modelos locales comparten la misma arquitectura de modelo global. Recientemente, se ha desarrollado un nuevo marco de aprendizaje federado denominado HeteroFL para abordar clientes heterogéneos equipados con capacidades de computación y comunicación muy diferentes. Esta técnica permite habilitar el entrenamiento de modelos locales heterogéneos con complejidades de cálculo que varían dinámicamente, sin dejar de producir un único modelo de inferencia global
alt=Federated learning general process in central orchestrator setup|miniaturadeimagen|Proceso general de aprendizaje federado con un nodo central u "orquestador"
Funcionamiento Para garantizar un buen rendimiento de la tarea de un modelo de aprendizaje automático final y central, el aprendizaje federado se basa en un proceso iterativo dividido en un conjunto atómico de interacciones cliente-servidor conocido como ronda de aprendizaje federado. Cada ronda de este proceso consiste en la transmisión del estado actual del modelo global a los nodos participantes, el entrenamiento de los modelos locales en estos nodos locales para producir un conjunto de posibles actualizaciones del modelo en cada nodo, y luego la agregación y el procesamiento de estas actualizaciones locales en una única actualización global y su aplicación al modelo global
Existen varias estrategias posibles a seguir dependiendo del uso o no de servidores centrales. En el caso de que se use un servidor central, los nodos locales realizarán el entrenamiento en función de las órdenes recibidas del servidor. Por otro lado, siguiendo un enfoque peer-to-peer sería la comunicación entre nodos la que haría posible el entrenamiento de la red siguiendo metodologías de cotilleo.Decentralized Collaborative Learning of Personalized Models over Networks Paul Vanhaesebrouck, Aurélien Bellet, Marc Tommasi, 2017
Proceso del aprendizaje federado
Gracias a un contrato Inteligente, se conformará la puesta en común de la información formando una cadena de bloques. Este contrato inteligente actuará como ejecutor de la cadena de bloques para realizar automáticamente el proceso de aprendizaje federado iterativo. Todos los participantes participan al principio en la formulación de dicho contrato inteligente. Una vez formado este contrato, se trasmite a través de la red (si tiene nodo central será el quien lo difunda a los demás nodos, y si no siguiendo una forma de trabajo peer-to-peer) y se almacena en la cadena de bloques. Por último, el contrato ya en la cadena de bloques ejecutará el proceso de aprendizaje automáticamente. Una vez hecho esto, los participantes calculan el parámetro de configuración de aprendizaje basándose en el modelo actual. Encapsulan y transmiten a todos los nodos este parámetro, así como la tasa de error del modelo correspondiente.
Todos los nodos participantes en el aprendizaje compiten entre sí para obtener permiso para agregar nuevos bloques a la cadena. Esto se realiza captando resultados de la resolución de problemas matemáticos. Cuando un nodo obtiene el permiso de producir bloques, recopila todos los parámetros de configuración de aprendizaje y actualiza el parámetro del modelo conjunto en la cadena de bloques. Este nuevo bloque que se genera en la cadena de bloques contiene el valor del hash y la hora y la información de transacción del bloque. La optimización del parámetro de configuración de aprendizaje es la parte más crítica del aprendizaje federado.
El aprendizaje federado implementa el entrenamiento de modelos mediante la iteración continua para optimizar la actualización del modelo local. Estos parámetros de optimización representan distintos procesos de aprendizaje. Como los nodos solo comparten el parámetro de configuración de aprendizaje sin necesidad de compartir nada más, se mantiene la privacidad de los datos de los participantes.
Fases
En el protocolo del aprendizaje federado participan 2 tipos de dispositivos, los dispositivos que trabajan como nodos y el servidor donde se almacena la información para llevar a cabo el algoritmo, que por lo general es un servidor en la nube. Cuando los dispositivos anuncian que están listos para ejecutar una tarea del servidor, este especifica mediante un nombre único global el problema de aprendizaje o aplicación que los nodos van a ejecutar.
Una tarea es un cálculo específico para una población, un entrenamiento que se realizará con hiperparámetros o bien con la evaluación de modelos entrenados en local con los datos del dispositivo. Lo normal es que el servidor tenga decenas de miles de dispositivos disponibles, pero este, seleccionará un subconjunto de unos pocos cientos para trabajar en una tarea específica del aprendizaje federado. Esta comunicación entre dispositivos y servidor se denomina ronda.
Una vez se han comunicado el servidor indica a los dispositivos qué cálculo han de ejecutar. Esto se hace con un plan que incluye una estructura de datos, un gráfico generado con TensorFlow e instrucciones sobre cómo ejecutarlo. Una vez por ronda, el servidor envía a cada participante el parámetro del modelo global actual y cualquier otro que sea necesario. Cada participante o nodo hará un cálculo basado en el estado global y su conjunto de datos local. Y posteriormente enviará una actualización en forma de punto de control al servidor. El servidor incorporará estas actualizaciones de todos los nodos y repetirá el proceso iterativamente.
El protocolo de comunicación permite que los dispositivos avancen el modelo global (singleton de una población) entre rondas. Cada una de las rondas consta de las siguientes fases:
Inicialización y Selección: Periódicamente, los dispositivos (nodos) que cumplen con los criterios propuestos por el servidor son candidatos para ser elegidos. De todos los candidatos el servidor escoge un subconjunto. Los dispositivos no elegidos reciben un mensaje del servidor para que se vuelvan a conectar en un momento posterior. Configuración: El servidor se configura según el método de agregación que haya sido seleccionado para los dispositivos elegidos en la primera etapa. El servidor envía a cada uno de los nodos el plan y un punto de control con el modelo global. Informes: El servidor espera que los nodos participantes informen de las actualizaciones. A medida que las recibe, el servidor las agrega mediante el promedio federado e indica a los dispositivos cuándo deben volver a conectarse. Si un número suficiente de dispositivos informan a tiempo, la ronda se completa con éxito y el servidor actualiza su modelo global. De lo contrario la ronda se abandona.
El servidor tiene cierta flexibilidad y tolerancia a fallos cuando algunos dispositivos no informan a tiempo. Esto es configurable por medio de la tarea.
Las fases de selección e informes están especificadas por un conjunto de parámetros que generan ventanas de tiempo flexibles. La fase de selección dura hasta que se alcanza el recuento de objetivos, o se agota el tiempo de espera
Dirección de ritmo
La dirección de ritmo es un mecanismo que controla el patrón de conexiones de los dispositivos. Habilita al servidor tanto para poder manejar poblaciones de dispositivos muy pequeñas, o por el contrario escalar a una población de dispositivos de unas dimensiones considerablemente grandes. El control de ritmo se basa en el mecanismo simple del servidor. Escala este tipo de poblaciones sugiriendo al dispositivo la ventana de tiempo necesaria para que este vuelva a conectarse. Este parámetro es respetado en el módulo de elegibilidad.
Cuando se habla de poblaciones pequeñas se utiliza el control de ritmo para asegurar que un número suficiente de dispositivos se conecten a un servidor simultáneamente. Esto influye en la tasa de progreso de la tarea como en las propiedades de seguridad del protocolo de agregación segura. Para poblaciones grandes, el control del ritmo se utiliza para aleatorizar los tiempos de registro del dispositivo. De esta manera se evita una “manada atronadora” provocada cuando muchos dispositivos se conectan con mucha frecuencia al servidor, y los cuellos de botella que esto conlleva. Esta frecuencia debe ser controlada, para ser óptima pero no demasiada, ya que un exceso de control también saturaría el servidor.
Datos No-iid