6 votos

¿Normalizar las entradas de la red neuronal con una capa lineal?

Estoy contribuyendo a un proyecto de software de ML y he notado algo raro en el código:

Realizan la normalización introduciendo una capa lineal justo después de las entradas. Esta capa lineal tiene el mismo número de nodos que las entradas. Nunca he oído hablar de esta práctica... ¿Cómo se normalizan las entradas?

El único comentario en el código con respecto a esto dice: We disguise standardization in the first linear layer to keep it seamlessly in a sequential PyTorch object.

Pero no entiendo cómo esto se considera "normalización".

3voto

user777 Puntos 10934

Una forma de hacer la estandarización es restar algún valor (por ejemplo, la media de la muestra $\hat \mu$ ) y se divide por otro valor (por ejemplo, la desviación estándar de la muestra $\hat \sigma$ ):

$$ z = \frac{x - \hat \mu}{\hat \sigma}. $$

Cuando $X$ es una matriz, podemos calcular las medias y las desviaciones estándar de las columnas; cada una es un vector. Entonces podemos centrar y escalar cada vector $x$ con estos vectores:

$$\begin{align} z &= \left(\hat \sigma I\right)^{-1}(x - \hat \mu) \\ &= \left(\hat \sigma I\right)^{-1}x - \left(\hat \sigma I\right)^{-1} \hat\mu \\ &= Ax + b \end{align}$$

Esto debería ser reconocible como las mismas operaciones de una capa lineal: multiplicación matriz-vector y suma vectorial.

En otras palabras, si se asigna $A,b$ los valores exactos que desea utilizar y no actualizar nunca esos valores, la capa lineal hará la normalización por usted. Este es el objetivo de diseño declarado: poner las manipulaciones para la estandarización en el objeto PyTorch, en lugar de estandarizar los datos antes de entregarlos al modelo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X