Entrainement des réseaux de neurones convolutifs

Lorsque l’on fait de la reconnaissance d’image par apprentissage profond, le plus important c’est d’avoir une grande base de données, c’est à dire avoir le plus d’images possible. Comme la écrit Jean-Claude Heudin (auteur de «Comprendre le deep learning») : «Ce n’est pas forcément celui qui a le meilleur algorithme qui gagne, c’est celui qui a le plus de données

robocop.jpg

Pourquoi est-ce que les modèles de reconnaissance d'image par deep learning ont besoin d'autant de données ?

Il faut voir les CNNs («Convolutionnal Neural Network») comme un humain qui n’aurait aucune connaissance a priori (mais vraiment aucune !). Nous voulons que cette personne apprenne à reconnaître une forme, un objet, quelque chose. Pour cela on va lui montrer un maximum d’images représentant l’objet à reconnaître (ou autre). Idéalement ces images doivent toutes être différentes afin de généraliser au maximum ce que l’on souhaite reconnaître.

ballon.jpeg

Prenons l'exemple suivant, nous voulons reconnaître un ballon de foot. Si pour cela on ne montre qu'une seule image (par exemple l'image ci-dessus) à une personne ayant zéro connaissance et qu'on dit à cette personne que ceci est un ballon, elle pourrait se dire que tout ce qui est rond ou seulement arrondi sera un ballon. Elle pourrait même se dire que ce qui est rouge est un ballon.
A contrario, si on montre énormément de photos de ce même ballon uniquement,  cette personne considérera qu’un ballon en générale est uniquement ce ballon là. Lorsqu’on lui montrera un ballon différent, elle ne le reconnaîtra pas comme étant un ballon (puisque pour cette personne un ballon est uniquement celui qu'on lui a montré).

Les réseaux de neurones convolutifs fonctionnent de la même façon. Il faut être en mesure de fournir un maximum d'images au modèle qu'on souhaite former mais il faut faire attention à lui fournir une base de données cohérente et utile.

Entraînement d’un réseau de neurone convolutif :

La base de données :

Lorsque que l’on crée un modèle de réseaux de neurones convolutifs ou tout simplement quand on utilise un modèle déjà existant, nous devons entraîner ce modèle avec des données afin qu’il puisse apprendre et être capable de reconnaître un objet ou quelque chose en particulier. Pour cela on utilise une base de donnée contenant toutes nos images.
Une partie de cette base de données servira à entraîner le modèle CNN, c'est ce qu’on appelle «la base de données d’entraînement». La partie de la base de données restante sert pour évaluer le modèle, on l’appelle la «base de données de validation».

Ce qui est important de savoir c'est que toutes les images que nous utilisons doivent êtres préalablement étiquetées, c'est à dire que chacune des images que nous utilisons doit appartenir à une classe en particulier.
Par exemple si nous souhaitons reconnaître des voitures, des vélos et des motos, cela nous donne 3 classes. Chaque image de notre base de données doit appartenir à une de ces trois classes.
C'est ce que l'on appelle l'apprentissage supervisé.

L'apprentissage :

L’entraînement d’un CNN consiste à déterminer et à calculer empiriquement la valeur de chacun de ses poids. Le principe est le suivant : le CNN traite une image (de la base de données d'entraînement) et en sortie il fait une prédiction, c’est-à-dire qu’il dit à quelle classe il pense que cette image appartient. Sachant qu’on connaît préalablement la classe de chacune des images d’entraînement, on peut vérifier si ce résultat est correcte.
En fonction de la véracité de ce résultat, on met à jour tout les poids du CNN selon un algorithme qui s’appelle la rétropropagation du gradient de l’erreur.
Lors de la phase d'entraînement du modèle, le processus expliqué ci-dessus est répété plusieurs fois et avec la totalité des images de la base de données d'entraînement. Le but étant que le modèle classifie au mieux ces données.
Lorsque le modèle a fini de mettre à jour ses poids, on évalue le modèle en lui présentant la base de données de validation. Il classe toutes ces images (qui sont des images que le modèle n’a jamais vues) et on calcule son taux de bonne classification, c’est ce qu'on appelle la précision du modèle.

Sur-apprentissage et sous-apprentissage

A la fin du processus d'apprentissage trois cas de figure peuvent se présenter :

  • Le modèle est aussi performant sur les données d'entraînement (images sur lesquelles il s'entraîne) que sur les données de validation (images qu'il n'a jamais vues). Cela est le cas de figure idéale, ça signifie que le modèle a très bien fait son travail et qu'il reconnaît aussi bien les images qu'il connaît que celles qu'il n'a jamais vues.

  • Le modèle reconnaît très bien les images d'entraînement et moins bien celles de validation. Le modèle aura une faible capacité prédictive, il n'arrive pas à généraliser. On parle alors de sur-entraînement. Dans ce cas là on peut ajouter davantage d'images pour pallier ce problème ou il faut utiliser un modèle moins complexe.

  • Le modèle ne reconnaît pas très bien les images d'entraînements et pas très bien non plus les images de validation. On parle alors de sous-apprentissage. Dans ce cas là ajouter plus d'images ne servira à rien, c'est généralement le modèle choisie qui ne convient pas, il faudrait utiliser un modèle plus complexe.

Vous avez un projet et vous pensez que le deep learning peut améliorer vos résultats ? Contactez-nous !