[Aprendizaje de la teoría de la IA] Modelo de lenguaje Performer: un marco de atención general basado en la arquitectura Transformer


Performer es una arquitectura de red neuronal para procesar eficientemente el mecanismo de autoatención (Self-Attention) . Los mecanismos de autoatención han logrado excelentes resultados en muchas tareas de procesamiento del lenguaje natural y visión por computadora, pero tienen problemas cuando procesan secuencias largas porque su complejidad computacional es proporcional al cuadrado de la longitud de la secuencia. Para resolver estos problemas, Google AI presenta Performer, una arquitectura Transformer con escalabilidad lineal y su mecanismo de atención es linealmente escalable . El marco se implementa a través del algoritmo (FAVOR+), que proporciona estimaciones escalables, de baja varianza e imparciales que pueden expresar mecanismos de atención representados por la descomposición estocástica de mapas de características (en particular, atención softmax convencional Fast Attention Via Positive Orthogonal Random Features ) . Este mapeo ayuda a mantener la complejidad del espacio y el tiempo lineal.

Descomposición propia aleatoria ortogonal de Softmax
La idea central de Performer es utilizar una aproximación de bajo rango para reemplazar la matriz de autoatención tradicional totalmente conectada, reduciendo así la complejidad computacional . Específicamente, Performer utiliza las siguientes técnicas clave:

  1. Atención rápida : en el mecanismo tradicional de autoatención, es necesario calcular los pesos de atención entre todas las posiciones , lo que da como resultado una complejidad computacional de O (n 2) O(n^2)O ( n.2 ), dondennn es la longitud de la secuencia. Performerreduce esta complejidad computacional aO ( n ) O(n)introduciendo una matriz de proyección aleatoria fija.O ( n ) . Esta técnica hace que la complejidad temporal del cálculo de la autoatención esté relacionada linealmente con la longitud de la secuencia, en lugar de cuadráticamente.
  2. Características aleatorias ortogonales : Performer utiliza características aleatorias ortogonales , que pueden mejorar aún más la eficiencia computacional mientras se mantiene el rendimiento del modelo. Estas características pueden hacer que el cálculo de la matriz de proyección sea más eficiente.
  3. Memoria eficiente : Performer también propone una variante de memoria eficiente que puede manejar secuencias largas sin estar restringido por límites de memoria. Este método se implementa calculando la matriz de autoatención en bloques .
  4. Asintóticas favorables : en comparación con la autoatención estándar, Performer tiene una mejor complejidad computacional asintótica a medida que aumenta la longitud de la secuencia , lo que significa que tiene una clara ventaja al procesar secuencias largas.

En general, el algoritmo Performer mejora significativamente la eficiencia computacional de los modelos de autoatención al introducir características aleatorias y aproximación de rango bajo , así como algunas otras técnicas, lo que permite aplicarlas a secuencias más largas sin sacrificar el rendimiento del modelo . Esto le otorga un amplio potencial para aplicaciones en el procesamiento del lenguaje natural y otros campos.

Interpretación del papel del intérprete.

Repensar la atención con los artistas intérpretes o ejecutantes
Resumen del artículo : Presentamos Performer, una arquitectura Transformer que estima con precisión los Transformers con atención regular (softmax) de rango completo, pero utilizando solo complejidad de espacio y tiempo lineal (en lugar de complejidad cuadrática) y sin estar sujeto a condiciones previas, como escasez o bajo rango. Para aproximar el núcleo de atención softmax, los artistas intérpretes o ejecutantes utilizan una novedosa atención rápida a través del método de características aleatorias ortogonales positivasFAVOR+ ( ), que puede ser de interés independiente para los métodos de núcleo escalables. FAVOR+ también se puede utilizar para modelar eficientemente mecanismos de atención kernelizables más allá de softmax. Esta capacidad de representación es crucial para comparar con precisión softmax con otras funciones del kernel por primera vez en tareas a gran escala, lo que está más allá del alcance de los Transformers convencionales y también permite el estudio de funciones del kernel de atención óptima. Los ejecutantes son arquitecturas lineales que son totalmente compatibles con los Transformers normales y tienen sólidas garantías teóricas: estimación imparcial o casi imparcial de la matriz de atención, convergencia uniforme y baja varianza de estimación. Probamos a los artistas intérpretes o ejecutantes en un amplio conjunto de tareas, desde la predicción de píxeles hasta el modelado de texto y el modelado de secuencias de proteínas, logrando resultados competitivos que superaron a otros métodos de atención densa y dispersa eficientes y comprobados, lo que demuestra la eficacia de los artistas intérpretes o ejecutantes del novedoso paradigma de aprendizaje atencional utilizado.

En palabras humanas : Performer es una arquitectura Transformer y su mecanismo de atención se puede expandir linealmente, por un lado, permite que el modelo se entrene más rápido y, por otro lado, también permite que el modelo procese secuencias de entrada más largas. Esto es ciertamente excelente para ciertos conjuntos de datos de imágenes (como ImageNet64) y conjuntos de datos de texto (como PG-19). Performer utiliza un marco de atención general eficiente (lineal) en el que se pueden implementar varios mecanismos de atención utilizando diferentes medidas de similitud (es decir, varios métodos del núcleo). El marco se FAVOR+implementa mediante el algoritmo (Atención rápida a través de características aleatorias ortogonales positivas, Atención rápida a través de características aleatorias ortogonales), que proporciona un mecanismo de atención de estimación escalable, de baja varianza e imparcial que se puede descomponer mediante mapas de características aleatorias. Este método garantiza, por un lado, complejidad lineal en el espacio y el tiempo, y precisión, por otro. Además, este método se puede utilizar solo para operaciones softmax y también se puede utilizar junto con otras técnicas, como las capas reversibles.


Para aplicaciones que requieren atención a larga distancia, algunos investigadores han propuesto algunos métodos rápidos y que ahorran espacio, entre los cuales el método más común es la atención escasa .
Técnicas de dispersión estándar
Figura: Técnica de dispersión estándar.

Sin embargo, los métodos de atención escasa también tienen algunas limitaciones . Primero, requieren operaciones eficientes de multiplicación de matrices dispersas , que no todos los aceleradores pueden hacer; segundo, generalmente no pueden proporcionar garantías teóricas estrictas para sus capacidades de representación ; tercero, están dirigidos principalmente a modelos Transformer y predicciones generadas. entrenamiento para optimizar; finalmente, Por lo general, acumulan más capas de atención para compensar la escasa representación , lo que dificulta su uso con otros modelos previamente entrenados, requiere reentrenamiento y consume mucha energía.

Además, los escasos mecanismos de atención suelen ser insuficientes para resolver todos los problemas que surgen al aplicar métodos de atención convencionales, como las redes de punteros. También hay algunas operaciones que no se pueden dispersar, como la operación softmax de uso común.


Mecanismo de Atención Regular

En el mecanismo de atención convencional, la Consulta y la Clave correspondientes a las filas y columnas de la matriz se multiplican y luego se calcula la matriz de puntuación de atención a través de Softmax. La fórmula es la siguiente:
Atención ( Q , K , V ) = softmax ( QKT d ) V \text{Atención}(Q,K,V)=\text{softmax}(\frac{QK^T}{\sqrt {d} })VAtención ( Q ,k ,V )=softmax (d q kt) V
enQ , K , VQ, K, VP ,k ,V (las dimensiones sonL × d L \times dl×d ) son las matrices de consultas, claves y valores respectivamente. LLL es la longitud de la oración,ddd es la dimensión (arbitraria) de los vectores de consultas, claves y valores. El problema con Transformer viene de la función softmax, veamos por qué.

Este método no puede descomponer la clave de consulta en la operación softmax no lineal y descomponer el resultado nuevamente en la clave y la consulta originales , pero puede descomponer la matriz de atención en el producto de la función no lineal aleatoria de la consulta y la clave originales , que es la las llamadas características aleatorias ( ) para que la información de similitudrandom features se pueda codificar de manera más eficiente . La matriz de atención estándar incluye el coeficiente de similitud de cada par de entradas, que consta de cálculos de softmax en la consulta y la clave, representados por q y k.
Factorización de la matriz de atención

La atención softmax regular puede verse como un caso especial de funciones no lineales definidas por funciones exponenciales y proyecciones gaussianas . Aquí también podemos razonar a la inversa, implementando primero algunas funciones no lineales más generalizadas que definen implícitamente otros tipos de medidas de similitud o funciones del núcleo en los resultados de la clave de consulta . Los investigadores lo definieron como atención universal ( ) basándose en el método del núcleo inicial . Aunque no existen soluciones de forma cerrada para la mayoría de las funciones del kernel, este mecanismo aún se puede aplicar porque no depende de soluciones de forma cerrada.generalized attention

El artículo demuestra por primera vez que en la aplicación de Transformer aguas abajo, cualquier matriz de atención se puede aproximar de manera efectiva a través de características aleatorias . Un nuevo mecanismo para lograr esto utiliza positive random features(características aleatorias directas), que son funciones no lineales positivas de la consulta y la clave originales. Esto evita la inestabilidad durante el entrenamiento y logra una aproximación más precisa a la atención normal de softmax.

FAVOR+: Atención rápida mediante correlación matricial

A través de la descomposición anterior, se puede obtener la matriz de atención implícita de complejidad espacial lineal (en lugar de cuadrática) . De manera similar, se puede obtener un mecanismo de atención en tiempo lineal mediante descomposición. La forma original es multiplicar la matriz de atención con el valor de entrada para obtener el resultado final, pero después de descomponer la matriz de atención , la multiplicación de la matriz se puede reorganizar para aproximar los resultados del mecanismo de atención convencional sin construir explícitamente una matriz de atención de tamaño cuadrático. . Finalmente se generó un nuevo algoritmo FAVOR+.
Aproximación del mecanismo de atención regular AV mediante mapas de características.
Figura: Aproximación del mecanismo de atención regular AV mediante mapas de características (aleatorios) (en D − 1 D^{−1}D1 antes de la normalización). Los bloques discontinuos representan el orden de los cálculos, junto con la complejidad temporal correspondiente. Izquierda: cálculo del módulo de atención estándar, donde el resultado final esperado se calcula realizando la multiplicación de matrices con la matriz A y el valor del tensor V; derecha: desacoplando la matriz Q ′ utilizada en la descomposición de rango bajo deAQ yK′ K′K y realizando multiplicaciones de matrices en el orden indicado en el cuadro de puntos, los investigadores obtuvieron una matriz de atención lineal sin construir explícitamenteAAA o su aproximación.

El análisis anterior está relacionado con la atención bidireccional (es decir, atención no causal) y no distingue entre pasado y futuro. Entonces, ¿cómo lograr solo una parte de la secuencia de entrada, es decir, atención causal unidireccional? Simplemente use el cálculo de la suma del prefijo ( prefix-sum computation) y almacene solo el número total de ejecuciones del cálculo matricial durante el proceso de cálculo , en lugar de almacenar la matriz de atención regular triangular inferior completa .
Representación visual del algoritmo de suma de prefijo para atención unidireccional.
Figura: Muestra una representación visual del algoritmo de suma de prefijo para atención unidireccional . Para mayor claridad, omitimos la normalización de la atención en esta visualización. Este algoritmo conserva la suma del prefijo, que es una matriz obtenida sumando el producto externo de las características aleatorias correspondientes a las claves y el vector de valores. En cada iteración dada del algoritmo de suma de prefijos, el vector de características aleatorias correspondiente a la consulta se multiplica por la suma de prefijos más cercana (obtenida sumando los productos externos correspondientes a todos los tokens anteriores), lo que da como resultado la salida del mecanismo de atención . AVNueva fila de AV (nueva fila). Es decir,el mapeo aleatorio de características del vector clave y el vector de valor se produce externamente para obtener la suma del prefijo, y este proceso se construye dinámicamente. Finalmente, el vector de características aleatorias se deja multiplicado por la consulta para obtener una nueva fila en la matriz final. AAa la izquierdaA significa que la atención unidireccional estándar requiere una matriz de atención de máscara para obtener su parte triangular inferior.

Complejidad temporal de la atención.

Para revisar, las dimensiones son n × mn\times mnorte×m ym × pm\veces pmetro×La complejidad temporal de multiplicar dos matrices de p es O (nmp) O(nmp)O ( nm p ) . Si miramos la ecuación de atención, vemos que estamos multiplicando tres matrices:QQQ (la dimensión esL × d L\times dl×d ),KTK^TkT (la dimensión esd × L d\times Ld×L ) yVVV (dimensiónL × d L\times dl×d ). Obtendremos diferentes complejidades según el orden en que las multipliquemos. Ignore softmax y el denominadord \sqrt{d}d (que es solo un escalar), podemos ver: Primero por QKT QK^Tq kEl producto de T nos daO ( L 2 d ) O(L^2d)O ( L2d )complejidad, si dejamosKTVK^TVkPrimero se multiplica TV y obtenemosO(d^2L)O ( re2 L)complejidad.
Comparación de complejidad del tiempo
Obviamente, deberíamos elegirO ( d 2 L ) O(d^2L)O ( re2 L), porqueddd es un parámetro que podemos elegir y podemos tenerd < L d < Ld<L._ _ Sin embargo, en realidad no podemos hacer las multiplicaciones en este orden porqueQKT QK^Tq kT está "atascado" dentro del softmax y no hay una manera fácil de sacarlo. Esto significa que tenemos que lidiar conO ( L 2 d ) O(L^2d)O ( L2 d), que tiene una longitud de secuencia cuadrática (por lo que procesar secuencias más largas se vuelve cada vez más costoso desde el punto de vista computacional). Por lo tanto, softmax es el cuello de botella de los transformadores y nos gustaría encontrar una manera de resolver este problema.

Evite el cuello de botella de Softmax

A alto nivel, el enfoque propuesto en este artículo es muy simple. ¿ Podemos encontrar una manera de aproximar softmax que nos permita elegir el orden en el que se calculan las matrices? Básicamente, queremos encontrar alguna matriz Q ′ Q'q yK ′ K'k , satisfaciendoQ ′ K ′ ≈ softmax ( QKT / d ) Q'K'\approx \text{softmax}(QK^T/\sqrt{d})q ksoftmax ( QK _t /d ) El objetivo es simple, pero los detalles de cómo lograrlo son un poco más complicados.

Primero, recordemos que softmax es una función dada una longitud de nnVectorz \mathbf{z} de nz , todos los elementoszi \mathbf{z}_izyo归一化的:σ ( z ) i = ezi ∑ j = 1 nezj \sigma (\mathbf{z} )_i=\frac{e^{z_i}}{\sum j=\mathbf{1}^ne^ {z_j} }σ ( z )yo=j=1es decir _zjmizyoDado esto, tenga en cuenta que podemos reescribir softmax en la ecuación de atención como : softmax ( QKT d ) = D − 1 A \text{softmax}(\frac{QK^T}{\sqrt{d}}) =D^{ -1}Asoftmax (d q kt)=D1 AdondeA = exp ( QKT / d ) A=exp(QK^T/\sqrt{d})A=e x p ( Q Kt /d )D = diag ( A 1 L ) D=\text{diag}(A\mathbf{1}_L)D=diagnóstico ( A 1L) , diag convierte un vector de entrada en una matriz diagonal,1 L \mathbf{1}_L1LEntonces es una longitud de LLL es un vector de todos los unos. Esa es la fórmula (1) del artículo:
oficial 1
donde el exponencial enAAA se aplica elemento por elemento,DDD es la matriz diagonal con elementosA 1 LA\mathbf{1}_Lun 1Ldiagonal ( A 1 L ) \text{diagonal}(A\mathbf{1}_L)diagnóstico ( A 1L) es para suma,D − 1 D^{-1}D1 convierte estas sumas en recíprocas, por lo queD − 1 AD^{-1}AD1 Aseguido desoftmax ( QKT / dk ) \text{softmax}(QK^T/\sqrt{d_k})softmax ( QK _t /dk ) son equivalentes. De hecho,A 1 LA\mathbf{1}_Lun 1LSólo una longitud de LLel vector de L , que pasa por el parAASe obtiene sumando las columnas de A.

Nota: AAEl exponencial de elementos de A es el verdadero problema aquí, por lo que nuestro objetivo es factorizarlo de alguna manera. Podemos ignorar el denominador escalard \sqrt{d}d Porque solo se usa para la normalización, pero podemos normalizar consultas y claves de manera equivalente. Esto significa que nuestro objetivo es encontrar algo de Q′ Q′q yK ′ K'k,满足:Q ′ K ′ ≈ exp ( QKT ) Q'K'\approx \text{exp}(QK^T)q kexp ( QK _T )

Encuentre el kernel Softmax a través del kernel gaussiano

En la fórmula anterior, AAA es el producto de dos matrices divididas por una constante y luego se realiza una operación exponencial para obtener una matriz de atención. Aquí se introduce el método del kernel para aproximar esta matriz de atención A. Aquí es donde entra en juego el enfoque nuclear.

El método específico es el siguiente:
sabemos que los núcleos son equivalentes a un determinado mapa de características (mapa de características) φ \varphiFunciones del producto escalar de φ . ParaQQQ yKKCualquier vectorqi q_i en Kqyoy kj k_jkj, el resultado de su similitud original sin considerar la normalización es exp (qikj) exp(q_ik_j)e x p ( qyokj) . Después de introducir el método del kernel, el método de cálculo se convierte en: K ( x , y ) = E [ ϕ ( x ) T , ϕ ( y ) T ] K(x, y)=\mathbb{E}[\phi(x ) ^T, \phi(y)^T]K ( x ,y )=mi [ ϕ ( x )T ,ϕ ( y )T ]Generalmente, dado un cierto mapa de características de alta dimensiónφ \varphiφ , nos interesa encontrar una función equivalenteKKK , lo que nos permitirá evitarφ \varphiLos cálculos se realizan en el espacio de alta dimensión de φ . Sin embargo, en nuestro caso iríamos en realidad al revés: si asumimosAAA es un elemento que contieneA ( i , j ) = K ( qi , kj ) = exp ( qikj T ) A(i,j)=K(q_i,k_j)=exp(q_ik_j^T)A ( yo ,j )=k ( qyo,kj)=e x p ( qyokjt) (en el queqi q_iqyoy kj k_jkjson qqQ yKKK vector de fila) matriz del núcleo, podemos encontrar un mapa de característicasφ \varphiφ para ayudarnos a descomponerAAA吗? A ( i , j ) = K ( qi , kj ) = exp ( qjkj T ) = ϕ ( qi ) T ϕ ( kj ) \mathbf{A}(i,j)=K(q_i,k_j)= \text{exp}(q_jk_j^T)=\phi(q_i)^T\phi(k_j)A ( yo ,j )=k ( qyo,kj)=exp ( qjkjt)=ϕ ( qyo)T ϕ(kj)

Ahora, la mayoría de los núcleos se pueden representar mediante mapas de características de la forma φ \varphiφ para aproximar:
Técnica nuclear exp aproximada
dondehhh yf 1 , . . . , fl f_1, ..., f_lF1,... ,Fyoson diferentes funciones de mapeo deterministas, w 1 , . . . , wm w_1, ..., w_mw1,... ,wmLuego de una distribución DDSe toman muestras de D , es decir, se distribuyen de forma independiente e idéntica. Por lo tantoφ ( x ) \varphi(x)φ ( x ) es una función conl × ml\times myo×Vector de m elementos.

  • Cuando h ( x ) = 1 h(x)=1h ( x )=1 ,l = 1 l=1yo=1 ,D = N (0, I d) D=N(0, I_d)D=norte ( 0 ,Ire) , este núcleo es lo que se llamaPNG-kernel.
  • Cuando h ( x ) = 1 h(x)=1h ( x )=1 ,l = 2 l=2yo=2 ,f 1 = pecado f_1=pecadoF1=s en ,f 2 = cos f_2=cosF2=Cuando se trata de cos , esshift-invariantel núcleo. En este momento, siD = N ( 0 , I d ) D=N(0, \mathbf{I}_d)D=norte ( 0 ,Ire) , entonces esun núcleo gaussiano.

Es decir, si extraemos w de una distribución normal con media 0 y varianza unitaria, podemos obtener el núcleo gaussiano usando un mapa característico:
ϕ (x) gauss = 1 m (sen (w 1 T x), . . . , sin ( wm T x ) , cos ( w 1 T x ) , . . . , cos ( wm T x ) ) \phi(\mathbf{x})_{gauss}=\frac{1}{\ sqrt{ m}}(\text{sin}(w_1^T\mathbf{x}),...,\text{sin}(w_m^T\mathbf{x}),\text{cos}(w_1^ T\ mathbf{x}),...,\text{cos}(w_m^T\mathbf{x}))ϕ ( x )g a u ss=metro 1( pecado ( w1tx ) ,... ,pecado ( wmetrotx ) ,porque ( w1tx ) ,... ,porque ( wmetrotx )) Tenga en cuenta que el núcleo gaussiano con varianza unitaria viene dado por:
K gauss = exp ( − ∣ ∣ x − y ∣ ∣ 2 2 ) \mathbf{K}_{gauss}=\text{exp}(- \frac {||\mathbf{x}-\mathbf{y}||^2}{2} )kg a u ss=exp ( -2∣∣x _y 2) Ahora recuerde que queremos encontrar un kernel softmax:
KSM ( x , y ) = exp ( x T y ) \mathbf{K}_{SM}(\mathbf{x},\mathbf{y})= \text {exp}(\mathbf{x}^T\mathbf{y})kSM( x ,y )=exp ( xT y)Podemos ver quela estructura del kernel Softmax no está muy alejada del kernel gaussiano. Resulta que podemos aprovechar esta similitud para encontrar el kernel softmax. De hecho, tenga en cuenta que
Explota esta similitud para encontrar el kernel softmax.
esto significa que podemosreescribir el kernel softmaxcomo:
reescribir el kernel softmax
Y podemos hacer esto convirtiendohhfunción h de h ( x ) = 1 h(x)=1h ( x )=1 se cambia a la siguiente forma, reutilizando el mapa de características que conduce al núcleo gaussiano.
h ( x ) = exp ( ∣ ∣ x ∣ ∣ 2 2 ) h(x)=\text{exp}(\frac{||x||^2}{2})h ( x )=exp (2∣∣ x 2)
Esta es una buena aproximación, pero tiene algunos problemas. La función softmax siempre genera valores positivos, por lo queA \mathbf{A}Todos los elementos de A deben ser valores positivos. Sin embargo, el uso de este núcleo para aproximar softmax puede dar algunos valores negativos. De hecho, dado que estamos extrayendo w de una distribución normal con media 0, algunos de sus valores serán negativos, lo que a su vez significa queA \mathbf{A}Algunos valores de A serán negativos. Esto puede causar problemas y comportamientos inesperados.

Buscando un kernel Softmax más estable

Los investigadores descubrieron que el kernel softmax también se puede reescribir como:
Reescribir el kernel Softmax
(La prueba de que en realidad se trata de un kernel softmax se puede encontrar en el apéndice del artículo). Por lo tanto, simplemente podemos tomar la forma del mapa de características anterior y configurar h ( x ) = exp ( − ∣ ∣ x ∣ ∣ 2 2 ) , l = 1 , f 1 = exp , D = N ( 0 , I d ) h(\mathbf{x})=\text{exp}(-\frac{ ||x ||^2}{2}),l=1,f_1=\text{exp},\mathcal{D}=\mathcal{N}(0,\mathbf{I}_d)h ( x )=exp ( -2∣∣ x 2) ,yo=1 ,F1=exp ,D=norte ( 0 ,Ire)以得到ϕ ( x ) SM = 1 m exp ( − ∣ ∣ x ∣ ∣ 2 2 ) ( exp ( w 1 T x ) , . . . , exp ( wm T x ) ) \phi(\mathbf{x} )_{SM}=\frac{1}{\sqrt{m}}\text{exp}(-\frac{||\mathbf{x}||^2}{2})(\text{exp} (w_1^T\mathbf{x}),...,\text{exp}(w_m^T\mathbf{x}))ϕ ( x )SM=metro 1exp ( -2∣∣ x 2) ( exp ( w1tx ) ,... ,exp ( wmetrotx ))
Al hacer esto podemos ver quetodos los valores son positivosya que estamos usandoexp \text{exp}exp , resolviendo así el problema anterior. Los autores también propusieron un mapa de características alternativo que conduce al mismo núcleo. Si está interesado, puede leer el artículo original.

Descripción del contenido anterior en el artículo:
Funciones aleatorias positivas para Softmax

Encuentre Q' y V' usando la función del kernel Softmax

Revisemos. Comenzamos con la ecuación de atención Atención ( Q , K , V ) = softmax ( QKT d ) V \text{Attention}(\mathbf{Q},\mathbf{K},\mathbf{V})=\text{softmax }(\frac{\mathbf{Q}\mathbf{K}^T}{\sqrt{d}})\mathbf{V}Atención ( Q ,k ,V )=softmax (d q kt) V descubrió que podemos reescribirlo como:
Reescritura de la función de atenciónLuego, encontramos el mapa característico del núcleo Softmax, que puede usarse para aproximar la matrizA \mathbf{A}A :
ϕ ( x ) SM = 1 m exp ( − ∣ ∣ x ∣ ∣ 2 2 ) ( exp ( w 1 T x ) , . . . , exp ( wm T x ) ) \phi(\mathbf{x}) _{SM}=\frac{1}{\sqrt{m}}\text{exp}(-\frac{||\mathbf{x}||^2}{2})(\text{exp}( w_1^T\mathbf{x}),...,\text{exp}(w_m^T\mathbf{x}))ϕ ( x )SM=metro 1exp ( -2∣∣ x 2) ( exp ( w1tx ) ,... ,exp ( wmetrotx )) Por lo tanto, ahora podemos reemplazar A \mathbf{A}
con un mapa de característicasElementos en A
: A ( i , j ) = K ( qi , kj ) = exp ( qikj T ) = ϕ SM ( qi T ) ϕ SM ( kj ) \mathbf{A}(i,j)=\mathbf{ K }(\mathbf{q}_i,\mathbf{k}_j)=\text{exp}(\mathbf{q}_i\mathbf{k}_j^T)=\phi_{SM}(\mathbf{q } _i^T)\phi_{SM}(\mathbf{k}_j)A ( yo ,j )=k ( qyo,kj)=exp ( qyokjt)=ϕSM( qit) ϕSM( kj)
Tenga en cuenta que comenzamos con la longitudLLVector qi de L \mathbf{q}_iqyokj \mathbf{k}_jkjMover a longitud mmVectorϕ SM ( qi ) de m \phi_{SM}(\mathbf{q}_i)ϕSM( qyo)ϕ SM ( kj ) \phi_{SM}(\mathbf{k}_j)ϕSM( kj)

Ahora podemos convertir A \mathbf{A}A se descompone enQ ′ Q'q yK ′ K'k , dondeQ ′ Q'q yK ′ K'kLos elementos de ′ sonϕ SM ( qi ) \phi_{SM}(\mathbf{q}_i)ϕSM( qyo)ϕ SM ( kj ) \phi_{SM}(\mathbf{k}_j)ϕSM( kj)

Finalmente, somos libres de cambiar el orden de las multiplicaciones de matrices y cambiar la complejidad del tiempo de O ( L 2 d ) O(L^2d)O ( L2 d)se reduce aO ( L md ) O(Lmd)O ( L m d ) , logrando así una complejidad lineal en lugar de cuadrática a lo largo de la longitud de la secuencia.
Complejidad del tiempo reducida

Resumir

Esencialmente, en este artículo, los autores lograron encontrar una manera de aproximar la función softmax utilizando el producto escalar de mapas de características . Debido a esto, la complejidad temporal del cálculo de la atención en transformadores se puede reducir de cuadrática a lineal para la longitud de la secuencia, es decir, la operación exponencial se divide y aproxima. Esto acelerará significativamente los transformadores cuando trabajen con secuencias largas. Al mismo tiempo, en la medida que se garantiza la aproximación, se utilizan técnicas como el método kernel, valores positivos y ortogonalidad.

Además, cabe señalar que:

  • Aunque este método se desarrolló pensando en los transformadores, se puede aplicar a prácticamente cualquier modelo que requiera softmax .
  • Los autores señalan que este enfoque no sólo es más rápido sino también más eficiente en cuanto a memoria . Esto se puede ver observando las dimensiones de la matriz que debe almacenarse.

Disponibilidad de código

Una implementación de PyTorch de Performer:, https://libraries.io/pypi/performer-pytorchel método de instalación es el siguiente:

pip install performer-pytorch==1.1.4

Ejemplo de uso:

import torch
from performer_pytorch import PerformerLM

model = PerformerLM(
    num_tokens = 20000,
    max_seq_len = 2048,             # max sequence length
    dim = 512,                      # dimension
    depth = 12,                     # layers
    heads = 8,                      # heads
    causal = False,                 # auto-regressive or not
    nb_features = 256,              # number of random features, if not set, will default to (d * log(d)), where d is the dimension of each head
    feature_redraw_interval = 1000, # how frequently to redraw the projection matrix, the more frequent, the slower the training
    generalized_attention = False,  # defaults to softmax approximation, but can be set to True for generalized attention
    kernel_fn = torch.nn.ReLU(),    # the kernel function to be used, if generalized attention is turned on, defaults to Relu
    reversible = True,              # reversible layers, from Reformer paper
    ff_chunks = 10,                 # chunk feedforward layer, from Reformer paper
    use_scalenorm = False,          # use scale norm, from 'Transformers without Tears' paper
    use_rezero = False,             # use rezero, from 'Rezero is all you need' paper
    ff_glu = True,                  # use GLU variant for feedforward
    emb_dropout = 0.1,              # embedding dropout
    ff_dropout = 0.1,               # feedforward dropout
    attn_dropout = 0.1,             # post-attn dropout
    local_attn_heads = 4,           # 4 heads are local attention, 4 others are global performers
    local_window_size = 256,        # window size of local attention
    rotary_position_emb = True,     # use rotary positional embedding, which endows linear attention with relative positional encoding with no learned parameters. should always be turned on unless if you want to go back to old absolute positional encoding
    shift_tokens = True             # shift tokens by 1 along sequence dimension before each block, for better convergence
)

x = torch.randint(0, 20000, (1, 2048))
mask = torch.ones_like(x).bool()

model(x, mask = mask) # (1, 2048, 20000)

Link de referencia

  1. Google AI presenta Performer: un marco de atención generalizado basado en la arquitectura Transformer
  2. Intérprete - Pytorch
  3. De transformadores a artistas intérpretes o ejecutantes: atención aproximada
  4. Repensar la atención con los artistas intérpretes o ejecutantes
  5. Funciones aleatorias para máquinas Kernel a gran escala
  6. Algunas notas sobre el intérprete

Supongo que te gusta

Origin blog.csdn.net/ARPOSPF/article/details/132710212
Recomendado
Clasificación