- GPT funciona haciendo que un transformador preentrenado con datos a gran escala prediga la distribución de probabilidad del siguiente fragmento de texto y genere oraciones mediante muestreo repetido de esa distribución
- La misma arquitectura se usa no solo para generar texto, sino también para reconocimiento de voz, voz sintética, generación de imágenes y traducción; aquí el enfoque está en la predicción del siguiente token, la base de herramientas como ChatGPT
- El texto de entrada se divide en tokens, se convierte en vectores de embedding y pasa por bloques de atención y bloques de perceptrón multicapa, absorbiendo el contexto circundante
- GPT-3 contiene 175 mil millones de parámetros en unas 28,000 matrices; solo el embedding y el unembedding representan alrededor de 617 millones de pesos cada uno
- El vector final pasa por una matriz de unembedding y por softmax para convertirse en una distribución de probabilidad del siguiente token; la temperature ajusta el equilibrio entre previsibilidad y diversidad
Función básica de GPT y los transformadores
- Las tres palabras de GPT significan Generative, Pretrained y Transformer, respectivamente
- Generative significa que genera texto nuevo
- Pretrained significa que fue entrenado con enormes volúmenes de datos y luego puede ajustarse para tareas específicas mediante entrenamiento adicional
- Transformer es una arquitectura de red neuronal considerada una invención clave del actual auge de la IA
- Los transformadores se usan en varios tipos de modelos
- Modelos que reciben audio como entrada y generan transcripciones
- Modelos que crean voz sintética a partir de texto
- Herramientas como DALL-E y Midjourney, que generan imágenes a partir de descripciones de texto
- Traducción automática, que fue el uso del transformador original presentado por Google en 2017
- La variante tratada aquí es un modelo de predicción del siguiente texto, base de herramientas como ChatGPT
- Recibe texto y, en algunos casos, también imágenes o sonidos cercanos como entrada, y predice qué vendrá después
- La salida es una distribución de probabilidad sobre varios fragmentos de texto que podrían venir a continuación
Cómo la predicción del siguiente token se convierte en generación
- La predicción de la siguiente palabra y la generación de texto parecen objetivos distintos a primera vista, pero si se ejecuta repetidamente un modelo predictivo, se puede crear texto largo
- Se introduce un texto inicial
- El modelo genera una distribución de probabilidad para el siguiente fragmento
- Se toma una muestra aleatoria de esa distribución y se agrega al texto
- Se vuelve a introducir todo el nuevo texto y se repite el mismo proceso
- Al ejecutar GPT-2 en una laptop de esta manera, aparecen casos en los que la historia no mantiene bien la coherencia
- Si se cambia a la API de GPT-3, que usa la misma estructura básica pero a mayor escala, se pueden generar historias más verosímiles
- El proceso por el cual ChatGPT y otros modelos de lenguaje grandes producen respuestas palabra por palabra es, en esencia, predicción y muestreo iterativos
- Un punto de partida simple para convertirlo en chatbot es estructurar la situación de conversación como texto
- Se incluye un system prompt con la premisa de que un AI assistant útil interactúa con el usuario
- Se agrega la pregunta del usuario como el primer fragmento de la conversación
- Se hace que el modelo prediga qué diría a continuación ese assistant
- Para que este método funcione bien, se necesita una etapa adicional de entrenamiento
Flujo de datos dentro de un transformador
- La entrada se divide en pequeñas piezas llamadas tokens
- En texto, los tokens pueden ser palabras, partes de palabras o combinaciones frecuentes de caracteres
- Si se incluyen imágenes o sonidos, los parches de imagen o fragmentos de sonido también pueden ser tokens
- Cada token se vincula con un vector, es decir, una lista de números
- Ese vector codifica de alguna manera el significado de ese fragmento
- Si se lo ve como coordenadas en un espacio de muchas dimensiones, las palabras con significados similares tienden a ubicarse en vectores cercanos
- La secuencia de vectores pasa primero por un bloque de atención
- El bloque de atención permite que los vectores intercambien información y actualicen sus valores
- Maneja significados que cambian según el contexto, como model en “a machine learning model” y model en “a fashion model”
- Se encarga de determinar cuánto se relaciona una palabra con la actualización del significado de otra y cómo se realiza esa actualización
- Luego los vectores pasan por un bloque llamado perceptrón multicapa o feed-forward layer
- En esta etapa, los vectores no se comunican entre sí y atraviesan la misma operación en paralelo
- Se compara con hacerle a cada vector una larga lista de preguntas y actualizarlo según las respuestas
- Toda la red repite bloques de atención y bloques de perceptrón multicapa
- También hay etapas de normalización en el medio, pero se omiten en esta descripción de alto nivel
- Al final, se espera que el significado central de la oración quede contenido en el último vector de la secuencia
- Ese último vector se usa para crear una distribución de probabilidad sobre todos los posibles tokens siguientes
Formato del deep learning y escala de parámetros de GPT-3
- El deep learning es un enfoque de machine learning que usa datos para determinar el comportamiento de un modelo
- Se usa en problemas que requieren intuición y reconocimiento de patrones, como producir etiquetas a partir de imágenes o predecir la siguiente palabra después de un texto
- En lugar de especificar el procedimiento en código como en la IA temprana, crea una estructura flexible con parámetros ajustables y calibra sus valores con datos de ejemplo
- La regresión lineal es el ejemplo más simple de machine learning
- Trata casos en los que la entrada y la salida son cada una un solo número, como la superficie de una casa y su precio
- Busca la mejor línea recta con dos parámetros continuos: la pendiente y la intersección con el eje y
- GPT-3 no tiene dos, sino 175 mil millones de parámetros
- Modelos tan enormes pueden sobreajustarse a los datos de entrenamiento o volverse imposibles de entrenar
- Los modelos de deep learning se consideran una familia de modelos que ha demostrado escalar bien en las últimas décadas
- El algoritmo de entrenamiento común que agrupa a esta familia es la retropropagación
- Para que la retropropagación funcione bien a gran escala, el modelo debe seguir un formato específico
- La entrada debe representarse como arreglos de números reales
- Los arreglos pasan por varias capas y se transforman continuamente en otros arreglos de números reales
- La capa final de un modelo de texto es una lista de números que representa la distribución de probabilidad de todos los posibles tokens siguientes
- Los parámetros del deep learning suelen llamarse pesos
- La manera en que los pesos interactúan con los datos es una suma ponderada
- También se insertan funciones no lineales en el medio, pero no dependen de los parámetros
- En la representación real, a menudo se agrupan como multiplicaciones matriz-vector en lugar de exponer las sumas ponderadas
- Los 175 mil millones de pesos de GPT-3 están organizados en unas 28,000 matrices
- Estas matrices se dividen en 8 categorías
- Los pesos del modelo son el “cerebro” obtenido durante el entrenamiento, mientras que los datos procesados en una ejecución concreta codifican un caso específico, como el texto de entrada
Embeddings, tamaño de contexto y distribución de probabilidad de salida
- El primer paso consiste en dividir el texto de entrada en tokens y convertir cada token en un vector
- Aunque los tokens reales pueden ser partes de palabras o signos de puntuación, en la explicación se los trata como palabras para facilitar la comprensión
- El modelo tiene de antemano una lista de tokens posibles, llamada vocabulary
- La matriz de embedding determina en qué vector se convierte cada token
- Se denota como W_E
- Sus valores empiezan de forma aleatoria, pero se determinan mediante entrenamiento basado en datos
- El tamaño del vocabulary de GPT-3 es 50,257 y la dimensión del embedding es 12,288
- Al multiplicarlos, la matriz de embedding contiene alrededor de 617 millones de pesos
- Los embeddings de palabras pueden pensarse como puntos en un espacio de muchas dimensiones
- Las palabras con significados similares tienden a ubicarse en posiciones cercanas
- A medida que avanza el entrenamiento, los embeddings tienden a acomodarse de modo que las direcciones del espacio tengan significado
- Se presentan ejemplos como la relación woman - man y king - queen, o Italy - Germany + Hitler acercándose a Mussolini
- En el ejemplo de queen, también se advierte que el embedding real de queen puede estar más lejos que una simple versión femenina de king
- El producto punto es una forma de medir qué tan alineados están dos vectores
- Si apuntan en la misma dirección, el resultado es positivo; si son perpendiculares, es 0; si apuntan en direcciones opuestas, es negativo
- La hipótesis de que cats - cat podría ser una dirección que representa la pluralidad se prueba con el producto punto
- Los sustantivos en plural tienden a obtener valores más altos que los sustantivos en singular
- También se muestra un caso en el que el producto punto con palabras como one, two y three produce valores crecientes
- Los vectores de un transformador no solo deben representar una palabra, sino también poder absorber contexto
- Los vectores generados inicialmente solo contienen el significado de un token individual tomado de la matriz de embedding
- Al pasar por la red, el objetivo es que incorporen un significado más específico que refleje las palabras cercanas y también el contexto distante
- El context size de GPT-3 es 2048, por lo que fue entrenado para procesar 2048 vectores a la vez
- Este tamaño de contexto limita la longitud de texto que el modelo puede considerar al predecir la siguiente palabra
- Esto se relaciona con la sensación de que los chatbots como el ChatGPT inicial pierden el contexto en conversaciones largas
- La etapa final consiste en crear la distribución de probabilidad del siguiente token
- El último vector del contexto final se multiplica por la matriz de unembedding W_U para producir una lista de números del tamaño del vocabulary
- Cada componente de esta salida cruda se llama logit de la predicción de la siguiente palabra
- W_U tiene una fila correspondiente a cada token del vocabulary, y la longitud de cada fila es igual a la dimensión del embedding
- En GPT-3, W_U también agrega alrededor de 617 millones de parámetros
- Al combinar embedding y unembedding, el total acumulado de parámetros supera ligeramente los mil millones
- softmax convierte cualquier lista de números en una distribución de probabilidad válida
- Cada valor debe estar entre 0 y 1, y la suma total debe ser 1
- Para cada número de entrada, se toma e elevado a esa potencia para hacerlo positivo y luego se normaliza dividiéndolo por la suma total
- Los valores de entrada grandes obtienen probabilidades altas, cercanas a 1, y los valores pequeños se acercan a 0
- Es más suave que elegir solo el valor máximo, por lo que valores igualmente altos también pueden recibir probabilidades significativas
- La temperature ajusta qué tan marcada es la distribución de softmax
- Si T es grande, los valores bajos reciben más peso y la distribución se vuelve más uniforme
- Si T es pequeña, los valores grandes dominan con más fuerza
- T=0 es el caso extremo en el que todo el peso se concentra en el valor máximo
- Con temperature 0, siempre se elige la palabra más predecible; en el ejemplo se genera una historia cliché al estilo de Goldilocks
- Una temperature más alta da oportunidad de elegir palabras menos probables, pero en el ejemplo la historia empieza de forma más original y luego se vuelve rápidamente incoherente
- La API no permite establecer la temperature por encima de 2; esto no responde a una razón matemática, sino a un límite arbitrario para evitar que la herramienta genere resultados demasiado incoherentes
1 comentarios
Opiniones en Hacker News
Si alguien sabe cómo funciona GPT, tengo una duda. Pensaba que estos modelos eligen la siguiente palabra más probable, pero me pregunto si elegir “una de las palabras probables” no podría llevar a una situación en la que la lista de predicciones para la palabra siguiente se vuelva mucho menos probable.
Si fuera computacionalmente posible, parecería más ventajoso evaluar como candidatos “dos palabras juntas” y luego extenderlo a 3, 4, n palabras; me pregunto si existe algo así.
Después de ver el video y leer los comentarios, entendí que esto es búsqueda por haz, y que se usa junto con la temperatura para controlar este comportamiento.
La temperatura y
top_kson parámetros bastante parecidos entre sí, introducidos para reflejar que cada oración que una persona puede decir es probabilísticamente impredecible. Aquí hay un ejemplo de 2021 que reproduce de forma similar un gráfico antiguo de la documentación de Hugging Face de 2018/2019: https://lilianweng.github.io/posts/2021-01-02-controllable-t...Una búsqueda por haz con longitudes mucho más largas podría ser mejor, y tal vez una combinación de varias técnicas funcione bien, pero no lo veo así. La parte de consulta-clave-valor de los transformers se enfoca, en muchos aspectos, en una suma total dentro de la relación con todo el contexto. La arquitectura en sí no está orientada a unidades más largas de este tipo, y tampoco existe un sistema básico de “dos tokens”.
Si la mayoría de los modelos GPT tienen entre 50 mil y 100 mil tokens, se terminan considerando muchísimos más parámetros, como 50 mil*50 mil, y también aparece el problema de la escasez de datos. Incluso sin considerar la complejidad del entrenamiento, muchos elementos de los modelos GPT están tan enfocados en extraer la riqueza de un solo token o de un índice de token individual que es difícil decir que estén diseñados para este tipo de búsqueda por haz.
Técnicas como la búsqueda por haz ayudan, pero solo pueden aportar mejoras del orden de un factor constante. Aun así, los modelos de lenguaje grandes han llegado a su rendimiento actual pese a esta limitación.
Un ejemplo es la búsqueda por haz: https://www.width.ai/post/what-is-beam-search
En esencia, mantiene una ventana de probabilidades de tokens predichos para mejorar la calidad de la salida final.
Si se hace chunking de bloques más grandes, todo este proceso se mezcla y permite hacer lo mismo en el espacio conceptual. Por ejemplo, si se toma como referencia algún método como los embeddings de oraciones, eso se convierte en el bloque de trabajo para la comparación.
No se me ocurre nadie mejor para enseñar al público el mecanismo de atención. Se siente como un sueño cumplido.
Si aún no viste los capítulos anteriores, los recomiendo muchísimo.
Si esto te gustó, el canal de Andrej Karpathy también tiene videos interesantes que explican las redes neuronales y su funcionamiento interno. Están dirigidos a personas que saben programar.
Yo también me lancé de forma ignorante, y aunque él recomendaba ver videos anteriores, pensé equivocadamente que podría entenderlos mientras avanzaba. Aparecen términos que necesariamente hay que conocer para sacarles provecho.
Después de rendirme, llenar los huecos con otros materiales y volver, sus videos me parecieron muchísimo más valiosos. Si alguien quiere aprender redes neuronales, le recomiendo mucho aprender de mi error.
Es un antídoto increíblemente bueno en medio de todo el contenido del Día de los Inocentes. Dan ganas de inyectárselo directo en las venas.
Relacionado con esto, también vale la pena ver esta visualización interactiva: https://bbycroft.net/llm
Discusión anterior: https://news.ycombinator.com/item?id=38505211
3B1B es uno de los mejores educadores STEM de YouTube.
Dicen que el siguiente token se obtiene muestreando los logits de la última columna después del unembedding; entonces, ¿no sería simplemente volver a traer el último token? ¿O en algún paso el tamaño de la matriz cambia a N+1?
Espero con ganas los próximos videos. Esta vez siento que por fin podré entender e interiorizar cómo funcionan estas cosas.