Deep Learning Series 25: Mecanismo de atención

1. De la incrustación al Codificador-Decodificador

1.1 Incrustación

La incrustación puede convertir texto e imágenes en vectores (vectores de características de punto flotante k-dimensionales).
Por ejemplo, la longitud de la oración que ingresamos es 7 y el tamaño del diccionario es 100. El código intuitivo de incrustación que convierte cada número entero en un decimal bidimensional es el siguiente:

from keras.models import Sequential
from keras.layers import Embedding
model = Sequential()
model.add(Embedding(100,2, input_length=7))#输入维,输出维
data = np.array([[0,2,0,1,1,0,0],[0,1,1,2,1,0,0],[0,1,12,1,15,0,1]])
model.predict(data) # 输入维度(3,7)整型,输出维度(3,7,2)浮点类型

Las imágenes también se pueden usar para incrustar, necesitamos N ∗ N ∗ 256 N*N*256nortenorte2 5 6 (los dos primeros son el tamaño, el último es la escala de grises) imagen conN / 16 ∗ N / 16 ∗ 1000 N/16*N/16*1000N / 1 6N / 1 61 0 0 0 para representar, cada 16 píxeles se consideran como un bloque de píxeles, entonces el bloque de píxeles es un número entero de 1616256, que debe asignarse a un número de coma flotante de 1000 dimensiones.
La red de incrustación es[ 16 ∗ 16 ∗ 256 , 1000 ] [16*16*256,1000][ 1 61 62 5 6 ,1 0 0 0 ] matriz de coma flotante, los datos de 1000 dimensiones de cada fila son la representación incrustada de cada bloque.

1.2 Estructura codificador-decodificador

Codificador-Decodificador se refiere al siguiente modelo:
inserte la descripción de la imagen aquí
Con respecto al Codificador-Decodificador básico, hay 2 puntos a explicar:
1) Independientemente de la longitud de la entrada y la salida, la longitud del "vector c" en el medio es fija ( este es también su defecto, que se describirá en detalle a continuación)
De acuerdo con las diferentes tareas, se pueden seleccionar diferentes codificadores y decodificadores (puede ser un RNN, pero generalmente su variante LSTM o GRU)
2) Siempre que se ajuste a la marco anterior, se puede denominar colectivamente como modelo de codificador-decodificador. Cuando se trata del modelo Codificador-Decodificador, a menudo se menciona un término: Seq2Seq.

Seq2Seq (abreviatura de Sequence-to-sequence) , al igual que el significado literal, ingresa una secuencia y genera otra secuencia. Lo más importante de esta estructura es que las longitudes de las secuencias de entrada y salida son variables. Seq2Seq (énfasis en el propósito) no se refiere específicamente a métodos específicos, y se puede denominar colectivamente como el modelo Seq2Seq si cumple con el propósito de "secuencia de entrada y secuencia de salida". Las aplicaciones comunes son: traducción automática, robots conversacionales, generación de poesía, finalización de código, resumen de artículos (texto-texto). Encoder-Decoder es una especie de Seq2Seq, es decir, hay un vector C de longitud fija en el medio:
inserte la descripción de la imagen aquí

2 Atención

2.1 mecanismo de atención

Codificador-Decodificador Cuando la información de entrada es demasiado larga, parte de la información se perderá (se prioriza la longitud de codificación y se comprime durante la codificación, por lo que la pérdida de información es inevitable). El mecanismo de atención es para resolver el problema de "la información es demasiado larga y la información se pierde". En pocas palabras, la característica del modelo de atención es que el codificador ya no codifica toda la secuencia de entrada en un "vector intermedio C" de longitud fija. , pero lo codifica en una secuencia de vectores.
El modelo Codificador-Decodificador que introduce la atención es como se muestra en la siguiente figura. En pocas palabras, es: ingrese X (código K) continuamente, calcule C (atención) continuamente y decodifique en Y (código Q) continuamente. En un ejemplo, ingrese X como kono
inserte la descripción de la imagen aquí
eiga ga kirai (この影画が见い), el orden de las palabras en japonés es diferente al inglés.
inserte la descripción de la imagen aquí
La matriz de atención aquí se obtiene multiplicando el odio y el texto japonés original. Concéntrate en la primera palabra kono, es decir, el comienzo de este correspondiente a odio es la palabra kono.
Veamos el método para calcular los datos de atención. Su entrada es el vector de características KK a traducirK (vectores clave), un vector de características de salida actualQ i Q_iqyo(vectores de consulta), la función de cálculo es ai = F ( Q i , K ) a_i=F(Q_i,K)ayo=F ( Qyo,K ) . Si las dimensiones de q y k son las mismas, puede usar directamente la multiplicación por puntos:a = q T ka=q^Tka=qT k; si las dimensiones son diferentes, puede agregar una matriz de parámetros de aprendizaje W:a = q TW ka=q^TWka=qT Wk. Además, es mejor hacer una normalización:a = q T k / ∣ k ∣ a=q^Tk/\sqrt{|k|}a=qT k/k

2.2 Mecanismo de autoatención

Si Q y K son iguales, se llama mecanismo de autoatención. El módulo general de incrustación de palabras aprende la relación entre palabras, mientras que el módulo de autoatención aprende la relación entre palabras en el contexto de la oración (el transformador incluso agrega explícitamente la codificación de posición). Tenga en cuenta que es diferente del mecanismo de Atención. En Atención, tenemos un par de datos de entrenamiento, pero la atención propia no.
Dicho de otra manera : supongamos que se nos da un texto de entrada y comenzamos con incrustaciones de palabras W en el texto. Necesitamos encontrar un método de incrustación para medir la importancia de otras incrustaciones de palabras en el mismo texto con respecto a W, y combinar su información para crear una incrustación W' actualizada.
El método específico es : el mecanismo de autoatención proyectará linealmente cada palabra en el texto de entrada incrustado en tres espacios diferentes (estas matrices deben aprenderse durante el proceso de entrenamiento), generando así tres nuevas representaciones: la consulta consulta, clave clave y valor valor Estas nuevas incorporaciones se utilizarán para obtener una puntuación que representará la dependencia entre W y cada Wn (si W depende de W', el resultado será un número positivo alto en valor absoluto, si W no depende de la correlación de W', el resultado es un valor muy negativo en valor absoluto). Esta puntuación se utilizará para combinar información de diferentes incrustaciones de palabras Wn para crear una incrustación e actualizada para el valor v de la palabra W.
inserte la descripción de la imagen aquí
En forma matricial, la expresión intuitiva es la siguiente:
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
tenga en cuenta que la dimensión de estos nuevos vectores es más pequeña que la dimensión del vector de palabra de entrada (512–>64), no necesariamente pequeña, para poder realizar el cálculo de varios cabezales. atención más estable.

El siguiente es un ejemplo : Para la oración "Thinking Matchines", calcule el puntaje de atención para "Thinking" (pos#1). Necesitamos calcular el puntaje de evaluación de cada palabra y "Pensamiento", que determina cuánta atención se debe enfocar en cada palabra de entrada al codificar "Pensamiento" (en una posición fija).
Esta puntuación se obtiene haciendo secuencialmente el producto escalar del vector de consulta correspondiente a "Cosa" y el vector clave de todas las palabras. Entonces, cuando nos ocupamos de la posición #1, el primer puntaje es el producto escalar de q1 y k1, y el segundo puntaje es el producto escalar de q1 y k2. Divida por 8, para que el gradiente sea más estable. Luego agregue la operación softmax y normalice los puntajes para que todos sean positivos y sumen 1. Multiplique la puntuación de softmax con el valor-vec bit a bit. Mantenga el valor de las palabras en cuestión y debilite el valor de las palabras no relacionadas. Todos los vectores ponderados se suman para producir la salida de la autoatención en esa posición.
inserte la descripción de la imagen aquí

La siguiente figura es un ejemplo de visualización de autoatención:
inserte la descripción de la imagen aquí
en la figura se muestra un codificador-decodificador utilizado para el entrenamiento:
inserte la descripción de la imagen aquí

2.3 Mecanismo de autoatención de imagen/video y mecanismo de atención cruzada

Para unificar imágenes y videos, representamos imágenes con datos tridimensionales (ancho, alto, marco). Para la imagen X ∈ R h × w × s X\in R^{h\times w\times s}XRCualquier punto en h × w × s ( i , j , k ) (i,j,k)( yo ,j ,k ) ,
inserte la descripción de la imagen aquí
donde N es el punto( i , j , k ) (i,j,k)( yo ,j ,k ) área adyacente (equivalente a agregar codificación de posición).

El mecanismo de atención cruzada tiene dos entradas X y C, donde C se usa para calcular N, y los demás son iguales. Simplemente podemos agregar los dos juntos como un decodificador:
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/kittyzc/article/details/124660656
Recomendado
Clasificación