Análisis del modelo de transformador

Es la primera vez que escribo un blog solo ... Registra mi estudio y mi vida diaria ... Diviértete durante el cierre de la escuela y espero seguir trabajando duro en el futuro.

Blog de referencia @ https://blog.csdn.net/weixin_42691585/article/details/108994556

Y @ https://zhuanlan.zhihu.com/p/48508221

"Mantente hambriento, mantente joven"

Derivación teórica del transformador

Prefacio

Los antecedentes del modelo:

Los algoritmos existentes relacionados con RNN solo se pueden calcular secuencialmente de izquierda a derecha o de derecha a izquierda. Este mecanismo trae dos problemas:

  1. El cálculo del segmento de tiempo t depende del resultado del cálculo en t-1, que limita la capacidad paralela del modelo;

  2. La información se perderá en el proceso de cálculo secuencial.Aunque la estructura de los mecanismos de puerta como LSTM alivia en cierta medida el problema de la dependencia a largo plazo, LSTM todavía es impotente para el fenómeno de dependencia particularmente a largo plazo.

    Por lo tanto, la propuesta de Transform resuelve los dos problemas anteriores. Primero, el mecanismo de Atención se usa para reducir la distancia entre dos posiciones cualesquiera en la secuencia a una constante; segundo, no es una estructura secuencial similar a RNN, por lo que tiene mejor paralelismo Rendimiento, en línea con el marco de GPU existente.

Introducción

Transformer es un modelo basado en la estructura codificador-decodificador, descarta el RNN en el modelo seq2seq anterior, y usa Auto-atención o Mulit-head-self-atención para hacer que los datos de entrada se puedan procesar en paralelo y mejorar la eficiencia operativa. La estructura específica puede referirse a la siguiente figura:
Inserte la descripción de la imagen aquí

Estructura específica

1.Parte del codificador (codificador)

Compuesto principalmente por componentes de auto-atención (auto-atención) y una red neuronal de avance, centrémonos en los componentes de auto-atención

1.1 componente de auto-atención

1. Primero, incorporamos las funciones para convertir palabras en varios vectores o tensores

Incrustación: Es una representación de vector denso, que transforma el lenguaje natural en lenguaje matemático. En comparación con la representación de matriz dispersa en caliente, puede ocupar menos espacio a través de la reducción de dimensionalidad, y el principio de reducción de dimensionalidad es la multiplicación de matrices. En términos de comprensión semántica, la interpretación de diferentes caracteres en vectores puede realizar operaciones matemáticas en ellos.

Para el transformador, cada vector de palabra tiene su propia ruta hacia el codificador, y la ruta y la ruta están conectadas entre sí.

2. Ingrese al mecanismo de atención

El primer paso: Luego de ingresar al módulo de autoatención desde el vector palabra, se generan tres vectores palabra multiplicando tres matrices, q, k, v. A continuación te explicaré el proceso a través de un ejemplo simple. Lo entenderás en el proceso. de diferentes vectores:

Por ejemplo, cuando tratamos con la oración "Head First Java", para el vector de palabra Head, q1 multiplica el punto por k1, k2, k3 para obtener tres puntajes. Este es el vector de palabras q1 para Head, First y The degree de atención de las tres palabras de Java,

Bien, ahora tenemos tres puntuaciones de vectores de palabras que representan el grado de evaluación de q1 en las tres partes:

El segundo paso, lo que tenemos que hacer es dividir por el resultado de la raíz cuadrada de la primera dimensión debajo del signo de la raíz:

La fórmula específica es:
Inserte la descripción de la imagen aquí

El tercer paso es pasar esta puntuación a través de la función softmax, que es la operación de normalización, para obtener[Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo de enlace anti-sanguijuela. Se recomienda guardar la imagen y subirla directamente (img-lBLZwgQI-1610413482406) (archivo: /// C: \ Users \ 李子毅\ AppData \ Local \ Temp \ ksohtml5400 \ wps2.png)]

La función softmax es una función de activación clásica, a menudo utilizada en problemas de clasificación múltiple: puede mapear la salida de múltiples neuronas al intervalo (0,1), que es la probabilidad de diferentes valores de mapeo:

La imagen de abajo proviene de conocer a @PP 鲁

avance

De esta forma, al final conseguimos que el grado de atención de este vector de palabras se dirija hacia otras partes.

Paso 4: Multiplique cada uno obtenido por el [Error en la transferencia de la imagen del enlace externo. El sitio de origen puede tener un mecanismo de enlace anti-sanguijuelas. Se recomienda guardar la imagen y subirla directamente (img-3VTem6It-1610413482408) (archivo: /// C: \ Users \ 李子毅\ AppData \ Local \ Temp \ ksohtml5400 \ wps2.png)]
correspondiente [Error en la transferencia de la imagen del enlace externo. Es posible que el sitio de origen tenga un mecanismo de enlace anti-sanguijuela. Se recomienda guardar la imagen y subirla directamente (img-denyqyKn-1610413482408) (archivo: /// C: \ Users \ 李子毅\ AppData \ Local \ Temp \ ksohtml5400 \ wps3.png)]
(vector de valor), retenga el valor de la palabra de interés, debilite el valor de otras palabras no enfocadas, sume todos los vectores para obtener el resultado final [Error en la transferencia de imagen del enlace externo. El sitio de origen puede tener un mecanismo de enlace anti-sanguijuela. Se recomienda guardar la imagen y subirla directamente (img-dyw3dJbv-1610413482409) (archivo: /// C: \ Users \ 李子毅\ AppData \ Local \ Temp \ ksohtml5400 \ wps4.png)]
, pero en aras de la velocidad, en De hecho, lo anterior El proceso se realiza mediante la matriz, que no se mostrará aquí.

El mecanismo recién agregado del papel: Atención de múltiples cabezales:

Con base en el mecanismo de auto-atención, cada vector q, k, v se descompone en múltiples cabezas, y cada cabeza solo puede realizar las operaciones de punto y producto correspondientes para obtener dos bs, que se multiplican por pesos. La matriz se empalma En ab

2.Añadir y normalización 操作

Para el vector b obtenido, realizamos el procesamiento de normalización de Añadir y Normalización, el flujo de procesamiento es el siguiente:

Para cada b, realizamos la operación b '= a + b, donde a es el vector de entrada, y luego realizamos el procesamiento LayerNormalization (normalización horizontal),

LayerNormalization: el método clásico de estandarización de distribución normal para estandarizar y luego agregar la salida de la función de activación

Finalmente, ingresamos los datos de salida en la red neuronal feedforward y realizamos la operación Agregar y normalización

2.Parte del decodificador (decodificador)

Hay una auto-atención de múltiples cabezales más enmascarada que el codificador, que se usa para ocultar información futura y solo prestar atención a la información de secuencia que se ha generado

La entrada de la parte del Decodificador es la salida generada en el paso de tiempo anterior, y entra al decodificador a través de la incorporación de la salida más información de posición. El proceso específico es el siguiente:

El primer paso: ingrese la atención personal de múltiples cabezas, oculte la información futura y solo enfóquese en la información de la secuencia actual

Paso 2: proceso de normalización de adición y normalización

Paso 3: Ingrese el componente Atención de cabezales múltiples, la entrada en este momento es la salida final K y V del codificador, y el vector (vector de contexto) obtenido por el proceso de normalización en el paso anterior

Paso 4: el mismo proceso de adición y normalización que el codificador, la red neuronal de avance, el proceso de adición y normalización.

Paso 5: Convierta vectores de punto flotante en palabras: se necesitan capas lineales y softmax en este momento

La capa lineal es una capa simple completamente conectada que mapea la salida final del decodificador a un vector logits muy grande. Suponga que se sabe que el modelo tiene 10,000 palabras (el vocabulario de salida) aprendidas del conjunto de entrenamiento. Entonces, el vector logits tiene 10,000 dimensiones y cada valor representa el posible valor de tendencia de una determinada palabra.

La capa softmax convierte estos valores en probabilidades. Este proceso se ha discutido anteriormente. La palabra correspondiente a la dimensión correspondiente al valor más alto es la palabra final de salida predicha

Supongo que te gusta

Origin blog.csdn.net/weixin_45717055/article/details/112506230
Recomendado
Clasificación