[Tuto] Intelligence artificielle : l’importance des données d’entrainement

[Tuto] Intelligence artificielle : l’importance des données d’entrainement

C’est facile d’avoir une précision de 100 % !

5

[Tuto] Intelligence artificielle : l’importance des données d’entrainement

Abonnez-vous pour tout dévorer et ne rien manquer.

Déjà abonné ? Se connecter

Abonnez-vous

Au début de l’été, nous vous avions proposé un tuto pour développer et entrainer une IA avec seulement 10 lignes de code. Cette base de travail nous permet d’explorer d’autres aspects des dessous de l’intelligence artificielle. On commence par l’importance de la quantité des données d’entrainement.

On le répète à longueur d’actualité : dans le monde des intelligences artificielles, il y a évidemment les algorithmes, mais également et surtout les données d’entrainement qui sont au moins aussi importantes. Elles doivent être nombreuses et correctement étiquetées, c’est-à-dire avoir des informations fiables sur ce qu’elles contiennent.

On reprend la base de données du MNIST (Modified National Institute of Standards and Technology) pour illustrer notre propos. Elle contient pour rappel 60 000 images en niveau de gris des chiffres de 0 à 9 et permet ainsi d’entrainer des intelligences artificielles à de la reconnaissance de chiffres. On peut ensuite tester l’inférence sur un autre jeu de 10 000 images. Elles sont également étiquetées, permettant ainsi de vérifier que l’IA fasse correctement son travail et obtenir un pourcentage de précision, aussi bien sur les données d’entrainement que sur des images qu’elle n’avait pas vue auparavant.

De 1 à 60 000 images d’entrainement, quelle différence ?

Mais que se passe-t-il si au lieu de prendre 60 000 images, on en prend moins ? Quelle sera l’influence sur la qualité des résultats ? Nous avons tenté l’expérience pour vous, et certains résultats peuvent surprendre au premier abord.

Il reste 78% de l'article à découvrir. Abonnez-vous pour ne rien manquer.

Déjà abonné ? Se connecter

Abonnez-vous

Commentaires (5)


Merci. C'est très intéressant, ces articles de découverte de l'IA.
On voit que pour la reconnaissance d'images (des chiffres ici), on a des résultats plutôt bons avec seulement 1000 images.
Modifié le 21/08/2024 à 13h21

Historique des modifications :

Posté le 21/08/2024 à 12h36


On voit que pour la reconnaissance d'image (des chiffres ici), on a des résultats plutôt bon avec seulement 1000 images.

sympa cette série, merci pour l'article
Excellente idée de série d'articles ! Merci !
Pour la "perte" (loss), c'est une notion assez centrale dans le machine learning.

C'est la valeur qui est utilisée pour tuner le réseau. C'est cette valeur que l'on va chercher à réduire au fur et à mesure de l'entrainement. Donc par définition, elle doit décrire à quel point le réseau réalise bien sa tâche ou pas.

Dans l'exemple donné, la perte est une entropie croisée (model.compile(loss="sparse_categorical_crossentropy", metrics=['accuracy']), plus exactement "sparse categorical crossentroty", c'est juste le format de la valeur attendu qui change). Lorsque l'on regarde, la dernière couche du réseau retourne 10 valeurs (pour les 10 catégories) suivie d'une fonction d'activation "softmax" qui permet de convertir cette valeur en une sorte de probabilité (la somme des valeurs fait toujours 1, le soft max ayant comme propriété d'amplifier les écarts donnant une plus grande importance à la valeur la plus élevée, comme son nom l'indique : un "max doux"). L'entropie croisée va dire à quel point les probabilité donnée par le réseau s'éloigne des résultats attendus (qui elles sont à 100% sur une seule catégorie).

Dans l'exemple présenté ici, la fonction de pertes est donc assez simple et ne dépend que de la prédiction finale. Cependant, la fonction de perte peut être bien plus complexe car l'on souhaite ajouter des contraintes. Par exemple, pour contenir l'overfitting (sur-apprentissage) on va utiliser la régularisation L1 et L2 (pour les habitués des régressions linéaires, c'est respectivement le LASSO et le ridge) qui ajoute dans le calcule de la perte les poids des neurones des couches concernée. On peut aussi évoquer les VAE (variational auto encoder) qui ont une fonction de perte assez complexe qui en plus de comparer à quel point l'image regénérée ressemble à l'image fournie, fait appel à la divergence de Kullback-Leibler, un truc bien perché donc, mais qui grandement améliorer la génération d'image à son époque.



Fermer