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.
Respuestas:
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 .
fuente
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.
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.
fuente
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:
fuente
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. :)
fuente
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 ".
fuente