GPT-3 y modelos de lenguaje: el tamaño sí importa

Original article was published by Diego Campos Sobrino on Deep Learning on Medium


GPT-3 y modelos de lenguaje: el tamaño sí importa

En los últimos meses, la comunidad del Procesamiento de Lenguaje Natural (NLP) en internet ha tenido como principal tema de interés la publicación de GPT-3, un modelo neural de lenguaje desarrollado por OpenAI y recientemente licenciado de manera “exclusiva” a Microsoft.

El modelo GPT-3 está basado en este artículo científico publicado el pasado mayo, pero lo interesante es que ahora OpenAI ha puesto disponible una API en forma de beta privada, de la cual existe una lista de espera para tener acceso. En redes sociales y sitios de internet se pueden observar algunos ejemplos de lo que GPT-3 es capaz de hacer.

La característica más sobresaliente de GPT-3 además de su desempeño, sobre el cual hablaremos más adelante, es su tamaño, puesto que su arquitectura involucra el aprendizaje de un total de 175 billones de parámetros. Este no es el primer esfuerzo monumental de entrenamiento de modelos de lenguaje realizado por OpenAI; el antecesor de GPT-3, cuyo nombre como es de esperarse, es GPT-2 y tiene la no despreciable cantidad de 1.5 billones de parámetros, lo cual de por si ya es mucho, pero que sin embargo se ve empequeñecido por este nuevo modelo.

Otros grupos de investigación también han desarrollado modelos tipo mamut. Por ejemplo, Microsoft reportó hace poco un modelo con 17 billones de parámetros, por lo que ésta parece ser la tendencia en modelos neurales de lenguaje: entrenar arquitecturas gigantescas con corpus de texto giganormes.

En este caso GPT-3 fue entrenado con el dataset “Common Crawl”, que es un corpus que contiene alrededor de un trillón de palabras de textos extraídos de la Web y ocupa un espacio de 45 TB de texto comprimido, el cual se redujo a 570 GB una vez filtrado y preprocesado.

Pero antes de hablar de las capacidades de GPT-3, es interesante primero conocer el concepto de modelo de lenguaje y cuál es su utilidad para tareas de procesamiento del lenguaje natural.

Modelos de lenguaje probabilísticos

Un modelo de lenguaje puede verse como una distribución de probabilidad para secuencias de tokens, en la cual cada token puede representar una palabra, caracter, frase o segmentos de palabras combinadas de alguna forma. Para efectos prácticos conviene pensar en un token como una palabra, que además es la forma más generalizada de su uso.

Tradicionalmente los modelos de lenguaje más utilizados han sido los modelos de n-gramas, en donde cada n-grama es una secuencia de tokens de tamaño n. Por ejemplo, en un modelo de unigrama cada palabra es su propio unigrama, entonces una frase cualquiera como “esta frase es un ejemplo” se descompone en los 5 unigramas “esta”, “frase”, “es”, “un”, “ejemplo”.

Si descomponemos la misma frase en bigramas, estos quedarían de la siguiente forma: “esta frase”, “frase es”, “es un”, “un ejemplo”, y así para cantidades de n más grandes (trigramas, cuatrigramas, etc.).

Pensando en n-gramas, el modelo consiste en establecer empíricamente, con base en conteos realizados a partir de un corpus de texto las probabilidades de ocurrencia de los n-gramas. El modelo entonces trata de estimar la probabilidad de cierta secuencia de palabras a partir de las probabilidades observadas de los n-gramas presentes en la secuencia mediante la siguiente ecuación:

Donde las wᵢ son las m palabras que forman parte de la secuencia en ese orden.

La ecuación nos dice que la probabilidad de observar cierta secuencia de m palabras es el producto de las probabilidades condicionales de aparación de cada i-ésima palabra dada la subsecuencia de palabras que le preceden. El modelo de
n-gramas aproxima esta probabilidad con el supuesto de que la probabilidad de aparición de la i-ésima palabra solo depende de las n-1 palabras previas, sin importar las palabras que aparecieron antes.

Usando nuestra frase de ejemplo, el cálculo de la probabilidad para bigramas sería como sigue:

En general con los modelos de lenguaje podemos calcular la probabilidad de una oración o cualquier otra secuencia de tokens, dada la distribución de probabilidad de las palabras. También nos permiten predecir cuál es la siguiente palabra en un texto incompleto y es posible a partir de esa predicción, incluso generar texto de manera aleatoria pero con cierto sentido, ya que las secuencias generadas conservan la estructura general del lenguaje con el cual se generó el modelo.

Hay muchas otras consideraciones al trabajar con este tipo de modelos, que por brevedad aquí no se describirán a detalle, como qué hacer con las palabras fuera de vocabulario, es decir, palabras que no forman parte del corpus de entrenamiento del modelo; la inclusión de símbolos especiales para marcar el inicio y fin de una sentencia; y el tratamiento de los signos de puntuación, por ejemplo.

Además hay otros modelos de lenguaje que incorporan bidireccionalidad o modelan de forma exponencial la relación entre una palabra y las que están a su alrededor, pero de mayor interés son los modelos neurales, que han cobrado auge en los últimos tiempos y de los cuales GPT-3 (recuerdan que este artículo es sobre GPT-3), es su exponente más espectacular.

Modelos de lenguaje neurales

Las redes neuronales para modelos de lenguaje se empezaron a experimentar a principios de la década de los 2000, sin embargo no fue sino hasta alrededor de 2010 que las redes neuronales recurrentes (RNN) hacen su aparición y empiezan a popularizarse, al tomar en cuenta la información contextual en secuencias de palabras.

Los modelos basados en embeddings generados por algoritmos como Word2Vec, GloVe y otros, fueron apareciendo. Más adelante, surge el universo muppet compuesto por ELMo, Ernie, BERT y sus derivados BioBERT, RoBERTa y otros basados en la tecnología de Transformers, los cuales usan un esquema de codificador/decodificador pero con un enfoque diferente a los algoritmos recurrentes tradicionales (GRU, LSTM, etc.) al incorporar mecanismos de atención. BERT en particular, permite obtener diferentes representaciones para cada palabra dependiendo del contexto en el que se encuentra.

GPT-3

Toda esta historia nos lleva al presente y a GPT-3 (Generative Pretrained Transformer 3), que en el nombre lleva la penitencia, puesto que usa aprendizaje profundo basado en Transformers para producir textos casi como los que generaría un humano. Esta capacidad predictiva, combinada con la habilidad de aprender de uno o cero ejemplos (zero and one-shot learning) son elementos que abonan al revuelo generado por GPT-3.

Pero ¿qué es lo que puede hacer GPT-3? Al parecer es capaz de escribir poesía, artículos, memorandos, recetas de cocina, bromas y otro tipo de textos; responder preguntas e interactuar conversacionalmente; además puede generar código de programación compilable (aunque no necesariamente útil) e incluso convertir instrucciones de texto a comandos de computadora; y todo supuestamente con unos pocos ejemplos proporcionados por una persona.

¿Cómo funciona? Desafortunadamente para probarlo uno mismo es necesario llenar un formulario para solicitar acceso a la API en versión Beta y esperar la respuesta, pero mencionaremos aquí algunos ejemplos interesantes.

Por default, GPT-3 es capaz de escribir texto con la coherencia suficiente para pasar como el resultado de lo que escribiría un humano, por ejemplo escribiendo únicamente el título y la primera palabra, entonces es capaz de generar contenido sobre un tema en particular con sorprendentes resultados.

También es capaz de generar ideas para nuevos productos a partir de una lista de puntos y producir canciones. Para otro tipo de tareas es necesario mostrarle algunos ejemplos y GPT-3 puede producir resultados similares. Increíblemente puede generar código a partir de la descripción de un diseño, o responder preguntas, aunque a veces muestra sus carencias conjuntamente con sus fortalezas.

¿Y cuáles son estas carencias? Pues que en esencia GPT-3 es una máquina de generar lenguaje pero no es capaz de conceptualizar ideas, razonar o comprender los matices en una conversación, como en general los humanos pueden hacer.

El poder de GPT-3 se debe principalmente a su gran tamaño, lo cual le permite ser entrenado con grandes cantidades de datos, incluso para resolver tareas a las que pocas veces o nunca se ha enfrentado, es decir, sin necesidad de ser tuneado para esa tarea en particular.

Es como aprenderse Wikipedia de memoria y recitar como perico su contenido pero sin realmente entenderlo, sin embargo algunos de sus resultados son sorpendentes y aunque aún está por verse el impacto que este modelo pueda tener en la industria, existe una latente posibilidad de ser un verdadero agente de cambio en el procesamiento de lenguaje.

Conclusiones

Parece ser que GPT-3 está marcando una tendencia en esta área de investigación en favor de los modelos gigantescos entrenados con enormes cantidades de datos. Esto se la pone difícil a aquellos que no cuentan con los recursos en poder de procesamiento y cantidad de datos suficientes para experimentar con este tipo de modelos.

Será interesante ver las implicaciones futuras que estas capacidades de procesamiento de lenguaje natural tendrán y si se aproximarán lo suficiente para ser equiparadas con las de las personas.