Utilice CAM para descifrar redes neuronales convolucionales

código : https://github.com/philipperemy/tensorflow-class-activation-mapping
paper : https://arxiv.org/abs/1512.04150

Prefacio

Ya sea que se trate de la predicción del precio de las acciones en el campo financiero o de tareas complejas como la detección de objetivos y la segmentación en el campo de la visión por computadora, la aplicación del aprendizaje automático en varios campos se está desarrollando rápidamente. La revolución de la inteligencia artificial ha barrido todos los campos y, en algunos campos, el rendimiento de los algoritmos de aprendizaje automático incluso superó el nivel humano. Por ejemplo, el desafío de ImageNet es organizar varias tareas de visión por computadora, como clasificación de imágenes, detección de objetivos, posicionamiento de imágenes, etc., cada año. El algoritmo con la mejor tasa de error por año sigue disminuyendo. En 2017, 29 de los 38 competidores los equipos fueron superiores al 95%. La tasa de precisión. Según los informes, en el conjunto de datos de ImageNet a gran escala, la tasa de error de clasificación humana cinco más alta es del 5,1%, mientras que la tasa de precisión de la CNN más avanzada es de aproximadamente el 3,57%.

A medida que el rendimiento de los sistemas de aprendizaje automático continúa mejorando, la interpretabilidad del sistema disminuye gradualmente. En comparación con los algoritmos básicos de aprendizaje automático, como la regresión lineal, los vecinos más cercanos K, los árboles de decisión, etc., esta tendencia es más obvia en los algoritmos de aprendizaje profundo compuestos por millones de parámetros y cientos de capas. Estos algoritmos son como cajas negras, reciben información del usuario y dan resultados que superan las expectativas, pero no proporcionan la intuición de la información causal que condujo a estos resultados. Estos algoritmos pueden ser adecuados para tareas en las que la precisión es el requisito principal, como las competiciones de Kaggle, donde los científicos de datos no tienen que interpretar e interpretar los resultados para varias partes interesadas. Pero en aplicaciones donde la interpretabilidad de los resultados es muy importante, la naturaleza de la caja negra puede causar varios obstáculos. Por ejemplo, si algunos sistemas de reconocimiento de imágenes funcionan bien en imágenes y entrenamiento para detectar tumores en términos de precisión en los equipos de validación y prueba. Pero cuando presenta los resultados a las partes interesadas, su pregunta es qué partes de la imagen ha aprendido el modelo o cuál es la razón principal del resultado, su respuesta más probable es "No sé", sin importar cuán perfecto sea el modelo. es decir, los interesados ​​no lo aceptarán, porque está en juego la vida humana.

Con la continua profundización de la investigación en el campo del aprendizaje automático, especialmente el aprendizaje profundo, las personas están realizando diversos esfuerzos para resolver el problema de la interpretabilidad y alcanzar la etapa de inteligencia artificial interpretable.

Se han descubierto varias técnicas de visualización de CNN, una de las cuales es Class Activation Maps (CAM).

El mapeo de activación de categorías o CAM presentado en este documento utiliza el método de agrupación promedio global en cnn para aprender características profundas para el posicionamiento discriminativo. El mapeo de activación de categoría de una categoría específica indica el área discriminativa que usa CNN para identificar la categoría.

Red de arquitectura

El autor del artículo utilizó una arquitectura de red similar a googleNet y Network in Network. La red se compone principalmente de una gran cantidad de capas convolucionales. Justo antes de la capa de salida final, realizamos una agrupación de promedios globales. Las características obtenidas de esta manera se alimentan a una capa completamente conectada que tiene activación softmax y produce la salida deseada. Podemos identificar la importancia de las regiones de la imagen proyectando los pesos de la capa de salida en el mapa de características de convolución obtenido de la capa de convolución anterior. Esta técnica se denomina mapeo de activación de categorías.

Inserte la descripción de la imagen aquí
La capa Global Average Pooling (GAP) es mejor que la Global Max Pooling Layer (GMP, Global Max Pooling Layer) utilizada por Oquab et al., Porque la capa GAP ayuda a identificar la gama completa de objetos, mientras que la capa GMP solo identifica Una parte diferente. Esto se debe a que en GAP promediamos todas las activaciones, lo que ayuda a encontrar todas las áreas diferentes, mientras que la capa GMP solo considera las áreas más diferentes.

El promedio espacial del mapa de características de cada unidad en la última capa convolucional es generado por la capa de brecha, y luego la capa de brecha se pondera y se suma para obtener el resultado final. De manera similar, generamos la suma ponderada de la última capa convolucional para obtener nuestro mapa de activación de clases.

Trabajo simple

Después de definir la arquitectura, veamos cómo funciona para generar el mapeo de activación de clases. Consideremos una imagen que contiene un objeto y hemos entrenado nuestra red. La capa softmax genera las probabilidades de varias clases entrenadas por el modelo. Al usar el Argmax de todas las probabilidades, encontramos la clase del objeto con más probabilidades de aparecer en la imagen. Se extrae el peso de la última capa correspondiente a esta clase. Extraiga el mapa de características de la última capa convolucional.

Inserte la descripción de la imagen aquí
Extraiga los pesos de la última capa, cree el mapeo de características de salida del modelo y la clase de predicción final.
Inserte la descripción de la imagen aquí
Entre ellos, Feature representa el mapa de características obtenido de la capa anterior y los resultados representan la probabilidad de clase de cada clase.

Finalmente, el producto escalar de los pesos extraídos en la última capa y el mapa de características se calcula para generar el mapa de activación de clases. Mediante el uso de la interpolación bilineal, el mapa de activación de clases se muestra y se superpone en la imagen de entrada para mostrar el área en la que se centra el modelo de CNN.

Inserte la descripción de la imagen aquí
El código muestra la iteración de más de 10 imágenes, el muestreo ascendente de los mapas de características de las clases de predicción extraídas y, finalmente, la realización de un producto escalar entre los mapas de características y los pesos de capa finales.

Realización y resultados

Inicialmente, se utiliza la siguiente arquitectura de modelo, con 3 capas convolucionales, a cada capa le sigue una capa de agrupación máxima, la última capa convolucional, seguida de una capa GAP y finalmente una capa de salida activada por softmax.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
El modelo anterior se entrenó en el conjunto de datos del MNIST y produjo aproximadamente un 99% de precisión en el conjunto de entrenamiento, validación y prueba final.

Realice los pasos anteriores y obtenga los siguientes resultados:
Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

La salida obtenida con el método original es satisfactoria, pero debido a que la capa de agrupación máxima después de cada capa convolucional perderá información espacial, no puede ser completamente clara, por lo que sigue siendo confusa.

Para solucionar este problema, realicé algunos ajustes en la arquitectura y eliminé todas las capas máximas de agrupación, reteniendo así la información espacial que ayuda a mejorar la capacidad de posicionamiento del modelo. Pero después de eliminar la capa MaxPooling, debido al gran tamaño del mapa de características, también aumentará el tiempo de entrenamiento.

La segunda parte utiliza la siguiente arquitectura:

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
La precisión del segundo modelo sobre entrenamiento, validación y conjunto de prueba final es del 97%.
El modelo ajustado obtiene los siguientes resultados:
Nota: En el segundo modelo, no se aplica la agrupación máxima, por lo que la dimensión no se reduce durante el pase hacia adelante. Por lo tanto, no es necesario aumentar la muestra del mapa de características obtenido por la capa convolucional anterior.
Inserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquíInserte la descripción de la imagen aquí

En conclusión

Los mapas de activación de clases o CAM son una excelente manera de ver lo que vio su modelo de CNN durante la capacitación y proporcionar información para los desarrolladores y las partes interesadas, lo cual es muy crítico para la usabilidad y el ciclo de vida del modelo. Con la ayuda de la cámara, los desarrolladores pueden ver qué áreas se ven en el modelo de imagen, lo que se puede usar para verificar las razones de la desviación del modelo, la falta de capacidad de generalización u otras razones. Cuando se corrige, el modelo puede ser más robusto y desplegable en el mundo real.

Con la profundización continua de la investigación en el campo de la visión por computadora y el aprendizaje profundo, varios marcos de aprendizaje profundo como Tensorflow, Pytorch, etc. continúan agregando nuevos paquetes a su entorno para facilitar el uso del usuario y prestar atención a la interpretabilidad. Tensorflow ha dado un buen paso en el campo de los modelos interpretables, ha lanzado un paquete especial llamado tf. Explica qué técnicas (como mapeo de activación de clases, etc.) se utilizan para implementar y optimizar por ti, solo necesitas importar la biblioteca, crear sus objetos, pasar la entrada y recibir el resultado en unos segundos, sin tener que gastar tiempo implementando el algoritmo desde cero.

Supongo que te gusta

Origin blog.csdn.net/weixin_42990464/article/details/113500062
Recomendado
Clasificación