una redes practica para online neuronales neuronal ejercicios ejemplo datos con artificiales normalization neural-network

normalization - redes - ¿Por qué tenemos que normalizar la entrada de una red neuronal artificial?



redes neuronales artificiales con python (7)

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

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

Entiendo que a veces, cuando, por ejemplo, los valores de entrada no son numéricos, debe realizarse una determinada transformación, pero ¿cuándo 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?


Al observar la red neuronal desde afuera, 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). Debes normalizar los valores que quieres pasar a la red neuronal para asegurarte de que estén 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.


Algunas entradas a NN pueden no tener un rango de valores ''naturalmente definidos''. Por ejemplo, el valor promedio puede ser lento, pero aumentar continuamente a lo largo del tiempo (por ejemplo, un número de 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 muy posiblemente por encima del rango 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.


Creo que la respuesta depende del escenario.

Considere NN (red neuronal) como un operador F, de modo que F (entrada) = salida . En el caso donde esta relación es lineal para que F (A * input) = A * output , entonces puede elegir dejar la entrada / salida no normalizada en sus formas crudas, o normalizar ambas para eliminar A. Obviamente, esta suposición de linealidad es violado en tareas de clasificación, o casi cualquier tarea que arroje una probabilidad, donde F (A * input) = 1 * output

En la práctica, la normalización permite que las redes no ajustables 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 en forma de caja negra, lo que significa que el problema subyacente puede tener una formulación estadística muy pobre, lo que hace difícil evaluar el impacto de la normalización, causando la ventaja técnica (se puede ajustar) dominar sobre su impacto en las estadísticas.

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


En las redes neuronales, es buena idea no solo normalizar los datos sino también escalarlos. Esto está destinado a acercarse más rápido a los mínimos globales en la superficie del error. Ver las siguientes imágenes:

Las fotos se toman del curso coursera sobre redes neuronales. El autor del curso es Geoffrey Hinton.


La razón por la que es necesaria la normalización es porque si observa cómo un paso adaptativo procede 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. Todo 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 he escrito esto, pero puedes ver las matemáticas de una función lineal simple y cómo se entrena en un punto de entrenamiento en dos lugares diferentes. Este problema puede haberse corregido en algunos lugares, pero no estoy familiarizado con ellos. En ALNs, el problema ha sido corregido y puedo enviarte un documento si escribes a wwarmstrong AT shaw.ca


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


Se explica bien here .

Si las variables de entrada se combinan linealmente, como en un MLP, rara vez es estrictamente necesario estandarizar las entradas, al menos en teoría. La razón es que cualquier reescalado de un vector de entrada se puede deshacer de manera efectiva cambiando los pesos y los sesgos correspondientes, dejándole exactamente los mismos resultados que tenía antes. Sin embargo, hay una variedad de razones prácticas por las que la estandarización de las entradas puede hacer que el entrenamiento sea más rápido y reducir las posibilidades de quedar atrapado en el óptimo local. Además, la disminución de peso y la estimación bayesiana se pueden realizar de manera más conveniente con entradas estandarizadas.