Cómo sabe un programa si se parecen
Un embedding de palabra es un vector de números que representa una palabra, de modo que las palabras con usos parecidos quedan cerca. Es la idea que hay debajo de los buscadores que entienden «coche» cuando escribes «automóvil».
Los modelos de lenguaje actuales parten de esta idea. Entender cómo se forman ayuda a ver por qué aciertan tanto y por qué a veces inventan o repiten prejuicios.
Al final de esta lección
Nota
Puedo explicar cómo se convierten las palabras en vectores y dónde se equivocan los modelos.
Palabras clave
| Palabra | Qué significa |
|---|---|
| Embedding | el vector de números que representa una palabra |
| Contexto | las palabras que aparecen junto a otra |
| Cercanía | lo parecidos que son dos vectores |
| Atención | dar más peso a las palabras del texto que importan |
| Sesgo | un patrón injusto del texto de entrenamiento que el modelo repite |
| Respuesta inventada | un texto fluido y falso, también llamado alucinación |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Una palabra se describe por su contexto
Una idea muy útil dice que el significado de una palabra se ve en el contexto donde aparece. «Pan» sale junto a «comer»; «coche», junto a «conducir».
Si cuentas, para cada palabra, cuántas veces sale junto a unas pocas palabras de referencia, obtienes un vector. Ese vector es un embedding muy pequeño. Los reales usan cientos de números y los aprende una red neuronal.
Mira los vectores de contexto
# Cuántas veces sale cada palabra junto a "comer", "conducir" y "leer".
words = ["pan", "coche", "libro"]
contexts = {
"pan": [4, 0, 1],
"coche": [0, 5, 0],
"libro": [0, 0, 6],
}
for word in words:
print(word, contexts[word])
# Añade "queso" con [3, 0, 1] y decide a cuál se parece más.
Ejemplo resuelto: seis palabras y tres contextos
| Palabra | junto a comer | junto a conducir | junto a leer |
|---|---|---|---|
| pan | 4 | 0 | 1 |
| queso | 3 | 0 | 1 |
| coche | 0 | 5 | 0 |
| tren | 0 | 4 | 1 |
| libro | 0 | 0 | 6 |
| revista | 1 | 0 | 5 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
El significado se mide como cercanía
Dos vectores están cerca si su distancia es pequeña o si su coseno es alto. Con el coseno de la lección 3, «pan» y «queso» salen casi iguales: 0,997. «Pan» y «coche» salen a 0.
Así un programa encuentra la palabra más cercana a otra sin saber qué es un pan. Solo compara los números que el texto le ha dado.
Calcula dos distancias
docker exec jupyter python3 -c "print(round(((4-3)**2+(0-0)**2+(1-1)**2)**0.5,2), round(((4-0)**2+(0-5)**2+(1-0)**2)**0.5,2))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Mide la distancia entre palabras
# La palabra más cercana, con la distancia entre dos vectores.
def distance(a, b):
total = 0
for n in range(len(a)):
total = total + (a[n] - b[n]) ** 2
return total ** 0.5
pan = [4, 0, 1]
print("pan a queso:", round(distance(pan, [3, 0, 1]), 2))
print("pan a coche:", round(distance(pan, [0, 5, 0]), 2))
# Cambia el vector de queso por [0, 4, 1] y mira cómo crece.
La atención decide qué palabras del texto importan
Una palabra puede significar cosas distintas. En «me senté en el banco del parque» y «el banco cerró la cuenta», «banco» no es lo mismo.
La atención es el mecanismo con el que un modelo da más peso a las palabras que aclaran el sentido. En la primera frase mira «senté» y «parque»; en la segunda, «cuenta». Así el vector de «banco» cambia según la frase.
Un modelo repite su texto
Los vectores salen del texto. Si en ese texto «enfermera» sale casi siempre junto a «ella», el vector quedará cerca de «ella». Eso es un sesgo, y viene de los datos, no de una opinión del modelo.
También hay respuestas inventadas: el modelo elige palabras cercanas y probables, y nada comprueba que la frase sea cierta. Por eso se comprueba una cifra o una cita en la fuente original.
Un error muy común
Advertencia
Mucha gente cree que un embedding contiene el significado de la palabra. Solo guarda cómo se usa en el texto con el que se hizo. Por eso copia los errores y los prejuicios de ese texto y no sabe lo que es verdad.
Para ir más lejos: tus palabras de referencia
Elige tres palabras de referencia de tu carrera, por ejemplo «código», «datos» y «redes». Escribe seis frases cortas con palabras que sueles usar.
Cuenta, para cada palabra, cuántas veces sale junto a cada referencia. Calcula con tu función cuál es la más cercana a cada una y revisa si tiene sentido.