Hay dos grandes artículos recientes sobre algunas de las propiedades geométricas de las redes neuronales profundas con no linealidades lineales por partes (que incluirían la activación ReLU):
- Sobre el número de regiones lineales de redes neuronales profundas por Montufar, Pascanu, Cho y Bengio.
- Sobre el número de regiones de respuesta de las redes de retroalimentación profunda con activaciones lineales por etapas de Pascanu, Montufar y Bengio.
Proporcionan cierta teoría y rigor muy necesarios cuando se trata de redes neuronales.
Su análisis se centra en la idea de que:
Las redes profundas pueden separar su espacio de entrada en regiones de respuesta exponencialmente más lineales que sus contrapartes superficiales, a pesar de utilizar el mismo número de unidades computacionales.
Por lo tanto, podemos interpretar redes neuronales profundas con activaciones lineales por partes como particiones del espacio de entrada en un grupo de regiones, y sobre cada región hay alguna hiperesuperficie lineal.
En el gráfico al que ha hecho referencia, observe que las diversas regiones (x, y) tienen hipersuperficies lineales sobre ellas (aparentemente planos inclinados o planos). Entonces, vemos la hipótesis de los dos artículos anteriores en acción en sus gráficos referenciados.
Además, afirman (énfasis de los coautores):
Las redes profundas pueden identificar un número exponencial de vecindades de entrada al asignarlas a una salida común de alguna capa oculta intermedia. Los cálculos realizados sobre las activaciones de esta capa intermedia se replican muchas veces, una vez en cada uno de los barrios identificados. Esto permite a las redes calcular funciones de aspecto muy complejas incluso cuando se definen con relativamente pocos parámetros.
Básicamente, este es el mecanismo que permite que las redes profundas tengan representaciones de características increíblemente robustas y diversas a pesar de tener una menor cantidad de parámetros que sus contrapartes superficiales. En particular, las redes neuronales profundas pueden aprender un número exponencial de estas regiones lineales. Tomemos, por ejemplo, el Teorema 8 del primer artículo referenciado, que establece:
Teorema 8: una red maxout con L capas de ancho norte0 0 y rango k puede calcular funciones con al menos kL - 1knorte0 0 Regiones lineales.
Esto es nuevamente para redes neuronales profundas con activaciones lineales por partes, como ReLU por ejemplo. Si usara activaciones de tipo sigmoide, tendría hiperesuperficies de aspecto sinusoidal más suaves. Muchos investigadores ahora usan ReLU o alguna variación de ReLU (ReLU con fugas, PReLU, ELU, RReLU, la lista continúa) porque su estructura lineal por partes permite una mejor propagación de gradiente de retroceso frente a las unidades sigmoidales que pueden saturarse (tienen muy plana / regiones asintóticas) y efectivamente eliminan gradientes.
Este resultado de exponencialidad es crucial, de lo contrario la linealidad por partes podría no ser capaz de representar eficientemente los tipos de funciones no lineales que debemos aprender cuando se trata de visión por computadora u otras tareas de aprendizaje de máquina dura. Sin embargo, tenemos este resultado de exponencialidad y, por lo tanto, estas redes profundas pueden (en teoría) aprender todo tipo de no linealidades aproximándolas con una gran cantidad de regiones lineales.
En cuanto a su pregunta sobre la hiperesuperficie: puede configurar absolutamente un problema de regresión donde su red profunda intenta aprender y= f(X1,X2)hipersuperficie. Esto equivale a usar una red profunda para configurar un problema de regresión, muchos paquetes de aprendizaje profundo pueden hacer esto, no hay problema.
Si solo quieres probar tu intuición, hay muchos paquetes geniales de aprendizaje profundo disponibles en estos días: Theano (Lasagne, No Learn y Keras construidos encima), TensorFlow, muchos otros, estoy seguro de que me iré fuera. Estos paquetes de aprendizaje profundo calcularán la propagación hacia atrás por usted. Sin embargo, para un problema de menor escala como el que mencionó, es una buena idea codificar la retropropagación usted mismo, solo para hacerlo una vez, y aprender a comprobarlo en gradiente. Pero como dije, si solo quieres probarlo y visualizarlo, puedes comenzar bastante rápido con estos paquetes de aprendizaje profundo.
Si uno es capaz de entrenar adecuadamente la red (usamos suficientes puntos de datos, la inicializamos correctamente, el entrenamiento va bien, este es otro problema para ser sincero), entonces una forma de visualizar lo que nuestra red ha aprendido, en este caso , una hiperesuperficie, es simplemente graficar nuestra hiperesuperficie sobre una malla o rejilla xy y visualizarla.
Si la intuición anterior es correcta, entonces, utilizando redes profundas con ReLU, nuestra red profunda habrá aprendido un número exponencial de regiones, cada región con su propia hiperesuperficie lineal. Por supuesto, el punto es que debido a que tenemos exponencialmente muchas, las aproximaciones lineales pueden llegar a ser tan finas y no percibimos la irregularidad de todo, dado que usamos una red lo suficientemente profunda / grande.