miércoles, 10 de enero de 2024

Los modelos de lenguaje, la semántica y los sesgos

Se trata éste, en el fondo, de un post divulgativo, un post con el que me gustaría que se entendiera en sus fundamentos, cómo se refleja la semántica, esto es, el significado, en los grandes modelos de lenguaje que nos ha traído la inteligencia artificial generativa aunque el mecanismo, en sus fundamentos, es el mismo que se lleva utilizando desde hace años en el Procesamiento del Lenguaje Natural (NLP, 'Natural Language Processing').

La ausencia de entendimiento


Me gustaría adelantar que, pese a que se suele hablar de NLU ('Natural Language Understanding'), es decir, entendimiento del lenguaje natural, ningún modelo del lenguaje, al menos no los basados en redes neuronales, tiene un verdadero entendimiento del lenguaje.

Lo tratan de manera efectiva, en muchos casos como 'si lo entendieran', pero no lo entienden. El tema del entendimiento nos podría llevar al tema del 'symbol grounding' que ya mencionamos hablando de robots, pero al que no vamos a volver ahora.

Quedémonos con que los modelos de lenguaje no entienden realmente el lenguaje.

Y, sin embargo, si que tienen, aunque sea por una vía ligeramente indirecta, un cierto contenido semántico.

¿Cómo lo consiguen?


Vectores

 

Primero, vamos a dar un paso atrás para hablar de álgebra. Si, algebra.

Recordemos que los vectores, sin entrar en definiciones académicas, son grupos finitos y ordenados y de números organizados en filas o columnas, algo así como [ 3  4 ]

Los vectores, cuando los estudiábamos en el colegio o el instituto nos podrían parecer algo abstracto, pura teoría, pero son básicos en tantas y tantas cosas, entre ellas el machine learning y las redes neuronales.

Cuando utilizábamos los vectores con un sentido geométrico, un vector de dos dimensiones, representaba la posición de un punto en un espacio bidimensional.

Si el vector anterior son las coordenadas de un punto, las abscisas, la X, valdría 3 y las ordenadas, la Y, valdría 4. Por decir lo de alguna forma, el vector vendría ser [ X=3 Y=4 ]


Recordando a Pitágoras


¿Cuál sería la distancia de ese punto al origen de coordenadas, es decir, al punto representado por el vector [ X=0 Y=0 ].

Pues es muy sencillo. No tenemos más que aplicar el famosísimo teorema de Pitágoras y sabremos que esa distancia es


DISTANCIA = RAIZ CUADRADA ( X2 + Y2 )


Si ahora queremos calcular la distancia de dos vectores [  X1  Y1 ] y [ X2 Y2 ],la distancia entre los dos puntos representados por esos vectores sería


DISTANCIA = RAIZ CUADRADA ( (X2 - X1)2 + (Y2 - Y1)2 )


¿Qué pasaría si ahora tuviéramos un vector de 10 dimensiones? 

Pues, aunque nos es imposible de imaginar, no nos resulta difícil de admitir que la distancia entre [ X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 ] y [ Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 ] en un espacio de 10 dimensiones sería


DISTANCIA = RAIZ CUADRADA ( (Y1- X1)2 + (Y2 - X2)2 + (Y3 - X3)2 + (Y4 - X4)2 + (Y5 - X5)2 + (Y6 - X6)2 + (Y7 - X7)2 + (Y8 - X8)2 + (Y9 - X9)2 + (Y10 - X10)2 )


Fácil, ¿verdad?


Las palabras como vectores


¿Y por qué ese interés en el álgebra y en los vectores?

Pues porque las redes neuronales, cuando nos olvidamos de su metáfora neuronal y las trasladamos a algoritmos matemáticos, se basan en vectores y matrices (o tensores). Y representamos mediante vectores las entradas, las salidas y los estados intermedios.

Y su esa red neuronal se dedica a procesar lenguaje natural, pues puede tener como entrada palabras (digamos un texto a traducir o un 'prompt') y como salida otras palabras como el texto traducido o la contestación de algo como un ChatGPT.

Y, por tanto,  el texto, las palabras, las convertimos en vectores en la entrada y las obtenemos como vectores en salida.


Los 'embeddings', la distancia y la semántica


Simplificnado, podemos decir que la representación como vectores de las palabras es lo que llamamos, 'e,beddings'.

Existen algoritmos de preprocesado, de tokenización y de creación de 'embeddings' en los que no vamos a entrar, pero que hay que saber que convierten, dicho de forma sencilla, las palabras en vectores, aunque de una dimensión bastante más alta que los ejemplos de más arriba,

Así, según nos cuentan  Gerhard Paaß y Sven Giesselbach en su excelente libro 'Foundation Models for Natural Language Processing', modelos como, por ejemplo, BERT, utilizan vectores del orden de unos cientos (ej, 768)

¿Y qué pasa con la distancia?

Pues de forma parecida a como sucede con los vectores geométricos, podemos calcular una distancia en esos vectores de cientos de dimensiones. Pero si esa distancia tiene, en geometría, ese sentido de pura distancia geométrica, la distancia entre los 'embeddings' de las palabras nos indica hasta qué punto dos palabras están cercanas o lejanas desde un punto de vista semántico o en su contexto.

Tan simple como esto.

Bueno, tan simple de entenderlo a alto nivel, no de explicarlo o implementarlo en detalle.

Pero lo que esto nos indica es que, en efecto, aunque los modelos de lenguaje, en el fondo no exhiben un verdadero entendimiento del significado de las palabras, sí que tienen información de cercanía estructural o semántica. y eso, por sorprendente que pueda parecer, es suficiente, junto con, por supuesto, complejos algoritmos neuronales de procesamiento, para conseguir modelos que exhiban una más que razonable coherencia semántica.


Los sesgos


¿Y los sesgos?

Pues, en el fondo, provienen con frecuencia de este mismo mecanismo.

Si entrenamos un modelo de lenguaje con unas entradas de texto (Wikipedia, webs o libros) donde el acrónimo CEO está asociado con 'hombre' o con nombres o concordancias masculinas, en la codificación de esas palabras, 'CEO' y 'hombre', la distancia será bastante menor que la distancia que existirá entre 'CEO' y 'mujer', con las consecuencias que todos conocemos.


Conclusiones con 'disclaimer'


La explicación que acabo de hacer está por supuesto, muy simplificada, así que me perdonen aquellos que puedan conocer en detalle cómo funcionan estos algoritmos, pero creo que es suficientemente realista y al tiempo comprensible como para transmitir la idea de cómo los algoritmos neuronales pueden, sin entender realmente el texto, sin embargo conseguir coherencia semántica y cómo se pueden generar sesgos a partir de unos datos en que ya existe ese sesgo.


No hay comentarios:

Publicar un comentario