Federated Analytics. Una introducción al análisis de datos sin acceder a los datos.

Federated Analytics (FA) es una técnica que permite analizar datos distribuidos en diferentes dispositivos o servidores sin necesidad de centralizarlos o compartirlos. De esta forma, se respeta la privacidad y la seguridad de los datos. Al mismo tiempo se obtienen resultados agregados y útiles para mejorar productos o servicios. FA es una generalización del concepto Federated Learning (FL), que consiste en entrenar modelos de inteligencia artificial de forma colaborativa y descentralizada.

Fue Google quien empleó una primera versión de esta técnica en 2017 durante el desarrollo de FL. Precisamente nació para evaluar la calidad de los modelos entrenados usando esta técnica. Quizá aquí a algunos os suene Federated Learning of Cohorts (FLoC), aquella propuesta que habían hecho los de Google para sustituir a las cookies. Todos estos acrónimos están relacionados, ya que se basan en los mismos fundamentos. Federated Learning es la tecnología que está en el origen de todos ellos y una buena forma de entender FA es entendiendo cómo funciona FL. Así que hagamos esto. Primero revisemos brevemente qué es y cómo funciona Federated Learning. Y luego estaremos preparados para entender fácilmente qué nos ofrece Federated Analytics.

Federated Learning o cómo entrenar modelos de Machine Learning sin exponer los datos de los usuarios.

Con FL podemos entrenar un modelo de Machine Learning (ML) usando datos que se encuentran en dispositivos o servidores remotos sin acceder directamente a ellos. Mientras que con las técnicas tradicionales de ML centralizado necesitamos subir los datos a un servidor, usando FL los datos nunca salen del lugar donde se han generado. Esto que permite abordar problemas críticos como la privacidad, la seguridad o los permisos de acceso. Con un ejemplo lo veremos más claro.

Ejemplo: aplicación de reconocimiento de setas

Imagina que queremos crear una aplicación que reconozca las setas que hay en las fotos que toman los usuarios con su móvil. Al procesar una foto, la aplicación intentará reconocer qué seta es y le mostrará el resultado al usuario. Éste tendrá que confirmar si la seta ha sido o no correctamente identificada.

Para ello podemos entrenar un modelo de inteligencia artificial que aprenda a identificar las diferentes especies de setas. Esto lo podríamos hacer usando datos públicos, con fotografías hechas por profesionales bien enfocadas y con buena iluminación. Pero, ¿cuál será el desempeño de la aplicación cuando se use con fotos de distintos teléfonos móviles y sacadas por usuarios no profesionales?. ¿Cómo podríamos mejorar este modelo con las fotos de los usuarios sin extraerlas?. No queremos pedirle a los usuarios que nos envíen sus fotos por los problemas de privacidad y exposición a posibles riesgos. Además, tendríamos que almacenar y procesar una gran cantidad de datos en un servidor centralizado, lo que podría suponer un alto coste económico.

Ejemplo: Como utilizar Federated Learning

Aquí es donde entra en juego FL. En lugar de enviar las fotos del dispositivo al servidor, enviaremos un modelo pre-entrenado desde el servidor al móvil de cada usuario. Haremos una ronda de entrenamiento en cada dispositivo realizando una ‘mejora en local’. Así, el modelo puede aprender directamente de los datos locales de cada usuario sin necesidad de compartirlos con nadie. El modelo se actualiza con la información que extrae de las fotos, y sólo envía al servidor el modelo mejorado, no las fotos en sí. Los distintos modelos entrenados localmente se envían al servidor y se combinan todos ellos para crear un modelo global más preciso y robusto. Este proceso se repite varias veces hasta obtener el mejor modelo posible. El resultado final es equivalente al obtenido si se utilizan técnicas tradicionales de ML.

FL es una tecnología en desarrollo y al tiempo que se está usando con éxito en casos reales como el reconocimiento de voz, se publican constantemente estudios con aplicaciones en distintas áreas como la conducción autónoma, el diagnóstico médico o la detección de fraudes. El creciente interés en esta tecnología se aprecia en el siguiente gráfico, en el que vemos el número de artículos publicados por año en arxiv.org en los que aparece el término «Federated Learning».

Federated Analytics o cómo analizar datos sin ver los datos.

En nuestra aplicación de identificación de setas nos ha faltado encontrar una forma de evaluar el desempeño del modelo usando las fotos de los usuarios. Es decir, cómo de efectiva es la aplicación en el mundo real.

La solución emerge de manera natural: usar la misma estrategia e infraestructura que hemos usado para entrenar nuestro modelo. Pero en lugar de entrenar y enviar el modelo optimizado, lo que enviamos al servidor son las veces que la aplicación ha acertado y las que ha fracasado al identificar setas. Hallando la media de todos los usuarios obtendremos el valor buscado.

Esta ha sido la forma en la que Google ha medido la eficacia del modelo entrenado con FL que se usa en GBoard. La filosofía es la misma que con FL: En lugar de recopilar los datos crudos y hacer todos los cálculos en un servidor, se calculan los valores de cada usuario en el propio dispositivo. Después se agregan en el servidor central.

Cómo aplicar más capas de seguridad

Claro que fácilmente podríamos considerar estos datos agregados también privados, y por lo tanto merecedores de un trato securizado y anónimo. Podemos añadir una capa más de privacidad usando Secure Aggregation. Esto nos permite codificar un valor en el servidor y enviarlo a los dispositivos locales en donde se aplican las funciones de agregación. Al servidor se envían de vuelta el resultado de esta agregación, que sigue estando codificada, y es allí donde se calcula la media y se descodifican los valores. Esta estrategia añade costes computacionales y de comunicación pero añade protección contra atacantes externos, pues todos las comunicaciones se hacen de valores codificados.

También podemos añadir ruido estadístico para evitar que el servidor central tenga información usable de los usuarios. Esta técnica se llama seguridad diferencial (Differential Privacy). Si añadimos un valor aleatorio entre, digamos, 100 y -100 al resultado calculado en los dispositivos antes de enviarlo al servidor, cuando hagamos la agregación de todos los valores el ruido se cancelará y obtendremos la medida agregada sin que el dato real de cada usuario sea compartido.

El futuro de Federated Analytics

Un forma de ver FA es como una generalización de FL. Visto así, FL sería un caso de uso particular de FA en el que la métrica que estamos obteniendo es el modelo optimizado. Esta aproximación es muy interesante, porque de esta manera es fácil ver que los avances en FL tendrán una aplicación directa en FA. La investigación en este campo está todavía en sus inicios pero el futuro de FA parece prometedor ya que puede ofrece una solución a las restricciones legales o éticas para compartir datos sensibles. FA puede ayudar a obtener información valiosa sobre el comportamiento o las preferencias de los usuarios, el rendimiento o la calidad de los productos o servicios, o el estado o las tendencias de un dominio específico, sin comprometer la privacidad o la seguridad de los datos.

Quiero compartir con vosotros, en una futura entrada, una simulación en la que podamos ver esta técnica en funcionamiento en un caso práctico con el que podamos investigar más el tipo de queries que podemos lanzar al sistema.

Alberto G. Reino
Alberto G. Reino

En 2014 comencé a formarme para dar un giro a mi carrera profesional hacia IT y es lo mejor que he hecho en relación al trabajo. Nunca me he arrepentido porque todo lo relacionado con la informática me apasiona. Sigo estudiando para aprender nuevas tecnologías y roles y no creo que deje de hacerlo nunca.

Deja un comentario