¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Cómo predice palabras un modelo de lenguaje

Después de esta lección: Puedo explicar cómo elige un modelo de lenguaje la palabra siguiente y dónde se equivoca.

Lección de 50 min2 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

Una respuesta segura y falsa

Un compañero pregunta a un asistente de chat a qué hora abre la tienda los domingos. La respuesta llega enseguida, bien escrita y con seguridad. Está mal: los domingos la tienda no abre.

El asistente no mintió a propósito. Hizo justo lo que sabe hacer: elegir una palabra probable detrás de otra.

Al final de esta lección

Nota

Puedo explicar cómo elige un modelo de lenguaje la palabra siguiente y dónde se equivoca.

Palabras clave

PalabraQué significaEjemplo
Modelo de lenguajeun programa que da una probabilidad a cada token siguiente
Tokenun trozo de texto: una palabra, parte de una o un signo
Probabilidadlo posible que es algo, de 0 a 10.33
Bigramauna pareja de tokens seguidosel tren
Respuesta inventadaun texto fluido y falso (alucinación)
Sesgo en los datosun patrón injusto del texto de entrenamiento que el modelo repite

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un modelo lee tokens

Un modelo de lenguaje no ve letras ni ideas. Corta el texto en tokens y trabaja con ellos.

Los modelos reales aprenden sus tokens de mucho texto: una palabra frecuente es un token y una rara se parte en trozos. Aquí basta con cortar por los espacios. El punto también cuenta como token, porque marca el final de una frase.

Corta una frase en tokens

Código: python
# Un modelo corta el texto en trozos llamados tokens.
sentence = "la tienda abre a las nueve ."
tokens = sentence.split()
print(tokens)
print(len(tokens), "tokens")
# Escribe otra frase y cuenta sus tokens.

Un bigrama cuenta qué sigue a qué

El modelo más sencillo es un modelo de bigramas. Recorre el texto y cuenta cada pareja de tokens seguidos.

Después divide. Si «the» aparece 9 veces y 3 de ellas le sigue «shop», la probabilidad es 3 de 9. Es decir, 0,33. bigram.py hace eso con un texto corto en inglés sobre una tienda de bicis.

Cuenta qué sigue a «the»

Comando
docker exec jupyter python3 steps/bigram.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: detrás de «the»

Token siguienteVecesProbabilidad
shop33 / 9 = 0,33
desk22 / 9 = 0,22
hour, bikes, customer, door1 cada uno1 / 9 = 0,11
Total91

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Cuenta tú la palabra siguiente

Código: python
# ¿Qué palabra sigue a «tren» en este texto?
text = "el tren llega tarde . el tren va lleno . el tren llega tarde ."
words = text.split()
after = {}
for n in range(len(words) - 1):
    if words[n] == "tren":
        nxt = words[n + 1]
        if nxt in after:
            after[nxt] = after[nxt] + 1
        else:
            after[nxt] = 1

total = 0
for word in after:
    total = total + after[word]
for word in after:
    print("tren", word, after[word], "de", total)
# Cambia "tren" por "llega" en las dos líneas y ejecuta.

Escribir es elegir otra vez y otra

Para escribir, el modelo empieza con un token. Elige el siguiente según las probabilidades, después el siguiente, y así hasta un punto.

Nada en ese bucle comprueba si la frase es verdad. Cada pareja aparece en el texto de entrenamiento, pero la frase entera puede ser nueva y falsa. generate.py escribe cuatro frases así, con una semilla fija para que salgan siempre las mismas.

Escribe cuatro frases con los recuentos

Comando
docker exec jupyter python3 steps/generate.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error muy común

Advertencia

Mucha gente cree que un modelo de lenguaje busca los hechos en algún sitio. No lo hace: elige tokens probables. Una respuesta suena segura porque el texto de entrenamiento sonaba seguro, no porque sea cierta. Por eso inventa con la misma calma con la que acierta.

El texto de entrenamiento decide lo probable

Un modelo repite los patrones de su texto. Si en ese texto «técnico» va casi siempre con «él», el modelo lo repetirá. Eso es un sesgo en los datos.

Un modelo grande aprende de muchísimo texto y no solo cuenta parejas. Aun así, la idea es la misma: elige lo probable según lo que leyó.

Comprobar una respuesta

Usa un asistente como un borrador, no como una fuente. Busca la fuente original de cada dato importante. Vuelve a calcular tú las cifras. Pregunta lo mismo de otra forma y compara.

Y piensa antes de pegar nada: los datos de clientes o de la empresa no deben ir a una herramienta que no está permitida.

Para ir más lejos: otra semilla

La semilla decide qué elige el modelo en cada paso. En tu cuaderno, copia el código de generate.py y cambia random.Random(2) por random.Random(5).

Lee las cuatro frases nuevas. ¿Cuáles son ciertas según el texto de la tienda? ¿Cuáles son frases que el texto no dice nunca? Escribe una frase que explique por qué el modelo no puede saberlo.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.