Lo prometido es deuda, y esta semana terminamos nuestro repaso a las tecnologías fundamentales de las redes neuronales, centrándonos en uno de los mayores avances propiciados por la arquitectura basada en transformers – y responsable en gran medida de la enorme popularidad de estos sistemas en los últimos años: los Modelos Extensos de Lenguaje
Un Modelo de Lenguaje es, resumiendo mucho, una herramienta capaz de predecir una palabra o carácter dentro de un texto: algo parecido al autocorrector o a la función de autocompletar del teclado de un móvil. Esta predicción se realiza en base a un modelado estadístico: un modelo de lenguaje se entrena utilizando grandes cantidades de texto, y es en base a este conjunto de datos (denominado corpus) que se realiza la predicción. Este tipo de modelado resulta útil en una gran variedad de contextos, siendo una pieza importante de las herramientas de reconocimiento de voz, etiquetado de discurso, herramientas de recomendación, etc –un sector que en su conjunto se conoce como Procesamiento de Lenguaje Natural.
Los Modelos de Lenguaje existían como tal antes de la revolución que supusieron los transformers, pero gracias a la mejora de eficiencia y capacidad de análisis proporcionada por éstos, así como por la mayor disponibilidad de corpus lingüísticos para el entrenamiento de redes neuronales, en 2018 surgen los llamados Modelos Extensos de Lenguaje (LLM, por sus siglas en inglés). Estos modelos no se diferencian demasiado de sus predecesores en cuanto a estructura, pero gracias a un aumento exponencial de los recursos de que disponen, abren la puerta a nuevas posibilidades, fruto de los comportamientos emergentes propiciados por esa nueva complejidad.
La función más popular de las LLMs, la de generación de lenguaje orgánico (herramientas de chat como chatGPT o Le Chat de Mistral), puede entenderse precisamente como una versión más avanzada de esa función “autocompletar”. En esencia, estas herramientas “imaginan” un texto comenzado por la petición del usuario, prediciendo una a una las palabras de la respuesta; las capacidades avanzadas proporcionadas por los transformers, varios TBs de RAM, varios modelos de predicción (un modelo conocido como “mezcla de expertos”), y una base de entrenamiento de millones y millones de textos, hacen que esta predicción tenga una forma muy similar a un texto humano.
Como vemos, un modelo de lenguaje se limita a reproducir una predicción puramente estadística de textos, seleccionando la respuesta más probable a una determinada petición. A priori, esto debería significar que, dadas dos peticiones idénticas, un mismo modelo nos devolvería predicciones también idénticas, y en principio ese es el caso. Sin embargo, para mejorar la capacidad de predicción y la calidad de los textos producidos, los modelos introducen un cierto grado de aleatoriedad en sus modelos. A esta medida de azar se le denomina la Temperatura de la predicción.
Otro factor a tener en cuenta es que el entrenamiento de un modelo, en principio, es cerrado, y es un proceso largo y costoso. Para refinar el comportamiento del modelo de forma más ágil, por tanto, necesitamos alguna otra forma de poder alterar su comportamiento. Ahí es donde entra el llamado “system prompt”. Como ya hemos visto, un modelo de lenguaje lo que hace es ofrecernos una respuesta predictiva a una petición. Este proceso tiene truco, sin embargo. A la petición que le hacemos, el “user prompt”, es posible añadirle sistemáticamente lineas de texto –el system prompt– que pongan contexto o instrucciones extra a esa petición. Así, cuando entramos en, por ejemplo, ChatGPT, e introducimos la siguiente pregunta:
“¿Qué puedes decirme de la provincia de Badajoz?”
La petición total que le estamos pasando es más parecida a:
“Eres un asistente virtual llamado ChatGPT. Procura contestar con un tono amigable y activo. Intenta que tus respuestas se ajusten a todos los públicos. Utiliza el mismo idioma que tu interlocutor. A menos que si indique lo contrario, proporciona respuestas de en torno a 200 palabras. La petición del usuario es la siguiente. “¿Qué puedes decirme de la provincia de Badajoz?” Elabora una respuesta en base a las instrucciones anteriores”
Aunque por supuesto, el system prompt de cualquiera de los grandes servicios de chat LLM se compone de miles de lineas, que intentan resolver problemas de contenido, tono, métodos específicos, aplicación de formatos, etc.
En definitiva, un modelo de lenguaje va a utilizar un determinado conjunto de datos para entrenarse, aplicar una temperatura para añadir aleatoriedad, y con ello realizar una predicción sobre la concatenación de system prompt con user prompt. Es la tarea de los equipos de desarrollo de LLM, por tanto, ajustar cada uno de esos componentes (menos el user prompt, que dependerá de quien esté usando el LLM) para conseguir un rendimiento cada vez mejor de esta herramienta, no solo para ampliar las posibilidades que ofrece, si no también para resolver problemas como sesgos o alucinaciones (esto es, respuestas completamente inventadas, pero proporcionadas por el LLM como reales). Algo que, conforme el uso de herramientas basadas en Modelos Extensos de Lenguaje va ganando terreno, resulta parte de un proceso de adaptación crítico para la industria.
