Tema

El transformador para lenguaje

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

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

Cursos a los que prepara

Abrir el tema en la guía