¿Cómo se pueden visualizar las características extraídas en capas ocultas de una red neuronal?

Mundher y Vahid ya lo han cubierto. Agregando una forma más de visualizar a la derecha en el navegador para modelos de juguetes simples 1D y 2D usando Convnet.js – Blog de aprendizaje automático de Andrej Karpathy Clasifique datos de juguetes 1D, clasifique datos de juguetes 2D. Su sitio nos permite cambiar el código de los modelos directamente en el navegador y visualizar el resultado de cada capa.

Una cosa que visualmente parece un rompecabezas, a primera vista, en las imágenes 2D de caras en la pregunta es, ¿cómo pueden las pequeñas piezas en la primera imagen sumar a la segunda (o el equivalente a la cara completa de las partes invertidas / volteadas)? en segunda figura). La respuesta a esa pregunta se ilustra en el modelo de juguete 1D simple a continuación. Esencialmente, la suma ponderada en los nodos ensambla las piezas juntas como se describe a continuación, como colocar piezas del rompecabezas con las operaciones de volteo, escalado, desplazamiento, etc.

La mayor parte del trabajo se realiza en la suma ponderada w x + b donde ocurre el aprendizaje. La no linealidad, por ejemplo en el caso de ReLU en los modelos a continuación, ofrece el recorte clave y necesario de las líneas.

Por ejemplo, para visualizar cómo se puede usar un modelo de juguete con tres capas para aproximar la línea curva a continuación:

Salida de la primera capa de nodos a continuación utilizando el modelo 1D anterior: las líneas rojas son salidas de la primera capa. La curva negra es una que estamos tratando de ajustar. La primera capa solo genera líneas recortadas (el recorte realizado por la no linealidad ReLU, podría haber sido sigmoide / tanh ), esto es análogo a la primera imagen 2-D en cuestión.

El resultado a continuación de la segunda capa, que ahora se enriquece, ya no recorta líneas. Este es el análogo de la segunda imagen en la pregunta: emergen formas.

La salida de curvas de la tercera capa: más estructura que las capas anteriores. Este es el análogo de la imagen de la tercera capa en cuestión.

La suma ponderada final de todo suma las curvas rojas de arriba produce la curva debajo de todos esos puntos ( esto es simplemente porque la “w” en la suma ponderada w x + b en cada capa (antes de aplicar la no linealidad) , escalas / voltea / gira curvas / líneas yb desplaza las curvas hacia arriba / abajo: todo lo que hace la no linealidad (ReLu) es generar curvas recortadas )

Para crear la ecuación que resume la curva final después de entrenar la red neuronal del juguete, podemos examinar los pesos aprendidos en una ventana de depuración del navegador Chrome para el enlace de arriba.

    • El modelo predeterminado en la página tiene dos capas ocultas ( una Relu y otra sigmoidea ). Podemos cambiar el código para hacer que ambas capas sean ReLU, por ejemplo, y agregar cualquier cantidad de capas simplemente cortando y pegando una de esas capas.
    • Entonces podemos convencernos escribiendo las ecuaciones de las líneas en la capa final y confirmando con Wolfram que realmente resumen lo que vemos. Por ejemplo, la siguiente ecuación es uno de esos ejemplos construido a partir de los pesos examinados en la ventana de depuración en Chrome para un modelo de juguete.
    • gráfico max (0, (-. 57) x + 4.45) * 1.11 -5.399 + max (0, (-. 28) x + 2.19) * (. 54) -5.399 + max (0, (- 1.09) x + 1,53) * (- 1,09) – 5,399
    • Gráfico directo de la ecuación anterior en Wolfram
    • La función de activación en esta ecuación es ReLu – max (0, x)

Las tres capas se usaron solo para ilustrar la riqueza progresiva de las curvas a medida que avanzamos de una capa a la siguiente.

    • En la práctica, una sola capa puede clavar esa curva con suficientes nodos.

Estas imágenes fueron adaptadas de las respuestas a un par de preguntas relacionadas ¿ Qué es el aprendizaje automático en términos simples?

¿Cómo puede una red neuronal profunda con activaciones de ReLU en sus capas ocultas aproximar cualquier función?

He respondido una pregunta similar aquí

TL; DR

Para comprender: – CS231n Redes neuronales convolucionales para reconocimiento visual

Bibliotecas para análisis: –

  1. Keras: – raghakot / keras-vis
  2. Tensorflow: – chrisranderson / espectador
  3. Caffe: -yosinski / caja de herramientas de visualización profunda

Hay varias formas de visualizar características en cada capa de una red neuronal. Una forma simple es visualizar las activaciones como un mapa de calor que ayuda a comprender lo que está haciendo la red.

Pero una mejor manera es mapear estas características en el espacio de entrada original (por ejemplo, espacio de imagen original). Esto puede hacerse mediante redes desconvolucionales. Las redes desconvolucionales se utilizan para realizar salidas espaciales.

Este documento describe un método para este tipo de visualización: “Visualizar y comprender las redes convlutional” Por Matthew Zeiler https://arxiv.org/pdf/1311.2901.pdf

Para visualizar las características como se muestra en la figura, debe pasar una imagen de entrada a la red y para cada filtro capturar la salida.

Aquí hay un ejemplo usando Keras Jupyter Notebook Viewer. El autor captura la salida de una sola capa, luego pasa por todos los filtros de esa capa y toma las características de salida.

Puede ser que esto pueda ayudarte: yosinski / deep-visualization-toolbox

Un proyecto increíble para la visualización de todas esas cosas ocultas que suceden dentro de un DNN.

Además de todas las respuestas, este video es bastante relevante.

Deep vis caja de herramientas. Busque en YouTube para ver el video e instalarlo.