Tema
El transformador para lenguaje
- Lenguaje natural y modelos de lenguaje
- Nivel avanzado
El transformador apila bloques formados por atención de varias cabezas y una red densa por posición, cada uno con conexión residual y normalización, y sustituye el recorrido secuencial de las redes recurrentes por un cálculo paralelo sobre toda la secuencia.
Nombre en inglés
The Transformer for language
Intuición
Al quitar la recurrencia desaparece el orden, motivo por el cual hace falta inyectarlo con una codificación posicional. Cada cabeza puede especializarse en una relación distinta, por ejemplo la concordancia con el sujeto o el antecedente de un pronombre, y la red densa posterior mezcla lo que las cabezas recogieron.
Fórmula
h = LayerNorm(x + MultiCabeza(x)) ; salida = LayerNorm(h + FFN(h)) ; FFN(h) = W_2 max(0, W_1 h + b_1) + b_2
Ejemplo resuelto
Sea un bloque con dimensión de modelo 512, 8 cabezas y una red densa interna de 2048. Cada cabeza trabaja con d_k = 512 / 8 = 64, de modo que las cuatro proyecciones de consulta, clave, valor y salida suman 4 por 512 por 512 = 1 048 576 parámetros. La red densa aporta 512 por 2048 por 2 = 2 097 152, es decir el doble. En consecuencia, cerca de dos tercios de los parámetros del bloque viven en la red densa y no en la atención, dato que sorprende a quien supone lo contrario.
Errores frecuentes
- Quitar la codificación posicional y esperar que el modelo recupere el orden, cuando sin ella la atención devuelve el mismo resultado ante cualquier permutación de la entrada.
- Aumentar el número de cabezas sin cambiar la dimensión del modelo y creer que se gana capacidad, ya que la dimensión por cabeza baja en la misma proporción y el total de parámetros no se mueve.
- Colocar la normalización después del bloque residual en modelos muy profundos, disposición que exige un calentamiento cuidadoso de la tasa de aprendizaje; la variante que normaliza antes entrena con más holgura.
Ejercicio
Un transformador tiene dimensión de modelo 768 y 12 cabezas de atención. ¿Cuál es la dimensión por cabeza y entre qué número se divide el producto punto?
Ver la solución
La dimensión por cabeza se obtiene dividiendo la dimensión del modelo entre el número de cabezas, es decir 768 / 12 = 64. El escalado divide entre la raíz de esa dimensión por cabeza, de modo que se divide entre la raíz de 64, que vale 8. Conviene notar que la cifra 64 por cabeza se repite en casi todas las configuraciones publicadas, porque mantiene estable la varianza del producto punto sea cual sea el tamaño del modelo.
Respuesta: 64 y 8
Temas relacionados
- Atención sobre secuencias
- Preentrenamiento y ajuste fino
- Tokenización por subpalabras
- Transformador
- Redes recurrentes y memoria larga y corta