Rechercher
  • DataGenius

Bayesian Deep Learning : Soyez sûr de vos incertitudes



Le contexte

Après les nombreux hivers de l’Intelligence artificielle de la seconde partie du XXème, la discipline connaît une nouvelle jeunesse à partir des années 90, grâce notamment aux travaux de Yann Lecun, Yoshua Bengio et Geoffrey Hinton dans le domaine des réseaux de neurones appliqués à la vision par ordinateur (computer vision). Dès lors, les réseaux de neurones ont permis de nombreuses avancées dans des champs d’étude très variés allant de la finance à la logistique en passant par la mécanique des fluides. Cependant, malgré les très bons résultats obtenus par les réseaux de neurones, une certaine méfiance persiste encore vis-à-vis de ces solutions. Deux problèmes majeurs ralentissent en effet leur développement : leur manque d’interprétabilité et la difficulté à associer un degré de confiance à une prédiction. Ces problématiques constituent un frein à la mise en production de ces solutions et à leur implantation en dehors du domaine académique. C’est au problème concernant le degré de confiance des prédictions que se propose de répondre l’apprentissage profond bayésien, notion développée dans cet article.


Dans la suite, les différents concepts abordés seront illustrés sur un exemple classique d’apprentissage automatique, la reconnaissance de chiffres manuscrits allant de 0 à 4. Vous trouverez un échantillon du jeu de données considéré à la figure 1.

Figure 1 : Échantillon des 5 premières classes de la base MNIST


Les limites des réseaux de neurones

Nous avons souligné dans l’introduction les défauts majeurs des réseaux de neurones. Ces problématiques peuvent être reformulées de la manière suivante : d’une part, les réseaux sont des algorithmes opaques ne donnant que peu de pistes sur leur fonctionnement interne ; d’autre part, les prédictions des réseaux sont données sans information sur les incertitudes de leurs résultats. L'apprentissage profond bayésien donne une réponse à cette seconde difficulté en apportant des informations plus complètes en sortie de réseau.

Figure 2 : Illustration du fonctionnement de la prédiction d’un réseau de neurones classique


Illustrons à présent les deux sous-problèmes précédemment présentés sur l’exemple de la base MNIST. Concernant l’opacité du réseau, ce problème est assez intuitif. Dans le cas qui nous intéresse, cela correspond au manque d’informations sur les parties de l’image responsables de la prise de décision. L’absence de quantification des incertitudes, quant à elle, semble plus abstraite et moins problématique de prime abord. En observant la figure 2, on s’aperçoit en effet que le réseau prédit que l’image est un 2 avec une certitude de 85%. Si l’on sait que le réseau est sûr à 85%, on peut en déduire son incertitude, non ? Ce que nous venons d’écrire correspond, en réalité, à une méprise sur l’interprétation de la sortie du réseau. Le réseau ne prédit pas que l’image qu’on lui présente est un 2 avec une certitude de 85% mais que l’image a 85 % de chance d’être un 2 plutôt qu’un 0, un 1, un 3 ou un 4. Ainsi, il est fortement probable que ce réseau n’ayant jamais “vu” de 6, de 7, de 8 ou de 9 prédise qu’un 8 a 90% de chance d’être un 2 plutôt qu’un 0, un 1, un 3 ou un 4.


Les résultats actuels du réseau offre une mesure de la vraisemblance du résultat qui dépend des classes sur lesquelles le réseau a été entraîné, tandis que ce qui nous intéresse est d’obtenir une mesure du degré de confiance du réseau qui soit indépendante des classes d’entraînement. Le prochain paragraphe permettra ainsi de différencier les types d’incertitudes tout en expliquant lesquelles considérer pour évaluer la fiabilité des prédictions d’un modèle.


Les incertitudes nécessaires dans le cadre de l'apprentissage profond bayésien

Comme nous l’avons vu précédemment, la notion d’incertitude peut être trompeuse. Pour éviter de tomber dans de nouveaux biais d’interprétation, nous vous proposons de reprendre les définitions des différents types d’incertitudes et d’expliciter les informations que l’on peut retirer de ces incertitudes. La notion d’incertitude en apprentissage automatique se divise en deux catégories : les incertitudes épistémiques et les incertitudes aléatoires. Ces grandes familles d’incertitudes sont elles-mêmes subdivisées en sous-catégories, mais nous ne les développerons pas pour des raisons de concision. Bien que cette distinction entre incertitudes aléatoires et épistémiques semble abstraite au premier abord, elle représente, en réalité, des notions intuitives. Les incertitudes aléatoires sont ainsi associées à la qualité des données. Dans le cadre de la base MNIST, cela correspondrait à des incertitudes dues au niveau de flou ou au manque de netteté de l’image. Contrairement aux incertitudes aléatoires, les incertitudes épistémiques correspondent aux incertitudes dues à la qualité du modèle. Ce sont ces dernières qui apportent le plus d’informations sur la validité de la prédiction du modèle. C’est donc naturellement que nous avons focalisé nos recherches sur le calcul des incertitudes épistémiques, que nous relierons à l’apprentissage profond bayésien dans le chapitre suivant.


Figure 3 : Exemple de visualisation des incertitudes épistémiques et des incertitudes aléatoires dans un problème de segmentation


La réponse bayésienne

L’idée principale de l'apprentissage profond bayésien est d’introduire la notion de probabilité durant la phase d’entraînement et la phase de prédiction du réseau. Pour ce faire, les instances manipulées sont des distributions de probabilités et non des scalaires. Ainsi, les poids du réseau et les valeurs contenues des neurones suivent des lois normales qui sont caractérisées par une valeur moyenne et un écart-type. Ceci constitue la seule différence conceptuelle notable entre l'apprentissage profond et l’apprentissage profond bayésien (les autres différences étant d’ordre mathématique et algorithmique). Finalement, chaque neurone de la couche de sortie du réseau retourne une loi normale dont la valeur moyenne et l’écart type ont une valeur déterminée par l’image d’entrée du réseau. De ces distributions, il est possible à l’aide de formules mathématiques de calculer les différentes incertitudes définies précédemment et notamment les incertitudes épistémiques.


Ainsi, les réseaux de neurones bayésiens permettent de quantifier les incertitudes et de régler le problème de confiance associée à une prédiction dans le domaine de l’apprentissage automatique. Cependant, les points négatifs majeurs de ce type d’approche sont le temps de calcul et le l’espace de stockage. En effet, pour une même architecture, deux fois plus de valeurs doivent être stockées et modifiées (la valeur moyenne, et l’écart type). De plus, l’algorithme permettant la mise à jour des poids, qui est une modification de l’algorithme de rétropropagation du gradient, nécessite le calcul de la matrice hessienne ce qui n’est pas nécessaire dans sa forme initiale et alourdit grandement le processus.


L’approximation du Monte-Carlo Dropout

Cette partie se propose de présenter une méthode d’approximation de réseaux bayésiens que nous avons pu tester en interne à DataGenius. Cette méthode récemment inventée par Yarin Gal s’appelle le Monte-Carlo Dropout. Il est intéressant d’expliciter les termes composant le nom de cette méthode : Monte-Carlo fait référence à une famille d’algorithmes effectuant des prédictions grâce à des processus aléatoires et le Dropout est un processus inspiré de la biologie qui, durant l'entraînement, va mettre à zéro certains poids choisis aléatoirement. L’idée de cette technique est d’utiliser le dropout durant la phase de test pour qu’à partir d’une seule image d’entrée on puisse avoir plusieurs valeurs de sortie différentes. De ces valeurs de sortie différentes, on peut obtenir une valeur moyenne et un écart-type par neurone de sortie. On obtient donc des résultats similaires aux résultats obtenus par un réseau bayésien classique mais avec un réseau qui a été entraîné de manière classique. L’avantage de cette méthode est multiple en cela que l’entraînement du réseau ne nécessite aucun aménagement et peut être réalisé par le framework d’apprentissage profond de votre choix (Keras, Tensorflow, Pytorch, etc.). De plus, il est possible, en adaptant légèrement un réseau de neurones classique déjà entraîné, d’obtenir son approximation bayésienne. Le seul inconvénient de cette méthode et le temps de calcul lors de la prédiction.

Figure 4 : Illustration du fonctionnement de la prédiction d’un réseau de neurones bayésien


L’expérience mise en place par notre équipe de data scientists fut d’entraîner un réseau de neurones sur les 5 premières classes de la base MNIST et de le tester sur toutes les classes. Vous trouverez les résultats de cette expérience dans le tableau ci-dessous. Il est intéressant de noter que les classes ayant été apprises durant l’entraînement ont une valeur d’incertitude plus de 6 fois plus petite que les classes n’ayant pas été apprises. Ainsi, l’expérience montre bien que le réseau, en plus de donner des informations sur ce qu’il connaît, donne des informations sur ce qu’il ne connaît pas grâce à la quantification des incertitudes épistémiques. Le réseau est donc “conscient” de ses propres limites.


En résumé

L’apprentissage profond bayésien offre une nouvelle approche basée sur la notion d’incertitudes qui répond à la question : “Quelle est la fiabilité de la prédiction de mon réseau de neurones ?”. Cependant, dans leur forme classique, les réseaux bayésiens étaient difficiles à implémenter de par la complexité spatiale et temporelle de la phase d’entraînement (respectivement espace de stockage et temps d’exécution nécessaire à un entraînement). Les désavantages techniques de ces méthodes ont longtemps mis à l’écart l'apprentissage profond bayésien de la révolution de l’intelligence artificielle dans laquelle nous vivons actuellement. Cependant, le MC Dropout remet à l’honneur ce pan de l’apprentissage automatique en s’adaptant directement à tout réseau déjà entraîné. Il semble aujourd’hui possible d’attribuer un degré de confiance à un réseau de neurones.

--

Robin Camarasa

Data Scientist @DataGenius

631 vues

A propos - Mentions légales

40 rue de Bruxelles - 69100 Villeurbanne (Lyon) -

  • Black Facebook Icon
  • Black Twitter Icon
  • Black LinkedIn Icon
  • Black Google+ Icon

DataGenius vous accompagne dans vos projets de Data Science et Intelligence Artificielle en utilisant les technologies de Machine Learning et Big Data