Modelo de lenguaje previamente entrenado en PNL (3): análisis paso a paso de la estructura del transformador
Transformer consta de módulos: atención (incluida la autoatención de múltiples cabezales; atención de contexto), normalización (utilizando la norma de capa, que es diferente de la norma de lote), máscara (máscara de relleno y máscara de secuencia) código), codificación de posición, red de alimentación directa (FFN).
La arquitectura general del transformador se muestra en la siguiente figura:
Esta es una estructura de transformador típica. En pocas palabras, Transformador = codificador previamente entrenado (entrada) * N decodificador previamente entrenado (salida) * N salida.
Los pasos para ejecutar el modelo son los siguientes:
① Para incrustar el input se pueden utilizar herramientas como Word2Vec, con una dimensión de 512. Después de la incrustación, se combina con la codificación de posición para registrar la información de posición de la palabra de entrada.
(2) El vector de entrada preprocesado es procesado por la capa de atención de múltiples cabezales, se agregan residuos y regularización, los datos se entregan a FFN (capa completamente conectada) y se agregan residuos y regularización. Repetidamente, después de seis codificadores de este tipo (es decir, Nx=6x), finaliza la parte de codificación.
③La primera atención del primer decodificador en la parte de codificación acepta información de la salida, y el resto acepta información del codificador y el decodificador de nivel superior. Generación en serie de la salida final, cada salida generada se alimenta a la entrada del decodificador en la parte inferior del decodificador.
④ Hay seis decodificadores y la salida final debe pasar por la capa lineal y Softmax para obtener la salida final.
Cabe señalar que la estructura del codificador y decodificador es la misma, pero no comparten peso; en la parte del codificador, cada palabra tiene una dependencia en la capa de ruta de atención, que es en serie Ejecutado; , y no hay dependencias en la capa FFN, se ejecuta en paralelo.
En esta estructura, existen varios tipos de atención, entre ellos: autoatención y atención contextual. Escala de atención al producto y. Atención de cabezas múltiples Cabe señalar que la atención de producto escalar proporcional y la atención de cabeza larga son dos métodos de cálculo de atención, que se presentarán más adelante.
La fórmula de cálculo para este tipo de atención es:
Tome el primer codificador como ejemplo para ilustrar el siguiente proceso:
① es cada palabra del codificador Cree los siguientes tres vectores: vector de consulta, vector de clave, vector de valor. Estos tres vectores se obtienen multiplicando la incrustación de entrada por una matriz de tres vectores. Cabe señalar que la dimensión del vector de incrustación es 512 y la dimensión del vector Q K V es 64.
② Calcula la puntuación: Para cada palabra, calcula el producto de ella misma y de todas.
③ Cálculo de la atención: de acuerdo con la fórmula de atención anterior, divida la puntuación por un valor fijo (esta operación se llama "escalada") y realice la transformación Softmax para que la suma de todas las puntuaciones sea 1. Finalmente, multiplícalo por la posición correspondiente para llamar la atención de la palabra.
Este es el método de cálculo del mecanismo de atención del producto escalar. Ambos tipos de atención se utilizan en la arquitectura Transformer. La diferencia es que las fuentes de Q K V son algo diferentes.
Nota: ¿Por qué es necesario dividir Softmax por un signo raíz? La razón dada en el artículo es que la suma original es una variable con una media de 0 y una varianza de 1. Suponiendo que los dos son independientes entre sí, la distribución de su producto tiene una media de 0 y una varianza de 0. Dividir por el signo de la raíz mantiene los valores en Softmax con una media de 0 y una varianza de 1, lo cual es beneficioso para el cálculo del gradiente. Si no se agrega el signo raíz, el cálculo convergerá muy lentamente porque el valor en Softmax está en la zona de fuga del gradiente.
Reflexiones adicionales: ¿Por qué no hay medidas proporcionales en muchas preocupaciones? Tenga en cuenta que hay dos tipos, uno es la multiplicación y el otro es la suma.
Los experimentos muestran que aunque la suma parece simple, no es mucho más rápida en el cálculo (tanh es equivalente a una capa oculta completa. De hecho, es mejor cuando la dimensión es mayor, pero es casi lo mismo si se agrega Escalado). Para acelerar los cálculos, se selecciona la multiplicación en el Transformador y se agrega la escala si las dimensiones son grandes.
El mecanismo de atención múltiple también es una habilidad de procesamiento que mejora principalmente el rendimiento de la capa de atención. Debido a que el enfoque en uno mismo mencionado anteriormente incluye códigos en otras posiciones, las palabras dominantes siguen siendo las palabras en su propia posición. A veces necesitamos prestar más atención a otras posiciones, como a qué sujeto se refiere el pronombre en la traducción automática.
El mecanismo de atención de múltiples cabezas es proyectar las tres matrices Q, K y V a través de H transformaciones lineales, luego calcular H tiempos de autoatención y finalmente unir los H tiempos de los resultados del cálculo.
En la autoatención del codificador, Q K V es la salida del codificador anterior. Para el primer codificador, son la suma de la incrustación de entrada y la codificación posicional.
En la autoatención del decodificador, Q K V es también la salida del decodificador anterior. Para el primer decodificador, son la suma de la incrustación de entrada y la codificación posicional. Cabe señalar que en esta parte no queremos obtener los datos posteriores, solo queremos considerar la información predicha, por lo que debemos realizar un enmascaramiento de secuencia (etapa tardía).
En la atención codificador-decodificador (es decir, atención de contexto), q es la salida de la capa superior del decodificador y K V es la salida del codificador.
LN se utiliza para Transformer, no BN (normalización por lotes). ¿Qué es la normalización de normas? En términos generales, se puede expresar mediante la siguiente fórmula:
La Fórmula 1 es antes del tratamiento estandarizado y la Fórmula 2 es después del tratamiento. La normalización es el ajuste de la distribución de datos. Por ejemplo, los datos en sí son una distribución normal y la distribución de datos ajustada es una distribución normal estándar, lo que equivale a ajustar la media y la varianza. La importancia de esto es que el valor de activación cae dentro del rango sensible de la función de activación, la actualización del gradiente aumenta para acelerar el entrenamiento y los valores extremos se eliminan para mejorar la estabilidad del entrenamiento.
El transformador utiliza LN, no BN. Primero veamos la diferencia entre los dos:
LN estandariza cada muestra en sí, mientras que BN estandariza un lote de datos en la misma dimensión, que es una muestra cruzada. En las tareas de CNN, BatchSize es mayor y la media y la varianza de las muestras se registran globalmente durante el entrenamiento, lo cual es adecuado para BN. En problemas de series de tiempo, contar cada neurona no es práctico. El límite de LN es relativamente pequeño, incluso si BatchSize = 1.
Hay dos tipos de máscaras, una es la máscara de relleno y la otra es la máscara de secuencia, que aparecen en diferentes ubicaciones en "Transformers": la máscara de relleno aparece en todos los productos escalables ampliados, la secuencia La máscara solo aparece en la autoatención del decodificador.
Debido a que la longitud de cada lote de secuencias de entrada es diferente, se utiliza una máscara de relleno para alinear las longitudes de las secuencias. En pocas palabras, las secuencias cortas se alinean con secuencias largas y el método de alineación es sumar 0. Los suplementos no tienen sentido, así que no les prestes atención. De hecho, no agregamos directamente 0 a las posiciones correspondientes, sino que agregamos -inf (infinito negativo), de modo que después de Softmax, la probabilidad de estas posiciones sea cercana a 0.
Durante el procesamiento, la máscara de relleno es un tensor booleano, donde falso es donde se agrega 0.
Como se mencionó anteriormente, la función de la máscara de secuencia es evitar que el decodificador vea información después del momento actual, por lo que parte de la información posterior debe quedar completamente cubierta. Específicamente, se genera una matriz triangular superior. Los valores del triángulo superior son todos 1 y los valores del triángulo inferior y la diagonal son todos 0.
En la parte de autoatención del decodificador, la máscara de secuencia y la máscara de relleno funcionan simultáneamente y se agregan como máscaras.
RNN maneja problemas secuenciales de manera natural y ordenada, y "Transformers" elimina esta dependencia del orden temporal. Tomando la traducción automática como ejemplo, si el resultado es una oración completa y razonable, es necesario agregar información de posición a los datos de entrada. De lo contrario, cada palabra generada puede ser correcta, pero no formará una oración. La codificación posicional codifica la posición de la información de entrada y luego la agrega a la incrustación de entrada.
La codificación de posición utiliza codificación de seno y coseno:
En posiciones pares se utiliza la codificación de seno de la fórmula 1, y en posiciones impares se utiliza la codificación de coseno de la fórmula 2. Debido a las características de las funciones seno y coseno, esta codificación es tanto una codificación de posición absoluta como una codificación de posición relativa.
La información de codificación de posición relativa depende principalmente de funciones trigonométricas y fórmulas de ángulos:
FFN es una red completamente conectada, que se somete sucesivamente a transformaciones lineales, transformaciones no lineales ReLU y transformaciones lineales. La fórmula es la siguiente:
Materiales de referencia:
[Recopilación] Hablar de Transformers
Twitter: Detalles de Transformers
Ejemplos Qué son transformadores.
Ejercicio de clasificación de texto (8) - Modelo transformador
Aprendizaje profundo: modelo transformador