Resumen del modelo GPT [estructura del modelo y proceso de cálculo_detalles]

modelo GPT

Modelo GPT: Pre-Entrenamiento Generativo

La estructura general:

Entrenamiento previo no supervisado
Ajuste fino supervisado para tareas posteriores
inserte la descripción de la imagen aquí

Estructura central: la parte central se compone principalmente de 12 bloques de decodificador de transformador apilados

La siguiente imagen refleja de manera más intuitiva la estructura general del modelo:
inserte la descripción de la imagen aquí

Descripcion del modelo

GPT usa la estructura del decodificador de Transformer y realiza algunos cambios en el decodificador de Transformer. El decodificador original contiene dos estructuras de atención de múltiples cabezales, y GPT solo retiene la atención de máscara de múltiples cabezales, como se muestra en la figura a continuación .
(Muchos datos dicen que es similar a la estructura del decodificador, porque se usa el mecanismo de máscara del decodificador, pero aparte de esto, en realidad se parece más al codificador, por lo que a veces se implementa ajustando el codificador en su lugar. No se )
inserte la descripción de la imagen aquí

En comparación con la estructura del transformador original.
inserte la descripción de la imagen aquí

descripción de la etapa

Fase previa al entrenamiento:

inserte la descripción de la imagen aquí
Para una secuencia de palabras de ventana x'=x de longitud k
inserte la descripción de la imagen aquí

La etapa previa al entrenamiento es la predicción de texto, es decir, la predicción de la palabra actual en función de las palabras históricas existentes. Las tres fórmulas 7-2, 7-3 y 7-4 corresponden al diagrama de estructura GPT anterior, y la salida P (x) es la salida. La probabilidad de que se prediga cada palabra, y luego use la fórmula 7-1 para calcular la función de máxima verosimilitud, y construya una función de pérdida basada en esto, es decir, el modelo de lenguaje se puede optimizar.

Etapa de ajuste de tareas aguas abajo

inserte la descripción de la imagen aquí

función de pérdida

Una combinación lineal de tareas aguas abajo y pérdidas de tareas aguas arriba
inserte la descripción de la imagen aquí

proceso de cálculo:

  1. ingresar
  2. incrustación
  3. Bloque transformador multicapa
  4. Obtener dos resultados de salida
  5. calcular la pérdida
  6. retropropagación
  7. actualizar parámetros

Un código de ejemplo de GPT específico:
puede ver que en la función directa del modelo GPT, la operación de incrustación se realiza primero, luego la operación se realiza en el bloque del transformador de 12 capas y luego el valor de cálculo final se obtiene a través de dos transformaciones lineales (una para la predicción de texto), una para el clasificador de tareas), el código es consistente con el diagrama de estructura del modelo que se muestra al principio.
Referencia: No se moleste
inserte la descripción de la imagen aquí
con el código de implementación Python GPT Centrémonos en los pasos de cálculo 2 y 3

Detalles del cálculo:

[Capa de incrustación]:

La capa de incrustación para la operación de búsqueda de tablas
es una capa totalmente conectada con un nodo activo como entrada y nodos de capa intermedia como dimensiones de vector de palabra. Y el parámetro de esta capa totalmente conectada es una "tabla de vectores de palabras".
inserte la descripción de la imagen aquí
La multiplicación de matrices del tipo activo es equivalente a una búsqueda en una tabla, por lo que utiliza directamente la búsqueda en una tabla como una operación en lugar de escribirla en una matriz para el cálculo, lo que reduce en gran medida la cantidad de cálculo. Se enfatiza nuevamente que la reducción en la cantidad de cómputo no se debe a la aparición de vectores de palabras, sino a que la operación de una matriz caliente se simplifica a una operación de búsqueda de tabla.

[Capa de decodificador similar al transformador en GPT]:

inserte la descripción de la imagen aquí
Cada capa del decodificador contiene dos subcapas

  1. subcapa1: capa de atención de múltiples cabezas para máscara
  2. subcapa2: ffn (red de avance) red de avance (perceptrón multicapa)

subcapa1: capa de atención de múltiples cabezas de la máscara

输入:q, k, v, máscara
计算注意力:Lineal (multiplicación de matriz)→Atención de producto punto escalado→Concat (resultados de atención múltiple, remodelación)→Lineal(multiplicación de matriz)

残差连接和归一化操作:Operación de abandono → conexión residual → operación de normalización de capa
inserte la descripción de la imagen aquí

proceso de cálculo:

El siguiente párrafo describe el proceso general de cálculo de la atención:
inserte la descripción de la imagen aquí

Instrucciones de explosión:

Mascarilla Multi-cabeza Atención

1. Multiplicación de matrices:

Transformar la entrada q, k, v
inserte la descripción de la imagen aquí

2. Atención de producto de punto escalado

Lo principal es realizar el cálculo de atención y la operación de máscara.Operación de máscara
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
: masked_fill_(máscara, valor)
operación de máscara, rellena con valor el elemento en el tensor correspondiente al valor 1 en la máscara. La forma de la máscara debe coincidir con la forma del tensor a rellenar. (Aquí, se usa el relleno -inf, de modo que el softmax se convierte en 0, lo que equivale a no ver las siguientes palabras)
La operación de máscara en el transformador

Matriz de visualización después de la máscara:
la comprensión intuitiva es que cada palabra solo puede ver la palabra anterior (porque el propósito es predecir la palabra futura, si la ve, no necesita predecirla)
inserte la descripción de la imagen aquí

3. Operación concat:

La combinación de los resultados de múltiples cabezas de atención en realidad transforma la matriz: operaciones de permutación, remodelación y reducción de la dimensionalidad. (Como se muestra en el recuadro rojo de la siguiente figura)
inserte la descripción de la imagen aquí

4. Multiplicación de matrices: una capa lineal, que transforma linealmente los resultados de atención

La capa de atención de múltiples cabezales de toda la máscara 代码:
inserte la descripción de la imagen aquí
Nota: las siguientes líneas en el código anterior son para 残差连接和归一化操作
explicar el proceso de resultados de atención:

Operaciones de normalización y conexión residual:

5. Capa de abandono

6. Adición de matrices

7. Normalización de capas

La normalización por lotes es la normalización de una sola neurona entre diferentes datos de entrenamiento, y la normalización de capa es la normalización de un solo dato de entrenamiento entre todas las neuronas de una determinada capa.
Normalización de entrada, normalización por lotes (BN) y normalización de capas (LN)

代码展示:
inserte la descripción de la imagen aquí

subcapa2: ffn (red de avance) red de avance

1. Capa lineal (multiplicación de matrices)

2. Activación de la función Relu

3. Capa lineal (multiplicación de matrices)

4. Operación de abandono

5. Normalización de capas

inserte la descripción de la imagen aquí

[Capa lineal]:

Los resultados de salida del bloque multicapa se colocan en dos capas lineales para la transformación, que es relativamente simple y no se describirá en detalle.

Suplemento: Diagrama de flujo de la capa de atención

inserte la descripción de la imagen aquí

Referencias

1. Documento de referencia: Radford et al., "Mejora de la comprensión del lenguaje mediante el entrenamiento previo generativo"
2. Libro de referencia: "Procesamiento del lenguaje natural basado en el método del modelo de entrenamiento previo" Che Wanxiang, Guo Jiang, Cui Yiming
3. La fuente del código en este artículo: No se moleste con el código de implementación Python GPT
4. Otros enlaces de referencia (partes mencionadas en la publicación del blog):
Análisis del proceso de cálculo de incrustación de Word
Análisis de la dimensión de la matriz del transformador y explicación detallada de la máscara

Supongo que te gusta

Origin blog.csdn.net/weixin_45577864/article/details/119651372
Recomendado
Clasificación