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?
Respuestas:
Se explica bien aquí .
fuente
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:
Se toman fotografías del curso sobre redes neuronales. El autor del curso es Geoffrey Hinton.
fuente
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.
fuente
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.
fuente
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
Feature
en elDataset
es 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:
fuente
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 ).
fuente
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.
fuente
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
fuente
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.
fuente