A estas alturas de la película, donde parece que llevamos ya una vida con ChatGPT, creo que hacer un post presentando esta herramienta es innecesario.
Pero sí que en el día a día me encuentro con muchos usuarios (por suerte ya de todo tipo de perfil) cuyas quejas o dudas sobre ChatGPT radican en un claro caso de no entender realmente qué es el modelo GPT y en qué consiste su funcionamiento.
GPT (Generative Pre-trained Transformer) es un modelo de lenguaje basado en una red neuronal capaz de generar texto en lenguaje natural, esto es de forma coherente, diversa y sobre una gran cantidad de temas.
Pero…¿Cómo funciona? ¿Qué pasa cuando le pregunto algo a ChatGPT.
Para ello, vamos a diferenciar dos fases en la vida del modelo GPT: Entrenamiento e Inferencia.
Fase de entrenamiento
Al modelo GPT se le agregaron ingentes cantidades de información entre la que se incluyó, entre otros, toda la Wikipedia, Reddit o Common Crawl (Un archivo de internet que desde 2008 rastrea y cachea miles de millones de páginas web) hasta septiembre de 2021.
Toda esa información se limpió y pre-procesó. En este preprocesamiento se divide el texto en unidades más pequeñas (tokens) que pueden ser palabras, sub-palabras o caracteres en un proceso denominado ‘tokenizacion’. A su vez, estos tokens se convierten en vectores (representaciones numéricas) los cuales mediante el proceso de entrenamiento relacionaremos unos con otros con distintos pesos y afinidades.
El entrenamiento fue de dos tipos: No supervisado, en el que la IA busca patrones y estructuras dentro de los datos sin tener ningún punto de referencia y el entrenamiento supervisado donde se alimenta el modelo con datos ya clasificados y etiquetados con respuestas correctas mediante la acción humana.
Todo este proceso en el que establecemos la afinidad y los pesos entre los tokens se denomina ‘embedding’.
Es decir, en este punto tenemos que le hemos metido una cantidad brutal de información, la hemos troceado, la hemos traducido a lenguaje de ordenador y hemos establecido relaciones entre los tokens de forma que la IA ya sabe que el token llamémosle…45031 que corresponde a «coche» tiene mayor grado de afinidad con el token 12404 que corresponde a «rápido» o al token 87350 que corresponde a «rojo» que al token 10534 que es «sopa». Con este ejemplo (simple con motivos explicativos) extrapolado a una cantidad difícil de asimilar (unos 175 billones, sí, con b, de parámetros es decir, de elementos que establecen los pesos y las afinidades de los tokens) la IA tiene una idea bastante acertada de qué tokens son más probables de ir junto a otros.
Y esto lo ha hecho porque el token correspondiente a «coche» lo ha visto trillones de veces en millones de contextos durante su fase de entrenamiento, sacando sus propias conclusiones en la fase no supervisada, y ayudándole entender relaciones más concretas en la fase supervisada. Por tanto ahora sabe con qué probabilidad y de qué formas acompaña a otros tokens ya que lo ha visto muchas más veces junto a «rápido» y «rojo» que junto a «sopa».
Fase de Inferencia
Con la IA entrenada, entramos en la fase de Inferencia es decir, la fase en la que ya podemos obtener unos resultados del modelo entrenado. Y ¿Qué ocurre en esta fase? Pues que nos vamos a una interfaz que nos permita usar el modelo (Como puede ser ChatGPT) y le preguntamos o escribimos lo que queremos (los famosos promts).
Y aquí, repetimos la historia. GPT «lee» nuestro texto e identifica tokens, echa mano del embedding para calcular qué tokens son, según la probabilidad, los adecuados para continuar con los tokens de entrada, con esos cálculos, genera una respuesta en lenguaje natural y la escupe. Ni más ni menos.
Como hemos explicado en el ejemplo del coche y la sopa, hay que entender el nivel al que esto se realiza, ya que ese «índice» que en ejemplo he establecido para decir que «coche» tiene una afinidad, digamos 9, con «rápido» y 8 con «rojo» pero 3 con «sopa», ese índice tiene cientos de millones de variables y no en una sola dirección, ya que igual que establecemos pesos entre «coche» y «rápido» o «rojo» estableceremos pesos entre «rápido» y «sopa» o «sopa» y «rojo», e incluso los pesos y la afinidad se establecerán entre conjuntos de dos o más tokens. Si estás visualizando esto en tu cabeza, ya verás que no es un listado de palabras donde cada una tiene descritos sus pesos. Es una compleja nube de cientos de dimensiones donde cada token tiene millones de variables con los otros tokens que la componen.
Y es aquí cuando ya podemos entender varias cosas de ChatGPT:
Prompts distintos dan resultados distintos.
Aunque preguntes lo mismo, si usas palabras distintas, cada palabra (bueno, mejor dicho cada token) influye en el resultado de salida. Pero claro, algunos preguntaréis ¿Y por qué prompts idénticos no dan resultados idénticos?
Son varios los factores que influyen en esto, pero nos centraremos en dos. El primero es que el modelo GPT elige el token dentro de una distribución de probabilidad y no directamente el más probable. Esto implica que habrá una deriva, dentro del resultado más fiel, en la forma de «escupir» la información. Este fenómeno se llama ‘sampling’y permite tener respuestas más variadas y creativas.
El segundo es el contexto, es decir la capacidad de GPT de «recordar» lo escrito (tanto por el usuario como por GPT) anteriormente. En el caso del modelo GPT3.5 hablamos de 4096 tokens. GPT-4 en su primera versión ya lidia con 8192 tokens y se estima que en su versión definitiva lo haga con, agárrense, 32768 tokens.
Es lógico pensar que dependiendo del contexto, de lo que hayamos preguntado antes a GPT, las respuestas varíen. En esta «Long-Term-Memory» (LTM o memoria a largo plazo) del modelo influyen más cosas como la tecnología que precisamente hace «especial» a GPT que es la tecnología de Transformers, pero no ahondaremos en esto hoy que ya me está quedando esto bastante espesito.
Prompts similares pueden dar resultados repetitivos o similares.
Y es que dentro del poder del sampling, es de cajón que la información es la que es en el modelo por lo que es probable que a puro de repetir una consulta tengamos la sensación de que las respuestas se repiten o que «a ChatGPT se le han acabado las ideas».
GPT se puede inventar cosas (Y de hecho lo hace)
GPT no es un buscador, ni realmente tiene la capacidad de entender lo que le estamos preguntando. Es un modelo de lenguaje basado en probabilidad. Un «autocompletar» del móvil venido a (mucho) más. Esto implica que en ocasiones, su información puede ser incorrecta ya que tira para delante con lo que cree que sería la respuesta más probable.
Por poner un ejemplo concreto. Si yo le pregunto por un Software inventado, con seguridad me dirá que no puede proporcionarme información sobre ese software porque no existe (o al menos no existía en 2021 cuando terminó su entrenamiento). Pero si le pido información concreta sobre un software existente, y en su momento no existió esa información en su entrenamiento, puede lanzarse a la piscina e inventarse por ejemplo, una configuración de menús que poco parecido tiene con la realidad, simplemente porque su embedding ha relacionado esos términos.
Habría decenas de detalles más que contar sobre GPT así como sus usos, pero creo que a grandes rasgos, este post puede servir como introducción para entender cómo funciona y el porqué de su comportamiento en según qué situaciones.
sudo shutdown – h now