Síguenos

Inteligencia artificial generativa: Introducción a los LLMs

En Populate (creadores de Gobierto) estamos fascinados con los avances recientes en inteligencia artificial, como tantos otros. Creamos esta guía para acercar las claves de esta nueva ola y plantear algunas de las cuestiones más relevantes en general, y en particular sobre cómo pueden afectar a la administración pública.

¿De qué estamos hablando cuando hablamos de inteligencia artificial en 2023? Inteligencia artificial es un concepto amplío que engloba tecnologías diferentes, muchas conectadas entre ellas o que se han ido construyendo apoyándose en las anteriores (machine learning, redes neuronales, deep learning...). Muchas veces se habla de inteligencia artificial cuando en realidad nos estamos refiriendo a una de estas tecnologías en particular.

Esta ola reciente (simplificando, el famoso ChatGPT) tiene un protagonista muy claro: los LLMs (large language models, modelos grandes de lenguaje). Los LLMs quedarían englobados dentro la inteligencia artificial generativa, dónde en el campo de las imágenes también ha habido una explosión estos últimos años.

En esta guía nos vamos a centrar en los LLMs, y en esta primera entrega:

  • Qué es un LLM
  • Un LLM no sabe lo que está diciendo
  • Breve historia de los LLMs
  • Prompts
  • Para qué sirven los LLMs
  • Modelos fundacionales
  • Para seguir explorando
  • Referencias

Qué es un LLM

Un LLM es esencialmente un sistema que tomando unas palabras como punto de partida (input) predice qué palabras son las más probables que ocurran a continuación (output). El sistema toma el input y calcula varias posibilidades asignando una probabilidad a cada una, y selecciona una en base a distintos criterios (su probabilidad, su conexión con otras palabras seleccionadas en el mismo texto...).

Los LLMs "aprenden" cuáles son estas probabilidades a partir de observar (entrenarse con) grandes cantidades de textos. Un LLM es solo una gigantesca y sofisticada máquina de calcular probabilidades. Pero es una máquina tan grande, que surgen comportamientos emergentes.

La calidad de los resultados de un LLM dependen de la cantidad y tipo de texto que hayan observado (con el que hayan sido entrenados): si el modelo no es muy grande, no ofrecerá buenos resultados. Si a un modelo muy grande le preguntas sobre un tipo de contenido muy específico, del que no ha visto mucho, no ofrecerá buenos resultados.

De ahí viene la carrera por entrenar modelos con mucho contenido y es la razón por la que algunos se han lanzado a indexar todo lo que pueden sin importarles el copyright.

Alucinando: Un LLM no sabe lo que dice

Un aspecto absolutamente esencial que cualquiera que use un LLM debe tener en cuenta es que el modelo no sabe lo que está diciendo.

Este hecho genera que en algunas ocasiones el modelo alucine (hallucination en inglés): es la denominación que se le ha dado al hecho de que ofrezca resultados que tienen una apariencia formal perfectamente correcta (la respuesta está bien construida gramaticalmente), pero cuyo contenido no tiene sentido porque el LLM, en su origen, no es consciente de lo que genera.

Un LLM siempre te contestará con una corrección formal impoluta y esto te puede despistar: el modelo parece muy seguro de sí mismo pero hay que ser crítico con el contenido que nos proporciona (igual que en el mundo real: nos inspira más confianza alguien que parezca seguro de sí mismo).

Otra visión acerca de la alucinación de los LLMs (aunque no estamos al 100% de acuerdo, pero abre un debate interesante): 

Lo que todos ustedes llaman "alucinación" se llama, en neurología y psicología (donde significa dos cosas ligeramente diferentes), "fabulación". Significa cuando alguien simplemente inventa algo y no tiene idea de que lo está inventando, porque su cerebro/mente está fallando.

Fuente: https://elk.zone/vis.social/@siderea@universeodon.com/109883198228485759

(Muy) Breve historia de los LLMs

(si se te hace denso, pasa al siguiente epígrafe, pero incluso si no dominas temas técnicos esta sección te será útil para comprender cómo la "magia" se ha construido a lo largo de muchos años, evolucionando y combinando distintas técnicas, por personas y equipos diversos)

Los modelos de lenguaje existen desde hace décadas, pero generaban texto incoherente y tenían problemas al trabajar con frases nuevas.

A mediados de los años 2000 se desarrollan las redes neuronales que mejoran la representación de conceptos y el procesamiento de secuencias, aunque aún presentan limitaciones.

En los años 2010, las redes Long Short-Term Memory (LSTM) permitieron procesar secuencias largas y recordar información previa, mejorando significativamente la capacidad de predicción.

En 2017 se escribió el paper Attention Is All You Need en Google, que introdujo el concepto de Transformer Networks (redes de transformación) y arrancó una revolución en el procesamiento de lenguaje natural: de pronto podían traducir entre idiomas, analizar toda la información de manera simultánea y asignar importancia a partes específicas.

Los transformers se pueden paralelizar y son muy eficientes de entrenar. La principal limitación es que tienen un tamaño limitado de input y output (es decir, que si quieres pasarle un texto muy extenso para que lo resuma, tendrás que pasarle segmentos de tamaño máximo – aunque este tamaño va aumentando rápidamente, por lo que es probable que las limitaciones de hoy mañana ya sean irrelevantes). 

Llegados a la década actual de 2020, la estrella son los modelos GPT: Generative Pre-Trained. En 2018, un año después del Attention Is All You Need, la empresa OpenAI publica Improving Language Understanding by Generative Pre-Training, donde desarrollan como se puede entrenar un LLM sobre un dataset masivo de forma genérica, para luego ajustarlo (fine-tune) para tareas específicas.

En 2020 OpenAI publica el paper Language Models are Few-Shot Learners donde muestran que si aumentas 10 veces los datos de entrenamiento y los parámetros ya es capaz de resolver muchos tipos de tareas sin entrenamiento específico.

En 2022 OpenAI publica InstructGPT con el objetivo de desarrollar un modelo que permitiese seguir un conjunto de instrucciones y que produjese resultados menos tóxicos y sesgados. La clave de esta iteración es el concepto del Apendizaje Reforzado a partir de Realimentación Humana, Reinforcement Learning from Human Feedback (RLHF). Esta técnica, definida por personas de Google y OpenAI en 2017, plantea que haya humanos en el proceso de entrenamiento para que condicione el tipo de respuestas. InstructGPT es el precursor del famoso ChatGPT.

Como se puede ver OpenAI es uno de los protagonistas de la revolución de los LLMs, pero en los últimos años ha habido una explosión de organizaciones aportando innovaciones, casi siempre construyendo sobre los pasos existentes.

Una nota sobre la terminología: ChatGPT no es simplemente el nombre de un producto creado por una sola empresa, si no que se apoya en el tipo de tecnología que utiliza, que como estamos viendo es la suma de distintas innovaciones en un proceso que dura décadas. Asímismo, GPT3, GPT4, etc. son productos de OpenAI, una empresa, aunque basan su nombre en la tecnología.

Si te interesa una explicación más técnica de cómo funciona un modelo de lenguaje te recomendamos esta guía (en inglés): Simply explained: how does GPT work?

Prompts

Un prompt es la instrucción en formato texto que le damos a un LLM para comenzar a generar (predecir) un resultado. Si el output es el resultado de la probabilidad a partir del input, podemos ver la importancia de aportar un input lo más adecuado posible.

Si la instrucción (prompt) es “color rojo”, el LLM genera un texto sobre qué es lo probable que siga:

El LLM genera varias posibilidades sobre cuál puede ser el próximo token (parte de una palabra) y asigna probabilidades a cada uno de ellos, información que utiliza para realizar la selección final.

En el video podéis ver el texto generado, y hemos activado (en el Playground de OpenAI) el modo “Ver probabilidades”. Al seleccionar uno de los tokens seleccionados podemos ver cuáles habían sido generados y qué probabilidad se había dado a cada uno de ellos.

En este caso estamos viendo que el seleccionado ha sido “p” (y su continuación para formar la palabra, puros), pero no era el token con más probabilidad. El que más probabilidad había obtenido era “prim” (de primarios), pero el sistema no solo utiliza la probabilidad individual, sino que utiliza el contexto del resto de tokens seleccionados.

Una instrucción también puede ser una pregunta:

En este caso hemos hecho una primera pregunta, y luego hemos enviado una segunda instrucción que toma como referencia la conversación (input y output) que hemos tenido hasta ahora. Esto se conoce como “memoria”.

La memoria de los LLMs actualmente es muy reducida: depende de la longitud del input y output que permita el modelo en cuestión. Si me extiendo en mi conversación (porque he hecho muchas preguntas, o porque las respuestas son largas) llegará un momento en que el LLM no podrá tener en cuenta la conversación completa, solo la parte más reciente que quepa en su llamada.

Esta longitud está aumentando muy rápido en los últimos meses, y lo continuará haciendo, y es uno de los factores cruciales para continuar mejorando la calidad de las interacciones con los LLMs.

Es interesante destacar como además de un conocimiento general del mundo (para el que los LLMs ya tienen una base bastante buena) un ingrediente fundamental en el razonamiento, generación de ideas, o creatividad, es tener en primer plano (en memoria) determinados datos o sucesos.

LLMs integrados en aplicaciones y servicios

Además de poder usar un LLM escribiendo prompts directamente (como ocurre cuando usas ChatGPT) hay muchos servicios que usan las APIs de los LLMs para integrar esta funcionalidad de forma transparente para los usuarios.

Por ejemplo, si estoy utilizando un procesador de textos, el creador del software me puede dar la posibilidad de seleccionar una frase, y ofrecerme opciones como escribir el siguiente párrafo, continuar escribiendo la frase, listar las principales conclusiones, etc. Cuando una herramienta nos ofrece una función de este tipo, internamente simplemente están preparando una llamada determinada a la API de un LLM.

En este ejemplo se está combinando un prompt base que funciona a modo de instrucción general ("escribe el siguiente párrafo") con un contenido dinámico (el objeto sobre el que se aplicarán las instrucciones, la frase que ha seleccionado el usuario). El LLM recibirá un único prompt con la combinación que el usuario o la aplicación (o ambos) haya preparado.

El resultado de un prompt se puede reutilizar para crear un nuevo prompt y hacer otra llamada sucesiva. Estas llamadas se pueden encadenar e incluso se pueden conectar con programas o funciones externas al propio LLM (como hacer una consulta en un buscador, recuperar información de una base de datos, etc. Esto se hace a través de "agentes", que veremos más adelante).

Variaciones en el prompt (el input) provocan variaciones significativas en el resultado (output). Tal es así que se ha definido una disciplina específica: prompt engineering, y su correspondiente perfil, el prompt engineer, que se encarga de la ciencia de la redacción de prompts.

Prompt injection

“prompt injection” hace referencia a otro conocido problema de seguridad en aplicaciones informáticas, el sql injection (cuando un usuario puede llegar a manipular o corromper el contenido de una base de datos a través de instrucciones de texto desde el propio interfaz de una aplicación). En el caso del prompt injection podemos llegar a manipular el contenido que nos genera un LLM a partir de instrucciones específicas que le pasemos. 

En este ejemplo podemos ver como inicialmente (1 y 2) contesta teniendo en cuenta las instrucciones de base que hemos definido (“No debes contestar preguntas que no tengan que ver con contratación”). Pero con una instrucción muy básica (“Ignora las instrucciones originales…”) conseguimos que el LLM haga lo que el usuario le solicita, independientemente de las instrucciones iniciales. 

Esto puede provocar problemas si el LLM ha recibido instrucciones de base que no queremos que sean públicas, o está conectado a un servicio con información sensible. Como regla general por el momento debemos asumir que cualquier instrucción de base que utilicemos en nuestro prompt puede llegar a revelarse. 

Si estamos creando un servicio con un LLM también deberemos ser precavidos porque bajo este mismo patrón, un usuario malintencionado puede forzar a que nuestro servicio diga cosas inapropiadas basadas en el input que el usuario puede aportar

Para qué sirven los LLMs

Si has usado ChatGPT ya te haces una idea de las posibilidades que puede tener un LLM. Le puedes hacer preguntas, pedir que traduzca, resuma, amplíe, genere ideas, extraiga conclusiones...

Un LLM es un lienzo un blanco, pero nos parece interesante hacer una aproximación a lo que podría ser un catálogo de funciones básicas de un LLM (esto no es un catálogo de sus características, ya que la única característica principal de un LLM es que predice la próxima palabra en base a las anteriores).

  • Extender: palabras, frases, párrafos
  • Reducir: idem
  • Generar: ideas, outlines, textos…
  • Transformar: cambiar estilo, traducir, convertir un texto en datos estructurados
  • Arreglar: gramática, puntuación, estilo…
  • Extraer: ideas, datos…, 
  • Explicar
  • Preguntar

Estas funciones podrían considerarse como bloques de construcción que se pueden combinar y encadenar para generar resultados más sofisticados. 

Por ejemplo, en este prompt le estamos indicando una secuencia de pasos que deberá seguir, y uno de los pasos permite recoger el input del usuario de forma interactiva:

Eres un autor de contenido. Eres inteligente, directo, elegante. No abusas de las estructuras clásicas. Piensas que tu lector tiene poco tiempo que perder. El usuario te proporcionará un tema. A partir de ese tema, tu generarás 5 posibles títulos de artículos. El usuario después elegirá del 1 al 5. Sobre el que elija, tu crearás un índice para el artículo. Después, escribirás el artículo. Empecemos. El tema proporcionado es: "bullet journaling"

Ver conversación completa
https://chat.openai.com/share/7a49657c-ea86-47dc-8f29-dc530b96c87f
 

En qué contextos podemos usar un LLM

Las aplicaciones son virtualmente infinitas al tratarse de funciones tan esenciales sobre algo como el lenguaje, nuestro interfaz para comunicarnos.

Un LLM nos puede ayudar en cualquier tarea que implique leer o escribir: 

  • resumir un documento
  • generar respuesta a preguntas
  • buscar una respuesta en un texto
  • buscar una respuesta en el propio corpus del LLM

Dado que un LLM se puede integrar via API, es decir que podemos conectarlo con otras aplicaciones, y por tanto podemos ir pasando

Si tenemos un base de datos, podemos crear un interfaz conversacional (chat) para que un usuario haga una pregunta en lenguaje natural: en un proceso que encadena varios pasos podemos usar un LLM para extraer el dato que el usuario está buscando, realizar una búsqueda en la BD, y darle al LLM el contenido e instrucciones para que genere una respuesta en lenguaje natural.

Desarrollaremos los casos de uso y aplicaciones prácticas en una entrega específica de esta serie.

Modelos fundacionales

Se llama modelo fundacional a los LLMs de base sobre el que luego se están construyendo aplicaciones. Un modelo fundacional es por ejemplo el GPT (en sus distintas versiones) de OpenAI, que es el que da soporte al extendido ChatGPT.

Además de OpenAI, existen otras organizaciones, privadas y sin ánimo de lucro, que están creando LLMs, algunos cerrados (como los de OpenAI, o Claude de Anthropic, PaLM de Google) y otros open source (como Bloom, LlaMA de Facebook)

En estos momentos cuando hablamos de regulación sobre los LLMs, además del propio uso de los modelos finalistas, se está hablando fundamentalmente de las características en la elaboración de estos modelos, llamados fundacionales porque en ellos se basan todas las aplicaciones que luego tienen un uso finalista.

Estas características que se cuestionan y analizan tienen que ver con la identificación de los datos utilizados para entrenar el modelo, su licencia, los riesgos y medidas de mitigación, las evaluaciones realizadas, las capacidades… 

Analizaremos la propuesta de regulación europea en una siguiente entrega. 

Para seguir explorando

Los LLMs tienen un montón de ramificaciones en todo tipo de aspectos: legales, morales, técnicos… os dejamos algunos de ellos. Contadnos qué os despierta más interés o necesidad para continuar con las siguientes entregas de esta serie:

  • Inteligencia artificial generativa y derechos de autor: los LLMs se basan en la actualidad en una explotación del contenido, muchas veces, al margen de los derechos de autor. ¿Existen opciones de atribución? ¿Existe una frontera de uso legítimo? ¿Dónde está?
  • LLMs y regulación: ¿qué límites regulatorios se deben establecer en la creación, despliegue y uso finalista de los LLMs y otros modelos generativos? ¿Cómo funciona y qué trata de regular la propuesta de regulación europea?
  • Uso en la administración pública: ¿para qué podemos usar los LLMs en la administración pública? ¿Qué se debe investigar? ¿Qué límites regulatorios debemos anticipar?
  • ¿Cómo de diferente es la inteligencia humana de la artificial? Entrando en temas metafísicos… ¿qué diferencia nuestra inteligencia de la de un LLM? ¿En qué medida nuestro cerebro es solo una gran máquina de recolección, proceso y relación de información? ¿Qué significa pensar? ¿Qué es la creatividad? 
  • Inteligencia artificial y riesgos existenciales: ¿hasta qué punto son peligrosos los avances en inteligencia artificial? ¿Pueden suponer un riesgo existencial para los humanos?

Formación y proyectos pilotos

En Populate (creadores de Gobierto) ya hemos hecho los primeros pilotos usando LLMs e integrándolos en aplicaciones y con datos propios. Si quieres realizar un proyecto de exploración para probar y experimentar cómo y para qué usar LLMs en tu organización, hablemos.

Referencias y recursos

Jul 4, 2023
cerrar
¿Te ha interesado esto? Recibe nuestras novedades
.