Mucho se habla de los sesgos en relación con la inteligencia artificial y el machine learning y con la necesidad de comportamientos éticos e incluso regulaciones con ella asociados.
Sin embargo, por desgracia, creo que muchos discursos, más o menos bienintencionados (o quizá no), carecen sin embargo de una base sólida para entender lo que sucede realmente.
Muchas veces me parece que la gente poco informada, se imagina una especie de maldad intrínseca en los algoritmos, o peor, una mala intención o falta de sensibilidad social, humana o ética de los ingenieros, desarrolladores o científicos de datos.
Y esa percepción me parece dolorosa e injusta. E incluso creo que es peligrosa, porque si queremos regular un fenómeno, lo primero que hay que hacer es entenderlo para no llegar a conclusiones equivocadas y decisiones desacertadas.
Leyendo el libro 'Introduction to Natural Language Processing' de Jacob Eisenstein me he encontrado con una buena explicación del autor que nos ilustra un caso concreto de sesgo explicado, eso sí, de forma científica y bien fundamentada.
Y me parece interesante y útil contemplar el sesgo, no desde fuera, no desde la argumentación simplista, vocinglera e incluso demagógica, sino desde dentro, desde el corazón mismo de la inteligencia artificial, desde el algoritmo, en este caso de procesamiento de lenguaje natural.
Pero antes, un poquito de contexto.
Embeddings de palabras
Las redes neuronales, algoritmos habitualmente usados en procesamiento de lenguaje natural como en casi todas las ramas de la inteligencia artificial, funcionan a nivel matemático con vectores (una matriz unidimensional) y tensores (estos últimos una especie de generalización a espacio n-dimensional de las conocidas matrices para espacios bidimensionales).
En concreto, en el caso del procesamiento de lenguaje natural (NLP, 'Natural Language Processing') las palabras se suelen representar como un vector. Hay una forma sencilla de representar palabras de un espacio acotado mediante un vector: la codificación 'one-hot' en que, a cada palabra de un vocabulario le asigna un número entero y luego, se transforma en un vector en que el elemento del vector que corresponde a ese número adopta el valor 1 y el resto cero. Por ejemplo, si queremos representar un espacio de palabras con los colores de un semáforo 'rojo, 'amarillo' y 'verde' podríamos asignarles respectivamente los valores 'rojo'=0, 'amarillo'=1 y 'verde'=2 y eso se correspondería con usar el vector [1,0,0] para 'rojo', el [0,1,0] para 'amarillo' y el [0,0,1] para 'verde'. El problema de esta forma de codificar palabras es que, a poco que crezca el vocabulario que queremos representar, los vectores son enormes y muy dispersos (compuestos fundamentalmente de ceros).
Como alternativa se utilizan los denominados 'embeddings' de palabras en que, a cada palabra le hacemos corresponder un vector pero un vector denso (con pocos ceros) de números reales y con una dimensión mucho menor que el número de palabras posibles en el vocabulario.
Hay varias formas de asignar a cada palabra el vector que le corresponde en un 'embedding' pero, se suele intentar que tenga algún valor semántico para lo que se crean espacios geométricos donde la cercanía de dos palabras implica un significado parecido.
Semántica distribucional
Una forma de conseguir esos 'word embeddings' es aplicando lo que se denomina semántica distribucional ('distributional semantics') que parte del uso de palabras en su contexto en textos normales. Palabras que se usan de forma similar en contextos similares se entiende que tienen un significado parecido. Proceden entonces a realizar análisis de distribuciones de palabras en diferentes contextos y, mediante aplicación de estadística, deduce unos vectores de números reales que asigna a cada palabra. En ese espacio n-dimensional, la hipótesis es que una cercanía geométrica implica cercanía semántica.
No vamos a entrar en el detalle de ese cálculo pero sí decir que lo cierto es que esta estrategia ha conseguido sorprendentes éxitos captando estructuras semánticas y analogías.
En la figura se muestra uno de esos mapas, en este caso bi-dimensional, en que se observan palabras relativas a parentescos, tratamientos y títulos nobiliarios.
Sesgo de género
La verdad es que parece casi mágico. Y desde luego, es efectivo. Pero, por desgracia, este tipo de tratamiento tiene el riesgo de los sesgos.
En su libro 'Introduction to Natural Language Processing', Jacob Eisenstein nos advierte que, en efecto, esta forma de actuar, tan ingeniosa y a la vez tan científica, puede llevar a sesgos.
Nos apunta a que hay palabras, como en la figura 'king' o 'queen' que, por sí mismas llevan implícito el género y, en ese sentido, no hay problema.
Pero si ahora incluyésemos palabras relativas a profesiones y las sometiésemos al mismo tratamiento, análisis estadísticos en contextos de uso, lo que cabe esperar es que profesiones tradicionalmente femeninas como 'nurse' (enfermera) o 'recepcionist' (azafata) figurasen cerca de palabras como woman' (mujer) mientras que profesiones tradicionalmente masculinas como 'skipper' (capitán), asignándoles, por tanto, cercanía semántica e implicando, por tanto, mayor relación de un género u otro con una profesión u otra.
Y no se trata sólo una posibilidad, el autor apunta a estudios que han comprobado que ese sesgo se produce efectivamente, cosa que no resulta sorprendente, la verdad.
Los orígenes del sesgo
En este caso se ha ejemplificado el sesgo de género, pero no hay ningún motivo para pensar que no se puedan producir cualquier otro tipo de sesgos.
Sin embargo, me interesa mucho destacar por qué se produce el sesgo.
Hay que evitar las fantasías: el algoritmo en sí mismo es neutral y, por supuesto, no tiene voluntad ni intención. Ningún algoritmo la tiene: no son seres animados, no tienen mente, no tienen voluntad. Simplemente, aplica unas reglas asépticas, en este caso a unos textos de entrada.
Tampoco el desarrollador o científico de datos tienen ningún tipo de intencionalidad perversa o defecto ético. El algoritmo es perfectamente razonable, ingenioso, científico y ha demostrado sobradamente su efectividad y utilidad.
El sesgo, pues, no está ni en el algoritmo ni la persona que lo crea. El sesgo está en los datos de entrenamiento. Pero ni siquiera por una mala selección de los datos. No es que el científico de datos o ingeniero del conocimiento o lenguaje haya seleccionado malintencionadamente los datos para generar un resultado acorde con sus ideas.
Nada de eso.
El sesgo está en el propio empleo que hacemos las personas en nuestro uso libre del lenguaje. Más aún, diría que el sesgo está en la propia realidad, nuestra realidad, nuestro comportamiento y nuestras asunciones, una realidad que nos demuestra que cómo actuamos y cómo nos expresamos no está en concordancia con los valores a los que aspiramos. En este caso, la realidad que contamos o cómo la contamos muestra un sesgo que nos gustaría que no existiera.
El algoritmo no es el culpable. El algoritmo sólo lo ha puesto de relieve.
Es importante entenderlo. Es importante evitar fantasías y demagogias y tener en cuenta cómo se producen los sesgos, de género o de lo que fueren, a la hora de gestionarlos y de adoptar decisiones éticas o regulatorias.