![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
A pesar de la exageración actual, los modelos de lenguaje no son nuevos. Los hemos tenido en nuestros teléfonos durante años, haciendo autocompletar. Y, si bien pueden ahorrarnos un par de segundos en la ortografía, nadie los llamaría "inteligentes" o " inteligentes ".
Técnicamente, todos los modelos de lenguaje son solo distribuciones de probabilidad de tokens. Están capacitados para determinar la siguiente palabra o símbolo probable, cualquiera que haya sido tokenizado, dados los anteriores. Pero también se pueden ajustar para otras tareas, como la traducción de idiomas y la respuesta a preguntas.
La generación de lenguaje es el proceso de dar a un algoritmo una palabra aleatoria para que pueda generar la siguiente en función de las probabilidades que aprendió de los datos de entrenamiento y luego alimentarlo continuamente con su propia salida. Por ejemplo, si el modelo ve "yo", esperamos que produzca "soy", luego "bien", y así sucesivamente.
Su capacidad para crear oraciones significativas depende del tamaño de su ventana de referencia. Los modelos básicos más antiguos, como los que se encuentran en nuestros teléfonos, solo pueden mirar una o dos palabras hacia atrás, por lo que son miopes y olvidan el comienzo de una oración cuando llegan al medio.
Antes de los transformadores, los investigadores usaban redes neuronales recurrentes (RNN) para solucionar el problema de memoria corta. Sin entrar en demasiados detalles, podemos decir que su truco consistía en producir un vector de estado oculto que contenía información sobre todos los nodos en la oración de entrada y actualizarlo con cada nuevo token introducido.
Aunque la idea era definitivamente inteligente, el estado oculto siempre terminaba estando muy sesgado hacia las entradas más recientes. Por lo tanto, al igual que los algoritmos básicos, los RNN aún tendían a olvidar el comienzo de la oración, aunque no tan rápido.
Más tarde, se introdujeron las redes de memoria a largo plazo a corto plazo (LSTM) y de unidades recurrentes cerradas (GRU). A diferencia de los RNN de vainilla, tenían mecanismos incorporados (puertas) que ayudaban a retener la memoria de las entradas relevantes, incluso si estaban lejos del resultado que se estaba produciendo. Sin embargo, estas redes aún eran de naturaleza secuencial y tenían arquitecturas demasiado complejas. Eran ineficientes y prohibían el cómputo paralelo, por lo que no había posibilidad de ejecutarlos en varias computadoras simultáneamente para obtener un rendimiento ultrarrápido.
En 2017, Google describió por primera vez los transformadores en este artículo . A diferencia de los LSTM y las GRU, tenían la capacidad de elegir activamente los segmentos que eran relevantes para el procesamiento en una etapa determinada y hacer referencia a ellos al realizar una estimación. Eran más rápidos, más eficientes y tenían una arquitectura más simple basada en el principio de atención .
Es divertido que si lees el trabajo ahora, suena como un artículo común y corriente sobre traducción automática, de los cuales había muchos en ese momento. Los autores probablemente no se dieron cuenta de que podrían haber inventado una de las arquitecturas más importantes en la historia de la IA.
En el contexto del aprendizaje automático, la atención se refiere a los vectores asignados a cada token que contiene información sobre su posición en una secuencia y su importancia en relación con otros elementos de entrada. El modelo puede usarlos al hacer predicciones sin necesidad de procesamiento en serie. Vamos a desglosarlo un poco para que quede más claro.
Antes de los transformadores, el enfoque tradicional para el procesamiento de secuencia a secuencia, como la traducción de lenguaje neuronal, era codificar todas las entradas en un solo estado oculto usando un RNN y luego decodificar la secuencia objetivo usando otro RNN. Todo lo que importaba en el extremo de la codificación era el estado final.
En 2014, Bahdanau et al. propuso la brillante idea de poner todos los estados ocultos a disposición de la red del decodificador y permitirle determinar cuáles de ellos eran los más importantes para generar la salida actual. La red prestó atención a las partes relevantes e ignoró el resto.
Cuatro años después, se publicó el artículo de Google. Esta vez, los autores sugirieron deshacerse de los RNN por completo y solo usar la atención para las fases de codificación y decodificación. Para hacerlo, tuvieron que hacer ciertas modificaciones al mecanismo de atención original, lo que condujo al desarrollo de la autoatención .
Probablemente sea más fácil pensar en la autoatención como un mecanismo de comunicación entre nodos en una sola secuencia. La forma en que funciona es que a todos los tokens de entrada se les asignan tres vectores: consulta (Q), clave (K) y valor (V), que representan diferentes aspectos de su incrustación inicial.
Los vectores de consulta (Q) indican lo que busca la entrada. Piense en ellos como las frases que escribe en la barra de búsqueda de YouTube.
Los vectores clave (K) sirven como identificadores para la entrada, ayudándola a localizar coincidencias para su consulta. Estos son algo así como los resultados de búsqueda de Youtube con títulos relevantes.
Los vectores de valor (V) representan el contenido real de cada token y permiten que el modelo determine la importancia de un nodo relevante en relación con la consulta y genere resultados. Estos pueden considerarse miniaturas y descripciones de videos que lo ayudan a decidir en qué video de los resultados de búsqueda hacer clic.
Nota: en la atención propia, todas las Q, K y V provienen de la misma secuencia, mientras que en la atención cruzada no lo son.
La fórmula de autoatención se ve así: Atención(Q,K,V) = softmax((QK^T) / sqrt(d_k)V . Y este es el procedimiento en pocas palabras:
Los transformadores se inventaron inicialmente como una alternativa simple a los RNN para codificar secuencias, pero en los últimos cinco años se han aplicado a varias áreas de investigación de IA, incluida la visión por computadora, y con frecuencia han superado a los modelos más avanzados.
Sin embargo, en 2018, no sabíamos cuán poderosos podrían ser si se hicieran grandes (con millones de parámetros), se les diera un amplio poder de cómputo y se entrenaran en corpus de texto vastos, diversos y sin etiquetar de la web.
El primer vistazo de sus capacidades se vio en el Transformador preentrenado generativo (GPT) desarrollado por OpenAI, que tenía 117 millones de parámetros y fue entrenado previamente en datos no etiquetados. Superó a los modelos entrenados discriminadamente en 9 de 12 tareas de PNL, a pesar de que estos algoritmos fueron entrenados específicamente para las tareas y GPT no.
Luego vinieron los modelos GPT-2 (el más grande con 1.500 millones de parámetros), a los que siguieron muchos otros transformadores. Y en 2020, OpenAI finalmente lanzó GPT-3; su versión más grande tenía 175 mil millones de parámetros y su arquitectura era prácticamente la misma que en GPT-2.
Parece que el objetivo de OpenAI era determinar el nivel de rendimiento que podían sacar de su modelo simplemente haciéndolo más grande y proporcionándole más texto y potencia. Los resultados fueron asombrosos.
Nota: 175 mil millones de parámetros se considera bastante pequeño según los estándares actuales.
GPT-3 es capaz de generar textos en varios estilos y formatos, como novelas, poemas, manuales, guiones, artículos de noticias, comunicados de prensa, leyendas de imágenes, letras de canciones, correos electrónicos, respuestas de diálogo, etc. Puede escribir código, resumir, reformule, simplifique, categorice cualquier información y mucho más. Literalmente tomaría otro artículo completo solo para enumerar todas sus capacidades. Y, sin embargo, en esencia, esta bestia sigue siendo un sistema de autocompletado simple.
Bien, entonces tenemos un modelo de lenguaje increíblemente poderoso. ¿Podemos usarlo simplemente como un chatbot? No.
GPT-3 y sus análogos siguen siendo herramientas para completar secuencias y nada más. Sin la dirección adecuada, divagarán sobre el tema que toman de su pregunta y crearán artículos falsos, noticias, novelas, etc., que pueden parecer fluidos, coherentes y gramaticalmente impecables, pero rara vez serán útiles.
Para crear un chatbot que sea realmente útil, OpenAI realizó un ajuste exhaustivo de GPT-3 o GPT 3.5, la versión actualizada del modelo; aún no lo sabemos exactamente. Si bien muchos de los detalles sobre este proceso aún no se han revelado, sabemos que el bot fue entrenado casi de la misma manera que InstructGPT , su modelo hermano. Y también hemos notado que este último es en muchos aspectos similar a Sparrow, la versión aún no lanzada de DeepMind de un 'agente de diálogo inteligente', descrito en este documento , que salió un poco más tarde.
Entonces, sabiendo que todos los algoritmos basados en transformadores tienen efectivamente la misma arquitectura, podemos leer la publicación del blog de OpenAI, compararla con el artículo de Sparrow y luego hacer algunas conjeturas sobre lo que sucede bajo el capó de ChatGPT.
El proceso de puesta a punto del artículo tuvo tres etapas:
Acumulación de datos que muestran a la IA cómo debe actuar un asistente. Este conjunto de datos consiste en textos donde las preguntas van seguidas de respuestas precisas y útiles. Afortunadamente, los grandes modelos de lenguaje pre-entrenados son muy eficientes en la muestra, lo que significa que el proceso probablemente no tomó tanto tiempo.
Probar el modelo haciendo que responda a las consultas y generando múltiples respuestas a la misma pregunta, y luego haciendo que los humanos califiquen cada respuesta. Y al mismo tiempo, entrenar un modelo de recompensa para reconocer las respuestas deseables.
Uso de la optimización de política proximal de OpenAI para ajustar el clasificador y garantizar que las respuestas de ChatGPT reciban una puntuación alta de acuerdo con la política.
El artículo de Sparrow describe un método similar pero con algunos pasos adicionales. Como todos los agentes de diálogo de DeepMind, Sparrow está condicionado por indicaciones específicas hechas a mano que actúan como entradas que los programadores siempre dan al modelo y que los usuarios no pueden ver. Es probable que ChatGPT también se guíe por este tipo de avisos 'invisibles'.
Para convertirlo en un asistente eficaz, se le hicieron preguntas a Sparrow y generó respuestas que luego fueron evaluadas por humanos en función de los principios generales de utilidad y las reglas éticas establecidas por DeepMind (como la cortesía y la precisión). También hubo un tipo de entrenamiento de confrontación en el que los humanos intentaron activamente hacer que Sparrow fallara. Luego, se entrenaron dos clasificadores de redes neuronales para su evaluación; uno que califica las respuestas en términos de utilidad y otro que determina cuánto se desvían las respuestas de las reglas de DeepMind.
ChatGPT ahora sabe que no debe generar contenido ofensivo, pero ocasionalmente produjo respuestas insensibles después del lanzamiento; Creemos que OpenAI podría haber agregado otro modelo diseñado específicamente para no dejar pasar texto dañino. Pero, por supuesto, aún no podemos saberlo con certeza, y el propio ChatGPT está siendo turbio al respecto.
A diferencia de ChatGPT, Sparrow también podrá proporcionar evidencia para respaldar lo que dice, ya que citará fuentes y accederá a la búsqueda de Google. Para que el modelo pudiera hacer eso, los investigadores actualizaron su mensaje inicial e introdujeron dos personajes más: la consulta de búsqueda y el resultado de la búsqueda.
Nota: Es probable que se haya aplicado el mismo principio en Bard, el competidor de ChatGPT anunciado recientemente por Google.
Después del entrenamiento con dos clasificadores, utilizando el conjunto de datos ELI5 y las respuestas de las iteraciones anteriores de Sparrow, el modelo puede generar múltiples respuestas precisas y bien investigadas para cada pregunta. La respuesta que se muestra al usuario es siempre la que obtiene la puntuación más alta con el clasificador de utilidad y la más baja con el clasificador de desviación de reglas.
Bard, el chatbot de Google basado en el modelo de lenguaje LaMDA, se anunció el 6 de febrero. Ya está generando rumores, pero aún no han surgido detalles específicos sobre su entrenamiento. También se espera que la versión beta de Sparrow se lance en algún momento de 2023. Queda por ver si alguno de estos bots será casi tan popular como ChatGPT. Ambos tienen características únicas que les dan el potencial de convertirse en el nuevo chatbot número uno, pero tampoco creemos que OpenAI deje de actualizar y mejorar su asistente de chat superestrella.
Quizás pronto veamos ChatGPT con funciones nuevas e incluso mejores. Es imposible predecir qué empresa terminará en la cima en términos de dominio del mercado. Pero, quienquiera que gane la competencia, ampliará aún más los límites de lo que se percibe que se puede lograr con la tecnología de inteligencia artificial, y seguramente será emocionante.