¿Por qué visualizamos filtros en redes neuronales convolucionales? ¿No son los filtros solo conjuntos de pesas? ¿De qué sirve tratar un conjunto de pesas como una imagen?

Para entender por qué necesitamos visualizar filtros o pesos como usted lo dice, debemos volver a lo que es la convolución / correlación cruzada. Este concepto se remonta a la era del procesamiento de señales.

En el procesamiento de la señal, la correlación cruzada entre la función f y el filtro g indica la cantidad de similitudes entre ambos.

Si f (x) yg (x) comparten algunas similitudes, entonces el resultado f * g será positivo / alto. Si g = 0 en todo su dominio, entonces f * g será una señal muerta (= 0 para cada punto). Si g = -f (g tiene la misma forma que f pero volteó a través del eje horizontal), entonces f * g será negativo.

El operador de convolución entre f y g es en realidad la correlación cruzada entre f y g invertida verticalmente. Como puede ver en las últimas tres filas en la imagen de arriba, el filtro rojo g se voltea verticalmente antes de aplicarse en f.

El problema aquí es que, si g invertido g tiene una forma similar a f, entonces la convolución entre f y g será muy alta. Entonces, si desea verificar si f tiene esta forma g ‘, simplemente puede aplicar g’ invertido ‘en f y ver los resultados. Si f * g ‘es lo suficientemente alto, es seguro decir que f tiene una forma algo similar a g’.

¿Qué tiene esto que ver con las imágenes y las redes neuronales? Básicamente, puede tratar una imagen 2D gris como señales 2D. Similar a una señal 1D, podemos representar una imagen en forma de f (x, y) donde (x, y) son las coordenadas de píxeles.

Los bordes de los objetos en una imagen pueden verse como señales con cambios repentinos. Entonces, si desea encontrar la ubicación de los bordes contrastantes en una imagen, puede aplicar un filtro de borde en esa imagen. Ver la imagen de arriba. Después de aplicar Sobel (un filtro específicamente diseñado para encontrar bordes) en la imagen, los bordes de los objetos donde hay un cambio de contraste entre claro / oscuro brillarán en la convolución resultante. Esto nos dice dónde están los bordes.

Pero tenga en cuenta que el filtro anterior es un filtro predefinido, diseñado para detectar bordes. En las redes neuronales, permite que la red aprenda los filtros por sí misma. Al visualizar los filtros, podemos de alguna manera “entender” lo que la red quiere encontrar en la imagen.

Si un filtro que parece un borde contrastante aparece después del aprendizaje, sabemos que la red debe estar buscando bordes. Si un filtro que parece una cara aparece en capas posteriores, podemos concluir que los filtros están buscando caras en capas posteriores. En los casos en que los filtros son granos ruidosos, puede deducir que hay algo mal en el proceso de aprendizaje.

Aquí hay un gran video que explica lo que necesita, debería verlo si todavía está confundido (no puedo incorporar animación en mi respuesta, por lo que probablemente sea difícil ver la idea):

Tenga en cuenta que los filtros de visualización solo deben aplicarse a los filtros de más de 3 × 3. Para los filtros 3 × 3, debe usar otros métodos para ver qué está buscando la red neuronal.

La razón por la que se toman este tipo de pasos es para intentar llevar la interpretación a modelos profundos. Cuando las cosas no funcionan en el aprendizaje automático, necesitamos diagnosticar por qué es así, para que podamos intentar remediar nuestro enfoque. Si podemos interpretar lo que sucede durante la capacitación, podríamos tomar medidas para mejorar el modelo.

Nota al margen : Este tipo de “interpretación” no es el santo grial de interpretación del que hablamos en la empresa. Lo que realmente queremos es una forma de señalar las características originales que más contribuyeron a la predicción. De la misma manera, utilizamos importancia variable en los árboles de decisión. Si bien hay algunos intentos de lograr esto utilizando pesos en modelos profundos, la complejidad de las redes profundas impide este tipo de información.

Hay algunos enfoques para visualizar lo que aprende ConvNets.

  • Visualice las activaciones y los pesos de la primera capa. Es posible que podamos detectar filtros muertos, a menudo una señal de altas tasas de aprendizaje;
  • Visualiza solo los pesos. Los patrones ruidosos sugieren una red que no ha sido entrenada el tiempo suficiente, o una baja regularización que condujo a un sobreajuste;
  • Guarde las imágenes que activan al máximo una neurona específica, para que podamos entender qué busca esa neurona;
  • Incrustar “códigos” en el espacio dimensional inferior para que podamos ver qué imágenes son similares;
  • Ocupe partes de la imagen para asegurarse de que la red está clasificando el objeto de interés y no alguna otra parte irrelevante de la imagen.

Por lo tanto, a menudo se publica como una herramienta de diagnóstico para ver si se pueden tomar medidas para mejorar el modelo. Perseguir pequeños signos reveladores como este podría ayudar, pero las redes profundas obtienen su poder de ser extremadamente complejas. La prueba y error al usar cantidades masivas de variación siempre supera el tipo de nitpicking enumerado anteriormente. Ver lo que están haciendo unas pocas capas superficiales o neuronas individuales no puede hablar con las salidas emergentes que producen las redes profundas. Entonces, en términos de modelos “mejorados”, parece un poco de relleno para la publicación de artículos. Pero, en términos de agregar un poco de interpretabilidad a los productos de datos, puede ayudar. Aquí hay un artículo de Harini Suresh que utiliza la oclusión de imágenes para ayudar a explicar

Referencia

CS231n Redes neuronales convolucionales para reconocimiento visual

Cada filtro es básicamente un patrón de tamaño, digamos 3 * 3. En otras palabras, la convolución busca un patrón en la imagen de entrada, y el patrón es especificado por los parámetros del filtro. Entonces, al visualizar los parámetros de filtro, está tratando de comprender los parámetros. Por ejemplo, ver Lee et. Documento de al sobre unidades lineales rectificadas concatenadas. En su estudio se dieron cuenta de que algunos filtros están en fases opuestas. Entonces se les ocurrió un enfoque para mejorar las CNN.

Por favor suscríbase a

AI Journal

Cubre aprendizaje automático, aprendizaje profundo, PNL, visión por computadora. Todos los marcos de aprendizaje profundo están cubiertos Tensorflow, keras, pytorch. Redes neuronales RNN, CNN, GAN.

Creo que tal vez sea una falta de comprensión cuando dices “visualizar filtro”. Por lo general, visualizamos la salida (efecto) de un filtro, no el filtro en sí. Tratamos la salida como imagen obviamente porque la entrada es imagen. Entonces podemos usar fácilmente el aprendizaje humano para diagnosticar el aprendizaje automático.

More Interesting

¿Cuáles son las mejores fuentes para aprender el aprendizaje automático y el procesamiento del lenguaje natural?

¿De qué manera la Academia se está quedando atrás en la capacitación de Data Science?

Estoy acostumbrado a codificar con C ++ y C #. ¿Cuál recomendaría implementar proyectos de ML a pequeña escala (NN y CNN clásicos) sin reinventar la rueda?

¿Qué ha aprendido sobre el aprendizaje automático, la recuperación de información y la minería de datos después de unirse a una empresa de Internet que se ocupa de big data?

Cómo depurar sus proyectos de ciencia de datos y aprendizaje automático

¿Se puede utilizar la investigación en aprendizaje automático para complementar la epistemología?

¿Cuál es la relación entre relevancia y aprendizaje automático?

¿Qué pasos de procesamiento previo recomendaría para un aprendizaje automático exitoso en un conjunto de datos MNIST?

¿Cuál es el significado de muchas sinapsis entre dos neuronas en la red neuronal?

Tengo una nube de puntos y necesito hacerla coincidir con un modelo CAD en una base de datos de ~ 500 modelos. ¿Qué algoritmos podría usar?

¿Cuáles son los requisitos previos para comenzar todo este aprendizaje automático, procesamiento del lenguaje natural, aprendizaje profundo, etc.?

¿Qué es una red neuronal convolucional?

¿Por qué mi red neuronal artificial predice demasiados falsos negativos (FN)?

¿Cómo se emplea una parada temprana en TensorFlow?

¿Cuál es la mejor implementación distribuida de Word2Vec: Gensim o Spark?