¿Por qué tenemos que normalizar la entrada para una red neuronal artificial?

151

Es una pregunta principal, con respecto a la teoría de las redes neuronales:

¿Por qué tenemos que normalizar la entrada para una red neuronal?

Entiendo que a veces, cuando, por ejemplo, los valores de entrada no son numéricos, se debe realizar una cierta transformación, pero cuando tenemos una entrada numérica. ¿Por qué los números deben estar en un cierto intervalo?

¿Qué pasará si los datos no están normalizados?

karla
fuente
1
Estoy votando para cerrar esta pregunta como fuera de tema porque pertenece a Stats SE o AI SE.
nbro

Respuestas:

101

Se explica bien aquí .

Si las variables de entrada se combinan linealmente, como en un MLP [perceptrón multicapa], rara vez es estrictamente necesario estandarizar las entradas, al menos en teoría. La razón es que cualquier cambio de escala de un vector de entrada puede deshacerse efectivamente cambiando los pesos y sesgos correspondientes, dejándolo con los mismos resultados exactos que tenía antes. Sin embargo, hay una variedad de razones prácticas por las cuales estandarizar las entradas puede hacer que el entrenamiento sea más rápido y reducir las posibilidades de quedarse atascado en los óptimos locales. Además, la disminución de peso y la estimación bayesiana se pueden hacer más convenientemente con entradas estandarizadas.

finnw
fuente
2
Hola, en MLP, ¿no puede estandarizar las funciones mientras se usa una tasa de aprendizaje constante que causa una sobrecompensación / infracompensación en las correcciones de propagación hacia atrás para diferentes dimensiones? Me pregunto en la siguiente publicación si esto es exclusivo de las CNN, o si las MLP podrían compartir este problema: stats.stackexchange.com/questions/185853/…
Austin
Problema: pendiente de gradiente opcional. El proceso puede llevar mucho más tiempo. ¿Por qué? Cuando las entidades son de diferente escala (x1 = 0-1 y x2 = 0..1000), la superficie de la función de error puede alargarse. Significado: diferentes escalas para diferentes dims (w1, w2). Pero la tasa de aprendizaje es la MISMA para todos los dims -> los pasos en dim alargado (w2) son muy pequeños hasta que alcanza el mínimo local. Problema: no se puede incluir LR, ya que omitirá el min local en el otro dim (w1). Vea la demostración en youtube.com/watch?reload=9&v=UIp2CMI0748
Dekel el
Aquí hay un ejemplo lineal, donde las cosas son muy malas sin escalar: stackoverflow.com/q/59319643 . ¿Alguna idea de por qué?
Siempre aprendiendo
62

En las redes neuronales, es una buena idea no solo normalizar los datos sino también escalarlos. Esto está destinado a un acercamiento más rápido a los mínimos globales en la superficie de error. Ver las siguientes fotos: superficie de error antes y después de la normalización

superficie de error antes y después de escalar

Se toman fotografías del curso sobre redes neuronales. El autor del curso es Geoffrey Hinton.

Yuriy Zaletskyy
fuente
14
Hubiera sido amable de su parte darle crédito al autor del gráfico que publicó. El gráfico fue tomado claramente del curso de Geoffrey Hinton .
Ricardo Cruz
55
Este video me pareció realmente útil para explicar el diagrama anterior, que por sí solo no era obvio para mí.
chris838
21

Es posible que algunas entradas a NN no tengan un rango de valores 'naturalmente definido'. Por ejemplo, el valor promedio puede ser lento, pero aumentar continuamente con el tiempo (por ejemplo, varios registros en la base de datos).

En tal caso, alimentar este valor bruto en su red no funcionará muy bien. Enseñará a su red los valores de la parte inferior del rango, mientras que las entradas reales serán de la parte superior de este rango (y posiblemente del rango superior con el que la red ha aprendido a trabajar).

Deberías normalizar este valor. Por ejemplo, podría decirle a la red cuánto ha cambiado el valor desde la entrada anterior. Este incremento generalmente se puede definir con alta probabilidad en un rango específico, lo que lo convierte en una buena entrada para la red.

Mchl
fuente
Buen consejo sobre la normalización sobre el conjunto anterior de entradas. Esto alivia al usuario de definir un factor de normalización arbitrario. Sin embargo, sospecho que la red se entrenará con mayor precisión si el factor de normalización es una constante global aplicada a cada vector de entrada.
davide
11

Mirando la red neuronal desde el exterior, es solo una función que toma algunos argumentos y produce un resultado. Como con todas las funciones, tiene un dominio (es decir, un conjunto de argumentos legales). Debe normalizar los valores que desea pasar a la red neuronal para asegurarse de que esté en el dominio. Como con todas las funciones, si los argumentos no están en el dominio, no se garantiza que el resultado sea apropiado.

El comportamiento exacto de la red neuronal en argumentos fuera del dominio depende de la implementación de la red neuronal. Pero, en general, el resultado es inútil si los argumentos no están dentro del dominio.

Oswald
fuente
16
Si toma una función de activación habitual (ReLu o Sigmoid), el dominio siempre es todo el espacio R ^ n. Por lo tanto, esta no puede ser la razón para normalizar los datos.
Joker123
1
Esto tampoco explica por qué las imágenes están normalizadas, ya que ya tienen un dominio 0-255
DollarAkshay
4

Hay 2 razones por las que tenemos que normalizar las características de entrada antes de alimentarlas a la red neuronal:

Razón 1 : si un Featureen el Datasetes de gran escala en comparación con otros, entonces esta característica de gran escala se vuelve dominante y, como resultado, las predicciones de la red neuronal no serán precisas.

Ejemplo : en el caso de los datos del empleado, si consideramos la edad y el salario, la edad será un número de dos dígitos, mientras que el salario puede ser de 7 u 8 dígitos (1 millón, etc.). En ese caso, el salario dominará la predicción de la red neuronal. Pero si normalizamos esas características, los valores de ambas características estarán en el rango de (0 a 1).

Razón 2 : La propagación frontal de redes neuronales involucra el producto de puntos de pesas con características de entrada. Por lo tanto, si los valores son muy altos (para datos de imagen y sin imagen), el cálculo de la salida requiere mucho tiempo de cálculo y memoria. Igual es el caso durante la propagación de la espalda. En consecuencia, el modelo converge lentamente, si las entradas no están normalizadas.

Ejemplo : si realizamos la Clasificación de imágenes, el tamaño de la imagen será muy grande, ya que el valor de cada píxel oscila entre 0 y 255. La normalización en este caso es muy importante.

A continuación se mencionan los casos en que la Normalización es muy importante:

  1. K-medias
  2. Vecinos K más cercanos
  3. Análisis de componentes principales (PCA)
  4. Descenso de gradiente
Soporte Tensorflow
fuente
2

Creo que la respuesta depende del escenario.

Considere NN (red neuronal) como operador F, de modo que F (entrada) = salida . En el caso de que esta relación sea lineal, de modo que F (A * input) = A * output , puede optar por dejar la entrada / salida sin clasificar en sus formas sin formato, o normalizar ambas para eliminar A. Obviamente, esta suposición de linealidad es violado en tareas de clasificación, o casi cualquier tarea que genera una probabilidad, donde F (A * input) = 1 * output

En la práctica, la normalización permite que las redes no aptas sean aptas, lo cual es crucial para los experimentadores / programadores. Sin embargo, el impacto preciso de la normalización dependerá no solo de la arquitectura / algoritmo de la red, sino también de las estadísticas previas para la entrada y la salida.

Además, NN a menudo se implementa para resolver problemas muy difíciles de forma negra, lo que significa que el problema subyacente puede tener una formulación estadística muy pobre, lo que dificulta la evaluación del impacto de la normalización, lo que causa la ventaja técnica (que se vuelve adaptable) dominar su impacto en las estadísticas.

En sentido estadístico, la normalización elimina la variación que se cree que no es causal en la predicción de la salida, para evitar que NN aprenda esta variación como un predictor ( NN no ve esta variación, por lo tanto, no puede usarla ).

debería ver
fuente
2

Cuando utiliza características de entrada no normalizadas, es probable que la función de pérdida tenga valles muy alargados. Al optimizar con el descenso de gradiente, esto se convierte en un problema porque el gradiente será empinado con respecto a algunos de los parámetros. Eso conduce a grandes oscilaciones en el espacio de búsqueda, ya que estás rebotando entre pendientes pronunciadas. Para compensar, debe estabilizar la optimización con pequeñas tasas de aprendizaje.

Considere las características x1 y x2, donde varían de 0 a 1 y de 0 a 1 millón, respectivamente. Resulta que las proporciones para los parámetros correspondientes (digamos, w1 y w2) también serán grandes.

La normalización tiende a hacer que la función de pérdida sea más simétrica / esférica. Estos son más fáciles de optimizar porque los gradientes tienden a apuntar hacia el mínimo global y puede dar pasos más grandes.

cripdick
fuente
1

La razón por la que se necesita la normalización es porque si observa cómo avanza un paso adaptativo en un lugar en el dominio de la función, y simplemente transporta el problema al equivalente del mismo paso traducido por algún valor grande en alguna dirección en el dominio, entonces obtienes resultados diferentes. Se reduce a la cuestión de adaptar una pieza lineal a un punto de datos. ¿Cuánto debería moverse la pieza sin girar y cuánto debería girar en respuesta a ese punto de entrenamiento? ¡No tiene sentido tener un procedimiento de adaptación modificado en diferentes partes del dominio! Por lo tanto, se requiere normalización para reducir la diferencia en el resultado del entrenamiento. No tengo esto escrito, pero puedes ver las matemáticas para una función lineal simple y cómo se entrena en un punto de entrenamiento en dos lugares diferentes. Este problema puede haber sido corregido en algunos lugares, pero no estoy familiarizado con ellos. En ALN, el problema se ha corregido y puedo enviarle un documento si escribe a wwarmstrong AT shaw.ca

William W. Armstrong
fuente
-9

Las capas ocultas se utilizan de acuerdo con la complejidad de nuestros datos. Si tenemos datos de entrada que son linealmente separables, entonces no necesitamos usar una capa oculta, por ejemplo, una compuerta OR, pero si tenemos datos no separables linealmente, entonces necesitamos usar una capa oculta, por ejemplo, una puerta lógica ExOR. El número de nodos tomados en cualquier capa depende del grado de validación cruzada de nuestra salida.

Basant Bhardwaj
fuente