Los algoritmos de Machine Learning están cobrando cada vez más importancia en nuestro día a día. Estamos rodeados de aplicaciones que utilizan estos algoritmos constantemente. Cada vez existen más personas que se cuestionan si estos algoritmos actúan o se comportan de forma ética. De hecho, la ministra de igualdad Irene Montero, organizó un seminario en el que se abordaría la “reproducción de los sesgos sociales” de los algoritmos que rigen las inteligencias artificiales, que podéis ver en la Figura 2.
Figura 1: Cómo un algoritmo de Machine Learning puede tener prejuicios o sesgos y afectar a la vida de las personas. Un ejemplo con un algoritmo al que le gusta la piel clara
También podemos encontrar otros artículos muy interesantes donde se habla de este tema, como el que publicó nuestro compañero Enrique Blanco en el blog de LUCA, donde nos cuenta qué son los algoritmos sesgados y algunas de las consecuencias que han tenido. Por ejemplo, en 2016 se descubrió que los algoritmos de LinkedIn tenían sesgo de género y que recomendaban empleos mejor remunerados a hombres que a mujeres. Grave, ¿verdad?
Figura 2: Seminario de Inteligencia Artificial y Género
En este artículo veremos los tipos de sesgo y algunas de las causas y soluciones que deberíamos tener en cuenta a la hora de desarrollar y entrenar algoritmos de Machine Learning, sobre todo si los vamos a aplicar a temas de ciberseguridad, o a servicios que pueden afectar a la vida de las personas. De esta forma seremos capaces de mejorar la calidad de estos y evitar en cierta medida este sesgo, porque como ya veréis no es nada fácil.
Los que trabajamos en Machine Learning sabemos que la calidad de los algoritmos depende en gran medida de los datos. Si entrenamos nuestros algoritmos con datos sesgados estos también lo estarán. Cuando hablamos de datos sesgados o biased data nos referimos a "datos desbalanceados" que no son representativos de la realidad o que reflejan los prejuicios de algunas personas. Como comentaba Enrique Blanco en su artículo, estos fallos o sesgos están muy presentes en la tecnología que nos rodea. Un claro ejemplo es el caso de LinkedIn citado antes.
En este artículo veremos los tipos de sesgo y algunas de las causas y soluciones que deberíamos tener en cuenta a la hora de desarrollar y entrenar algoritmos de Machine Learning, sobre todo si los vamos a aplicar a temas de ciberseguridad, o a servicios que pueden afectar a la vida de las personas. De esta forma seremos capaces de mejorar la calidad de estos y evitar en cierta medida este sesgo, porque como ya veréis no es nada fácil.
Figura 3: Libro de Machine Learning aplicado a Ciberseguridad de Carmen Torrano, Fran Ramírez, Paloma Recuero, José Torres y Santiago Hernández |
Los que trabajamos en Machine Learning sabemos que la calidad de los algoritmos depende en gran medida de los datos. Si entrenamos nuestros algoritmos con datos sesgados estos también lo estarán. Cuando hablamos de datos sesgados o biased data nos referimos a "datos desbalanceados" que no son representativos de la realidad o que reflejan los prejuicios de algunas personas. Como comentaba Enrique Blanco en su artículo, estos fallos o sesgos están muy presentes en la tecnología que nos rodea. Un claro ejemplo es el caso de LinkedIn citado antes.
Figura 4: Discurso de Chema Alonso Senado Chile: Ciberseguridad y Sociedad
De este tema habló también Chema Alonso en su discurso de investidura de Doctor Honoris Causa a principios de año y hace poco en la presentación que dio en el Senado de Chile para concienciar de los problemas de la sociedad a los senadores en su charla de Ciberseguridad y Sociead.
“…algoritmos de Machine Learning están generando “insights” o “conocimiento” sobre las personas en función de lo que hacen, leen, de cómo lo hacen, de cuánto tiempo pasan escribiendo, en la web, o cuál ha sido su actividad completa en cualquier sistema informático. “
“Hoy en día sufrimos una catalogación constante de todos nuestros actos y de nosotros mismos. Cada cosa que hacemos cerca de la tecnología sirve para clasificarnos.”
“Puede que fallen en la catalogación de un porcentaje de las personas a las que han asignado una etiqueta, pero en total, incrementa el grado de acierto medio. Tal vez solo falle en un 7%. O puede que las personas cambien su parecer, o sus gustos, o sus ideas, pero no tenemos el control total de todas esas etiquetas que se nos generan. Y esos insights podrían ser utilizados de manera indiscriminada para afectar a las personas más vulnerables…”
Una demostración de algoritmos con sesgo
Antes de comenzar con las causas y soluciones realizaremos una pequeña demo, sin entrar en demasiados conceptos técnicos, para demostrar que no es complicado encontrar algoritmos sesgados. Para realizarla hemos descargado un Jupyter Notebook que trata de aumentar la resolución de imágenes borrosas o pixeladas, siguiendo las técnicas que se describen en el siguiente paper de PULSE.
Figura 5: Paper sobre PULSE
Ahora, vamos a comenzar con la prueba que acompaña este artículo para explicar de una manera muy clara en que consiste el problema. Para realizar esta demo que tenéis también en vídeo se han seguido los siguientes pasos:
1. Pixelaremos varias imágenes
Para ello podéis utilizar la siguiente herramienta. Como podéis ver en la Figura 6 hemos ordenado las fotos por el tono de la piel de más claro a más oscuro, y se ha píxelado la imagen de una persona de la mitad de piel más clara y la de una persona de la mitad con piel más oscura.
2. Cargamos las imágenes pixeladas
Figura 6: Pixelado de imágenes
2. Cargamos las imágenes pixeladas
Subiremos las imágenes píxeladas de una en una al Jupyter Notebook. Para abrir este notebook os recomendamos utilizar Google Colab.
3. Ejecutaremos la celda
Figura 7: Jupyter Notebook
3. Ejecutaremos la celda
Una vez hecho el proceso anterior, ejecutamos la celda y comprobaremos los resultados. Como podéis ver este algoritmo está bastante sesgado, ya que además de aumentar la resolución de la imagen de la mujer, le ha cambiado su color de piel.
Este algoritmo tiene datos sesgados. Mucho más entrenamiento con datos de personas de piel clara ha hecho que cuando despixele la foto lo haga aclarándole la piel. Y esto puede ser muy malo si se aplica en sistemas en producción en la vida real para tomar decisiones automáticas. Aquí os dejamos un vídeo de la demo:
Figura 8: Resultados tras aplicar el algoritmo.
Este algoritmo tiene datos sesgados. Mucho más entrenamiento con datos de personas de piel clara ha hecho que cuando despixele la foto lo haga aclarándole la piel. Y esto puede ser muy malo si se aplica en sistemas en producción en la vida real para tomar decisiones automáticas. Aquí os dejamos un vídeo de la demo:
Figura 9: Un algoritmo de Machine Learning que prefiere la piel clara
A continuación, enumeraremos los tipos de sesgo más comunes que se pueden dar en algoritmos de Machine Learning. Conocerlos nos dará una mejor perspectiva para anticiparnos ante esta clase de problemas y a extraer implícitamente algunas de las causas.
• Sesgo de muestra: ocurre cuando los datos no representan con precisión el entorno en el que se espera que se encuentre el programa. Esto puede suceder, por ejemplo, cuando queremos entrenar un modelo de ML para cámaras de seguridad. Tendríamos que entrenarlo con imágenes diurnas y nocturnas, con un fondo y resolución similares, etcétera.• Sesgo de exclusión: ocurre cuando eliminamos características que pensamos que son irrelevantes para nuestros datos. Supongamos que queremos hacer un modelo para predecir la probabilidad de supervivencia de los tripulantes de un barco en caso de que este se hundiese. Supongamos también que cada tripulante tiene un ID asignado en función de su camarote. En un principio podríamos pensar que el ID no es demasiado importante, que deberíamos eliminarlo, pero en este caso sería un error, ya que el ID indica la localización de los camarotes dentro del barco y, por tanto, la distancia hasta los botes salvavidas.• Sesgo del observador: tenemos tendencia a ver lo que queremos ver o lo que esperamos ver. Cuando estudiamos un problema determinado solemos tener conocimientos previos y sentimientos subjetivos sobre el problema que estamos estudiando. Es decir, tenemos prejuicios conscientes e inconscientes.• Sesgo de prejuicio: ocurre como resultado de influencias culturales o estereotipos. Un claro ejemplo es el algoritmo de LinkedIn que recomendaba empleos mejor remunerados a hombres que a mujeres. Esto se producía porque los puestos mejor remunerados están mayoritariamente ocupados por hombres.
Figura 11: Sesgo de género en profesiones en Google Translate |
Este sesgo aparece en cosas tan habituales como los traductores, donde por ejemplo Google Translate o Microsoft Translate lo sufren. Cuando traduce términos del inglés al español de profesiones, tales como "nurse" o "engineer" las traduce con sesgo de prejuicio de género. Para este servicio, los ingenieros son hombres y las enfermeras mujeres
• Sesgo de medición: ocurre cuando el dispositivo utilizado para medir realiza una transformación sobre los datos. Por ejemplo, las cámaras de nuestros móviles llevan incorporadas diferentes algoritmos de Inteligencia Artificial, que modifican las imágenes para aumentar su calidad. Incluso sin realizar transformaciones sobre las imágenes estos dispositivos también introducen sesgos. Por ejemplo, las cámaras no todas realizan fotos de la misma resolución, utilizan tecnologías diferentes con distintos foto-receptores, lentes, etcétera.
Machine Learning: Qué debes tener en cuenta si creas algoritmos de ML
Aunque ya hemos explicado implícitamente algunas de las causas en los tipos de sesgo es importante que remarquemos algunas de ellas. En un principio puede parecer que los datos de entrenamiento son los únicos culpables, sí es cierto que son muy importantes, pero existen otros aspectos que es importante conocer para evitar esta clase de problemas. A continuación enumeraremos algunos de ellos:
• Proceso mal diseñado: antes de comenzar a implementar el algoritmo de Machine Learning necesitamos encontrar o crear un conjunto de datos (dataset) adecuado para nuestro problema, normalmente cuanto más grande y variado sea mejor. Después lo dividimos aleatoriamente en varios conjuntos: conjunto de entrenamiento y conjunto de validaciones (test).
Entrenamos nuestro algoritmo con el conjunto de entrenamiento y realizamos las pruebas con el conjunto de validaciones. Aquí radica uno de los problemas. Si el dataset inicial está sesgado, los conjuntos de entrenamiento y test también lo estarán. Por tanto, a la hora de realizar las pruebas no seremos capaces de detectar que los datos están sesgados. Como veis el problema no solo radica en los datos, también en el proceso que seguimos.
• Incertidumbre de interpretabilidad: No es fácil saber la causa de que nuestro algoritmo de Machine Learning no se comporte de la manera esperada. Esto se conoce con el nombre de Machine Learning Interpretability, del que os hablamos hace poco. Google está trabajando en la tecnología TCAV (Testing with Concept Activation Vectors) para intentar descubrir qué es lo que ha aprendido un algoritmo.
Figura 12: Explicación y demo de los ataques FGSM a redes neuronales
Otra prueba de este problema son los ataques FSGM en algoritmos de Deep Learning, de los que también os hablamos. Como vimos, podíamos modificar una imagen de forma imperceptible al ojo humano y provocar que una red neuronal predijese incorrectamente las clasificaciones.
• Valores Culturales: Se reutilizan modelos de Machine Learning entre diferentes culturas. Lo que en una cultura se puede considerar justo o equitativo en otra cultura puede no serlo. Además, en informática generalizar una solución que pueda resolver múltiples problemas en diferentes contextos se considera una buena práctica.
Algunas soluciones propuestas
Tras analizar algunas de las causas o aspectos que provocan el sesgo de los algoritmos de Machine Learning veremos algunos de los métodos matemáticos que podemos utilizar para cuantificar la equidad y, por tanto, disminuir o minimizar sus sesgos. En este caso nos centraremos en algoritmos supervisados de clasificación.
Supongamos que tenemos nuestros datos (o características) de entrada y nuestras etiquetas, que denominaremos X e Y, respectivamente. Tendremos otra variable, denominada A, que representará las características protegidas (género, etnia, orientación sexual, etcétera). La salida del clasificador la nombraremos como R. Ahora veremos las propiedades que debemos cumplir para minimizar el sesgo de los algoritmos.
• Independencia entre R y A: el valor de R no debe verse influido por el valor de A. Dicho de otro modo, la probabilidad de obtener una respuesta u otra por el clasificador debe ser la misma independientemente de las características protegidas.
Figura 13: Independencia
• Separación: para los valores de X de un mismo grupo q el valor de R no debe verse influido por las características protegidas.
• Suficiencia: la probabilidad de estar en el mismo grupo q es la misma para valores de X con características protegidas diferentes, pero que han sido clasificados en el mismo grupo.
Figura 15: Suficiencia
Si analizamos detenidamente estas definiciones nos damos cuenta de que algunas de ellas no pueden darse al mismo tiempo. Por tanto, podemos añadir la solución a la lista de problemas. Contradictorio, ¿verdad?. En la práctica lo que se suele hacer es relajar algunas de estas condiciones. Existen muchas otras soluciones que podéis investigar para evitar o disminuir la influencia del sesgo de los algoritmos, como métodos de regularización, transformaciones sobre los datos (conocido como Data Augmentation), técnicas estadísticas parecidas a las que hemos visto y un largo etcétera.
Por los motivos que hemos comentado a lo largo del artículo, y muchos otros que se han quedado fuera, este problema se convierte en algo muy difícil de solucionar. De hecho, las grandes empresas tienen departamentos que se dedican a estudiar esta clase de problemas. Esperamos que os haya gustado.
Saludos,
Autores:
Alberto Rivera Martínez (@ariveram2111), Ingeniero Informático y desarrollador e investigador en el equipo de Aura-Prototypes de la unidad CDCO de Telefónica. Para cualquier duda, consulta o comentario puedes utilizar su buzón público.
Marcos Rivera Martínez (@marcos_98_rm), Ingeniero Informático e investigador de Inteligencia Artificial y Ciberseguridad en el equipo de Ideas Locas de la unidad CDCO de Telefónica.
No hay comentarios:
Publicar un comentario