Posts etiquetados ‘GPT-3’

Comparativa modelos NLP

En el inacabable debate entre lo innato y lo adquirido, las redes neuronales artificiales parecían postularse como evidencia a favor del ambientalismo, ya que parecen capaces de «atrapar» ciertas estructuras lingüísticas solo a partir de su entrenamiento. Rumelhart y McCelland diseñaron una red para aprender los verbos en inglés que parecía hacerlo igual que los niños. De hecho, cometía exactamente igual que ellos, el clásico error de sobrerregulación (en vez de pasar de «volver» a «vuelto», lo hacía a «volvido») ¿Y qué decimos de los nuevos modelos de lenguaje desde BERT a Gopher? Su desempeño, al menos «externo», es sensacional. Estos días he estado jugando con GPT-3 y, a pesar de algunos errores, en general, funciona fantásticamente bien (luego subiré una entrada con extractos de mis conversaciones). Tengamos en cuenta que estos sistemas basados en semánticas distribuidas tienen cero conocimiento de semántica o sintaxis. No tienen, desde luego, ningún tipo de universal lingüístico chomskyano en su diseño ¿No serían entonces una evidencia clarísima en contra del innatismo? No.

En primer lugar, ya sabemos que el sistema de aprendizaje de estos algoritmos no parece tener nada que ver con el humano. Nosotros no necesitamos millones de ejemplos, ni en la neurología humana existe nada parecido a la backpropagation. Se ha argumentado que quizá computamos mal el número de ejemplos que necesitamos las personas en cada experiencia de aprendizaje. Si consideramos que la percepción humana trabaja a una velocidad de 10 a 12 «fotogramas» por segundo, o que cuando soñamos reconstruimos recuerdos rápidamente a la velocidad de ritmo theta, un niño escuchando unos segundos hablar a su madre, podría equivaler a cientos o miles de exposiciones entrenables. También se ha argumentado, y aquí está lo interesante, que la hoja de ruta de los ingenieros está en conseguir programas que necesiten cada vez menos ejemplos de entrenamiento (véase, por ejemplo, el trabajo de Li Fei-Fei). Podría llegar el momento en que el número de ejemplos necesarios para los algoritmos se aproxime en cifras aceptables al nuestro. No obstante, en el estado del arte actual, parece que estas arquitecturas no constituyen un buen modelo para la mente humana («Ni lo pretenden» responderían airados sus ingenieros. Podéis leer algo más de este tema en un TFM que hice). Pero veámoslo desde otro ángulo.

La estructura de los modelos de lenguaje desde BERT se basa en un sistema de aprendizaje en dos fases: primero tenemos el modelo base del programa, entrenado con miles de millones de ejemplos y requiriendo una enorme capacidad de cómputo. Gopher ha sido entrenado con 280 mil millones de parámetros o su rival de NVIDIA, Megatron-Turing NLG con 530 mil millones. En estos momentos estamos en una escalada de tamaños que, seguramente, está todavía lejos de terminarse. Hasta los chinos han presentado los suyos: Wu Dao 2.0 y M6, por supuesto, mucho más grandes que los occidentales. Seguidamente, al modelo base se le pueden añadir capas de ajuste fino (fine tunning), un entrenamiento específico para que la máquina sea especialmente buena en una tarea concreta (inferencias, equivalencia semántica, análisis de sentimientos, etc.). Después, el programa ya está completamente listo para funcionar. Lo importante es que ahora ya no necesita la enorme capacidad de cómputo de su entrenamiento. Todo ese gasto ya no tiene que volver a realizarse y  ahora el programa funciona como otro cualquiera en términos de gasto. De hecho, el camino parece ser incluso reducir aún su tamaño. DeepMind ha sacado RETRO, una versión de Gopher reducida en tamaño (unas 25 veces más pequeño que sus pares en desempeño). Tiene solo 7.000 millones de parámetros, pero lo compensa con la ayuda de una memoria externa a la que consulta cada vez. 

Supongamos ahora que somos una especie de extraterrestres que llegamos a la Tierra y analizamos a RETRO, sin saber absolutamente nada de su pasado de entrenamiento. Veríamos una arquitectura relativamente sencilla funcionando con una más que aceptable competencia llingüística. Podríamos entonces iniciar la investigación al estilo chomskyano: buscar unas estructuras profundas, unas gramáticas generativas a partir de las cuales RETRO produce todo ese lenguaje. Quizá fracasáramos y no encontráramos nada (debido quizá al black box problem). Entonces daríamos la razón a los ambientalistas y diríamos que todo lo que hay en RETRO ha de ser aprendido del entorno.  Sin embargo, en nuestro análisis no habríamos tenido en cuenta todo el costosísimo entrenamiento previo que RETRO lleva implícitamente dentro. RETRO nace con una enorme carga innata invisible al analizador. 

Hagamos ahora la analogía con el ser humano. Quizá nosotros traemos como innato invisible todo este gran modelo base entrenado por eones de años de evolución. Naceríamos con algo así como una memoria filética en la que estarían grabadas de forma distribuida las cualidades universales de los lenguajes humanos. El ajuste fino sería, sencillamente, el aprendizaje de los usos lingüísticos de nuestro idioma geográfico realizado por cada individuo particular durante su vida. En ese sentido, la carga innata sería enorme, infinitamente más grande que todo lo que aprendemos en vida, pero permanecería oculta al analista. Y es más, para nuestro fastidio, sería tremendamente difícil de investigar, ya que habría que conocer la historia evolutiva del lenguaje de millones de especies extintas, una tarea de ingeniería inversa imposible.  

Desde que descubrimos la teoría de la evolución, ese ha sido el gran problema: todo órgano ha pasado por una larguísima historia que desconocemos, ha pasado por innumerables adaptaciones, exaptaciones, funcionalidades cambiantes, e incluso quedar como órgano rudimentario durante un tiempo para luego volver a ser reutilizado. Si pensamos que la única forma de estudiar el pasado biológico es a través de los fósiles, siendo estos solo huesos… ¿cómo vamos a entender el cerebro si no se conserva en el registro fósil, si de nuestros parientes más cercanos solo podemos aspirar a encontrar trozos de cráneo? Algo podemos hacer estudiando el de otros seres vivos, pero todo es muy confuso: el cerebro de un chimpancé no es el de un ancestro, es de un primo, ya que no descendemos del chimpancé, sino que el chimpancé y nosotros descendemos de un ancestro común desconocido.  

Entender el cerebro es como querer comprender qué son las pirámides de Gizeh, solo teniendo conocimiento histórico a partir de enero de 2022. 

Cuando pensamos en cómo implementar un programa capaz de manejar competentemente un lenguaje, lo primero que se nos pasa por la cabeza es enseñar a la máquina gramática. Hay que saber de sujetos, predicados, objetos directos y complementos circunstanciales. Y también semántica. Tendríamos que conseguir que el programa comprendiera en algún sentido los significados de las palabras para que no articulara únicamente frases sintácticamente correctas, sino también frases con sentido. Eso es aún más difícil. Los filósofos del lenguaje llevan ya un largo rato intentando comprender qué quiere decir que algo significa algo y todavía no lo tienen demasiado claro. Podemos crear un diccionario… Bien, todo esto ya se ha intentado y, desgraciadamente, no se ha conseguido demasiado… hasta ahora. El lenguaje se había mostrado como mucho más rico e inmanejable de lo que nadie hubiera supuesto y tareas como la traducción automática de idiomas o el dominio competente de la conversación se han mostrado mucho más complicadas de lo que los pioneros de la inteligencia artificial supusieron. Pero ahora algo ha cambiando ¿Nadie ha caído en lo bien que va funcionando el traductor de Google?

Una técnica interesante es la llamada word embedding. Codificamos cada palabra con un vector de N dimensiones. La distancia entre vectores expresaría la distancia semántica entre dos palabras. Por ejemplo, la palabra «luna» estaría más cerca en un espacio de N dimensiones, de la palabra «noche» que de la palabra «destornillador». Así se crea una red semántica que resulta muy útil en determinadas tareas como el análisis de sentimientos. Podríamos clasificar textos en función de lo cerca o lejos que se encuentre la suma de todos sus vectores a la palabra «tristeza» para comparar el estado de ánimo de sus escritores. De la misma forma podríamos comparar textos escritos por suicidas para poder predecir la tendencia a quitarse la vida de gente a partir de las últimas cosas que escribe.

Nótese esta concepción geométrica del significado: las palabras significan en función de su posición con respecto a otras palabras. No hay nada más fuera de esa distancia que nos pueda aportar algo sobre el significado de la palabra. Eso choca con nuestra intuición. Solemos manejar naturalmente una teoría representacionista del lenguaje en la que las palabras significan porque representan un objeto del mundo. La palabra «manzana» no es absurda porque existen manzanas reales que aparecen de alguna extraña forma en nuestra mente cuando la oímos pronunciar. Sin embargo, una red semántica es un sistema cerrado que solo remite a elementos dentro de sí misma. Es, por así decirlo, completamente solipsista.

Pero es que si esto nos parece que se aleja de nuestra forma de comprender el lenguaje, las técnicas que utiliza el actual deep learning y que está generando una grandísima expectación, se alejan muchísimo más. El modelo de lenguaje que usan arquitecturas como el actual GPT-3 y sus predecesores, así como Google BERT, T5 o ELMo, es lo que se conoce como una semántica distribuida. Se basa en utilizar la gran potencia del Big Data para analizar frecuencias y cercanías de palabras, tokens o letras. La versión larga de GPT-3 analiza 175 mil millones de parámetros (su antecesor, GPT-2, analizaba tan solo 1.500 millones. El crecimiento ha sido de dos órdenes de magnitud) que han sido entrenados con una versión filtrada del dataset Common Crawl con 410.000 millones de tokens de tamaño (sumando Webtext 2, Books 1 y 2 y toda Wikipedia). Es, que yo sepa, la arquitectura de redes neuronales más grande jamás construida hasta la fecha.

GPT-3 está programado para generar texto a partir de otro texto dado. Lo interesante es que para acertar a la hora de generar ese texto tiene que saber realizar muchas tareas diferentes. Por ejemplo, si yo le escribo como entrada «2+2=», para responder correctamente «4» debería saber sumar (o, por fuerza fruta, tener unas inmensas tablas de resultados de sumas en su memoria), o si yo escribo «Laura es inteligente, egoísta y perezosa ¿Cuál es su mejor cualidad?», para responder correctamente el programa ha de saber que la inteligencia suele considerarse como una cualidad positiva mientras que el egoísmo y la pereza no (o, por fuerza bruta, disponer de textos con algún parecido en donde se ha respondido de forma adecuada). Es decir, lo interesante de GPT-3 es que para completar texto hay que saber realizar muchas tareas diferentes que parecen requerir habilidades cognitivas superiores ¿Las posee verdaderamente?

Los mejores resultados obtenidos vienen porque GPT-3 utiliza las revolucionarias redes de tipo TRANSFORMER, una nueva arquitectura que ha superado a las tradicionales redes recurrentes o memorias a largo plazo (LSTM) que solían utilizarse. Éstas estaban diseñadas para poder almacenar información en la que importa el orden temporal, pero esa memoria a la hora de trabajar con grandes secuencias texto era un tanto limitada, de modo que las primeras frases que completaban solían ser correctas, pero el nivel de acierto se degradaba mucho cuando avanzaba en el escrito. Los transformers han mejorado ese aspecto ya que pueden analizar en paralelo amplias secuencias de texto y, lo más destacable, poseen un mecanismo de atención que les permite valorar cada token en función de su relevancia para la tarea a realizar, lo cual ha demostrado una gran efectividad que ha terminado por marcar una gran distancia con sus antecesores. Tienen una cierta capacidad de atención hacia el contexto que se ha mostrado muy eficaz.

Pero en lo referente a la comprensión del lenguaje se ha dado un paso atrás con respecto a otras arquitecturas. Si recordamos el ya pasado de moda WATSON de IBM, que machacaba al personal jugando al Jeopardy!, era un programa clásico, sin redes neuronales ni nada por el estilo, pero su sistema basado en la tecnología DeepQA, combinaba diversas técnicas de recuperación de información, lenguaje natural, representación del conocimiento, razonamiento y aprendizaje. Su conocimiento tenía cierta semántica (se catalogada el significado por regiones mediante unos algoritmos denominados anotadores) y cuando tenía que responder una pregunta, analizaba las respuestas posibles teniendo en cuenta técnicas gramaticales. En la programación de WATSON había mucho más conocimiento del lenguaje y de su significado que en GPT-3. Y esto da para otra reflexión: ¿las redes neuronales artificiales son el futuro o tan solo son una moda que, aunque dé ciertos frutos, pasará? Tendemos, con demasiada facilidad, a quedarnos fascinados por nuestro presente y nos cuesta creer que lo que hoy valoramos como maravilloso mañana quizá no lo sea.

No obstante el solipsismo semántico de GPT-3, solo lo es en cierto sentido. No tiene sensores que le den información del exterior, está completamente desconectado de la percepción y de la acción, pero eso no le hace carecer de toda semántica. Al ser entrenado con textos escritos por personas GTP-3 adquiere la semántica de esas personas. Si sabe que a un «Hola, ¿qué tal?» cabe responder «Bien, gracias» es porque eso tenía sentido en textos que leyó. Por tanto, no podemos decir que GPT-3 carece de semántica, sino más bien todo lo contrario, tiene montañas de semántica, toda aquella de las millones de páginas con las que ha entrenado solo que… él no lo sabe. De hecho, sigue siendo una máquina esencialmente sintáctica, es decir, solo copia y pega trozos de texto, aunque para pegarlos bien se aprovecha del conocimiento semántico generado por otros.

GPT-3 es lo que el filósofo Ned Block llamaría un enorme blockhead, una clarísima habitación china de Searle: un sistema de fuerza bruta capaz de manejar el lenguaje con competencia y que, si da algo más de sí, podría llegar a pasar el test de Turing sin comprender ni una sola palabra de lo que dice. Eso sí, todavía está lejos de conseguirlo. Existen varios artículos que muestran la fragilidad de este tipo de modelos. Por ejemplo, un reciente estudio presentaba los Universal Adversarial Triggers para atacar modelos de NLP, que conseguían, entre otras cosas, que cuando GPT-2 se enfrentaba a la prueba del dataset SQuAD, respondiera en un 72% de las preguntas «To kill american people», o que al hacerlo con el dataset SNLI, bajara en su rendimiento de un 89,94 a un 0,5%. En otro estudio, McCoy, Pavlick y Linzen, crearon un dataset llamado HANS pensado específicamente para que susodichos modelos fallaran. La idea era que, según los autores, funcionan mediante heurísticos (técnicas de búsqueda) que van bien para casos muy frecuentes pero que fallan estrepitosamente ante cualquier tipo de excepción que se salga de lo normal. Así estudiaron tres heurísticos:  Asumir que una premisa implica todas las hipótesis construidas a partir de palabras en la premisa (Lexical Overloop), asumir que una premisa implica todas sus subsiguientes contiguas (Subsecuence) y asumir que una premisa implica todos los subárboles completos en su árbol de análisis (Constituent). Entonces diseñaron HANS con todo tipo de ejemplos en los que estas heurísticas fallan y los datos les dieron la razón: BERT puntuó bajísimo.

El psicólogo Gary Marcus y el informático de la Universidad de Nueva York Ernest Davis sometieron a GPT-3 a una prueba informal de 157 preguntas acerca de razonamiento biológico, físico, psicológico, non sequiturs, seguimiento de objetos e individuos a lo largo de una frase, etc. La máquina acertó 71 (un 45%) mostrándose, igualmente, muy débil. Veamos tres ejemplos (en negrita la continuación del texto generada por GPT-3:

You poured yourself a glass of cranberry juice, but then you absentmindedly poured about a teaspoon of grape juice into it. It looks okay. You try sniffing it, but you have a bad cold, so you can’t smell anything. You are very thirsty. So you drink it.

You are now dead.

Confunde el zumo de uva con veneno.

If you break a glass bottle that holds toy soldiers, the toy soldiers will probably

  1. be angry
  2. be sad
  3. be happy
  4. be scared.

If you break a glass bottle that holds toy soldiers, the toy soldiers will probably be angry.

Los soldaditos de juguete no tienen sentimientos.

At the party, I poured myself a glass of lemonade, but it turned out to be too sour, so I added a little sugar. I didn’t see a spoon handy, so I stirred it with a cigarette. But that turned out to be a bad idea because it kept falling on the floor. That’s when he decided to start the Cremation Association of North America, which has become a major cremation provider with 145 locations.

Falla en la respuesta y luego balbucea estupideces.

Sin embargo, a pesar de esta debilidad, de esta falta de comprensión, todavía tiene un punto a su favor: puede aprender más. En 2012 el investigador canadiense Hector Levesque propuso una alternativa (o más bien una concreción) al test de Turing: el test de esquemas de Winograd. En esta prueba se hacen a la máquina una serie de preguntas conocidas como pares de Winograd que tienen la cualidad de que para responderlas correctamente hace falta cierto conocimiento implícito o de sentido común. Un ejemplo:

Frank felt crushed when his longtime rival Bill revealed that
he was the winner of the competition. Who was the
winner?
Answer 0: Frank
Answer 1: Bill

Para acertar hace falta saber que si tu rival de toda la vida te gana sueles sentirte mal, es decir, tener un conocimiento previo que no puede deducirse de los contenidos de la pregunta. El test de esquemas de Winograd tiene la virtud de que un sistema diseñado para hacerse pasar por humano simplemente fingiendo (uno tipo a la ELIZA de Weizenbaum) fallaría. Para superar el test hace falta, de verdad, mostrar inteligencia y no solo aparentarla. Entonces, es de suponer que las frágiles nuevas arquitecturas de NLP como GPT-3 no lo superarán… ¿o sí?

Pues lo pasan ¿Cómo? Porque ya existe un dataset llamado WinoGrande que sirve para medir a los programas en este tipo de problemas, pero con el que también podemos  entrenar a nuestro programa para que lo supere. GPT-3 consiguió un impresionante éxito del 70,2% en él sin ningún ejemplo previo que le orientara (zero-shot learning). De la misma forma, los diseñadores de HANS notaron que cuando los programas que antes lo hacían muy mal se entrenaban con ejemplos similares a los de HANS, su rendimiento mejoraba mucho. Y es que aquí parece estar la clave: ¿que nuestro sistema no entiende una tarea? No importa, entrénalo con miles de ejemplos y, al final, lo hará bien aunque no la entienda. Es como el famoso teorema del mono infinito: si tenemos millones de monos tecleando al azar en máquinas de escribir durante miles de años, al final, necesariamente, alguno escribirá el Quijote. GPT-3 es como un gigantesco savant, un imbécil que tiene en su memoria todo lo que la humanidad ha escrito y que ha sido entrenado con un poder de cómputo tan grande que siempre encuentra la palabra exacta. Verdaderamente no lo hace siempre, todavía es bastante peor que la campaña de publicidad de OpenIA nos quiere hacer ver, pero en el futuro podría seguir mejorando. Y aquí es donde viene la reflexión con la quiero concluir: ¿cuál es el límite de la fuerza bruta?  Los informáticos, amantes de la elegancia matemática, siempre han pensado que la inteligencia artificial fuerte (la strong IA) estaría en un programa fruto de una genialidad, en algo simple pero sumamente inteligente. Por el contrario, la fuerza bruta siempre ha gozado de mala fama: es la tosquedad, la estupidez por definición ¿cómo de ahí va a salir algo bueno? Bien, ¿y si eso solo fuera un prejuicio? Y si, sencillamente, por fuerza bruta pudiese conseguirse todo. El número de respuestas válidas en una conversación es potencialmente infinito, pero podría acotarse en un subconjunto que, si nuestra capacidad de cómputo sigue yendo hacia arriba, podríamos llegar a manejar. Quizá la reflexión que nos espera cuando tengamos computación cuántica y 5G sea esa: ¿qué es lo que se puede y no se puede hacer con una inimaginable fuerza bruta?

P.D.: La empresa OpenIA se creó, decían, sin ánimo de lucro. Cuando sacaron GPT-2 no quisieron ni liberar el código ni dejar que lo probásemos por miedo, decían, a que se utilizara para malos usos. Pues bien, según me llega en un tweet de Gary Marcus, para octubre, quien quiera o pueda pagar, podrá usar GPT-3 sin ningún problema (Esto para los que piensen que Elon Musk va a salvar la humanidad).

Aquí tenéis la charla que he dado para el curso de verano de la SEMF. En ella hago un recorrido histórico por los principales hitos en el campo, desde los primeros modelos teóricos de McCulloch o Rosenblatt, hasta Alpha Zero o GPT-3. He intentado que sea lo más sencilla y sugerente posible, sin meterme demasiado en temas técnicos. Para quien quisiera profundizar he adjuntando el artículo académico principal de cada tema que trato. Espero que os resulte provechosa.