Introducción a GPT-3

Qué es el Procesamiento de Lenguaje Natural y GPT-3

¡Primera entrada!, toca explicar qué hago en un portal en el que se publica en inglés escribiendo en español sobre un modelo que tiene el rendimiento óptimo en inglés. ¡Soy una rebelde!

Una de mis pasiones es el lenguaje y, aunque no hice la carrera de filología, algún que otro filólogo me ha dicho que lo mío es vocacional (que tampoco significa gran cosa). Me gusta escribir y lo hago desde la adolescencia; además, leo todo lo que cae en mis manos sobre sintaxis, morfología, semántica, la evolución, etc. De profesión, mi perfil sénior me define como correctora y editora de textos en castellano; aunque parte de mi formación y experiencia laboral también se ha centrado en la gestión y tratamiento de datos e información (lo que incluye Big Data). Otra de mis pasiones son las nuevas tecnologías, si están aplicadas al lenguaje, mejor. Me interesa aprender e investigar como las máquinas hablan y hablarán; aunque llevo poco tiempo profundizando formalmente en Ciencia de Datos, Inteligencia Artificial y Procesamiento de Lenguaje Natural.

También llevo desde hace años un taller de escritura creativa que desarrolla la capacidad de crear historias automáticas: con una serie de elementos dados y en un tiempo delimitado, los asistentes deben generar un texto de forma que nunca pierda la coherencia, sin pensar… la estructura debe llegar sola. Convertir a un humano en un escritor automático; algo parecido a lo que hace GPT-3.

Por eso me maravilló el modelo, también porque me gusta la idea de tener un escritor automático como potencial apoyo; así que, cuando me llegó el correo de acceso a la beta, me animé a hacer aquello para lo que la había pedido: averiguar qué tal se le da el español, ¿hasta dónde es capaz de comprender?

Tengo previsto escribir y analizar el comportamiento de este transformador (transformer) a lo largo de algunas entradas, explicando también parte de la documentación; también quiero plantear algunos usos del modelo con la biblioteca para Python. Por supuesto, todo en español (que en inglés ya escriben muchos).

Lo sé. No has abierto esta entrada para conocerme a mí, sino a él; pero el contexto importa. Ahora sí, ¡vamos allá!

Procesamiento de Lenguaje Natural

Imaginemos que acabas de aterrizar en el mundo del Procesamiento de Lenguaje Natural (PLN —no confundir con el PNL, programación neurolingüística—, o NLP, de Natural Language Processing) y no tienes ni idea de qué es.

A grandes rasgos, el PLN pretende crear un canal de comunicación entre máquinas y personas, desarrollando herramientas basadas en tecnologías de Inteligencia Artificial que permitan sintetizar el lenguaje humano para que una máquina sea capaz de interpretarlo, trabajar con él y devolver una respuesta correcta. Podemos entender correcta como aquella respuesta que se asemeje a lo que un humano respondería en el mismo contexto.

Para poder desarrollar esta tecnología que, presumiblemente, sería una herramienta capaz de disminuir el grado de complejidad a la hora de aprender a utilizar una máquina y simplificaría nuestra forma de interactuar con ella; necesitamos entender que la comunicación debe aproximarse a los usos que hacemos y los canales que utilizamos naturalmente.

Los seres humanos hablan y escuchan, leen y escriben; para poder adecuarse a una comunicación que tiende a la comodidad e integración de los patrones propios humanos en los ordenadores, necesitamos generar un lenguaje que permita a la máquina interpretar y realizar los procesos necesarios que le lleven a dar una respuesta óptima.

Por ejemplo, si un humano pregunta a un dispositivo sobre el tiempo que va a hacer en su municipio y lo hace con una entrada de voz; lo ideal sería que el dispositivo capte las ondas de audio, extrajese la estructura fonética y la procesase adecuadamente para, luego, buscar esa información y devolver una respuesta, preferiblemente con una voz sintetizada. De la misma manera, si alguien escribe la pregunta, la debería responder utilizando el mismo canal: el texto escrito. Este problema de los canales ya parece resuelto pero dejaré aquí un detalle: cuando estamos en una herramienta de mensajería manteniendo una conversación con texto escrito y llega un momento en el que necesitamos expresar una idea compleja o hacer una exposición larga, ¿cuántos pasamos a grabar notas de audio? ¿Sería un comportamiento que debería imitar una IA?

Algo tan básico como son las interacciones humanas requiere de muchas capas de complejidad a la hora del desarrollo de estas tecnologías; actualmente, estos desarrollos están disponibles en nuestros teléfonos móviles. Aún así, todavía requerimos de un aprendizaje previo para adaptarnos a cómo debemos comunicarnos con las máquinas. Un avance interesante sería que las máquinas sean las que se adapten y aprendan a actuar como nosotros. Tiempo al tiempo.

Además, hay que dividir los procesos de interacción con el lenguaje que realizamos para poder enfrentarnos correctamente a los problemas de desarrollo en PLN; llegamos a las ramas que desarrollan y permiten trabajar a las máquinas con textos:

  1. la comprensión del mensaje que integra la solicitud, de lo que se encarga la rama de Comprensión de Lenguaje Natural (CLN; Natural Language Understanding, NLU), y
  2. la generación de una respuesta acorde al mensaje recibido, de la que se encarga la rama de Generación de Lenguaje Natural (GLN; Natural Language Generation, NLG).

Este campo lleva desarrollando su actividad desde hace más de 70 años; sobre todo, con el objetivo de desarrollar herramientas de traducción automática. Actualmente, aunque parece que la mayoría de los traductores automáticos comienzan a ser eficientes, siguen necesitando de revisores que confirmen las traducciones porque el nivel de complejidad de cada lengua requiere de una contextualización del mensaje y del análisis de la ambigüedad que estos puedan contener, siendo la traducción un proceso que requiere de cierto nivel de conocimiento cultural, del uso del lenguaje (refranes, frases hechas, figuras retóricas varias, actualidad, etc.) y matices de intencionalidad que un traductor automático puede pasar por alto.

En este sentido, los traductores automáticos más eficientes podrían ser una buena herramienta de apoyo para los traductores humanos, que podrían tener más tiempo para resolver aquellos detalles de la lengua que, ya de por sí, les dan dolores de cabeza. Las herramientas basadas en Inteligencia Artificial no buscan destruir el trabajo del ser humano ni su bienestar, sino proporcionarles herramientas que faciliten sus labores.

Desarrollar una herramienta que fuera eficaz en la comprensión y generación de textos ha sido una de las más complicadas; no hay que olvidar que estamos tratando de llevar el lenguaje humano al lenguaje de las máquinas (binario, matemático).

A mediados de 2017, Google presentó un artículo titulado Attention is All you Need, donde expusieron la estructura de los transformadores y los métodos de atención. Poco después, ya en 2018, OpenAI presentó en otro artículo (Improving Language Understanding by Generative Pre-Training) un primer paso hacia lo que sería luego GPT-3, que presentó en julio de 2020 con el artículo Language Models are Few-Shot Learners.

¿Qué es GPT-3?

Los avances en el hardware y en el campo del Aprendizaje Profundo han permitido que las investigaciones en el Procesamiento de Lenguaje Natural a través de estas herramientas den un salto cuantitativo, lo que permite que haya noticias regularmente sobre avances y descubrimientos. Desde el uso de diferentes formas de word embeeding (representación de palabras como vectores numéricos) hasta el uso de redes recurrentes o los transformadores; GPT-3 es un modelo que utiliza a estos últimos.

Ejemplo de un texto generado por GPT-3 directamente en castellano donde el modelo crea un diálogo entre personajes respondiendo a la entrada dada por el usuario: “—¿Qué eres tú, GPT-3? —le preguntó.”
Ejemplo de un texto generado por GPT-3 directamente en castellano.
GPT-3 recibe el nombre de Generative Pre-trained Transformer (Transformador Generativo Preentrenado) y es un modelo de lenguaje natural autorregresivo generalista que permite, según los elementos anteriores, predecir cuál es la siguiente palabra que debe generar; además, al ser estocástico, aunque se haga dos veces la misma petición, es poco probable que la respuesta que cree sea la misma.

GPT-3 puede realizar el trabajo en diferentes idiomas, pero presenta una mejor eficiencia en inglés, ya que el corpus con el que se ha entrenado está mayormente en esta lengua, siendo residual el resto (4 % del total).

Una de las curiosidades características es que, a la hora de entrenar un modelo, se ha desarrollado buscando esa solución específicamente; los modelos GPT se han entrenado para un propósito simple (predicción del siguiente elemento) y es el propio modelo el que genera estrategias que le permiten realizar esta función de una mejor manera (lo que se llama zero shot learning). Gracias a este tipo de entrenamiento, GPT-3 puede realizar tareas que requieren cierta complejidad, sin que se le haya entrenado para ello específicamente, como:

  • Hacer traducciones entre diferentes lenguas sin haber sido entrenado por pares ni con un conjunto etiquetado de idiomas.
  • Imitar y adaptar el estilo de la respuesta a un autor específico o a un objeto (siempre que lo conozca, que esta información haya formado parte del conjunto de entrenamiento).
  • Actuar como un asistente virtual (chatbot) y generar conversaciones o responder preguntas.
  • Hacer clasificaciones básicas de texto, resúmenes o desarrollar historias cortas con cierto grado de complejidad sin perder el contexto.

GPT-3 no está solo. Uno de los problemas y principales quejas que ha generado, es que no hayan permitido que el modelo esté abiertamente disponible; tal como había ocurrido con GPT-2 (también de OpenAI). Esto ha llevado a comunidades como Hugging Face EleutherAI a desarrollar sus propios modelos tratando de llegar a crear un gemelo del mismo tamaño y acceso libre de GPT-3; al menos, esa es la aspiración que tiene EleutherAI con el modelo GPT-NeoX (actualmente está en fase de entrenamiento). Esta comunidad, además, ya tiene otros modelos basados en la misma tecnología que pueden utilizarse, como GPT-Neo y GPT-J-6B; aunque su interfaz no sea tan amigable como la que OpenAI le ha preparado a GPT-3, su potencial está en convertirse en una herramienta de libre acceso para cualquier usuario interesado en desarrollar con estas tecnologías.

Otras fuentes: Documentación de la beta de OpenAI (ENG), GPT (OpenAI) en Wikipedia (ENG), GPT-3 en Wikipedia (ENG).

Si quieres ampliar la información sobre cómo usar GPT-3 con Python, aparte de consultar otras publicaciones, tenéis en mi GitHub disponible unos cuadernos con una Introducción a GPT-3 y ejemplos de uso de la API completamente en castellano. Si necesitáis profundizar aún más, la documentación de la beta de OpenAI (ENG) está muy cuidada y en constante actualización.

Contenido originalmente publicado en Medium el 21 de julio de 2021 (https://medium.com/@erebyel/intro-gpt3-en-esp-384e5f440244)