Articulo de referencia

Normalización (aprendizaje automático)

En el aprendizaje automático , la normalización es una técnica estadística con diversas aplicaciones. Hay dos formas principales de normalización, a saber, la normalización de d...

En el aprendizaje automático , la normalización es una técnica estadística con diversas aplicaciones. Hay dos formas principales de normalización, a saber, la normalización de datos y la normalización de activación . La normalización de datos (o escalado de características ) incluye métodos que reescalan los datos de entrada para que las características tengan el mismo rango, media, varianza u otras propiedades estadísticas. Por ejemplo, una opción popular de método de escalado de características es la normalización min-max , donde cada característica se transforma para tener el mismo rango (típicamente[0,1]{\displaystyle [0,1]}o[1,1]{\displaystyle [-1,1]}Esto resuelve el problema de que diferentes características tengan escalas muy diferentes, por ejemplo, si una característica se mide en kilómetros y otra en nanómetros.

Por otro lado, la normalización de la activación es específica del aprendizaje profundo e incluye métodos que reescalan la activación de las neuronas ocultas dentro de las redes neuronales .

La normalización se utiliza a menudo para:

  • aumentar la velocidad de convergencia del entrenamiento,
  • reducir la sensibilidad a las variaciones y escalas de características en los datos de entrada,
  • reducir el sobreajuste ,
  • y producir una mejor generalización del modelo a datos no vistos.

Las técnicas de normalización a menudo se justifican teóricamente por reducir el desplazamiento de la covarianza, suavizar los paisajes de optimización y aumentar la regularización , aunque se justifican principalmente por el éxito empírico. [ 1 ]

Normalización por lotes

La normalización por lotes ( BatchNorm ) [ 2 ] opera sobre las activaciones de una capa para cada mini-lote.

Consideremos una red neuronal de alimentación directa simple, definida mediante la encadenación de módulos:

incógnita(0)incógnita(1)incógnita(2){\displaystyle x^{(0)}\mapsto x^{(1)}\mapsto x^{(2)}\mapsto \cdots }

donde cada módulo de red puede ser una transformación lineal, una función de activación no lineal, una convolución, etc.incógnita(0){\displaystyle x^{(0)}}es el vector de entrada,incógnita(1){\displaystyle x^{(1)}}es el vector de salida del primer módulo, etc.

BatchNorm es un módulo que se puede insertar en cualquier punto de la red de alimentación directa. Por ejemplo, supongamos que se inserta justo despuésincógnita(l){\displaystyle x^{(l)}}, entonces la red funcionaría en consecuencia:

incógnita(l)Bnorte(incógnita(l))incógnita(l+1){\displaystyle \cdots \mapsto x^{(l)}\mapsto \mathrm {BN} (x^{(l)})\mapsto x^{(l+1)}\mapsto \cdots }

El módulo BatchNorm no opera sobre entradas individuales. En cambio, debe operar sobre un lote de entradas a la vez.

Concretamente, supongamos que tenemos un lote de entradasincógnita(1)(0),incógnita(2)(0),,incógnita(B)(0){\displaystyle x_{(1)}^{(0)},x_{(2)}^{(0)},\dots ,x_{(B)}^{(0)}}, introducidos todos a la vez en la red. En el centro de la red obtendríamos algunos vectores:

incógnita(1)(l),incógnita(2)(l),,incógnita(B)(l){\displaystyle x_{(1)}^{(l)},x_{(2)}^{(l)},\dots ,x_{(B)}^{(l)}}

El módulo BatchNorm calcula la media y la varianza de estos vectores coordenada por coordenada:

μi(l)=1Bb=1Bincógnita(b),i(l)(σi(l))2=1Bb=1B(incógnita(b),i(l)μi(l))2{\displaystyle {\begin{aligned}\mu _{i}^{(l)}&={\frac {1}{B}}\sum _{b=1}^{B}x_{(b),i}^{(l)}\\(\sigma _{i}^{(l)})^{2}&={\frac {1}{B}}\sum _{b=1}^{B}(x_{(b),i}^{(l)}-\mu _{i}^{(l)})^{2}\end{aligned}}}

dóndei{\displaystyle i}indexa las coordenadas de los vectores yb{\displaystyle b}indexa los elementos del lote. En otras palabras, estamos considerando eli{\displaystyle i}-ésima coordenada de cada vector en el lote, y calculando la media y la varianza de estos números.

Luego, normaliza cada coordenada para que tenga media cero y varianza unitaria:

incógnita^(b),i(l)=incógnita(b),i(l)μi(l)(σi(l))2+ϵ{\displaystyle {\hat {x}}_{(b),i}^{(l)}={\frac {x_{(b),i}^{(l)}-\mu _{i}^{(l)}}{\sqrt {(\sigma _{i}^{(l)})^{2}+\epsilon }}}}

Elϵ{\displaystyle \epsilon }es una pequeña constante positiva como109{\displaystyle 10^{-9}}añadido a la varianza para la estabilidad numérica, para evitar la división por cero .

Finalmente, aplica una transformación lineal:

y(b),i(l)=γiincógnita^(b),i(l)+βi{\displaystyle y_{(b),i}^{(l)}=\gamma _{i}{\hat {x}}_{(b),i}^{(l)}+\beta _{i}}

Aquí,γ{\displaystyle \gamma }yβ{\displaystyle \beta }son parámetros dentro del módulo BatchNorm. Son parámetros aprendibles, normalmente entrenados mediante descenso de gradiente .

A continuación se muestra una implementación en Python de BatchNorm:

import numpy as npdef batchnorm ( x , gamma , beta , epsilon = 1e-9 ): # Media y varianza de cada característica mu = np . mean ( x , axis = 0 ) # forma (N,) var = np . var ( x , axis = 0 ) # forma (N,)# Normalizar las activaciones x_hat = ( x - mu ) / np . sqrt ( var + epsilon ) # forma (B, N)# Aplicar la transformación lineal y = gamma * x_hat + beta # forma (B, N)regresar y

Interpretación

γ{\displaystyle \gamma }yβ{\displaystyle \beta }permitir que la red aprenda a deshacer la normalización, si esto es beneficioso. [ 3 ] BatchNorm puede interpretarse como la eliminación de las transformaciones puramente lineales, de modo que sus capas se centren únicamente en modelar los aspectos no lineales de los datos, lo cual puede ser beneficioso, ya que una red neuronal siempre puede ampliarse con una capa de transformación lineal en la parte superior. [ 4 ] [ 3 ]

En la publicación original se afirma que BatchNorm funciona reduciendo el cambio de covarianza interna, aunque esta afirmación tiene tanto partidarios [ 5 ] [ 6 ] como detractores. [ 7 ] [ 8 ]

Casos especiales

El artículo original [ 2 ] recomendaba usar BatchNorms solo después de una transformación lineal, no después de una activación no lineal. Es decir,ϕ(Bnorte(Wincógnita+b)){\displaystyle \phi (\mathrm {BN} (Wx+b))}, noBnorte(ϕ(Wincógnita+b)){\displaystyle \mathrm {BN} (\phi (Wx+b))}Además, el sesgob{\displaystyle b}no importa, ya que se cancelaría con la resta media posterior, por lo que es de la formaBnorte(Wincógnita){\displaystyle \mathrm {BN} (Wx)}. Es decir, si una BatchNorm está precedida por una transformación lineal, entonces el término de sesgo de esa transformación lineal se establece en cero. [ 2 ]

Para las redes neuronales convolucionales (CNN), BatchNorm debe preservar la invariancia de traslación de estos modelos, lo que significa que debe tratar todas las salidas del mismo núcleo como si fueran puntos de datos diferentes dentro de un lote. [ 2 ] Esto a veces se denomina BatchNorm espacial, o BatchNorm2D, o BatchNorm por canal. [ 9 ] [ 10 ]

Concretamente, supongamos que tenemos una capa convolucional bidimensional definida por:

incógnitah,w,do(l)=h,w,doKhh,ww,do,do(l)incógnitah,w,do(l1)+bdo(l){\displaystyle x_{h,w,c}^{(l)}=\sum _{h',w',c'}K_{h'-h,w'-w,c,c'}^{(l)}x_{h',w',c'}^{(l-1)}+b_{c}^{(l)}}

dónde:

  • incógnitah,w,do(l){\displaystyle x_{h,w,c}^{(l)}}es la activación de la neurona en la posición(h,w){\displaystyle (h,w)}en eldo{\displaystyle c}-ésimo canal dell{\displaystyle l}-capa.
  • KΔh,Δw,do,do(l){\displaystyle K_{\Delta h,\Delta w,c,c'}^{(l)}}es un tensor de núcleo. Cada canaldo{\displaystyle c}corresponde a un núcleoKhh,ww,do,do(l){\displaystyle K_{h'-h,w'-w,c,c'}^{(l)}}, con índicesΔh,Δw,do{\displaystyle \Delta h,\Delta w,c'}.
  • bdo(l){\displaystyle b_{c}^{(l)}}es el término de sesgo para eldo{\displaystyle c}-ésimo canal dell{\displaystyle l}-capa.

Para preservar la invariancia traslacional, BatchNorm trata todas las salidas del mismo kernel en el mismo lote como más datos en un lote. Es decir, se aplica una vez por kernel.do{\displaystyle c}(equivalentemente, una vez por canal)do{\displaystyle c}), no por activaciónincógnitah,w,do(l+1){\displaystyle x_{h,w,c}^{(l+1)}}:

μdo(l)=1BHWb=1Bh=1Hw=1Wincógnita(b),h,w,do(l)(σdo(l))2=1BHWb=1Bh=1Hw=1W(incógnita(b),h,w,do(l)μdo(l))2{\displaystyle {\begin{aligned}\mu _{c}^{(l)}&={\frac {1}{BHW}}\sum _{b=1}^{B}\sum _{h=1}^{H}\sum _{w=1}^{W}x_{(b),h,w,c}^{(l)}\\(\sigma _{c}^{(l)})^{2}&={\frac {1}{BHW}}\sum _{b=1}^{B}\sum _{h=1}^{H}\sum _{w=1}^{W}(x_{(b),h,w,c}^{(l)}-\mu _{c}^{(l)})^{2}\end{aligned}}}

dóndeB{\displaystyle B}es el tamaño del lote,H{\displaystyle H}es la altura del mapa de características yW{\displaystyle W}es el ancho del mapa de características.

Es decir, aunque solo hayB{\displaystyle B}puntos de datos en un lote, todosBHW{\displaystyle BHW}Las salidas del kernel en este lote se tratan por igual. [ 2 ]

Posteriormente, la normalización y la transformación lineal también se realizan por núcleo:

incógnita^(b),h,w,do(l)=incógnita(b),h,w,do(l)μdo(l)(σdo(l))2+ϵy(b),h,w,do(l)=γdoincógnita^(b),h,w,do(l)+βdo{\displaystyle {\begin{aligned}{\hat {x}}_{(b),h,w,c}^{(l)}&={\frac {x_{(b),h,w,c}^{(l)}-\mu _{c}^{(l)}}{\sqrt {(\sigma _{c}^{(l)})^{2}+\epsilon }}}\\y_{(b),h,w,c}^{(l)}&=\gamma _{c}{\hat {x}}_{(b),h,w,c}^{(l)}+\beta _{c}\end{aligned}}}

Consideraciones similares se aplican a BatchNorm para convoluciones n -dimensionales.

A continuación se muestra una implementación en Python de BatchNorm para convoluciones 2D:

import numpy as npdef batchnorm_cnn ( x , gamma , beta , epsilon = 1e-9 ): # Calcula la media y la varianza para cada canal . media = np.media ( x , axis = ( 0 , 1 , 2 ) , keepdims = True ) varianza = np.var ( x , axis = ( 0 , 1 , 2 ) , keepdims = True )# Normaliza el tensor de entrada. x_hat = ( x - media ) / np . sqrt ( var + epsilon )# Escala y desplaza el tensor normalizado. y = gamma * x_hat + betaregresar y

Para redes neuronales recurrentes multicapa (RNN), BatchNorm generalmente se aplica solo para la parte de entrada a oculta , no para la parte oculta a oculta . [ 11 ] Sea el estado oculto de lal{\displaystyle l}-enésima capa en el tiempot{\displaystyle t}serht(l){\displaystyle h_{t}^{(l)}}. La RNN estándar, sin normalización, satisfaceht(l)=ϕ(W(l)htl1+U(l)ht1l+b(l)){\displaystyle h_{t}^{(l)}=\phi (W^{(l)}h_{t}^{l-1}+U^{(l)}h_{t-1}^{l}+b^{(l)})}dóndeW(l),U(l),b(l){\displaystyle W^{(l)},U^{(l)},b^{(l)}}son pesos y sesgos, yϕ{\displaystyle \phi }es la función de activación. Al aplicar BatchNorm, esto se convierte enht(l)=ϕ(Bnorte(W(l)htl1)+U(l)ht1l){\displaystyle h_{t}^{(l)}=\phi (\mathrm {BN} (W^{(l)}h_{t}^{l-1})+U^{(l)}h_{t-1}^{l})}En BatchNorm para RNN, existen dos formas posibles de definir qué es un "lote": por fotograma y por secuencia . Concretamente, consideremos aplicar una RNN para procesar un lote de oraciones.hb,t(l){\displaystyle h_{b,t}^{(l)}}ser el estado oculto de lal{\displaystyle l}-capa para elt{\displaystyle t}-ésimo token delb{\displaystyle b}-ésima oración de entrada. Entonces, BatchNorm por marco significa normalizar sobreb{\displaystyle b}:μt(l)=1Bb=1Bhi,t(l)(σt(l))2=1Bb=1B(ht(l)μt(l))2{\displaystyle {\begin{aligned}\mu _{t}^{(l)}&={\frac {1}{B}}\sum _{b=1}^{B}h_{i,t}^{(l)}\\(\sigma _{t}^{(l)})^{2}&={\frac {1}{B}}\sum _{b=1}^{B}(h_{t}^{(l)}-\mu _{t}^{(l)})^{2}\end{aligned}}}y secuencialmente significa normalizar sobre(b,t){\displaystyle (b,t)}:μ(l)=1BTb=1Bt=1Thi,t(l)(σ(l))2=1BTb=1Bt=1T(ht(l)μ(l))2{\displaystyle {\begin{aligned}\mu ^{(l)}&={\frac {1}{BT}}\sum _{b=1}^{B}\sum _{t=1}^{T}h_{i,t}^{(l)}\\(\sigma ^{(l)})^{2}&={\frac {1}{BT}}\sum _{b=1}^{B}\sum _{t=1}^{T}(h_{t}^{(l)}-\mu ^{(l)})^{2}\end{aligned}}}La normalización por lotes a nivel de fotograma es adecuada para tareas causales como la predicción del siguiente carácter, donde los fotogramas futuros no están disponibles, lo que obliga a la normalización por fotograma. La normalización por lotes a nivel de secuencia es adecuada para tareas como el reconocimiento de voz, donde las secuencias completas están disponibles, pero con longitudes variables. En un lote, las secuencias más cortas se rellenan con ceros para que coincidan con el tamaño de la secuencia más larga del lote. En tales configuraciones, no se recomienda la normalización a nivel de fotograma, ya que el número de fotogramas sin rellenar disminuye a lo largo del eje temporal, lo que da lugar a estimaciones estadísticas cada vez peores. [ 11 ]

También es posible aplicar BatchNorm a las LSTM . [ 12 ]

mejoras

BatchNorm ha sido muy popular y se han intentado muchas mejoras. Algunos ejemplos incluyen: [ 13 ]

  • Procesamiento por lotes fantasma: divida aleatoriamente un lote en sublotes y aplique BatchNorm por separado a cada uno;
  • descomposición del peso enγ{\displaystyle \gamma }yβ{\displaystyle \beta };
  • y combinando BatchNorm con GroupNorm.

Un problema particular de BatchNorm es que, durante el entrenamiento, la media y la varianza se calculan sobre la marcha para cada lote (generalmente como una media móvil exponencial ), pero durante la inferencia, la media y la varianza se congelan a partir de las calculadas durante el entrenamiento. Esta disparidad entre entrenamiento y prueba degrada el rendimiento. La disparidad se puede reducir simulando la media móvil durante la inferencia: [ 13 ] : Ec. 3

μ=αmi[incógnita]+(1α)μincógnita, trenσ2=(αmi[incógnita]2+(1α)μincógnita2, tren)μ2{\displaystyle {\begin{aligned}\mu &=\alpha E[x]+(1-\alpha )\mu _{x,{\text{ train}}}\\\sigma ^{2}&=(\alpha E[x]^{2}+(1-\alpha )\mu _{x^{2},{\text{ train}}})-\mu ^{2}\end{aligned}}}

dóndeα{\displaystyle \alpha }es un hiperparámetro que debe optimizarse en un conjunto de validación.

Otros trabajos intentan eliminar BatchNorm, como por ejemplo ResNet sin normalizador. [ 14 ]

Normalización de capas

La normalización de capas ( LayerNorm ) [ 15 ] es una alternativa popular a BatchNorm. A diferencia de BatchNorm, que normaliza las activaciones en toda la dimensión del lote para una característica dada, LayerNorm las normaliza en todas las características dentro de una única muestra de datos. En comparación con BatchNorm, el rendimiento de LayerNorm no se ve afectado por el tamaño del lote. Es un componente clave de los modelos Transformer .

Para una entrada de datos y una capa dadas, LayerNorm calcula la mediaμ{\displaystyle \mu }y varianzaσ2{\displaystyle \sigma ^{2}}sobre todas las neuronas de la capa. Similar a BatchNorm, parámetros entrenablesγ{\displaystyle \gamma }(escala) yβ{\displaystyle \beta }(desplazamiento) se aplican. Se define por:

incógnitai^=incógnitaiμσ2+ϵ,yi=γiincógnitai^+βi{\displaystyle {\hat {x_{i}}}={\frac {x_{i}-\mu }{\sqrt {\sigma ^{2}+\epsilon }}},\quad y_{i}=\gamma _{i}{\hat {x_{i}}}+\beta _{i}}

dónde:

μ=1Di=1Dincógnitai,σ2=1Di=1D(incógnitaiμ)2{\displaystyle \mu ={\frac {1}{D}}\sum _{i=1}^{D}x_{i},\quad \sigma ^{2}={\frac {1}{D}}\sum _{i=1}^{D}(x_{i}-\mu )^{2}}

y el índicei{\displaystyle i}abarca las neuronas de esa capa.

Ejemplos

Por ejemplo, en CNN, LayerNorm se aplica a todas las activaciones de una capa. En la notación anterior, tenemos:

μ(l)=1HWdoh=1Hw=1Wdo=1doincógnitah,w,do(l)(σ(l))2=1HWdoh=1Hw=1Wdo=1do(incógnitah,w,do(l)μ(l))2incógnita^h,w,do(l)=incógnita^h,w,do(l)μ(l)(σ(l))2+ϵyh,w,do(l)=γ(l)incógnita^h,w,do(l)+β(l){\displaystyle {\begin{aligned}\mu ^{(l)}&={\frac {1}{HWC}}\sum _{h=1}^{H}\sum _{w=1}^{W}\sum _{c=1}^{C}x_{h,w,c}^{(l)}\\(\sigma ^{(l)})^{2}&={\frac {1}{HWC}}\sum _{h=1}^{H}\sum _{w=1}^{W}\sum _{c=1}^{C}(x_{h,w,c}^{(l)}-\mu ^{(l)})^{2}\\{\hat {x}}_{h,w,c}^{(l)}&={\frac {{\hat {x}}_{h,w,c}^{(l)}-\mu ^{(l)}}{\sqrt {(\sigma ^{(l)})^{2}+\epsilon }}}\\y_{h,w,c}^{(l)}&=\gamma ^{(l)}{\hat {x}}_{h,w,c}^{(l)}+\beta ^{(l)}\end{aligned}}}

Observe que el índice de lotesb{\displaystyle b}se elimina, mientras que el índice del canaldo{\displaystyle c}se añade.

En las redes neuronales recurrentes [ 15 ] y los transformadores [ 16 ] LayerNorm se aplica individualmente a cada paso de tiempo. Por ejemplo, si el vector oculto en una RNN en el paso de tiempot{\displaystyle t}esincógnita(t)RD{\displaystyle x^{(t)}\in \mathbb {R} ^{D}}, dóndeD{\displaystyle D}es la dimensión del vector oculto, entonces se aplicará LayerNorm con:

incógnitai^(t)=incógnitai(t)μ(t)(σ(t))2+ϵ,yi(t)=γiincógnitai^(t)+βi{\displaystyle {\hat {x_{i}}}^{(t)}={\frac {x_{i}^{(t)}-\mu ^{(t)}}{\sqrt {(\sigma ^{(t)})^{2}+\epsilon }}},\quad y_{i}^{(t)}=\gamma _{i}{\hat {x_{i}}}^{(t)}+\beta _{i}}

dónde:

μ(t)=1Di=1Dincógnitai(t),(σ(t))2=1Di=1D(incógnitai(t)μ(t))2{\displaystyle \mu ^{(t)}={\frac {1}{D}}\sum _{i=1}^{D}x_{i}^{(t)},\quad (\sigma ^{(t)})^{2}={\frac {1}{D}}\sum _{i=1}^{D}(x_{i}^{(t)}-\mu ^{(t)})^{2}}

Normalización de capas de raíz cuadrática media

Normalización de la capa de raíz cuadrática media ( RMSNorm ): [ 17 ]

incógnitai^=incógnitai1Dj=1Dincógnitaj2,yi=γincógnitai^+β{\displaystyle {\hat {x_{i}}}={\frac {x_{i}}{\sqrt {{\frac {1}{D}}\sum _{j=1}^{D}x_{j}^{2}}}},\quad y_{i}=\gamma {\hat {x_{i}}}+\beta }

Esencialmente, es LayerNorm donde aplicamosμ,ϵ=0{\displaystyle \mu ,\epsilon =0}También se denomina normalización L2 . Es un caso especial de la normalización Lp o normalización de potencia .incógnitai^=incógnitai(1Dj=1D|incógnitaj|pag)1/pag,yi=γincógnitai^+β{\displaystyle {\hat {x_{i}}}={\frac {x_{i}}{\left({\frac {1}{D}}\sum _{j=1}^{D}|x_{j}|^{p}\right)^{1/p}}},\quad y_{i}=\gamma {\hat {x_{i}}}+\beta }dóndepag>0{\displaystyle p>0}es una constante.

Adaptado

La norma de capa adaptativa ( adaLN ) calcula laγ,β{\displaystyle \gamma ,\beta }en un LayerNorm no de la activación de la capa en sí, sino de otros datos. Se propuso por primera vez para CNN, [ 18 ] y se ha utilizado eficazmente en transformadores de difusión (DiT). [ 19 ] Por ejemplo, en un DiT, la información de condicionamiento (como un vector de codificación de texto) es procesada por un perceptrón multicapa enγ,β{\displaystyle \gamma ,\beta }, que luego se aplica en el módulo LayerNorm de un transformador.

Normalización de peso

La normalización de pesos ( WeightNorm ) [ 20 ] es una técnica inspirada en BatchNorm que normaliza las matrices de pesos en una red neuronal, en lugar de sus activaciones.

Un ejemplo es la normalización espectral , que divide las matrices de pesos por su norma espectral . La normalización espectral se utiliza en redes generativas antagónicas (GAN), como la GAN de Wasserstein . [ 21 ] El radio espectral se puede calcular de manera eficiente mediante el siguiente algoritmo:

Matriz de ENTRADAW{\displaystyle W}y suposición inicialincógnita{\displaystyle x}

Iterarincógnita1Wincógnita2Wincógnita{\displaystyle x\mapsto {\frac {1}{\|Wx\|_{2}}}Wx}a la convergenciaincógnita{\displaystyle x^{*}}Este es el vector propio deW{\displaystyle W}con valor propioWs{\displaystyle \|W\|_{s}}.

DEVOLVERincógnita,Wincógnita2{\displaystyle x^{*},\|Wx^{*}\|_{2}}

Al reasignarWiWiWis{\displaystyle W_{i}\leftarrow {\frac {W_{i}}{\|W_{i}\|_{s}}}}Después de cada actualización del discriminador, podemos establecer un límite superior.Wis1{\displaystyle \|W_{i}\|_{s}\leq 1}y, por lo tanto, límite superiorDL{\displaystyle \|D\|_{L}}.

El algoritmo puede acelerarse aún más mediante la memorización : en el pasot{\displaystyle t}, almacenarincógnitai(t){\displaystyle x_{i}^{*}(t)}. Luego, en el pasot+1{\displaystyle t+1}, usarincógnitai(t){\displaystyle x_{i}^{*}(t)}como la suposición inicial para el algoritmo. Dado queWi(t+1){\displaystyle W_{i}(t+1)}está muy cerca deWi(t){\displaystyle W_{i}(t)}, así esincógnitai(t){\displaystyle x_{i}^{*}(t)}aincógnitai(t+1){\displaystyle x_{i}^{*}(t+1)}, permitiendo así una rápida convergencia.

Normalización específica de CNN

Existen algunas técnicas de normalización de activación que solo se utilizan para redes neuronales convolucionales (CNN).

Normalización de la respuesta

La normalización de respuesta local [ 22 ] se utilizó en AlexNet . Se aplicó en una capa convolucional, justo después de una función de activación no lineal. Se definió de la siguiente manera:

bincógnita,yi=aincógnita,yi(k+αj=máximo(0,inorte/2)min(norte1,i+norte/2)(aincógnita,yj)2)β{\displaystyle b_{x,y}^{i}={\frac {a_{x,y}^{i}}{\left(k+\alpha \sum _{j=\max(0,i-n/2)}^{\min(N-1,i+n/2)}\left(a_{x,y}^{j}\right)^{2}\right)^{\beta }}}}

dóndeaincógnita,yi{\displaystyle a_{x,y}^{i}}es la activación de la neurona en la ubicación(incógnita,y){\displaystyle (x,y)}y canali{\displaystyle i}Es decir, cada píxel de un canal se ve suprimido por las activaciones del mismo píxel en sus canales adyacentes.

k,norte,α,β{\displaystyle k,n,\alpha ,\beta }Los hiperparámetros se seleccionan utilizando un conjunto de validación.

Era una variante de la normalización de contraste local anterior . [ 23 ]

bincógnita,yi=aincógnita,yi(k+αj=máximo(0,inorte/2)min(norte1,i+norte/2)(aincógnita,yja¯incógnita,yj)2)β{\displaystyle b_{x,y}^{i}={\frac {a_{x,y}^{i}}{\left(k+\alpha \sum _{j=\max(0,i-n/2)}^{\min(N-1,i+n/2)}\left(a_{x,y}^{j}-{\bar {a}}_{x,y}^{j}\right)^{2}\right)^{\beta }}}}

dóndea¯incógnita,yj{\displaystyle {\bar {a}}_{x,y}^{j}}es la activación promedio en una pequeña ventana centrada en la ubicación(incógnita,y){\displaystyle (x,y)}y canali{\displaystyle i}. Los hiperparámetrosk,norte,α,β{\displaystyle k,n,\alpha ,\beta }y el tamaño de la ventana pequeña se seleccionan utilizando un conjunto de validación.

Métodos similares se denominaron normalización divisiva , ya que dividen las activaciones por un número que depende de dichas activaciones. Originalmente se inspiraron en la biología, donde se utilizaron para explicar las respuestas no lineales de las neuronas corticales y el enmascaramiento no lineal en la percepción visual. [ 24 ]

Ambos tipos de normalización local fueron obviados por la normalización por lotes, que es una forma de normalización más global. [ 25 ]

La normalización de la respuesta reapareció en ConvNeXT-2 como normalización global de la respuesta . [ 26 ]

Normalización de grupo

La normalización de grupo ( GroupNorm ) [ 27 ] es una técnica que también se utiliza exclusivamente para CNN. Se puede entender como la LayerNorm para CNN aplicada una vez por grupo de canales.

Supongamos que en una capal{\displaystyle l}, hay canales1,2,,do{\displaystyle 1,2,\dots ,C}, luego se divide en gruposgramo1,gramo2,,gramoGRAMO{\displaystyle g_{1},g_{2},\dots ,g_{G}}. A continuación, se aplica LayerNorm a cada grupo.

Normalización de instancias

La normalización de instancia ( InstanceNorm ), o normalización de contraste , es una técnica desarrollada inicialmente para la transferencia de estilo neuronal y que también se utiliza exclusivamente para CNN. [ 28 ] Puede entenderse como la LayerNorm para CNN aplicada una vez por canal, o equivalentemente, como una normalización de grupo donde cada grupo consta de un solo canal:

μdo(l)=1HWh=1Hw=1Wincógnitah,w,do(l)(σdo(l))2=1HWh=1Hw=1W(incógnitah,w,do(l)μdo(l))2incógnita^h,w,do(l)=incógnita^h,w,do(l)μdo(l)(σdo(l))2+ϵyh,w,do(l)=γdo(l)incógnita^h,w,do(l)+βdo(l){\displaystyle {\begin{aligned}\mu _{c}^{(l)}&={\frac {1}{HW}}\sum _{h=1}^{H}\sum _{w=1}^{W}x_{h,w,c}^{(l)}\\(\sigma _{c}^{(l)})^{2}&={\frac {1}{HW}}\sum _{h=1}^{H}\sum _{w=1}^{W}(x_{h,w,c}^{(l)}-\mu _{c}^{(l)})^{2}\\{\hat {x}}_{h,w,c}^{(l)}&={\frac {{\hat {x}}_{h,w,c}^{(l)}-\mu _{c}^{(l)}}{\sqrt {(\sigma _{c}^{(l)})^{2}+\epsilon }}}\\y_{h,w,c}^{(l)}&=\gamma _{c}^{(l)}{\hat {x}}_{h,w,c}^{(l)}+\beta _{c}^{(l)}\end{aligned}}}

Normalización de instancias adaptativa

La normalización de instancia adaptativa ( AdaIN ) es una variante de la normalización de instancia, diseñada específicamente para la transferencia de estilo neuronal con CNN, en lugar de solo CNN en general. [ 29 ]

En el método AdaIN de transferencia de estilo, tomamos una CNN y dos imágenes de entrada, una para el contenido y otra para el estilo . Cada imagen se procesa a través de la misma CNN y en una capa determinada.l{\displaystyle l}, se aplica AdaIn.

Dejarincógnita(l), contenido{\displaystyle x^{(l),{\text{ content}}}}ser la activación en la imagen de contenido, yincógnita(l), estilo{\displaystyle x^{(l),{\text{ style}}}}sea ​​la activación en la imagen de estilo. Luego, AdaIn calcula primero la media y la varianza de las activaciones de la imagen de contenido.incógnita(l){\displaystyle x'^{(l)}}, luego usa esos como elγ,β{\displaystyle \gamma ,\beta }para InstanceNorm enincógnita(l), contenido{\displaystyle x^{(l),{\text{ content}}}}. Tenga en cuenta queincógnita(l), estilo{\displaystyle x^{(l),{\text{ style}}}}en sí mismo permanece sin cambios. Explícitamente, tenemos:

yh,w,do(l), contenido=σdo(l), estilo(incógnitah,w,do(l), contenidoμdo(l), contenido(σdo(l), contenido)2+ϵ)+μdo(l), estilo{\displaystyle {\begin{aligned}y_{h,w,c}^{(l),{\text{ content}}}&=\sigma _{c}^{(l),{\text{ style}}}\left({\frac {x_{h,w,c}^{(l),{\text{ content}}}-\mu _{c}^{(l),{\text{ content}}}}{\sqrt {(\sigma _{c}^{(l),{\text{ content}}})^{2}+\epsilon }}}\right)+\mu _{c}^{(l),{\text{ style}}}\end{aligned}}}

Transformers

Algunos métodos de normalización fueron diseñados para su uso en transformadores .

El transformador original de 2017 utilizó la configuración "post-LN" para sus LayerNorms. Su entrenamiento resultó complejo y requirió un ajuste preciso de los hiperparámetros y un "calentamiento" de la tasa de aprendizaje , que comienza con un valor bajo y aumenta gradualmente. Se descubrió que la convención pre-LN, propuesta varias veces en 2018, [ 30 ] era más fácil de entrenar, ya que no requería calentamiento, lo que conducía a una convergencia más rápida. [ 31 ]

FixNorm [ 32 ] y ScaleNorm [ 33 ] normalizan los vectores de activación en un transformador. El método FixNorm divide los vectores de salida de un transformador por sus normas L2 y luego los multiplica por un parámetro aprendido.gramo{\displaystyle g}El ScaleNorm reemplaza todos los LayerNorms dentro de un transformador dividiéndolos con la norma L2 y luego multiplicándolos por un parámetro aprendido.gramo{\displaystyle g'}(compartido por todos los módulos ScaleNorm de un transformador). La normalización de consulta-clave ( QKNorm ) [ 34 ] normaliza los vectores de consulta y clave para que tengan una norma L2 unitaria.

En nGPT , muchos vectores se normalizan para tener una norma L2 unitaria: [ 35 ] vectores de estado oculto, vectores de incrustación de entrada y salida, columnas de la matriz de pesos y vectores de consulta y clave.

Misceláneas

La normalización del gradiente ( GradNorm ) [ 36 ] normaliza los vectores de gradiente durante la retropropagación.

Véase también

Referencias

  1. Huang, Lei (2022). Técnicas de normalización en aprendizaje profundo . Conferencias de síntesis sobre visión por computadora. Cham: Springer International Publishing. doi : 10.1007/978-3-031-14595-7 . ISBN 978-3-031-14594-0.
  2. 1 2 3 4 5 Ioffe, Sergey; Szegedy, Christian (2015-06-01). "Normalización por lotes: aceleración del entrenamiento de redes neuronales profundas mediante la reducción del desplazamiento de covariables internas" . Actas de la 32.ª Conferencia Internacional sobre Aprendizaje Automático . PMLR: 448–456 . arXiv : 1502.03167 .
  3. 1 2 Goodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). "8.7.1. Normalización por lotes". Aprendizaje profundo . Computación adaptativa y aprendizaje automático. Cambridge, Massachusetts: The MIT Press. ISBN 978-0-262-03561-3.
  4. Desjardins, Guillaume; Simonyan, Karen; Pascanu, Razvan; kavukcuoglu, koray (2015). "Redes neuronales naturales" . Avances en sistemas de procesamiento de información neuronal . 28. Curran Associates, Inc.
  5. Xu, Jingjing; Sol, Xu; Zhang, Zhiyuan; Zhao, Guangxiang; Lin, Junyang (2019). "Comprensión y mejora de la normalización de capas" . Avances en los sistemas de procesamiento de información neuronal . 32 . Curran Associates, Inc. arXiv : 1911.07013 .
  6. Awais, Muhammad; Bin Iqbal, Md. Tauhid; Bae, Sung-Ho (noviembre de 2021). "Revisiting Internal Covariate Shift for Batch Normalization". IEEE Transactions on Neural Networks and Learning Systems . 32 (11): 5082– 5092. Bibcode : 2021ITNNL..32.5082A . doi : 10.1109/TNNLS.2020.3026784 . ISSN 2162-237X . PMID 33095717 .  
  7. Bjorck, Nils; Gomes, Carla P; Selman, Bart; Weinberger, Kilian Q (2018). "Understanding Batch Normalization" . Advances in Neural Information Processing Systems . 31. Curran Associates, Inc. arXiv : 1806.02375 .
  8. Santurkar, Shibani; Tsipras, Dimitris; Ilyas, Andrew; Madry, Aleksander (2018). "¿Cómo ayuda la normalización por lotes a la optimización?" . Avances en sistemas de procesamiento de información neuronal . 31 . Curran Associates, Inc.
  9. "BatchNorm2d — Documentación de PyTorch 2.4" . pytorch.org . Consultado el 26 de septiembre de 2024 .
  10. Zhang, Aston; Lipton, Zachary; Li, Mu; Smola, Alexander J. (2024). "8.5. Normalización por lotes" . Sumérgete en el aprendizaje profundo . Cambridge, Nueva York, Puerto Rico, Melbourne, Nueva Delhi, Singapur: Cambridge University Press. ISBN 978-1-009-38943-3.
  11. 1 2 Laurent, Cesar; Pereyra, Gabriel; Brakel, Philemon; Zhang, Ying; Bengio, Yoshua (marzo de 2016). "Redes neuronales recurrentes normalizadas por lotes". 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) . IEEE. págs. 2657–2661 . arXiv : 1510.01378 . doi : 10.1109 /ICASSP.2016.7472159 . ISBN  978-1-4799-9988-0.
  12. ^ Cooijmans, Tim; Ballas, Nicolás; Laurent, César; Gülçehre, Çağlar; Courville, Aarón (2016). "Normalización de lotes recurrentes". arXiv : 1603.09025 [ cs.LG ].
  13. 1 2 Summers, Cecilia; Dinneen, Michael J. (2019). "Cuatro cosas que todos deberían saber para mejorar la normalización por lotes". arXiv : 1906.03548 [ cs.LG ].
  14. Brock, Andrew; De, Soham; Smith, Samuel L.; Simonyan, Karen (2021). "Reconocimiento de imágenes a gran escala de alto rendimiento sin normalización". arXiv : 2102.06171 [ cs.CV ].
  15. 1 2 Ba, Jimmy Lei; Kiros, Jamie Ryan; Hinton, Geoffrey E. (2016). "Layer Normalization". arXiv : 1607.06450 [ stat.ML ].
  16. Phuong, Mary; Hutter, Marcus (19 de julio de 2022). "Algoritmos formales para transformadores". arXiv : 2207.09238 [ cs.LG ].
  17. Zhang, Biao; Sennrich, Rico (2019-10-16). "Normalización de capas de raíz cuadrática media". arXiv : 1910.07467 [ cs.LG ].
  18. Perez, Ethan; Strub, Florian; De Vries, Harm; Dumoulin, Vincent; Courville, Aaron (2018-04-29). "FiLM: Razonamiento visual con una capa de condicionamiento general" . Actas de la Conferencia AAAI sobre Inteligencia Artificial . 32 (1). arXiv : 1709.07871 . doi : 10.1609/aaai.v32i1.11671 . ISSN 2374-3468 . 
  19. Peebles, William; Xie, Saining (2023). "Modelos de difusión escalables con transformadores" : 4195–4205 . arXiv : 2212.09748 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  20. Salimans, Tim; Kingma, Diederik P. (2016-06-03). "Normalización de pesos: una reparametrización simple para acelerar el entrenamiento de redes neuronales profundas". arXiv : 1602.07868 [ cs.LG ].
  21. Miyato, Takeru; Kataoka, Toshiki; Koyama, Masanori; Yoshida, Yuichi (16 de febrero de 2018). "Normalización espectral para redes generativas adversarias". arXiv : 1802.05957 [ cs.LG ].
  22. Krizhevsky, Alex; Sutskever, Ilya; Hinton, Geoffrey E (2012). "Clasificación de ImageNet con redes neuronales convolucionales profundas" . Avances en sistemas de procesamiento de información neuronal . 25. Curran Associates, Inc.
  23. Jarrett, Kevin; Kavukcuoglu, Koray; Ranzato, Marc' Aurelio; LeCun, Yann (septiembre de 2009). "¿Cuál es la mejor arquitectura multietapa para el reconocimiento de objetos?" . 2009 IEEE 12.ª Conferencia Internacional sobre Visión por Computadora . IEEE. págs. 2146–2153 . doi : 10.1109/iccv.2009.5459469 . ISBN  978-1-4244-4420-5.
  24. Lyu, Siwei; Simoncelli, Eero P. (2008). "Representación no lineal de imágenes mediante normalización divisiva". Conferencia IEEE de 2008 sobre Visión por Computadora y Reconocimiento de Patrones . Vol. 2008. págs. 1–8 . doi : 10.1109/CVPR.2008.4587821 . ISBN   978-1-4244-2242-5. ISSN 1063-6919 . PMC 4207373 . PMID 25346590 .   
  25. Ortiz, Anthony; Robinson, Caleb; Morris, Dan; Fuentes, Olac; Kiekintveld, Christopher; Hassan, Md Mahmudulla; Jojic, Nebojsa (2020). "Normalización de contexto local: una revisión de la normalización local" : 11276–11285 . arXiv : 1912.05845 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  26. Woo, Sanghyun; Debnath, Shoubhik; Hu, Ronghang; Chen, Xinlei; Liu, Zhuang; Kweon, In So; Xie, Saining (2023). "ConvNeXt V2: Co-Designing and Scaling ConvNets With Masked Autoencoders" : 16133–16142 . arXiv : 2301.00808 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  27. ^ Wu, Yuxin; Él, Kaiming (2018). "Normalización de grupo" : 3– 19.{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  28. Ulyanov, Dmitry; Vedaldi, Andrea; Lempitsky, Victor (2017-11-06). "Normalización de instancias: el ingrediente que falta para una estilización rápida". arXiv : 1607.08022 [ cs.CV ].
  29. Huang, Xun; Belongie, Serge (2017). "Transferencia de estilo arbitraria en tiempo real con normalización de instancia adaptativa" : 1501–1510 . arXiv : 1703.06868 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  30. ^ Wang, Qiang; Li, Bei; Xiao, Tong; Zhu, Jingbo; Li, Changliang; Wong, Derek F.; Chao, Lidia S. (2019). "Aprendizaje de modelos de transformadores profundos para traducción automática". arXiv : 1906.01787 [ cs.CL ].
  31. ^ Xiong, Ruibin; Yang, Yunchang; Él, Di; Zheng, Kai; Zheng, Shuxin; Xing, Chen; Zhang, Huishuai; Lan, Yanyan; Wang, Liwei; Liu, Tie-Yan (29 de junio de 2020). "Sobre la normalización de capas en la arquitectura del transformador". arXiv : 2002.04745 [ cs.LG ].
  32. Nguyen, Toan Q.; Chiang, David (2017). "Mejora de la elección léxica en la traducción automática neuronal". arXiv : 1710.01329 [ cs.CL ].
  33. Nguyen, Toan Q.; Salazar, Julian (2019-11-02). "Transformers without Tears: Improving the Normalization of Self-Attention". arXiv : 1910.05895 . doi : 10.5281/zenodo.3525484 .{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  34. Henry, Alex; Dachapally, Prudhvi Raj; Pawar, Shubham Shantaram; Chen, Yuxuan (noviembre de 2020). Cohn, Trevor; He, Yulan; Liu, Yang (eds.). "Normalización de clave de consulta para transformadores" . Hallazgos de la Asociación para la Lingüística Computacional: EMNLP 2020. En línea: Asociación para la Lingüística Computacional: 4246–4253 . arXiv : 2010.04245 . doi : 10.18653/v1/2020.findings-emnlp.379 .
  35. Loshchilov, Ilya; Hsieh, Cheng-Ping; Sun, Simeng; Ginsburg, Boris (2024). "NGPT: Transformador normalizado con aprendizaje de representación en la hiperesfera". arXiv : 2410.01131 [ cs.LG ].
  36. Chen, Zhao; Badrinarayanan, Vijay; Lee, Chen-Yu; Rabinovich, Andrew (2018-07-03). "GradNorm: Normalización de gradiente para el equilibrio adaptativo de pérdidas en redes neuronales profundas multitarea" . Actas de la 35.ª Conferencia Internacional sobre Aprendizaje Automático . PMLR: 794–803 . arXiv : 1711.02257 .

Lecturas adicionales

  • "Capas de normalización" . Implementaciones de artículos sobre aprendizaje profundo de labml.ai . Consultado el 7 de agosto de 2024 .