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. Existen dos formas principales de normalización: la normalización de datos ...

En el aprendizaje automático , la normalización es una técnica estadística con diversas aplicaciones. Existen dos formas principales de normalización: 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, un método popular de escalado de características es la normalización min-max , donde cada característica se transforma para tener el mismo rango (normalmente o ). 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. [0,1]{\displaystyle [0,1]}[1,1]{\displaystyle [-1,1]}

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. es el vector de entrada, es el vector de salida del primer módulo, etc. incógnita(0){\displaystyle x^{(0)}}incógnita(1){\displaystyle x^{(1)}}

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

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 entradas , introducidas todas a la vez en la red. En el centro de la red obtendríamos algunos vectores: incógnita(1)(0),incógnita(2)(0),,incógnita(B)(0){\displaystyle x_{(1)}^{(0)},x_{(2)}^{(0)},\dots ,x_{(B)}^{(0)}}

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}}}

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

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 }}}}

Es una pequeña constante positiva, como la que se añade a la varianza para la estabilidad numérica, para evitar la división por cero . ϵ{\displaystyle \epsilon }109{\displaystyle 10^{-9}}

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í, y son parámetros dentro del módulo BatchNorm. Son parámetros aprendibles, normalmente entrenados mediante descenso de gradiente . γ{\displaystyle \gamma }β{\displaystyle \beta }

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 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 ]β{\displaystyle \beta }

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, , no . Además, el sesgo no importa, ya que se cancelaría con la resta de la media posterior, por lo que tiene la forma . Es decir, si un BatchNorm va precedido de una transformación lineal, entonces el término de sesgo de esa transformación lineal se establece en cero. [ 2 ]ϕ(Bnorte(Wincógnita+b)){\displaystyle \phi (\mathrm {BN} (Wx+b))}Bnorte(ϕ(Wincógnita+b)){\displaystyle \mathrm {BN} (\phi (Wx+b))}b{\displaystyle b}Bnorte(Wincógnita){\displaystyle \mathrm {BN} (Wx)}

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 en el canal -ésimo de la capa -ésima.(h,w){\displaystyle (h,w)}do{\displaystyle c}l{\displaystyle l}
  • KΔh,Δw,do,do(l){\displaystyle K_{\Delta h,\Delta w,c,c'}^{(l)}}es un tensor de núcleo. Cada canal corresponde a un núcleo , con índices .do{\displaystyle c}Khh,ww,do,do(l){\displaystyle K_{h'-h,w'-w,c,c'}^{(l)}}Δh,Δw,do{\displaystyle \Delta h,\Delta w,c'}
  • bdo(l){\displaystyle b_{c}^{(l)}}es el término de polarización para el -ésimo canal de la -ésima capa.do{\displaystyle c}l{\displaystyle l}

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 (o equivalentemente, una vez por canal ), no por activación : do{\displaystyle c}do{\displaystyle c}incó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}}}

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

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

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

x^(b),h,w,c(l)=x(b),h,w,c(l)μc(l)(σc(l))2+ϵy(b),h,w,c(l)=γcx^(b),h,w,c(l)+βc{\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 la capa -ésima en el tiempo . La RNN estándar, sin normalización, satisface donde son pesos y sesgos, y es la función de activación. Al aplicar BatchNorm, esto se convierte en Hay dos formas posibles de definir qué es un "lote" en BatchNorm para RNN: por fotograma y por secuencia . Concretamente, considere aplicar una RNN para procesar un lote de oraciones. Sea el estado oculto de la capa -ésima para el token -ésimo de la oración de entrada -ésima. Entonces BatchNorm por fotograma significa normalizar sobre : y por secuencia significa normalizar sobre : BatchNorm por fotograma es adecuado 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 secuencial es adecuada para tareas como el reconocimiento de voz, donde se dispone de secuencias completas, pero con longitudes variables. En un lote, las secuencias más cortas se rellenan con ceros para igualar el tamaño de la secuencia más larga del lote. En tales configuraciones, no se recomienda la normalización por fotogramas, ya que el número de fotogramas sin rellenar disminuye a lo largo del eje temporal, lo que conlleva estimaciones estadísticas cada vez peores. [ 11 ]l{\displaystyle l}t{\displaystyle t}ht(l){\displaystyle h_{t}^{(l)}}ht(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)})}W(l),U(l),b(l){\displaystyle W^{(l)},U^{(l)},b^{(l)}}ϕ{\displaystyle \phi }ht(l)=ϕ(BN(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})}hb,t(l){\displaystyle h_{b,t}^{(l)}}l{\displaystyle l}t{\displaystyle t}b{\displaystyle b}b{\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}}}(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}}}

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 y ;γ{\displaystyle \gamma }β{\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

μ=αE[x]+(1α)μx, trainσ2=(αE[x]2+(1α)μx2, train)μ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}}}

donde es un hiperparámetro que se debe optimizar en un conjunto de validación. α{\displaystyle \alpha }

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 y la varianza de todas las neuronas de la capa. De forma similar a BatchNorm, se aplican parámetros entrenables (escala) y (desplazamiento). Se define mediante: μ{\displaystyle \mu }σ2{\displaystyle \sigma ^{2}}γ{\displaystyle \gamma }β{\displaystyle \beta }

xi^=xiμσ2+ϵ,yi=γixi^+β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=1Dxi,σ2=1Di=1D(xiμ)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 índice abarca las neuronas de esa capa. i{\displaystyle i}

Ejemplos

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

μ(l)=1HWCh=1Hw=1Wc=1Cxh,w,c(l)(σ(l))2=1HWCh=1Hw=1Wc=1C(xh,w,c(l)μ(l))2x^h,w,c(l)=x^h,w,c(l)μ(l)(σ(l))2+ϵyh,w,c(l)=γ(l)x^h,w,c(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 se elimina el índice de lotes , mientras que se agrega el índice de canales. b{\displaystyle b}c{\displaystyle c}

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 tiempo es , donde es la dimensión del vector oculto, entonces LayerNorm se aplicará con: t{\displaystyle t}x(t)RD{\displaystyle x^{(t)}\in \mathbb {R} ^{D}}D{\displaystyle D}

xi^(t)=xi(t)μ(t)(σ(t))2+ϵ,yi(t)=γixi^(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=1Dxi(t),(σ(t))2=1Di=1D(xi(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 ]

xi^=xi1Dj=1Dxj2,yi=γxi^+β{\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 imponemos . También se le llama normalización L2 . Es un caso especial de normalización Lp , o normalización de potencia : donde es una constante. μ,ϵ=0{\displaystyle \mu ,\epsilon =0}xi^=xi(1Dj=1D|xj|p)1/p,yi=γxi^+β{\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 }p>0{\displaystyle p>0}

Adaptado

La norma de capa adaptativa ( adaLN ) calcula la en un LayerNorm no a partir de la activación de la capa en sí, sino a partir de otros datos. Fue propuesta 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 , que luego se aplica en el módulo LayerNorm de un transformador. γ,β{\displaystyle \gamma ,\beta }γ,β{\displaystyle \gamma ,\beta }

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 ENTRADA y estimación inicialW{\displaystyle W}x{\displaystyle x}

Iterar hasta la convergencia . Este es el vector propio de con valor propio . x1Wx2Wx{\displaystyle x\mapsto {\frac {1}{\|Wx\|_{2}}}Wx}x{\displaystyle x^{*}}W{\displaystyle W}Ws{\displaystyle \|W\|_{s}}

DEVOLVERx,Wx2{\displaystyle x^{*},\|Wx^{*}\|_{2}}

Al reasignar después de cada actualización del discriminador, podemos acotar superiormente , y por lo tanto acotar superiormente . WiWiWis{\displaystyle W_{i}\leftarrow {\frac {W_{i}}{\|W_{i}\|_{s}}}}Wis1{\displaystyle \|W_{i}\|_{s}\leq 1}DL{\displaystyle \|D\|_{L}}

El algoritmo se puede acelerar aún más mediante la memorización : en el paso , almacena . Luego, en el paso , usa como estimación inicial para el algoritmo. Dado que está muy cerca de , también lo está de , lo que permite una convergencia rápida. t{\displaystyle t}xi(t){\displaystyle x_{i}^{*}(t)}t+1{\displaystyle t+1}xi(t){\displaystyle x_{i}^{*}(t)}Wi(t+1){\displaystyle W_{i}(t+1)}Wi(t){\displaystyle W_{i}(t)}xi(t){\displaystyle x_{i}^{*}(t)}xi(t+1){\displaystyle x_{i}^{*}(t+1)}

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:

bx,yi=ax,yi(k+αj=max(0,in/2)min(N1,i+n/2)(ax,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 }}}}

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

k,n,α,β{\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 ]

bx,yi=ax,yi(k+αj=max(0,in/2)min(N1,i+n/2)(ax,yja¯x,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 }}}}

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

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 capa hay canales , entonces se divide en grupos . Luego, se aplica LayerNorm a cada grupo. l{\displaystyle l}1,2,,C{\displaystyle 1,2,\dots ,C}g1,g2,,gG{\displaystyle g_{1},g_{2},\dots ,g_{G}}

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:

μc(l)=1HWh=1Hw=1Wxh,w,c(l)(σc(l))2=1HWh=1Hw=1W(xh,w,c(l)μc(l))2x^h,w,c(l)=x^h,w,c(l)μc(l)(σc(l))2+ϵyh,w,c(l)=γc(l)x^h,w,c(l)+βc(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 , se aplica AdaIN. l{\displaystyle l}

Sea la activación en la imagen de contenido y la activación en la imagen de estilo. Entonces, AdaIn primero calcula la media y la varianza de las activaciones de la imagen de contenido , y luego las usa como para InstanceNorm en . Nótese que permanece sin cambios. Explícitamente, tenemos: x(l), content{\displaystyle x^{(l),{\text{ content}}}}x(l), style{\displaystyle x^{(l),{\text{ style}}}}x(l){\displaystyle x'^{(l)}}γ,β{\displaystyle \gamma ,\beta }x(l), content{\displaystyle x^{(l),{\text{ content}}}}x(l), style{\displaystyle x^{(l),{\text{ style}}}}

yh,w,c(l), content=σc(l), style(xh,w,c(l), contentμc(l), content(σc(l), content)2+ϵ)+μc(l), style{\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 .

The original 2017 transformer used the "post-LN" configuration for its LayerNorms. It was difficult to train, and required careful hyperparameter tuning and a "warm-up" in learning rate, where it starts small and gradually increases. The pre-LN convention, proposed several times in 2018,[30] was found to be easier to train, requiring no warm-up, leading to faster convergence.[31]

FixNorm[32] and ScaleNorm[33] both normalize activation vectors in a transformer. The FixNorm method divides the output vectors from a transformer by their L2 norms, then multiplies by a learned parameter g{\displaystyle g}. The ScaleNorm replaces all LayerNorms inside a transformer by division with L2 norm, then multiplying by a learned parameter g{\displaystyle g'} (shared by all ScaleNorm modules of a transformer). Query-Key normalization (QKNorm)[34] normalizes query and key vectors to have unit L2 norm.

In nGPT, many vectors are normalized to have unit L2 norm:[35] hidden state vectors, input and output embedding vectors, weight matrix columns, and query and key vectors.

Miscellaneous

Gradient normalization (GradNorm)[36] normalizes gradient vectors during backpropagation.

See also

References

  1. ^Huang, Lei (2022). Normalization Techniques in Deep Learning. Synthesis Lectures on Computer Vision. Cham: Springer International Publishing. doi:10.1007/978-3-031-14595-7. ISBN 978-3-031-14594-0.
  2. ^ abcdeIoffe, Sergey; Szegedy, Christian (2015-06-01). "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift". Proceedings of the 32nd International Conference on Machine Learning. PMLR: 448–456. arXiv:1502.03167.
  3. ^ abGoodfellow, Ian; Bengio, Yoshua; Courville, Aaron (2016). "8.7.1. Batch Normalization". Deep learning. Adaptive computation and machine learning. 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 Melbourne Nueva Delhi Singapur: Cambridge University Press. ISBN 978-1-009-38943-3.
  11. ^ a b 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. ^ a b 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. ^ a b 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. pp.  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 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Normalization_(machine_learning)&oldid=1340395252#Layer_normalization "