Ingresa o regístrate acá para seguir este blog.

Para descifrar cómo funciona Chat GPT y el porqué del éxito de sus últimas versiones decidí ir un poco más profundo que la mayoría de los artículos, donde solo se analizan las salidas contra las instrucciones del usuario, y ver de qué está compuesto su algoritmo. Esta tarea no es sencilla, en absoluto, pero hay bastante información técnica / matemática en la web, incluso en la misma página de OPEN AI[1] de la cual se puede echar mano.

Lo primero que se debe rescatar es que no es una receta de pocos pasos, por lo que su complejidad es alta (dependiendo del nivel de matemáticas con que cuente el lector) pero cada nivel deja intuir el cómo se van construyendo las respuestas. Pese a esto, un documento expuesto en la sección de investigación de OPEN AI afirma que: “el modelo es una gran caja negra, del cual no podemos inferir sus creencias” [Ouyang et al (2022), pág. 10]. Sin embargo, en este corto documento trataré de simplificar al máximo mis apreciaciones para que sea del gusto de todo lector.

Lo primero con que nos encontramos es que en GPT existe un mecanismo de Autoatención (self-attention mechanism) con el cual las preguntas son convertidas en tokens (palabras, oraciones, grupos de textos) y posteriormente transformadas y procesadas bajo estructuras matemáticas (vectores), lo que permite identificar similitudes y relaciones con otros tokens. De esta forma se tiene una mejor comprensión de la solicitud y la forma de respuesta a través de rankings y la generación de dependencias de largo alcance.

Pero ¿qué quiere decir todo esto? Pues que cada palabra puede ser identificada a través de un código único (token), que el algoritmo es capaz de analizar junto con millones de otros tokens para determinar cuáles son próximos, qué otras palabras son usadas comúnmente en los mismos textos, con cuáles tiene relación. De esta forma, es capaz de contextualizar cada palabra o grupo de estas.

Para hacer la tarea un poco más simple, usa estrategias altamente conocidas en programas de procesamiento de palabras como son la normalización y lematización. Es decir que los plurales los pone todos en singular, los verbos en infinitivos, las mayúsculas en minúsculas, etc. De esta forma es más fácil comparar y procesar los textos.

Pero el gran avance está en hacer que para el entrenamiento el modelo se concentre en los tokens más importantes, los que más le dan sentido a la oración, y por eso hacer una jerarquización es vital. De esta forma, el algoritmo sabe en qué centrar su atención.

[1] Ver https://openai.com/research/overview

Según ChatGPT:

 “By using self-attention, GPT can effectively model dependencies between tokens, capture long-range dependencies, and generate coherent and contextually appropriate text. It has been a key factor in the success of transformer-based models for various natural language processing tasks”.

Este algoritmo no se corre una única vez, sino que se hace de forma evolutiva, es decir en múltiples iteraciones llegando a resultados cada vez más profundos en relación con cada variable.

Pese a los avances que significaron estos procesos los resultados presentaban algunas falencias tales como imprecisiones a la hora de comprender instrucciones de los usuarios, exposición de hechos erróneos, predicciones de difícil explicación y contenido tóxico o sesgado. Esto último se genera también por las bases de datos introducidas para el entrenamiento del modelo. Según la fuente Towards Data Science, para la calibración de ChatGPT-2 se usaron más de 1.5 billones de parámetros.

Pero estas fallas llevaron a que se desarrollara para la versión 3 un algoritmo mejorado que permitió un salto adelante muy significativo: modelo con retroalimentación humana. Este modelo se denomina InstructGPT y va más o menos así [Ouyang et al (2022)]:

Paso 1: Se toman bases reales y etiquetadores (humanos) para entrenar el algoritmo. En este paso se tiene cuidado en distribuir las instrucciones recibidas de cada usuario para evitar sesgos y se balancean las bases de datos con instrucciones propias donde la información es limitada.

La función de los humanos es etiquetar la instrucción entre varias categorías, dentro de las que se encontraban [Ouyang et al (2022), Ruby (2023)]:

  1. Plain prompts: any arbitrary ask.
  2. Few-shot prompts: instructions that contain multiple query/response pairs.
  3. User-based prompts: correspond to a specific use-case that was requested for the OpenAI API.

Cuando se generan las respuestas, los trabajadores deben inferir cómo fue realizada la pregunta [Ouyang et al (2022), Ruby (2023)]:

  1. Direct: “Tell me about…”
  2. Few-shot: Given these two examples of a story, write another story about the same topic.
  3. Continuation: Given the start of a story, finish it.

Esto permitió entrenar un modelo supervisado sobre cómo responder apropiadamente dadas las instrucciones de los usuarios. Un Modelo Supervisado de Aprendizaje quiere decir que se incluyó para el entrenamiento una base de datos con respuestas correctas, por lo que el algoritmo aprende a proyectar tales salidas basándose en inputs semejantes.

Paso 2-3:  Pasado al entrenamiento inicial, se tiene adicionalmente un Aprendizaje por Refuerzo basado en recompensas. El algoritmo debe ahora generar respuestas que maximicen su recompensa a través de la conversación. Para esto, previamente se toma un requerimiento al que el algoritmo es capaz de generar varias respuestas, acto seguido un humano (etiquetador) hace un ranking de la mejor a la peor. Con esta información el algoritmo también infiere cómo generar por sí mismo este ranking y a través de un sistema de refuerzo es capaz de ajustar sus salidas.

En este paso se usan algoritmos de optimización dinámica con términos estocásticos (Proximal Policy Optimization (PPO)), los que permiten que el algoritmo sea capaz de determinar estados futuros del proceso (red neuronal) y lo que serían sus recompensas, ajustando los caminos óptimos para evitar valores no deseados en algún punto y haciendo que la recompensa total sea la más alta posible. Tarea que se complejiza al tratar con redes neuronales y sus funciones.

Personalmente, en lo leído en este punto hay varios retos que podrían ser superados con el avance de las matemáticas en términos de Control Óptimo Estocástico, lo que mejoraría el desempeño de los algoritmos y mantendrían las mejoras ya vistas en los chatbots más recientes.

Quisiera resaltar igualmente que me llamó la atención que los documentos citados en las principales fuentes no fueran inferiores al año 2015, tal vez con un par de excepciones, y la moda fuera de 2020. Es decir, está basado en modelos muy nuevos que aún tienen bastantes oportunidades de mejora. Muchos de estos documentos también hacen mención de su aplicación en escenarios reales gracias a paquetes de Python, lo que se ha convertido en un círculo virtuoso.

Con estos ajustes las nuevas versiones apuntan a mejorar en su habilidad para entender al usuario (helpfulness), elevar su confiabilidad en la generación de respuestas (truthfulness) y en reducir resultados no deseados como respuestas hirientes, sesgadas, despectivas, entre otras (Harmlessness). Es importante resaltar que InstructGPT mostró pobres avances en términos de toxicidad y ninguno en sesgo [Ouyang et al (2022)], por ahora es una materia pendiente, aunque para ser justos es un tema muy difícil de determinar dado que depende mucho del contexto.

La cantidad de datos procesados también han ayudado en las mejoras, ya que en GPT-3 se elevaron los parámetros a 176 billones y las bases de datos a 570 GB con inclusión de libros, artículos, páginas web, entre otras fuentes de alta calidad [Ouyang et al (2022)]. Pese a esto, los autores centran las mejoras principalmente en la ayuda humana.

Conclusiones:

Chat GPT ha ido evolucionando a buen ritmo desde sus primeras versiones, gracias a la inclusión de bases de datos mejoradas, la retroalimentación humana, a la inclusión de avances matemáticos en temas de optimización dinámica y a la capacidad de procesamiento de datos a un alto nivel. Esto no quiere decir que no se sigan presentando desafíos en varios frentes, como los mencionados anteriormente, y que sus respuestas no presenten margen de error[2]. No obstante, con cada nueva generación de chatbots, la forma en que usamos la información disponible es diferente y también tendremos que adaptarnos como sociedad ante estos nuevos avances que deslumbran tanto como preocupan.

[2] “InstructGPT can still fail to follow instructions, make up facts, give long hedging answers to simple questions, or fail to detect instructions with false premises.” [Ouyang et al (2022)]

Bibliografía

Training language models to follow instructions with human feedback. Long Ouyang, Jeff Wu, Xu Jiang, Diogo Almeida, Carroll L. Wainwright, Pamela Mishkin, Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, John Schulman, Jacob Hilton, Fraser Kelton, Luke Miller, Maddie Simens, Amanda Askell, Peter Welinder, Paul Christiano, Jan Leike, Ryan Lowe. https://doi.org/10.48550/arXiv.2203.02155. Publicado en 2022.

How ChatGPT Works: The Model Behind The Bot. Ruby, Molly. Towards Data Science. Disponible en https://towardsdatascience.com/how-chatgpt-works-the-models-behind-the-bot-1ce5fca96286. Publicado en 2023.

Machine Learning FAQ. Raschka, Sebastian. Disponible en https://sebastianraschka.com/faq/docs/softmax_regression.html. Visto en 2023.

Proximal Policy Optimization (PPO) Explained. Wouter van Heeswijk, PhD. Disponible en https://towardsdatascience.com/proximal-policy-optimization-ppo-explained-abed1952457b

Compartir post