Project DelphiTaller de Tensores

Puntuaciones escaladas, normalizadas sobre las claves

logits = np.einsum('bhsd,bhtd->bhst', q, k) / np.sqrt(D_k) weights = softmax(logits, axis=-1) values = np.einsum('bhst,bhtd->bhsd', weights, v)

En el einsum, s es el token consulta, t el token clave y d la característica de cabeza. Solo d desaparece en la contracción de las puntuaciones.

L contiene puntuaciones (logits); A contiene pesos normalizados. Dividir por √D_k contrarresta el crecimiento de la varianza del producto punto cuando las varianzas de los componentes son cercanas a uno. El softmax corre sobre las claves, el último eje, y la versión del cuaderno no tiene máscara ni dropout.