Informe de investigación de Transformer sobre cómo satisfacer las necesidades de la empresa.

1. Estructura

Comience con una perspectiva macro

Primero piense en este modelo como una operación de caja negra. En la traducción automática, la entrada es un idioma y la salida es otro.

inserte la descripción de la imagen aquí

Luego desensamblar esta caja negra, podemos ver que está compuesta por componentes de codificación, componentes de decodificación y las conexiones entre ellos.

[Falló la transferencia de la imagen del enlace externo, el sitio de origen puede tener un mecanismo anti-leeching, se recomienda guardar la imagen y cargarla directamente (img-zODxxPb8-1669790754903)(en-resource://database/607:1)]

La parte del componente de codificación se compone de un grupo de codificadores (codificadores) (en el documento, 6 codificadores están apilados juntos; no hay nada mágico en el número 6, y también se pueden probar otros números). La parte componente de decodificación también está compuesta por el mismo número (correspondiente al codificador) del decodificador (descodificador).

inserte la descripción de la imagen aquí

Todos los codificadores son estructuralmente idénticos, pero no comparten parámetros. Cada decodificador se puede descomponer en dos subcapas.
inserte la descripción de la imagen aquí

La entrada de oraciones del codificador pasará primero por una capa de autoatención, lo que ayuda al codificador a prestar atención a otras palabras en la oración de entrada al codificar cada palabra (cómo enfocarse en la autoatención, se explica a continuación)

La salida de la capa de autoatención se pasa a una red neuronal de avance. La red neuronal de avance correspondiente a la palabra en cada posición es exactamente la misma (Anotación: otra interpretación es una red neuronal convolucional unidimensional con una ventana de capa de una palabra)

El decodificador también tiene las capas de autoatención y alimentación directa del codificador. Además, hay una capa de atención entre estas dos capas para enfocarse en las partes relevantes de la oración de entrada (similar a la función de atención del modelo seq2seq).

inserte la descripción de la imagen aquí

Traiga tensores a la imagen

Ya hemos entendido la parte principal del modelo, veamos varios vectores o tensores Cómo las entradas se transforman en salidas en diferentes partes del modelo.

Como la mayoría de las aplicaciones de NLP, cada palabra de entrada se convierte primero en una palabra incrustada mediante un algoritmo de incrustación de palabras .
inserte la descripción de la imagen aquí

Cada palabra está incrustada como un vector de 512 dimensiones, representado por estos simples cuadros.

El proceso de incrustación de palabras solo ocurre en el codificador inferior. Todos los codificadores tienen la misma característica, es decir, reciben una lista de vectores, cada vector de la lista tiene un tamaño de 512 dimensiones. En el codificador inferior (primero) es la palabra vector, pero en otros codificadores es la salida del siguiente codificador (también una lista de vectores). El tamaño de la lista de vectores es un hiperparámetro que podemos configurar, generalmente la longitud de la oración más larga en nuestro conjunto de entrenamiento.

Después de incrustar la secuencia de entrada, cada palabra fluye a través de dos subcapas en el codificador.

inserte la descripción de la imagen aquí

A continuación, concéntrese en una función central del Transformador, donde las palabras en cada posición en la secuencia de entrada tienen su propia ruta única hacia el codificador. En la capa de autoatención, existen dependencias entre estas rutas. Las capas de avance no tienen estas dependencias. Por lo tanto, se pueden ejecutar varias rutas en paralelo mientras se alimentan las capas.

Tome una oración más corta como ejemplo y vea qué sucede en cada subcapa del codificador.

Cómo "codificar"

Como se mencionó anteriormente, un codificador recibe una lista de vectores como entrada y luego pasa los vectores en la lista de vectores a la capa de autoatención para su procesamiento, y luego a la capa de red neuronal feedforward, y luego pasa la salida a la siguiente codificador en el dispositivo

Cada palabra de la secuencia de entrada pasa por un proceso de codificación automática. Luego, cada uno pasa a través de una red neuronal de propagación directa: exactamente la misma red, y cada vector la atraviesa por separado.

Mecanismo de autoatención desde una perspectiva macro

Echa un vistazo a cómo funciona.

Por ejemplo, la siguiente oración es la oración de entrada que se va a traducir:

El animal no cruzó la calle porque estaba demasiado cansado.

¿A qué se refiere "eso" en esta oración? ¿Se refiere a la calle o al animal? Este es un problema fácil para los humanos, pero no para los algoritmos.

Cuando el modelo procese la palabra "eso", el mecanismo de autoatención permitirá asociar "eso" con "animal".

A medida que el modelo procesa cada palabra de la secuencia de entrada, la autoatención se centra en todas las palabras de la secuencia de entrada completa, lo que ayuda al modelo a codificar mejor la palabra. Y el mecanismo de autoatención incorporará la comprensión de todas las palabras relacionadas en la palabra que estamos procesando.

Cuando codificamos la palabra "eso" en el codificador (el codificador superior de la pila), la parte de atención presta atención a "El Animal", codificando parte de su representación en la codificación de "eso".

Mecanismo de autoatención desde una perspectiva micro

Primero, comprendamos cómo usar vectores para calcular la autoatención y luego veamos cómo se puede implementar con matrices.

El primer paso para calcular la autoatención es generar tres vectores a partir de los vectores de entrada de cada codificador (vectores de palabra para cada palabra). Es decir, para cada palabra creamos un vector de consulta, un vector clave y un vector de valor. Los tres vectores se crean multiplicando incrustaciones de palabras con tres matrices de peso

Se puede encontrar que estos nuevos vectores tienen una dimensionalidad más baja que los vectores de incrustación de palabras. Su dimensión es 64, y la dimensión del vector de entrada/salida de la incrustación de palabras y el codificador es 512. Pero, de hecho, no se requiere que tenga una dimensión más pequeña. Esta es solo una elección arquitectónica, que puede hacer que la atención de múltiples cabezas (multiheaded atención) ) permanece sin cambios para la mayoría de los cálculos

inserte la descripción de la imagen aquí

X1 se multiplica por la matriz de peso WQ para obtener q1, que es el vector de consulta relacionado con esta palabra. Finalmente, cada palabra de la secuencia de entrada crea un vector de consulta, un vector clave y un vector de valor

¿Qué son los vectores de consulta, los vectores clave y los vectores de valor?

Ambos son conceptos abstractos que son útiles para calcular y comprender los mecanismos de atención.

El segundo paso para calcular la autoatención es calcular la puntuación. Asumiendo este ejemplo, para calcular el vector de autoatención para la primera palabra "Pensando", necesita calificar "Pensando" para cada palabra en la oración de entrada. Estos puntajes determinan cuánto peso se le da al resto de la oración al codificar la palabra "Pensando".

Estos puntajes se calculan mediante la producción de puntos de los vectores clave de las palabras de puntaje (todas las palabras en la oración de entrada) con el vector de consulta para "Pensar". Entonces, si estamos tratando con la autoatención de las palabras principales, el primer puntaje es el producto escalar de q1 y k1, y el segundo puntaje es el producto escalar de q1 y k2.

Los pasos tercero y cuarto consisten en dividir la puntuación por 8 (8 es la raíz cuadrada de la dimensión 64 del vector clave utilizado en el documento, lo que hará que el gradiente sea más estable. Aquí se pueden utilizar otros valores, 8 es solo el valor predeterminado), y luego pase el resultado a través de softmax. La función de softmax es normalizar las puntuaciones de todas las palabras, y las puntuaciones obtenidas son todas positivas y suman 1.
inserte la descripción de la imagen aquí

Esta puntuación softmax determina la contribución de cada palabra a la codificación de la posición actual ("Pensamiento"). Obviamente, la palabra que ya está en esta posición obtendrá la puntuación máxima más alta, pero a veces ayuda centrarse en otra palabra relacionada con la palabra actual.

El quinto paso es multiplicar cada vector de valor por la puntuación de softmax (esto es una preparación para sumarlos después). La intuición aquí es querer enfocarse en palabras relacionadas semánticamente y restar importancia a las palabras irrelevantes (por ejemplo, multiplicándolas por un decimal como 0.001).

El sexto paso es sumar los vectores de valores ponderados. El producto escalar de la representación (vector clave) y la representación de la palabra codificada (vector de consulta) se obtiene mediante softmax.), y luego la salida de la capa de autoatención en esta posición ( en nuestro ejemplo, para la primera palabra) .
inserte la descripción de la imagen aquí

De esta forma, se completa el cálculo de la autoatención. Los vectores resultantes se pueden pasar a una red neuronal de avance (
la red neuronal de avance es bastante fácil. Las capas ocultas se usan para agregar no linealidad y cambiar la representación de los datos para generalizar mejor la función). En la práctica, sin embargo, estos cálculos se realizan en forma matricial para ser más rápidos. Entonces, ¿cómo hacerlo con matriz?

Darse cuenta del mecanismo de autoatención a través de la operación matricial

El primer paso es calcular la matriz de consulta, la matriz clave y la matriz de valor. Para hacer esto, necesitamos cargar la palabra incrustada de la oración de entrada en una matriz X y multiplicarla por nuestra matriz de peso entrenada (WQ, WK, WV).

Cada fila en la matriz x corresponde a una palabra en la oración de entrada. Volvemos a ver la diferencia en el tamaño del vector de incrustación de palabras (512 o 4 cuadrículas en la figura) y el vector q/k/v (64 o 3 cuadrículas en la figura).

Finalmente, dado que estamos tratando con matrices, podemos combinar los pasos 2 a 6 en una fórmula para calcular la salida de la capa de autoatención.
inserte la descripción de la imagen aquí

"Batalla de la Hidra"

Al agregar un mecanismo llamado atención de "múltiples cabezas", el documento mejora aún más la capa de autoatención y mejora el rendimiento de la capa de atención de dos maneras:

1. Amplía la capacidad del modelo para centrarse en diferentes ubicaciones. En el ejemplo anterior, aunque cada codificación está más o menos representada en z1, puede estar dominada por la propia palabra. Si estuviéramos traduciendo una oración como "El animal no cruzó la calle porque estaba demasiado cansado", querríamos saber a qué palabra se refiere "eso", y aquí es donde el mecanismo de atención de "múltiples cabezas" del modelo entra en juego.

2. Da múltiples "subespacios de representación" de la capa de atención. Para un mecanismo de atención de "múltiples cabezas", hay varios conjuntos de matrices de peso de consulta/clave/valor (Transformer usa ocho cabezas de atención, por lo que cada codificador/decodificador tiene ocho conjuntos de matrices). Cada uno de estos conjuntos se inicializa aleatoriamente y, después del entrenamiento, cada conjunto se usa para proyectar incrustaciones de palabras de entrada (o vectores de codificadores/decodificadores inferiores) en diferentes subespacios de representación.

Bajo el mecanismo de atención de "múltiples cabezas", cada cabeza mantiene una matriz de peso de consulta/clave/valor independiente, lo que da como resultado diferentes matrices de consulta/clave/valor. Como antes, multiplicamos X por la matriz WQ/WK/WV para producir la matriz consulta/clave/valor.

Si se realiza el mismo cálculo de autoatención que el anterior, solo se requieren ocho operaciones de matriz de peso diferentes, se obtendrán ocho matrices Z diferentes.
inserte la descripción de la imagen aquí

La capa feed-forward no necesita 8 matrices, solo necesita una matriz (que consiste en los vectores de representación para cada palabra). Entonces necesitamos una forma de comprimir estas ocho matrices en una matriz. ¿Qué tengo que hacer? De hecho, estas matrices pueden unirse directamente y luego multiplicarse con una matriz de peso adicional WO.
inserte la descripción de la imagen aquí

Eso es prácticamente todo lo que hay que hacer con la autoatención. Esto tiene muchas matrices, así que intente juntarlas en una imagen para que se puedan ver de un vistazo.
inserte la descripción de la imagen aquí

Ahora que las muchas "cabezas" del mecanismo de atención están claras, ¿dónde se enfocan las diferentes "cabezas" de atención al codificar la palabra "eso" en la oración de ejemplo:
inserte la descripción de la imagen aquí

Cuando codificamos la palabra "eso", una cabeza de atención se enfoca en "animal" mientras que la otra se enfoca en "cansado", en el sentido de que la representación del modelo de la palabra "eso" es en cierta medida el representante de "animal". y cansado"

Sin embargo, si se pone toda la atención en el diagrama, las cosas son más difíciles de explicar:

Uso de codificaciones posicionales para indicar el orden de secuencia

¿Qué es la codificación posicional?

La codificación posicional puede decirle al modelo de Transformers la posición o posición de una entidad/palabra en la secuencia, asignando así una representación única a cada posición. Aunque la forma más sencilla es usar valores de índice para representar la posición, para secuencias largas, el valor de índice se volverá muy grande, lo que causará muchos problemas. La codificación de posición asigna cada posición/índice a un vector. Entonces, la salida de la capa de codificación de posición es una matriz donde cada fila de la matriz es la suma de la palabra codificada en la secuencia y su información de posición.

La descripción del modelo hasta ahora carece de una forma de comprender el orden de las palabras de entrada.

Para resolver este problema, Transformer agrega un vector a cada palabra de entrada incrustada. Estos vectores siguen patrones específicos aprendidos por el modelo, que ayudan a determinar la posición de cada palabra o la distancia entre diferentes palabras en una secuencia. La intuición aquí es que agregar vectores de posición a las incrustaciones de palabras los hace más capaces de expresar distancias de palabra a palabra en operaciones posteriores.

Cómo entender el orden de las palabras

Para que el modelo comprenda el orden de las palabras, se agregan vectores de codificación posicional, cuyos valores siguen un patrón específico.

Si asumimos incrustaciones de palabras de dimensión 4, las codificaciones posicionales reales son las siguientes:

inserte la descripción de la imagen aquí

Ejemplo de codificación posicional de incrustaciones de minipalabras de tamaño 4

¿Cómo sería este patrón?

En la figura a continuación, cada fila corresponde a la codificación posicional de un vector de palabra, por lo que la primera fila corresponde a la primera palabra de la secuencia de entrada. Cada fila contiene 512 valores, cada uno entre 1 y -1. Los hemos codificado por colores para que el patrón sea visible.

inserte la descripción de la imagen aquí

Ejemplo de codificación posicional para 20 palabras (filas), tamaño de inserción de palabra 512 (columnas). Puedes verlo dividido por la mitad por la mitad. Esto se debe a que los valores de la mitad izquierda los genera una función (usando el seno) y los valores de la mitad derecha los genera otra función (usando el coseno). Luego, estos se concatenan para obtener cada vector de codificación de posición (este no es el único método de codificación de posición posible. Sin embargo, tiene la ventaja de poder escalar a longitudes de secuencia desconocidas)

módulo residual

Antes de continuar, es necesario mencionar un detalle en la arquitectura del codificador: en cada codificador, cada subcapa (autoatención, red de avance) está rodeada por una conexión residual, seguida de un paso de "Normalización de capa".
Método de normalización de capas:
inserte la descripción de la imagen aquí

paso de normalización de capa:

Si visualizamos estos vectores y la operación de normalización de capas asociada con la autoatención, se ve como la siguiente descripción de la imagen:

inserte la descripción de la imagen aquí

componente de decodificación

¿Cuáles son los detalles del decodificador?

Los codificadores comienzan procesando una secuencia de entrada. La salida del codificador superior se transforma luego en un conjunto de vectores de atención que consiste en los vectores K (vector clave) y V (vector de valor). Cada decodificador utilizará estos vectores para su propia "capa de atención de codificador-decodificador", y estas capas pueden ayudar al decodificador a prestar atención a dónde es apropiada la secuencia de entrada:

Una vez completada la fase de codificación, comienza la fase de decodificación. Cada paso de la fase de decodificación genera un elemento de la secuencia de salida (en este caso, la traducción al inglés de la oración)

Los pasos subsiguientes repiten este proceso hasta que se alcanza un símbolo de terminación especial, que indica que el decodificador del transformador ha completado su salida. La salida de cada paso se alimenta al decodificador inferior en el siguiente paso de tiempo, y estos decodificadores emiten sus resultados decodificados tal como lo hizo antes el codificador. Además, tal como hicimos con las entradas del codificador, incorporamos y agregamos codificaciones posicionales a esos decodificadores para representar la posición de cada palabra.

Y las capas de autoatención en esos decodificadores se comportan de manera diferente a los codificadores: en el decodificador, las capas de autoatención solo pueden procesar esas posiciones antes en la secuencia de salida. Antes del paso softmax, oculta las posiciones posteriores (establecerlas en -inf).

Esta "capa de atención de codificación y decodificación" funciona básicamente como una capa de autoatención de varios cabezales, excepto que crea la matriz de consulta a través de las capas debajo de ella y toma la matriz clave/valor de la salida del codificador.

Transformación lineal final y capa Softmax

El componente de decodificación finalmente genera un vector de números reales. Pero, ¿cómo convertir un flotador en una palabra? Esto es lo que hace la capa de transformación lineal, seguida de la capa Softmax.

La capa de transformación lineal es una red neuronal simple totalmente conectada que proyecta el vector producido por el componente de decodificación en un vector mucho más grande llamado logits.

Digamos que nuestro modelo aprende 10,000 palabras diferentes en inglés del conjunto de entrenamiento (el "vocabulario de salida" de nuestro modelo). El vector log-odds es, por lo tanto, un vector de 10.000 celdas de largo: cada celda corresponde a una puntuación para una determinada palabra.

La siguiente capa Softmax convertirá esos puntajes en probabilidades (ambos números positivos con un límite superior de 1.0). Se selecciona la celda con la probabilidad más alta y su palabra correspondiente se usa como salida para este paso de tiempo.
inserte la descripción de la imagen aquí

La imagen comienza en la parte inferior con el vector de salida producido por el componente decodificador. Luego convierte una palabra de salida.

Resumen de la sección de entrenamiento

Ahora que hemos pasado por el proceso completo de propagación directa del transformador, podemos experimentar intuitivamente su proceso de entrenamiento.

Durante el entrenamiento, un modelo no entrenado realiza un pase hacia adelante idéntico. Pero como lo entrenamos con un conjunto de entrenamiento etiquetado, podemos compararlo con la salida real.

Para visualizar este proceso, supongamos que nuestro vocabulario de salida consta de solo seis palabras: "a", "soy", "i", "gracias", "estudiante" y "" (abreviatura de final de oración).
inserte la descripción de la imagen aquí

El vocabulario de salida del modelo se establece en el proceso de preprocesamiento antes del entrenamiento.

Una vez que definimos nuestro vocabulario de salida, podemos usar un vector del mismo ancho para representar cada palabra en nuestro vocabulario. Esto también se considera una codificación one-hot. Entonces, podemos usar el siguiente vector para representar la palabra "am":
inserte la descripción de la imagen aquí
Ejemplo: Codificación one-hot de nuestro vocabulario de salida

A continuación, analizamos la función de pérdida del modelo: esta es la métrica que usamos para optimizar durante el entrenamiento. Se puede entrenar para obtener un modelo con resultados tan precisos como sea posible.

función de pérdida

Digamos que estamos entrenando el modelo, ahora es el primer paso, un ejemplo simple: traduzca "merci" en "gracias".

Esto significa que queremos una salida que represente la distribución de probabilidad de la palabra "gracias". Pero debido a que este modelo no ha sido bien entrenado, es poco probable que este resultado aparezca ahora.

Debido a que los parámetros (pesos) del modelo se generan aleatoriamente, la distribución de probabilidad generada por el modelo (no entrenado) asigna valores aleatorios a cada celda/palabra. Podemos compararlo con la salida real y luego usar el algoritmo de retropropagación para ajustar ligeramente los pesos de todos los modelos para producir una salida más cercana al resultado.

¿Cómo compararía dos distribuciones de probabilidad? Simplemente podemos restar uno del otro. Consulte Cross Entropy y KL Divergence para obtener más detalles.

Entropía cruzada: https://colah.github.io/posts/2015-09-Visual-Information/

Divergencia KL: https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained

Pero tenga en cuenta que este es un ejemplo demasiado simplificado. Una situación más realista es procesar una oración. Por ejemplo, ingrese "je suis étudiant" y espere que el resultado sea "soy un estudiante". Entonces queremos que nuestro modelo genere con éxito distribuciones de probabilidad en estos casos:

Cada distribución de probabilidad está representada por un vector con un ancho del tamaño del vocabulario (6 en nuestro ejemplo, pero generalmente 3000 o 10000 en la realidad).

La primera distribución de probabilidad tiene la probabilidad más alta en la celda asociada con "i"

La segunda distribución de probabilidad tiene la probabilidad más alta en la celda asociada con "am"

Por analogía, la distribución de la quinta salida indica que la celda asociada con "" tiene la mayor probabilidad

La distribución de probabilidad objetivo obtenida entrenando el modelo en ejemplos.

Después de un entrenamiento adecuado en un conjunto de datos suficientemente grande, queremos que la distribución de probabilidad de la salida del modelo se vea así:

Esperamos que después del entrenamiento, el modelo genere la traducción correcta. Por supuesto, si este pasaje es completamente del conjunto de entrenamiento, no es un buen indicador de evaluación (referencia: validación cruzada, enlace https://www.youtube.com/watch?v=TIgfjmp-4BA). Tenga en cuenta que cada posición (palabra) tiene una pequeña probabilidad, aunque es poco probable que sea la salida en ese paso de tiempo; esta es una propiedad útil de softmax que puede ayudar con el entrenamiento del modelo.

Dado que el modelo produce solo una salida a la vez, supongamos que el modelo solo selecciona la palabra con la probabilidad más alta y descarta el resto. Este es uno de los métodos (llamado decodificación codiciosa). Otra forma de realizar esta tarea es mantener las dos palabras con la probabilidad más alta (como I y a), luego, en el siguiente paso, ejecutar el modelo dos veces: una suponiendo que la salida de la primera posición es la palabra "I", y Otra vez asume que la salida de la primera posición es la palabra "yo" y mantiene las dos traducciones con las probabilidades más altas sin importar qué versión produce menos error. Luego repetimos este paso para la segunda y tercera posición. Este método se llama búsqueda de haz. En nuestro caso, el ancho del haz es 2 (porque se mantienen los resultados de 2 haces, como la primera y la segunda posición), y finalmente se devuelven los resultados de dos haces (top_beams también es 2). Estos son parámetros que se pueden configurar de antemano.

2. ¿Cómo aplicar en diferentes industrias?

Diferentes variantes de Transformer en la industria visual

1) ViT

Vision Transformer Vision Transformer (ViT) aplica directamente la arquitectura Transformer pura a una serie de parches de imagen para tareas de clasificación y puede lograr excelentes resultados. También supera a las redes convolucionales de última generación en muchas tareas de clasificación de imágenes y requiere muchos menos recursos computacionales de entrenamiento previo (al menos un factor de 4).
inserte la descripción de la imagen aquí

ViT divide la imagen de entrada en múltiples parches (16x16), y luego proyecta cada parche en un vector de longitud fija y lo envía al Transformador.La operación del codificador subsiguiente es exactamente la misma que la del Transformador original. Pero debido a la clasificación de las imágenes, se agrega un token especial a la secuencia de entrada y la salida correspondiente al token es la predicción de la categoría final.

Parches de secuencia de imágenes

Cómo dividen la imagen en parches de tamaño fijo y luego alimentan las proyecciones lineales de estos parches en el transformador junto con sus posiciones de imagen. Luego, los pasos restantes son un codificador y decodificador de transformador limpio y estándar. La incrustación posicional se agrega a la incrustación de parches de imagen, y la información espacial/posicional se conserva globalmente a través de diferentes estrategias. En este documento, probaron diferentes métodos de codificación de información espacial, incluida la codificación sin posición, la codificación de incrustación de posición 1D/2D y la codificación de incrustación de posición relativa.
inserte la descripción de la imagen aquí

Comparación de diferentes estrategias de codificación de posición Un hallazgo interesante es que las incrustaciones de posición 2D no conducen a ganancias de rendimiento significativas en comparación con las incrustaciones de posición 1D.

conjunto de datos

El modelo se entrena previamente en múltiples conjuntos de datos grandes con deduplicación para admitir el ajuste fino (conjuntos de datos más pequeños) para tareas posteriores.

  • El conjunto de datos ILSVRC-2012 ImageNet tiene 1k clases y 1,3 millones de imágenes
  • ImageNet-21k tiene 21k clases y 14 millones de imágenes
  • JFT tiene 18k clases y 303 millones de imágenes de alta resolución

variante del modelo

inserte la descripción de la imagen aquí

Al igual que otros modelos de transformadores populares (GPT, BERT, RoBERTa), ViT (transformador de visión) también tiene diferentes tamaños de modelo (base, grande y enorme) y diferentes números de capas y cabezas de transformador. Por ejemplo, ViT-L/16 se puede interpretar como un modelo ViT grande (24 capas) con un tamaño de parche de imagen de entrada de 16×16.
Tenga en cuenta que cuanto menor sea el tamaño del parche de entrada, mayor será el modelo de cálculo, porque el número de parches de entrada N = HW/P*P, donde (H, W) es la resolución de la imagen original y P es la resolución de la imagen del parche Esto significa que un parche de 14 x 14 es computacionalmente más costoso que un parche de imagen de 16 x 16.

Resultados de referencia

inserte la descripción de la imagen aquí

Los resultados anteriores de Benchmark para la clasificación de imágenes
muestran que el modelo supera a los modelos SOTA existentes en varios conjuntos de datos de referencia populares.

Los transformadores de visión preentrenados en el conjunto de datos JFT-300M (ViT-H/14, ViT-L/16) superan a los modelos ResNet en todos los conjuntos de datos de prueba (ResNet152x4, preentrenados en el mismo conjunto de datos JFT-300M), mientras que los recursos informáticos (TPUv3 core days ) ocupados durante el entrenamiento previo se reducen considerablemente. Incluso ViT preentrenado en ImageNet-21K funciona mejor que la línea de base.

Rendimiento del modelo frente al tamaño del conjunto de datos

inserte la descripción de la imagen aquí

Tamaño del conjunto de datos previo al entrenamiento VS rendimiento del modelo
El gráfico anterior muestra el impacto del tamaño del conjunto de datos en el rendimiento del modelo. ViT no funciona bien cuando el tamaño del conjunto de datos previo al entrenamiento es pequeño y supera al SOTA anterior cuando los datos de entrenamiento son suficientes.

¿Qué estructura es más eficiente?

Como se mencionó al principio, el diseño de la arquitectura del uso de transformadores para la visión por computadora también es diferente, algunos usan transformadores para reemplazar completamente las CNN (ViT), algunos las reemplazan parcialmente y algunos combinan CNN con transformadores (DETR). Los resultados a continuación muestran el rendimiento de varias estructuras modelo bajo el mismo presupuesto computacional.
inserte la descripción de la imagen aquí

Rendimiento y costo computacional de diferentes arquitecturas modelo

Los experimentos anteriores muestran que:

  • La arquitectura Pure Transformer (ViT) es más eficiente y escalable que las CNN tradicionales (ResNet BiT) tanto en tamaño como en escala computacional
  • La arquitectura híbrida (CNN + Transformador) supera al Transformador puro en tamaños de modelo más pequeños y está muy cerca cuando el tamaño del modelo es más grande.

Aspectos destacados de ViT (transformador de visión)

  • Utilice la arquitectura Transformer (pura o híbrida)
  • La imagen de entrada está dividida en mosaicos por múltiples parches.
  • Supera a SOTA en múltiples puntos de referencia de reconocimiento de imágenes
  • El entrenamiento previo en grandes conjuntos de datos es más económico
  • Más escalable y computacionalmente eficiente

2) DETR

DETR es el primer marco de detección de objetos que utiliza con éxito Transformer como el bloque de construcción principal en la canalización. Iguala el rendimiento del método SOTA anterior (R-CNN más rápido altamente optimizado) con una canalización más simple y flexible.
inserte la descripción de la imagen aquí

DETR propone una arquitectura de codificador-decodificador que genera secuencialmente pares de máscaras binarias y etiquetas de clasificación para cada objeto en una imagen. Al concatenar las salidas laterales de todas las capas ConvLSTM y aplicar una operación de agrupación máxima por canal para obtener una representación oculta, esta representación servirá como entrada para dos capas completamente conectadas, prediciendo etiquetas de clasificación y probabilidades de parada, y obteniendo máscaras de segmentación uno por uno. La coincidencia uno a uno entre los resultados pronosticados y la verdad en el terreno se utiliza para calcular la pérdida a través del algoritmo húngaro.

DETR combina CNN y la detección de objetivos de tubería de Transformer. La imagen de arriba muestra DETR, una tubería híbrida con CNN y Transformer como los componentes principales. Aquí está el proceso:

  1. Las CNN se utilizan para aprender representaciones 2D de imágenes y extraer características
  2. La salida de la CNN se aplana y se complementa con codificación posicional para alimentar el codificador del transformador estándar.
  3. El decodificador de Transformer predice categorías y cuadros delimitadores mediante la salida de incrustaciones en una red de avance (FNN)

Canalización más simple

inserte la descripción de la imagen aquí

Comparación de la tubería de detección de objetos tradicional y DETR
Los métodos de detección de objetos tradicionales, como Faster R-CNN, tienen varios pasos para la generación de anclas y NMS. DETR abandona estos componentes hechos a mano, lo que simplifica significativamente la canalización de detección de objetos.

Resultados sorprendentes cuando se extiende a la segmentación panóptica

En este documento, amplían aún más la tubería DETR para la tarea de segmentación panóptica, que es una tarea de reconocimiento a nivel de píxel recientemente popular y desafiante. Para explicar simplemente la tarea de segmentación panóptica, unifica 2 tareas diferentes, una es la segmentación semántica tradicional (asignar una etiqueta de clase a cada píxel) y la otra es la segmentación de instancias (detectar y segmentar cada instancia de un objeto). Es una idea muy inteligente utilizar una arquitectura modelo para resolver dos tareas (clasificación y segmentación).

inserte la descripción de la imagen aquí

Segmentación panorámica a nivel de píxel La figura anterior muestra un ejemplo de segmentación panóptica. Con la canalización unificada de DETR, supera líneas de base muy competitivas. Visualización de atención La siguiente figura muestra la atención del decodificador Transformer en la predicción. Los puntajes de atención de diferentes objetos están representados por diferentes colores. Al observar el color/atención, se sorprenderá de la capacidad del modelo para comprender imágenes globalmente a través de la autoatención y resolver el problema de superposición de cuadros delimitadores. Especialmente el naranja en las patas de la cebra, aunque se superponen parcialmente con el azul y el verde, se pueden clasificar bien

inserte la descripción de la imagen aquí

Visualización de la atención del decodificador para objetos predichos

Puntos clave de DETR

  • Use Transformer para canalizaciones más simples y flexibles
  • Puede coincidir con SOTA en la tarea de detección de objetivos
  • Salida directa paralela y más eficiente del conjunto de predicción final
  • Arquitectura unificada de detección y segmentación de objetos
  • El rendimiento de detección de objetos grandes mejora significativamente, pero el rendimiento de objetos pequeños se degrada

Imagen GPT

Image GPT es un modelo de transformador GPT-2 entrenado con finalización de imagen en secuencias de píxeles. Al igual que los modelos de lenguaje preentrenados generales, está diseñado para aprender representaciones de imágenes sin supervisión de alta calidad. Predice autorregresivamente el siguiente píxel sin conocer la estructura 2D de la imagen de entrada.
inserte la descripción de la imagen aquí

El autor usa directamente la estructura del modelo de GPT-2, ignora la información estructural bidimensional de la imagen y convierte directamente la imagen en una secuencia unidimensional como entrada. A través del entrenamiento generativo no supervisado de esta manera, GPT-2 también puede aprender En una muy buena expresión, el modelo obtenido por el pre-entrenamiento no es más débil o incluso supera al modelo obtenido por el aprendizaje supervisado en tareas posteriores.
El autor en realidad simplemente remodela la imagen bidimensional directamente en unidimensional como entrada. Para el tren de datos, val, división de prueba y mejora de datos, el autor adopta el método más comúnmente utilizado. Debe enfatizarse que dado que la entrada general de clasificación de imágenes es 384 * 384 * 3 o 224 * 224 3, esto se remodela directamente para gpt La longitud unidimensional es demasiado grande, por lo que el autor redujo la resolución de la imagen a 32 32 × 3, 48 * 48 × 3 o 64 * 64 × 3 (obviamente, el efecto de la reducción de resolución continua se deteriorará). Para reducir aún más la entrada, el autor utiliza la agrupación. El autor crea una paleta de colores de 9 bits (paleta de colores de 9 bits) usando k-medias de k = 512 para agrupar valores de píxeles (R, G, B), reduciendo la entrada a un tercio y casi sin pérdida de color.

introducción al método

El autor todavía siguió la ruta del preentrenamiento primero y luego el ajuste fino. Tanto el método de preentrenamiento como el autor de ajuste fino diseñaron dos métodos experimentales diferentes y dieron los resultados comparativos respectivamente. Dos funciones de objetivo previas al entrenamiento (la entrada del modelo y el valor de predicción aquí son los valores de píxel de la imagen):
Objetivos BERT: uno es el método BERT MLM, y la expresión de la función objetivo es:
inserte la descripción de la imagen aquí

Aquí está la diferencia entre las funciones de los dos objetivos (es decir, la diferencia entre BERT y GPT pretain): Bert MLM pretrain: el método utilizado es enmascarar aleatoriamente parte de la entrada y usar el resto de la entrada para predecir la parte enmascarada En este momento, el bert recibió La entrada es un preentrenamiento GPT bidireccional: la entrada anterior se usa para predecir los datos posteriores, por lo que es unidireccional, y el ajuste fino de la tarea de clasificación se usa para evaluar el pros y contras del modelo de preentrenamiento. El autor también elige dos métodos: Ajuste fino: en los datos de destino Para el modelo fintune de extremo a extremo, todos los parámetros se actualizan. Sondeo lineal: use el modelo de preentrenamiento como un extractor de características. y luego use un clasificador lineal para la clasificación, y solo se actualizarán los parámetros del clasificador lineal.
Las características de GPT de imagen previamente entrenada logran un rendimiento de vanguardia en varios puntos de referencia de clasificación y se acercan a la precisión no supervisada de vanguardia en ImageNet.

La siguiente figura muestra el modelo de finalización generado a partir de una media imagen proporcionada por humanos como entrada, seguido de una finalización creativa a partir del modelo.

Finalización de imagen desde Imagen GPT

Puntos clave de la imagen GPT:

  • Use la misma arquitectura de transformadores que GPT-2 en NLP
  • Aprendizaje no supervisado sin etiquetado manual
  • Requiere más computación para generar una representación competitiva
  • Las funciones aprendidas logran el rendimiento de SOTA en los puntos de referencia de clasificación en conjuntos de datos de baja resolución

3. Cómo los fabricantes de chips personalizan el desarrollo de transformadores

Google usa IA para completar automáticamente el diseño del diseño del chip en seis horas

Recientemente, el equipo de Google Brain y los investigadores de la Universidad de Stanford mejoraron este método de diseño de chips basado en IA y lo aplicaron a la unidad de procesamiento de tensor (TPU) de próxima generación, que se lanzó oficialmente en la conferencia Google I/O 2021 no hace mucho tiempo. v4) en productos aceleradores. Google declaró anteriormente que TPUv4 puede superar a los productos de TPU de la generación anterior en cargas de trabajo como detección de objetos, clasificación de imágenes, procesamiento de lenguaje natural, traducción automática y puntos de referencia de recomendación. Se han publicado artículos de investigación relacionados en Nature, y Jeff Dean es uno de los autores principales. Según los informes, en menos de seis horas, el diseño del chip generado automáticamente por el método de diseño de chips AI de Google es mejor o comparable al de los humanos en todos los indicadores clave, como el consumo de energía, el rendimiento y el área del chip, mientras que los ingenieros necesitan meses de arduo trabajo. difícil lograr un efecto similar. El método de diseño rápido de chips, basado en el aprendizaje por refuerzo, podría ser de gran beneficio para las nuevas empresas con problemas de liquidez que podrían desarrollar su propia IA y otros chips especializados si Google hiciera pública la tecnología. Además, este método ayuda a acortar el ciclo de diseño del chip, para que el hardware pueda adaptarse mejor al rápido desarrollo de la investigación técnica.
inserte la descripción de la imagen aquí

Red de estrategia y arquitectura de red de valor.
inserte la descripción de la imagen aquí

Métodos de entrenamiento y programas de entrenamiento.
Recomendación: acorte el ciclo de diseño del chip y genere diseños de chip que sean mejores o comparables a los humanos en todas las métricas clave, como el consumo de energía, el rendimiento y el área del chip.

Supongo que te gusta

Origin blog.csdn.net/weixin_44077556/article/details/128115088
Recomendado
Clasificación