Grad-CAM : comment créer des cartes thermiques pour les problèmes de classification.
Version portugaise ici

Ce n'est pas une nouvelle que ces dernières années, il est devenu plus facile de développer des algorithmes d'apprentissage automatique. Ce battage médiatique a trois principaux coupables :
- Efficacité accrue dans le traitement informatique.
- Technologies de stockage et de mémoire moins chères.
- L'accès à un volume de données qui aurait rendu jaloux les chercheurs en intelligence artificielle du siècle dernier.


Cette popularité est TRÈS importante pour la diffusion d'outils qui peuvent radicalement changer la façon dont l'informatique va évoluer dans les années à venir. Cependant, des algorithmes qui semblent miraculeux dans un contexte peuvent apporter des résultats dangereux dans d'autres.
Ainsi, les nouvelles sur les algorithmes biaisés sont devenues de plus en plus courantes. Cela ouvre un espace pour un nouvel ensemble de techniques indispensables, des techniques qui cherchent à expliquer les raisons de la prise de décision de ces algorithmes. Quelque chose comme essayer de rendre ces « boîtes noires » un peu plus transparentes. De nombreuses recherches dans cette ligne de raisonnement ont cité le terme XAI (abréviation d'Explicitable AI) comme un cadre théorique qui rassemble diverses techniques différentes dans ce même but.
L'une de ces techniques est Grad-CAM, qui vise à améliorer notre compréhension de la prise de décision dans les problèmes de classification d'images.
Comment fonctionne Grad-CAM
Supposons que nous disposions d'un réseau neuronal convolutif (CNN) formé pour classer une image dans les catégories avion, chien, chat ou personne.
Pour en savoir plus sur l'organisation d'un réseau de neurones, je vous conseille cette playlist ici . Les réseaux de neurones convolutifs sont une classe de réseaux de neurones artificiels. Pour en savoir plus sur les CNN, regardez cette vidéo ici .

Si le réseau a été bien formé, les classes Dog et Cat recevront des valeurs élevées, indiquant que ces classes sont probablement présentes dans l'image. Grad-CAM produit une carte thermique pour chaque classification possible.
Maintenant un peu de formalisme pour décrire les étapes de l'algorithme et comment il génère une heatmap en fin de processus. Au final, la heatmap est représentée par une matrice bidimensionnelle, analogue à l'entrée du modèle, c'est-à-dire :

En plus de la convention de nommage pour définir ce qu'est une heatmap, il faut définir comment on va se référer au score que le CNN attribue à chacune des classes possibles.

Supposons que nous recherchions la carte thermique pour la classification de cette image en chat. Autrement dit, quelle région de l'image originale était la plus importante pour que le réseau de neurones détermine que l'image contient un chat ?
Étape 1 : Calcul du gradient
Pour cela, il faut d'abord obtenir les gradients de chacun des canaux de la dernière couche convolutive (A1, A2 et A3) par rapport à la classe (cat) souhaitée.

L'intuition derrière le résultat de ce processus est que ces matrices générées auront des pixels avec des valeurs plus élevées, plus ces régions sont pertinentes pour déterminer la valeur finale que le CNN a attribuée à cette classe (cat).
Le résultat de cette étape est une matrice de dimensions (u, v, k). Dans cet exemple particulier, k = 3.
Étape 2 : Alphas
Pour chacun des gradients calculés à l'étape précédente, on obtient la moyenne de chacune des matrices à 2 dimensions.

En pensant à l'intuition derrière cette étape, au lieu de chercher la pertinence pixel par pixel pour une classe donnée comme nous l'avons fait à l'étape 1, nous la transformons en pertinence pour chacune des cartes (A1, A2 et A3).
Ainsi, chacun de ces "alphas" représente l'importance de chacune des cartes dans la prise de décision de classer l'image comme contenant un chat. Plus l'alpha est élevé, plus la carte correspondante était importante dans la prise de décision pour une classe donnée.
Puisque la sortie de l'étape précédente était une matrice (u, v, k), la sortie de cette étape a des dimensions (1, 1, k).
Étape 3 : carte thermique
Étant donné que la sortie de l'étape précédente est constituée de valeurs scalaires, pour chacune des cartes A1, A2 et A3, nous pouvons effectuer une combinaison linéaire de ces facteurs et de leurs cartes correspondantes.
Comme étape supplémentaire, l'algorithme Grad-CAM applique une fonction ReLU au résultat de cette opération.

La sortie de cette étape a les mêmes dimensions que l'entrée de l'étape 1, c'est-à-dire une matrice (u, v, k). Étant donné que les cartes de caractéristiques de la dernière couche convolutive ont généralement une résolution beaucoup plus faible que l'image d'origine, il est nécessaire de redéfinir la résolution finale de la carte thermique.

Enfin, la carte thermique obtenue peut être placée au-dessus de l'image d'origine. Les régions en surbrillance étaient les régions les plus importantes pour classer l'image d'entrée comme une image contenant un chat.

Dans aucune des étapes précédentes, la classe à utiliser ne doit nécessairement être cat. De même, on pourrait vouloir mettre en évidence les zones que l'algorithme a jugées pertinentes pour prendre la décision de classer l'image en tant que chien. Pour ce faire, il suffit de remplacer la classe souhaitée de la heatmap finale aux étapes 1, 2 et 3 de l'algorithme.

Applications
Il existe des problèmes de classification où la distribution des données de formation doit être soigneusement analysée. Grad-CAM peut être utilisé comme validateur des résultats obtenus par le modèle.
Par exemple, considérons un classificateur de professionnels de la santé. Dans ce contexte, il n'y a que deux classes possibles : Médecins ou infirmières. L'ensemble de données de formation était en fait biaisé (78 % des images de médecins étaient des hommes et 93 % des images d'infirmières étaient des femmes) et a donc généré un modèle qui, même avec une grande précision (82 %), contenait un biais.

En appliquant la technique Grad-CAM à deux images différentes, on a remarqué que le modèle biaisé (deuxième colonne de l'image ci-dessus) « regardait » plus le visage du professionnel que ses vêtements et outils de travail.
Ce type d'analyse devient de plus en plus pertinent ces derniers temps, où nous avons de plus en plus d'algorithmes de classification dans les applications quotidiennes.
En plus d'une telle classification simple, Grad-CAM peut être appliqué aux classificateurs de diagnostic d'image. Une série de travaux ont émergé dans ce sens lors de la récente pandémie de Coronavirus.

J'espère que vous avez aimé découvrir l'idée de Grad-CAM et quelques applications possibles de cette technique