Duración estimada de este módulo: 1.5–2 horas
Objetivo: Entender cómo se construye la representación inicial de las palabras, por qué es crucial saber su posición en la oración, y cómo el Transformer "mira" el texto desde múltiples perspectivas simultáneamente.
Antes de que el Transformer pueda aplicar el mecanismo de atención, necesita convertir las palabras en algo que las computadoras entiendan: números.
Pero no cualquier número. No se trata de asignar un ID arbitrario (como "gato = 1", "perro = 2"). Eso no captura significado.
Aquí es donde entran los embeddings.
🔹 Definición simple:
Un embedding es una representación vectorial densa de una palabra (o token), donde palabras con significados o usos similares tienen vectores similares.
Ejemplo:
- "rey" → [0.85, -0.2, 0.67, ...]
- "reina" → [0.82, -0.18, 0.65, ...]
- "mesa" → [-0.3, 0.9, 0.1, ...]
"rey" y "reina" están cerca en el espacio vectorial. "mesa" está lejos.
Imagina que todas las palabras del idioma están ubicadas en un mapa gigante de significados.
Un embedding es como las coordenadas GPS de una palabra en ese mapa.
Cuando el modelo ve la palabra "gato", no ve la letra 'g' o 'a'. Ve su vector: un punto en ese mapa semántico. Y gracias a eso, puede razonar:
"Si 'gato' está cerca de 'perro', y 'perro' suele ir con 'correa', quizás 'gato' también tenga algo que ver con 'correa'... aunque no exactamente igual."
Este mapa no se programa a mano. ¡Se aprende automáticamente durante el entrenamiento!
Hay dos formas principales:
Como Word2Vec o GloVe. Se entrenan una vez en grandes corpus de texto y luego se usan como capa fija. Tienen la limitación de que cada palabra tiene un solo vector, sin importar el contexto.
"banco" siempre tiene el mismo vector, aunque signifique "financiero" o "de parque".
¡Aquí es donde brilla el Transformer! En lugar de asignar un vector fijo, el modelo genera un embedding específico para cada contexto.
En "fui al banco a depositar", "banco" tendrá un vector cercano a "dinero".
En "me senté en el banco del parque", tendrá un vector cercano a "madera" o "descanso".
Esto se logra combinando:
Aquí viene un desafío clave:
Si el Transformer procesa todas las palabras simultáneamente... ¿cómo sabe cuál va primero, cuál en medio, y cuál al final?
¡Las posiciones importan!
"El perro mordió al hombre" ≠ "El hombre mordió al perro"
En las RNNs, el orden estaba implícito en la secuencia de procesamiento. En el Transformer, no.
Solución: Codificación posicional (Positional Encoding)
La idea es simple: añadir al embedding de cada palabra una señal numérica que indique su posición en la secuencia.
Pero no cualquier señal. No se usa un contador simple (posición 1, 2, 3...) porque eso no escala bien y no captura relaciones relativas ("la palabra 5 está cerca de la 6").
La solución en el Transformer original: funciones sinusoidales.
🔹 Fórmula (solo para referencia):
Para una posición pos y una dimensión i del vector:
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
Donde d_model es la dimensión del embedding (por ejemplo, 512 o 768).
Imagina que cada posición en la oración emite una "frecuencia única", como una estación de radio.
Cada palabra recibe su embedding semántico + su "onda de posición".
Cuando el modelo suma ambos, obtiene un vector que dice:
"Soy la palabra 'banco', y estoy en la posición 5 de la oración."
Y lo más inteligente: estas funciones sinusoidales permiten que el modelo aprenda relaciones relativas.
"La palabra en la posición 5 puede aprender que la palabra en la posición 6 está 'cerca', aunque nunca haya visto una oración de 100 palabras durante el entrenamiento."
Imagina que estás analizando una obra de teatro.
Todos están viendo la misma obra... pero desde perspectivas distintas. Y todas son válidas.
Eso es lo que hace el mecanismo de atención multi-cabeza (Multi-Head Attention).
En lugar de calcular una sola matriz de atención, el Transformer calcula varias "cabezas" de atención en paralelo, cada una con sus propias matrices de Query, Key y Value aprendidas.
h espacios diferentes (por ejemplo, 8 cabezas).🔹 Resultado: El modelo no tiene una sola forma de "mirar" la oración. Tiene múltiples lentes, cada uno especializado.
Imagina la oración:
"La científica que descubrió la vacuna recibió un premio."
Cada cabeza aporta una pieza del rompecabezas. Juntas, dan una comprensión completa.
Toma la oración: "El músico que tocó el violín emocionó a la audiencia."
Imagina tres "cabezas de atención" distintas. Describe qué palabras conectaría cada una y por qué. Usa categorías como: sintaxis, semántica, emoción, instrumento, etc.
Palabra: "científica"
Embedding: [0.7, -0.3, 0.5, ...] → "significado base"
Posición 3: [0.1, 0.05, -0.2, ...] → "onda sinusoidal para pos=3"
Vector inicial = Embedding + Posición → [0.8, -0.25, 0.3, ...]
Proyectado a 3 cabezas:
Cabeza 1: Q1, K1, V1 → atención a verbos
Cabeza 2: Q2, K2, V2 → atención a objetos
Cabeza 3: Q3, K3, V3 → atención a premios/logros
Salidas de cabezas:
Cabeza 1: [0.6, 0.1, ...]
Cabeza 2: [-0.2, 0.8, ...]
Cabeza 3: [0.4, 0.5, ...]
Concatenado: [0.6, 0.1, -0.2, 0.8, 0.4, 0.5, ...]
Proyectado final: [0.55, 0.3, 0.45, ...] → representación final enriquecida
El Transformer no empieza de cero. Construye su comprensión en capas:
- Embeddings le dan significado semántico inicial.
- Codificación posicional le da conciencia del orden.
- Atención multi-cabeza le permite mirar el texto desde múltiples ángulos simultáneamente.
Es como un equipo de expertos analizando un texto: cada uno aporta su perspectiva, y el resultado es una comprensión mucho más rica y matizada que la de un solo analista.
Ahora que entendemos las piezas fundamentales, es momento de ensamblarlas: ¿cómo se organizan estas piezas para formar un Transformer completo? ¿Qué diferencias hay entre un codificador y un decodificador? ¿Por qué BERT y GPT, aunque ambos usan Transformers, funcionan de formas tan distintas?
Eso lo veremos en el próximo módulo.