¿Cómo visualizar / comprender lo que está haciendo una red neuronal?

37

Las redes neuronales a menudo se tratan como "cajas negras" debido a su compleja estructura. Esto no es ideal, ya que a menudo es beneficioso tener una comprensión intuitiva de cómo funciona internamente un modelo. ¿Cuáles son los métodos para visualizar cómo funciona una red neuronal capacitada? Alternativamente, ¿cómo podemos extraer descripciones fácilmente digeribles de la red (por ejemplo, este nodo oculto funciona principalmente con estas entradas)?

Estoy interesado principalmente en redes de alimentación de dos capas, pero también me gustaría escuchar soluciones para redes más profundas. Los datos de entrada pueden ser de naturaleza visual o no visual.

rm999
fuente
1
Aquí hay un buen ejemplo: playground.tensorflow.org
nobar

Respuestas:

12

Las redes neuronales a veces se denominan "aproximadores de funciones diferenciables". Entonces, lo que puede hacer es diferenciar cualquier unidad con respecto a cualquier otra unidad para ver cuál es su relación.

Puede verificar qué tan sensible es el error de la red a una entrada específica también con esto.

Luego, hay algo llamado "campos receptivos", que es solo la visualización de las conexiones que entran en una unidad oculta. Esto facilita la comprensión de lo que hacen unidades particulares para datos de imagen, por ejemplo. Esto también se puede hacer para niveles superiores. Consulte Visualización de características de nivel superior de una red profunda .

bayerj
fuente
13

Calcule la importancia de la función al aumentar aleatoriamente cada valor de una sola función y registrar cómo se degrada su función de estado físico general.

X1,yo[0 0,1]runanortere(0 0,1)-0,5R2

Luego clasifique sus características según la degradación de la función de estado físico y haga un bonito gráfico de barras. Al menos algunas de las características más importantes deben pasar una verificación intestinal, dado su conocimiento del dominio del problema. Y esto también le permite estar agradablemente sorprendido por las características informativas que puede no haber esperado.

Este tipo de prueba de importancia de características funciona para todos los modelos de caja negra, incluidas las redes neuronales y los conjuntos CART grandes. En mi experiencia, la importancia de las características es el primer paso para comprender lo que realmente está haciendo un modelo.

someben
fuente
1
Gracias por la respuesta; Esto es realmente algo que he hecho y lo encuentro muy útil. Sin embargo, en esta pregunta busco más algo que se vea dentro de la red en lugar de tratarlo como una caja negra.
rm999
2

Aquí hay una intuición gráfica para un tipo particular de redes neuronales. Al final de esa publicación, hay un enlace al código R que muestra una visualización para un problema en particular. Así es como se ve:

ingrese la descripción de la imagen aquí

Dimitriy V. Masterov
fuente
1

Otoño de 2011 Tomé el curso gratuito de aprendizaje automático en línea de Standford, impartido por Andrew Ng, y visualizamos una red neuronal que era un detector de rostros. La salida fue una cara genérica. Quiero mencionar esto para completar, pero no mencionó este tipo de aplicación, por lo que no voy a desenterrar los detalles. :)

Andrés
fuente
La universidad es Stanford. Puedo encontrar el curso de Andrew Ng en la web. Escuché a Dick DeVeaux dar una conferencia sobre redes neuronales afirmando que las neuronas ocultan lo que realmente está sucediendo. es solo otro tipo de clasificador no lineal y si, en lugar de mirarlo desde la perspectiva del diagrama, se entienden mejor escribiendo lo que hacen algebraicamente. Espero recordar esto bien.
Michael R. Chernick
De Veaux y Ungar, Una breve introducción a las redes neuronales 1997: "las redes neuronales parecen estar en todas partes en estos días, y al menos en su publicidad son capaces de hacer todo lo que las estadísticas pueden hacer sin todo el alboroto y la molestia de tener que hacer algo excepto comprar una pieza de software ".
denis
0

El método mencionado a continuación se toma de este enlace , visite el sitio para obtener más detalles.

Comience con una imagen aleatoria, es decir, proporcione arbitrariamente valores a los píxeles. "Luego, hacemos un pase hacia adelante usando esta imagen x como entrada a la red para calcular la activación a_i (x) causada por x en alguna neurona i en algún lugar en el medio de la red. Luego hacemos un pase hacia atrás (realizando backprop) para calcular el gradiente de a_i (x) con respecto a las activaciones anteriores en la red. Al final del paso hacia atrás nos queda el gradiente ∂a_i (x) / ∂x , o cómo cambiar el color de cada píxel a aumentar la activación de la neurona I. Hacemos exactamente eso agregando una pequeña fracción αα de ese gradiente a la imagen:

x ← x + α⋅∂a_i (x) / ∂x

Seguimos haciendo eso repetidamente hasta que tenemos una imagen x 'que causa una alta activación de la neurona en cuestión ".

LKB
fuente