¿Cómo entender la intuición geométrica del funcionamiento interno de las redes neuronales?

8

He estado estudiando la teoría detrás de ANNs últimamente y quería entender la 'magia' detrás de su capacidad de clasificación no lineal de múltiples clases. Esto me llevó a este sitio web que hace un buen trabajo al explicar geométricamente cómo se logra esta aproximación.

Así es como lo entendí (en 3D): las capas ocultas pueden considerarse como salidas de funciones de pasos 3D (o funciones de torre) que se ven así:

Función de la torre

El autor afirma que se pueden usar múltiples torres para aproximar funciones arbitrarias, por ejemplo:

ingrese la descripción de la imagen aquí

Esto parece tener sentido, sin embargo, la construcción del autor está más bien ideada para proporcionar cierta intuición detrás del concepto.

Sin embargo, ¿cómo exactamente se puede validar esto dado un ANN arbitrario? Esto es lo que deseo saber / entender:

  1. AFAIK la aproximación es una aproximación suave pero esta "intuición" parece proporcionar una aproximación discreta, ¿es correcto?
  2. El número de torres parece estar basado en el número de capas ocultas: las torres anteriores se crean como resultado de dos capas ocultas. ¿Cómo puedo verificar esto (con un ejemplo en 3d) con una sola capa oculta?
  3. Las torres se crean con algunos pesos forzados a cero, pero no he visto que este sea el caso con algunos ANN con los que he jugado. ¿Realmente será una función de torre? ¿Puede ser cualquier cosa con 4 anlados y casi aproximándose a un círculo? (El autor dice que ese es el caso, pero lo deja como un estudio propio).

Realmente deseo de entender esta capacidad aproximación en 3D para cualquier función arbitraria en 3D que una RNA se puede aproximar con una sola capa oculta - Quiero ver cómo esta aproximación miradas para formular una intuición para múltiples dimensiones?

Esto es lo que tengo en mente que creo que podría ayudar:

  1. Tome una función 3D arbitraria como f(x1,x2)=x12+x22+3.
  2. Generar un conjunto de entrenamiento de (x1,x2)de decir 1000 puntos de datos donde muchos puntos están en la curva unos arriba y unos abajo. Los que están en la curva están marcados como la "clase positiva" (1) y los que no están como la "clase negativa" (0)
  3. Alimente estos datos a un ANN y visualice la aproximación con una capa oculta (con aproximadamente 2-6 neuronas).

¿Es correcta esta construcción? ¿Funcionaría esto? ¿Cómo voy a hacer esto? Todavía no soy experto en propagación hacia atrás para implementar esto por mí mismo y estoy buscando más claridad y dirección a este respecto; los ejemplos existentes que muestran esto serían ideales.

Doctor
fuente
1
Hay una muy buena publicación de blog sobre este tema aquí: colah.github.io/posts/2014-03-NN-Manifolds-Topology
Sycorax dice Reinstate Monica
@ user777 - Sí, ese fue mi "otro" enlace junto con el de la publicación y por alguna razón olvidé incluirlo :)
PhD

Respuestas:

8

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):

  1. Sobre el número de regiones lineales de redes neuronales profundas por Montufar, Pascanu, Cho y Bengio.
  2. 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 n0 y rango k puede calcular funciones con al menos kL1kn0 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.

AI independiente
fuente