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,[1] 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.
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.[2] 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.[3]
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.
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.[4]
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[5]
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.[6]
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.
[7] 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:
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
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.
El sistema de aprendizaje federado permite una forma de trabajo donde no sea necesario tener datos idéntica e independientemente distribuidos (no-iid). Ante esto, el rendimiento del proceso de formación puede variar en función del desequilibrio de las muestras de datos locales, así como de la distribución probabilística de las muestras tomadas como ejemplo por cada uno de los nodos.
El concepto de los datos non-iid reside en el análisis e probabilidad conjunta entre características y etiquetas par cada nodo, consiguiendo desacoplar cada contribución teniendo en cuenta la distribución específica de muestreo en los nodos locales. Las principales categorías de datos no-iid son las siguientes:[7]
La personalización de parámetros es la principal herramienta de configuración de estos escenarios de aprendizaje. A continuación se desarrollan los parámetros de personalización más comunes:
Otros parámetros que sirven para configurar el proceso de aprendizaje son:
Existen varios estilos a seguir sobre los modelos de aprendizaje:
Las características de los datos no identificados en la red, la baja participación de los dispositivos y el mandato de que los datos permanezcan privados suponen un reto a la hora de entender la convergencia de los algoritmos de aprendizaje federado. Es por esto que se aplican técnicas para tratar con estos problemas.
El promediado federado (FedAvg) es una generalización de FedSGD, que permite a los nodos locales realizar más de una actualización por lotes en los datos locales e intercambiar los pesos actualizados en lugar de los gradientes. Además, promediar los pesos sintonizados que provienen de la misma inicialización no perjudica necesariamente el rendimiento del modelo promediado resultante. A pesar de su simplicidad, carece de garantías teóricas en entornos realistas.[8]
El aprendizaje federado convencional se basa en el descenso de gradiente en cada dispositivo trabajador (nodo): En cada ronda, cada trabajador actualiza localmente sus pesos por descenso de gradiente durante un número de veces por su conjunto de datos local, y luego el nodo central o agregador promedia los pesos de todos los trabajadores y los distribuye a los trabajadores de nuevo. El proceso anterior se repite para múltiples rondas. La principal desventaja de este método es su baja eficiencia. Se sabe que los altos gastos generales de comunicación debido a las frecuentes transmisiones en gradiente desaceleran el FL. Para mitigar los gastos generales de comunicación, se han estudiado dos técnicas principales: (i) actualización local de ponderaciones que caracterizan la compensación entre comunicación y computación y (ii) compresión de gradiente que caracteriza la compensación entre comunicación y precisión.[8]
[9] El entrenamiento del aprendizaje profundo se basa principalmente en variantes del descenso de gradiente estocástico, en el que los gradientes se calculan en un subconjunto aleatorio del conjunto de datos y luego se utilizan para realizar un paso del descenso de gradiente. Los gradientes son promediados por el servidor proporcionalmente al número de muestras de entrenamiento en cada nodo, y se utilizan para hacer un paso de descenso de gradiente. Gracias a esto se obtiene un resultado continuo al poner en conjunto los resultados individuales del entrenamiento de cada nodo local. Si todos los nodos locales parten de la misma inicialización, promediar los gradientes es estrictamente equivalente a promediar los propios pesos.
Este entrenamiento es más ventajoso en un entorno de entrenamiento centralizado. En este método, cada trabajador actualiza sus pesos basándose en el gradiente acelerado de Nesterov (NAG) en lugar del descenso de gradiente. Para cada ronda se seguirá el mismo proceso que en el promedio federado, pero cuanto mayor sea el número total de rondas, más se reducen las agregaciones, y por tanto se sobrecarga menos la comunicación entre los nodos para actualizar ese peso.
La principal ventaja del aprendizaje Federado descentralizado es la privacidad de los datos, ya que los modelos locales se añaden a la red y ayudan a un modelo general, pero al no tener que compartir los datos directamente, se garantiza la confidencialidad de cada uno de los nodos y sus datos.
Por el contrario, la implementación de este aprendizaje tiene claras desventajas ya depende de la capacidad del dispositivo local para ser entrenado. Esto a día de hoy entrama un problema menor, ya que la mayoría de dispositivos inteligentes son capaces de ejecutar estos algoritmos de auto-aprendizaje, pero hace unos años, esto si era realmente una complicación real a la que se enfrentaba el algoritmo ya que muchos dispositivos no tenían la capacidad de cómputo para poder llevar a cabo ese auto entrenamiento que requiere el aprendizaje federado.
Otra dificultad del algoritmo se basa en disponer de datos etiquetados para el entrenamiento local. Debido a esto, el tiempo de convergencia de estos modelos comparados con el aprendizaje automático tradicional es mayor.
El aprendizaje federado no fue una gran revolución cuando Google lo inventó en 2017, debido a que no se sabía a qué proyectos reales en desarrollo se podía aplicar tal aprendizaje. Actualmente, se ha descubierto el potencial de este tipo de aprendizajes descentralizados y se está utilizando principalmente en 3 áreas.
Una conducción autónoma de un coche necesita multitud de tecnologías de aprendizaje automático para funcionar: Visión para analizar obstáculos, aprendizaje para la adaptación de la velocidad al entorno, etcétera. Debido a la cantidad de vehículos autónomos que se usarían si este proyecto fructuase, y la necesidad imperial de una rápida respuesta, hace que el enfoque tradicional de aprendizaje en la nube genere grandes riesgos de seguridad. El aprendizaje federado puede ser una gran solución para limitar este volumen de transferencia de datos y acelerar los procesos de aprendizaje de los coches autónomos.[10][11]
La industria 4.0 tiene una tendencia generalizada a la adopción de técnicas de aprendizaje automático, con el objetivo de mejorar la eficiencia y la eficacia de los procesos industriales al tiempo que se garantiza la seguridad. El problema llega con la privacidad de datos confidenciales que tanto las industrias como las empresas manejan. Por ello, el aprendizaje federado puede resolver este problema ya que, como se explica anteriormente, no revela ningún dato sensible.
El aprendizaje federado ha encontrado en el campo médico y sanitario un gran sector en el que explotar la máximo su potencial, ya que el principal problema de este, era la gran confidencialidad y sensibilidad de los datos que maneja. Con un aprendizaje tradicional en la nube, todos estos datos se verían expuestos de una forma muy clara y con una gran brecha de seguridad de información. Por ello, gracias a este nuevo aprendizaje, se podrá entrenar las redes de los distintos hospitales, para utilizar sus inmensas bases de datos como entrenamiento sin comprometer la seguridad de los mismos. Esto supone un gran avance y se está trabajando intensamente en esta área.[12][13]