Word2vec: de palabras a vectores

Rubén Rodríguez Abril

Las técnicas de Word2vec dan forma a una estructura de datos que reproduce las relaciones semánticas entre diferentes palabras. Podemos operar con estos vectores, sumarlos o restarlos para reflejar conceptos más o menos complejos.

Word2vec

En los sistemas de Deep Learning, las capas de neuronas pueden ser interpretados como hiperespacios, dotados de tantas dimensiones como neuronas haya en la capa. En muchos ámbitos, como en Visión Artificial, estos hiperespacios a menudo contienen información de tipo semántico, y sus vectores codifican conceptos o patrones, que parecen poder sumarse, tal y como se muestra en esta imagen.

Los patrones de arriba a la izquierda y a la derecha provocan la excitación máxima de las neuronas 1 y 2 respectivamente. La imagen de abajo, que contiene un patrón mixto, genera el nivel de excitación máxima de ambas neuronas a la vez. Imagen obtenida del artículo «Feature Visualization» publicado en Distill.

cercanía semántica

Éste fenómeno también es observable en el ámbito del procesamiento natural de lenguaje, en algunos de cuyos algoritmos,y particularmente en los algoritmos denominados de incrustación léxica (word embedding). En ellos, una capa de neuronas artificiales transforma cada palabra en un vector de un espacio semántico, técnica conocida como wor2vec. En dicho espacio, la cercanía léxica entre dos vocablos se traduce una cercanía métrica (menor distancia geométrica) entre sus dos vectores. Así, en el caso de lenguas flexivas como el castellano, la palabra “vuelas” (segunda persona del singular del verbo “volar”) se encuentra cercana geométricamente de las palabras “volar” y “vuelo”, pero también al pronombre “tú”. En estos espacios es posible incluso sumar y restar conceptos, de tal manera que si al vector “enfermero” le restamos el vector “hombre” y le sumamos el vector “mujer”, obtenemos como resultado el vector “enfermera”.

En esta imagen podemos ver como la similitud semántica se ve reflejada en una cercanía geométrica en un espacio tridimensional (tres neuronas). Evidentemente las redes utilizadas contienen mucho más de tres neuronas; hablaríamos de hiperespacios de múltiples dimensiones.

Modelos probabilísticos

Las capas de incrustación léxica suelen ser entrenadas en el ámbito de modelos probabilísticos de lenguaje, en los que una red neuronal lee una cadena de texto, y a partir de ella debe adivinar cuál es la palabra que sigue, o mejor dicho, atribuir una probabilidad a todas y cada una de las palabras del vocabularioPor ejemplo, a las cadenas de texto “posesión como presidente de” o “coronado como Rey de” suelen seguirles topónimos de países como “Estados Unidos” o “España”. En este caso, tras la lectura de esas cadenas el modelo atribuye una alta probabilidad a todas las palabras que representen nombres de países. Si la cadena de texto es “las ramas del”, la red atribuirá una alta probabilidad a todos aquellos vocablos que representen objetos de estructura arborescente, como “árbol” o “grafo”. 

Cuando el algoritmo realiza sus predicciones atribuyéndoles, de media, una probabilidad baja (es decir, las predicciones no se están realizando con demasiada seguridad), se dice que su perplejidad es alta.

En este artículo analizaremos dos modelos de lenguaje: el de Bengio (2003), que utiliza una red neuronal alimentada hacia adelante, y el de Mikolov et al (2010), que emplea una red neuronal recurrente.

Modelo de Bengio

En el modelo de Bengio sólo existen dos capas: una de entrada y la otra de salida. La capa de entrada se alimenta de vectores 1-a-N (one-hot vectors), en los que todos sus elementos tienen un valor de cero salvo uno, cuyo valor es la unidad. A cada palabra del vocabulario le corresponde un vector. La capa de entrada viene conformada por la matriz C, que es la que realiza las tareas de incrustación léxica, y la función de activación, que es la tangente hiperbólica. La red recibe como entradas 10 palabras diferentes, que son aquellas que acaban de ser leídas por la misma.

La capa de salida está integrada por cientos de miles de neuronas, cada una de las cuales corresponde a una palabra determinada. El valor de activación de cada una de ellas (calculado a partir de una función softmax) corresponde a la probabilidad sobre uno que la red atribuye a cada palabra. Debido a la gran magnitud de esta capa, el cálculo de la función softmax puede ser computacionalmente muy costoso.

En cualquier caso, el resultado es un vector de N componentes, w_{i}, donde i es el índice de cada palabra dentro del vocabulario. La función de pérdida es la entropía cruzada, que en el caso que nos atañe equivale a la probabilidad logarítmica que la red ha atribuido a la palabra que efectivamente aparecía en el texto:

L = log  w_{t}

Donde t es el índice de la palabra en cuestión.

Modelo de Mikolov

El modelo de Mikolov et al (2010) se basa en una red neuronal recurrente de tan sólo tres capas. La red va leyendo un texto, palabra por palabra, y a cada lectura realiza una predicción de cuál será la palabra siguiente. La capa de entrada viene conformada por un vector 1-a-N, que codifica la palabra que está siendo leída. La capa de salida, con función softmax y dotada de un gran número de neuronas (tantas como palabras del vocabulario), es la que realiza una predicción probabilística.

El Modelo de Mikolov procesa la frase «Las orquídeas son blancas». En el momento t_3 el modelo procesa la palabra w_{t3}, «son», y debe ofrecer una probabilidad para la palabra siguiente w_{t4}, «blancas». Se puede ver como el contexto es alimentado por la salida del propio contexto en el momento inmediatamente anterior w_{t2}.

La función de pérdida es la siguiente:

L = d_{t} – y_{t}

Donde d_{t} es el vector 1-a-N de la palabra correcta y y_{t} es el vector producido por la red. La función de pérdida no es logarítmica como en el caso anterior, sino lineal.

La capa interna del modelo, que los autores denominan capa de contexto, toma información tanto de sí misma (de su estado inmediatamente anterior) como del vector de entrada. Esta capa interna cumple una doble función: memoriza en su estado las palabras leídas con anterioridad y traduce palabras a vectores. Su tamaño oscila entre 60 y 80 neuronas con función de activación sigmoide.

Mejoras en la eficiencia

En la medida en que los modelos descritos con anterioridad son computacionalmente muy costosos, Mikolov et al propusieron en su artículo Efficient Estimation of Word Representations in vector space dos arquitecturas simplificadas. La primera de ellas, denominado Continuous Bag Of Words (Bolsa Continua de Palabras) o CBOW, es una modificación del modelo de Bengio: las diez entradas son reducidas a una mediante la aplicación de la media aritmética a los valores de activación de las neuronas, del modo mostrado en la imagen. Con ello se pierde información relativa al orden de las palabras. En el modelo Skip-gram, por el contrario, de una única palabra el modelo debe producir cuáles son las palabras anteriores y posteriores a la misma, construyendo con ello una pequeña cadena de texto.

Conclusión

Los citados algoritmos de incrustación léxica han tenido un doble mérito: por un lado, han servido para construir espacios vectoriales en las que los términos semánticos pueden ser objeto operaciones algebraicas como la suma o la resta. En segundo lugar, los algoritmos basados en redes neuronales recurrentes han sido capaces de construir vectores, no a partir de una palabra, sino de una cadena de ellas, con lo que han incorporado información relativa al contexto. Los vectores de los sistemas de aprendizaje de máquina son capaces, pues, de codificar el mismo tipo de información semántica que los lenguajes humanos, por lo que en nuestra opinión, sólo es cuestión de tiempo que la IA se independice de estos últimos. En el siguiente artículo iremos un paso más allá y analizaremos los algoritmos sec2sec, que transforman secuencias de palabras en otras secuencias, y son muy utilizados en la traducción a máquina.