La inteligencia artificial habla. Pero ¿entiende realmente lo que dice?

14 min read
Artwork by Nicolau

Imagínate que estás en una habitación, solo.

Miras a tu alrededor. La habitación no tiene ventanas ni puertas, solo una pequeña ranura en una de las paredes y estantes repletos de libros. Están llenos de símbolos extraños que van acompañados de instrucciones en inglés para convertirlos en otros símbolos igualmente raros.

De repente, un trozo de papel cae a través de la ranura. Contiene una serie de símbolos que no entiendes, similares a los que aparecen en los libros. Recorres todas las páginas de cada uno de los libros hasta que encuentras los caracteres que coinciden y sigues las instrucciones, que te dicen qué debes escribir debajo del mensaje original y te indican que deslices el papel nuevamente a través de la ranura, cosa que haces.

Pero no son símbolos sin sentido garabateados en un trozo de papel. Al otro lado de la habitación, hay unas personas, hablantes nativos de chino, que acaban de recibir una respuesta perfecta a la pregunta que hicieron. Llegan a la conclusión lógica de que hay un hablante nativo de chino en la otra habitación. Solo que nosotros sabemos que no es así.

Se trata de un experimento mental muy debatido, «la habitación china», que fue propuesto por el filósofo John Searle en 1980. En el experimento, los libros no son diccionarios chino-inglés, ya que en ningún momento intentan explicar el significado de los símbolos. Simplemente dan instrucciones sobre cómo recibir una información, manipular los caracteres en función de las relaciones que tienen entre sí y proporcionar un resultado. Los libros actúan como un programa de ordenador.

Searle argumentaba que el test de Turing no era fiable para poner a prueba la inteligencia de las máquinas. Cualquier programa efectivo de IA podría llegar a aprenderse las reglas de un idioma y dar la impresión de tener el mismo conocimiento de la lengua que un hablante nativo.

Estas interacciones entre los ordenadores y las lenguas humanas constituyen la base del procesamiento del lenguaje natural o PLN.  El PLN está en todas partes, en el reconocimiento de voz, en la síntesis de textos, en el análisis de sentimientos, en la traducción automática… Y ha mejorado de forma espectacular desde los años 80. Aunque todavía hay bastantes traducciones automáticas cómicas por ahí, hemos recorrido un largo camino desde la época de BabelFish. Todo el mundo (especialmente yo, un yanqui monolingüe que vive en Lisboa) tiene garantizado el acceso a traducciones rápidas y bastante precisas.  

¿Alguna vez te has preguntado cómo son capaces los programas de ordenador de procesar las palabras?

Porque incluso las frases más sencillas pueden ser campos de minas semánticos llenos de connotaciones y matices gramaticales que solo los hablantes nativos pueden entender al instante. Tomemos, por ejemplo, la siguiente frase: «Ayer fui al banco y me encontré con mi amigo». ¿Cómo podría un ordenador traducir esto al francés? La forma más rudimentaria sería reemplazando palabra por palabra con la ayuda de un diccionario bilingüe. Probablemente, el resultado de la traducción sería algo así: «Hier, je allé à le banque et couru dans mon ami». Para empezar, hay problemas de conjugación de los verbos y de concordancia de género entre el artículo y el sustantivo («le banque» debería ser «la banque»). Pero, si realmente quisiéramos traducirlo de esta manera, podríamos elaborar un conjunto de reglas para sortear estas dificultades gramaticales. Y la traducción quedaría más o menos así: «Hier, je suis allé à la banque et j’ai couru dans mon ami». Definitivamente, ha mejorado, aunque, en esta versión, aún me he abalanzado sobre mi amigo como si estuviese haciéndole un placaje.

He probado con Google Translate, que no se caracteriza precisamente por la exactitud de sus traducciones, y este ha sido el resultado: «Hier, je suis allé à la banque et suis tombé sur mon ami». Esta herramienta traduce correctamente la expresión idiomática que significa «encontrarse con alguien inesperadamente». Este es no es el resultado que se obtendría si únicamente se reemplazasen las palabras una por una.

Entonces, ¿cómo se ha hecho? En primer lugar, debemos considerar la forma en la que los humanos aprendemos a resolver la ambigüedad verbal. Cuando somos pequeños y nos enfrentamos a un número suficiente de ejemplos, comenzamos a asignar valores semánticos a las palabras y extraemos y extrapolamos dichos valores de determinadas combinaciones de palabras. En términos más sencillos, somos capaces de entender qué significan las palabras y cómo se ven afectadas por el contexto sin que nos lo enseñen. Siguiendo con el ejemplo anterior del inglés al francés, nuestro primer instinto es pensar que nos encontramos con nuestro amigo y no que chocamos con él. Conocemos el mundo físico y contamos con toda la información lingüística que hemos recopilado a lo largo de nuestra vida para ayudarnos a poner las cosas en contexto.

¿Qué significan las palabras y las frases para un ordenador, que solo entiende de ceros y de unos?

Aunque los ordenadores no pueden «entender» realmente el lenguaje de la misma forma que lo hacen los humanos, entrenarles para generar información útil a partir de texto no es tan diferente de nuestra propia experiencia de aprendizaje del lenguaje. Si muestras suficientes ejemplos a un ordenador, este comenzará a reconocer patrones. Pero ¿cuál es el sustituto de la comprensión humana? Las incrustaciones de palabras, que constituyen las unidades fundamentales de cualquier tarea de procesamiento del lenguaje natural.

Una incrustación de palabras es, esencialmente, una secuencia de números (un vector) que almacena información sobre el significado de la palabra.

El objetivo de crear incrustaciones de palabras es doble: mejorar otras tareas del procesamiento del lenguaje natural, como la traducción automática, y analizar similitudes entre palabras y grupos de palabras.

Debido a una serie de avances en los métodos de incrustación de palabras, el año 2018 ha sido declarado como la edad de oro del PLN. Estos nuevos métodos han logrado mejoras significativas en nuestra capacidad para modelar el lenguaje, las cuales se notarán pronto tanto en productos de consumo como en empresas.

Veamos un ejemplo simple para hacernos una idea de lo que es la incrustación de palabras.

Supongamos que queremos crear incrustaciones de palabras bidimensionales (es decir, que cada palabra esté representada por un conjunto de dos números) para ciertos animales: hipopótamo, serpiente, mariposa y ornitorrinco. Supongamos también que estas dos dimensiones representan dos características que los animales pueden mostrar en diferentes grados: «peligrosidad» y «cantidad de pelo».

Las incrustaciones de palabras para estos animales podrían ser las siguientes:

AnimalPeligrosoPeludo
Hipopótamo0.850.13
Serpiente0.88-0.97
Mariposa-0.91-0.86
Ornitorrinco0.610.79

En este ejemplo, «hipopótamo» está representado por el vector [0.85, 0.13], «serpiente» por [0.88, -0.97], y así sucesivamente. De forma que esto nos proporciona una representación numérica, aunque simplificada, de cada uno de estos animales en función de estas dos características. Se pueden realizar todo tipo de operaciones matemáticas con estos vectores para darnos nueva información.

Un ejemplo que se cita a menudo y subraya el poder de la incrustación de palabras es el siguiente: «kingman + woman = queen» (rey – hombre + mujer = reina). En este diagrama, las flechas azules representan el género, y las naranjas, la realeza.

Una de esas operaciones es la comparación. ¿Qué grado de similitud tiene una palabra con respecto a otra? En nuestro ejemplo de los animales, podemos imaginar la representación numérica de «hipopótamo», «serpiente», «mariposa» y «ornitorrinco» en un gráfico de dos dimensiones como una línea que se extiende desde el origen y pasa por los puntos que indican los números. Por lo tanto, la similitud de estas palabras puede determinarse por el ángulo existente entre sus vectores, que también se denomina similitud de coseno. Básicamente, las palabras que están separadas por un ángulo de 90° no tienen una relación semántica, mientras que las palabras que están separadas por un ángulo de 180° son totalmente opuestas.

En este ejemplo, la distancia entre el hipopótamo y el ornitorrinco es de unos 16°, mientras que la distancia entre el hipopótamo y la mariposa es de 104°.

Por supuesto, esto es un ejemplo hipotético y divertido que solo trata de aclarar qué son las incrustaciones de palabras y describir de una forma muy sencilla la utilidad que pueden tener. En la práctica, se utilizan vectores de muchas más dimensiones (generalmente, de cientos de ellas), y tratar de asignar campos semánticos como «peligroso» o «peludo» a estas dimensiones sería difícil y no tendría lógica, ya que el algoritmo no conoce realmente el significado de las palabras. Además, se necesitan conjuntos muy grandes, del orden de decenas de millones de palabras, para «aprender» incrustaciones de palabras satisfactorias.

Pero antes, debemos mencionar rápidamente un campo de la lingüística denominado «semántica distribucional».

Las incrustaciones de palabras capturan de manera eficiente algo denominado «hipótesis distribucional», un concepto que el lingüista británico John Rupert Firth definió de forma muy acertada en su obra de 1957, « A synopsis of lingustic theory»:

«Para conocer una palabra, fíjate en las que la acompañan».

El campo de la semántica distribucional sostiene que las palabras y frases que aparecen en contextos similares (distribuciones similares) tienen significados parecidos.

Por ejemplo, supongamos que tenemos un conjunto de varias frases:

  • Acarició al perro peludo.
  • Acarició al gato peludo.
  • Jugó con el perro a lanzarle la pelota.

Para un ser humano, resulta evidente que los gatos y los perros están relacionados (los dos son animales de compañía), al igual que «acariciar» y «jugar a lanzar la pelota», ya que ambas cosas tienen que ver con las mascotas. Pero también es evidente que no es posible jugar con un gato a lanzarle la pelota, por mucho que nos empeñáramos.

Los métodos computacionales de incrustación de palabras se basan en esto, en la idea de que el contexto de una palabra puede ayudarnos a determinar lo que significa dicha palabra si vemos un número suficiente de ejemplos variados.

En última instancia, esto nos conduce a los algoritmos reales para el cálculo de incrustaciones de palabras, como Word2Vec, desarrollado por Tomas Mikolov y sus compañeros investigadores de Google en el 2013. El objetivo principal del algoritmo es, para una palabra determinada, predecir las palabras vecinas mediante la utilización de una gran cantidad de textos como datos de entrenamiento.

Volvamos a una frase muy parecida a la que mencionábamos anteriormente, esta vez en inglés: «Yesterday, I went to the bank and I read the newspaper» (ayer fui al banco y leí el periódico).

Con Word2Vec, definiremos primeramente una ventana de contexto de un número determinado de palabras, dos por ejemplo. Por lo tanto, nos fijaremos en las dos palabras anteriores y en las dos palabras posteriores a cada una de las palabras presentes en los datos de entrenamiento, y emparejaremos cada palabra con cada una de las cuatro palabras de contexto. La palabra principal es el dato de entrada, y la palabra de contexto es el resultado. Es decir, lo que se pretende es utilizar la palabra que constituye el dato de entrada para predecir la palabra de salida o resultado.

En el ejemplo anterior, si la palabra principal es «bank», las parejas de entrenamiento serían: (bank, to), (bank, the), (bank, and), (bank, I).

Este proceso de creación de parejas se repite para cada palabra de la frase, y el uso de la palabra de entrada para predecir la palabra de salida de cada pareja es lo que finalmente genera las incrustaciones de palabras.

Si se dispone de millones de líneas de texto con las que entrenar, es de esperar que muchas de las parejas se repitan, lo cual aumentará las probabilidades de que el modelo aprenda esas combinaciones. Incluso en esta frase, podemos ver que (bank, the)/(newspaper, the) y (went, I)/(read, I) son parejas similares, ya que siguen los paradigmas de sustantivo-artículo y verbo-pronombre sujeto, respectivamente.

El siguiente paso consiste en transformar estas palabras en vectores distribucionales, como en el ejemplo de los animales, donde los números tienen un significado interrelacionado.

Para hacer esto, repasamos cada pareja de entrenamiento que hemos creado y aplicamos el siguiente procedimiento. En primer lugar, inicializamos la incrustación de la palabra de entrada como un vector de números aleatorios. Después, se aplican una serie de funciones matemáticas al vector. El resultado de estas operaciones es otro vector que, a su vez, representa una palabra que queremos que sea la palabra de salida de nuestra pareja de entrenamiento. Si la palabra predicha no es la palabra de salida correcta, ajustamos los números de la incrustación de la palabra de entrada para que el resultado de las operaciones se acerque más al vector de la palabra de salida.

En este ejemplo, nuestra pareja de entrenamiento es (bank, the). Después de aplicar las funciones de salida a la incrustación para la palabra «bank» (en naranja), observamos el vector de la palabra predicha (en verde) para ver si se corresponde con la palabra objetivo, «the». Para finalizar, modificamos la incrustación en naranja de «bank» para que el vector predicho, de color verde, se aproxime más a «the».

Actualizamos estas incrustaciones de palabras para maximizar la probabilidad de que, dada una palabra de entrada, la palabra de salida generada aparezca frecuentemente como una palabra de contexto en los datos. Palabras similares tendrán contextos similares y, por lo tanto, incrustaciones de palabras similares.

Para subrayar la solidez de estos modelos, incluimos a continuación algunos ejemplos del documento original con el que se presenta Word2Vec.

RelaciónEjemplo 1Ejemplo 2Ejemplo 3
Francia: ParísItalia: RomaJapón: TokioFlorida: Tallahassee
Einstein: científicoMessi: centrocampistaMozart: violinistaPicasso: pintor
Microsoft: BallmerGoogle: YahooIBM: McNealyApple: Jobs

Nota: Como puede verse, la precisión es bastante buena, aunque aún hay muchas cosas que mejorar.

Mediante las incrustaciones de palabras, podemos pedirle al modelo que haga analogías como «¿Francia es a París como Italia es a ___?». Si bien el ordenador no entiende, es como si supiera que Roma es la capital de Italia y que Picasso era un pintor. Basándose en la hipótesis distribucional, traduciría el nombre «Steve Jobs» como «Steve Jobs» en un artículo sobre tecnología, pero traduciría «jobs» como «empleos» en un informe económico. Detectaría que no me abalancé sobre mi amigo, sino que simplemente me lo encontré en el banco.

Al utilizar este tipo de técnica de incrustación de palabras, hemos visto resultados sorprendentes en distintas tareas, como el análisis de sentimientos, la generación de textos y, la más importante para Unbabel, la traducción automática.

Aún así, el problema del lenguaje de la inteligencia artificial no está resuelto, ya que aún estamos lejos de lograr que los ordenadores lleguen a entender realmente el lenguaje natural. Después de todo, el lenguaje es una actividad intrínsecamente humana que distingue nuestra inteligencia. Se necesita una combinación de abstracción y asociación, interacción con el mundo físico que nos rodea y, quizá, un poco de ingenio humano, algo que tenemos en abundancia, pero de lo que carece la IA.

En la búsqueda de máquinas verdaderamente inteligentes, es difícil imaginar un sistema complejo de IA que no se base en el lenguaje. Pero, a pesar de lo que algunas empresas y titulares quieran hacerte creer, esto no es algo que vaya a suceder a corto plazo.

Fuentes:

Herbelot, A. Distributional semantics: a light introduction. https://aurelieherbelot.net/research/distributional-semantics-intro/.

McCormick, C. (19 de abril del 2016). Word2Vec Tutorial – The Skip-Gram Model. Extraído de http://www.mccormickml.com.

Mikolov, T. et al. Efficient Estimation of Word Representations in Vector Space. 2013. https://arxiv.org/pdf/1301.3781.pdf. Mikolov, T. et al. Distributed Representations of Words and Phrases and their Compositionality. 2013. https://arxiv.org/pdf/1301.3781.pdf..

 

ArtboardFacebook iconInstagram iconLinkedIn iconUnbabel BlogTwitter iconYouTube icon