
Comment sélectionner et former des modèles d’apprentissage automatique pour résoudre des problèmes que les développeurs de logiciels ne peuvent pas résoudre.
Dans cette série d’articles, je vais vous aider à comprendre ce qu’est le Machine Learning en regardant un vrai projet !
Si vous avez un chat, vous savez qu’il demande à l’intérieur et à l’extérieur de la maison. Dans un monde idéal, vous installez une chatière sur votre porte et elle ne s’ouvre que si c’est votre chat ✨
La seule chose est qu’il n’y a pas de programme qui détecte principalement votre chat !
De plus, en été, il perd une partie de son pelage et vieillit, il changera donc d’apparence.
Ce problème semble compliqué à régler 😞…
Cet article est la deuxième partie d’une série de trois !
Bien que ce ne soit pas obligatoire, vous pouvez commencer la série depuis le début si vous le souhaitez :
Dans le premier article de cette série, nous avons exploré comment collecter, explorer et préparer des données à utiliser dans une application d’apprentissage automatique. Commencez maintenant les étapes qui nécessitent réellement des connaissances en mathématiques, en science des données, etc.
Vous avez de la chanceJ’écris cet article avec le défi que vous compreniez comment cela fonctionne sans aucune mention de concepts mathématiques ou de science des données difficiles 🐈
Pour créer une application d’apprentissage automatique, vous devez :
- Pour sélectionner un modèle d’apprentissage automatique ;
- Former un modèle d’apprentissage automatique avec des données préparées ;
- Test la performance du modèle dans la résolution du problème ;
Cela semble incroyablement difficile à faire (et ça l’est vraiment !) mais je peux vous assurer que c’est aussi facile à comprendre.
Passons à la configuration de la chatière intelligente dont nous avons parlé dans l’introduction 🤓
Une fois que nous aurons les données, nous choisirons une méthode d’apprentissage et entraînerons ce modèle.
En plus de cette liste de expériences (les propriétés associées à un état), un « modèle » d’apprentissage automatique est affecté à l’ordinateur.
Fondamentalement, un modèle d’apprentissage automatique est une fonction mathématique.
L’ordinateur ajustera les paramètres de cette fonction mathématique à partir des données jusqu’à ce qu’il renvoie le résultat attendu.
En termes simples, l’ordinateur essaie de trouver les bons paramètres de modèle à partir des informations pour faire le moins d’erreurs de détection possible.
Il existe de nombreux modèles mathématiques simples à comprendre et d’autres beaucoup plus complexe. 🤓
Ici, je propose d’expérimenter un modèle très populaire appelé « Decision Tree ».
A partir des caractéristiques physiques associées à chaque état, le modèle fera une série d’hypothèses et évaluer la probabilité qu’une photo est votre chat.
Pour ce faire, on peut par exemple compter les photos qui répondent à ces hypothèses par rapport à celles de votre chat :
- La photo comporte des ailes : 0 photos de votre chat (un pigeon 🐦)
- La photo présente un animal de 25 cm de hauteur, qui a des moustaches, 4 pattes et de couleur bringé : toutes les photos de votre chat (votre chat 🐈)
- La photo présente un animal de 12 cm de haut, qui a une moustache, 4 pattes et est de couleur grise : 0 photos de votre chat (une souris 🐁)
Nous pouvons représenter cet arbre de décision comme suit et parcourir les hypothèses jusqu’à obtenir un résultat satisfaisant :
Quand on lit « CAT (7% des cas) », cela signifie que parmi les images présentées au modèle qui valident l’hypothèse, seulement 7% sont des chats.
Avoir une moustache n’est donc pas un critère suffisamment pertinent pour identifier un chat.
Si on résume le principe des arbres de décision comme exemple de méthode d’apprentissage :
- Suite données dont vous disposez, Suite les hypothèses que vous pouvez faire pour améliorer le modèle ;
- Mais Suite hypothèses que vous faites, le moins vous pourrez accepter une nouvelle situation ;
Si vous vous limitez à la taille exacte de votre chat et qu’il arrive à ramper, il risque d’être rejeté par le modèle, par exemple.
Une fois que vous avez choisi une méthode d’entraînement, vous devez intégrer les données dans votre programme.
Tout comme lorsque vous apprenez quelque chose, l’apprentissage d’un logiciel se déroule en trois étapes :
- On vous présente des expériences que vous apprenez :
2 * 2 = 4 ; 7 * 8 = 56 ; etc. - Vous êtes testé sur une expérience dont vous ne savez rien (« qu’est-ce que 2 * 2 + 7 * 8 ? ») mais dont la réponse est connue ;
- Vous apprenez de vos erreurs et de vos succès et vous améliorez votre capacité à évaluer une situation que vous ne connaissez pas ;
Ces trois étapes sont appelées apprentissage, évaluation des connaissances Et Vivre: c’est ce qui permet à tout être humain de progresser 😎
Et bien c’est pareil pour les voitures !
- Vous présentez au programme informatique des photos de votre chat, en lui disant que c’est votre chat, et d’autres photos qui lui disent que ce n’est pas votre chat (APPRENTISSAGE);
- Ensuite, vous lui montrez plusieurs photos que vous aviez mises de côté et qu’il ne lui avait jamais montrées pour vérifier s’il est capable de reconnaître votre chat (TEST);
- En fonction de ses réponses, ajustez les paramètres du programme pour maximiser ses performances (VIVRE);
En gros, si on revient au Machine Learning, parfois on aura besoin de plus de données, on transformera les données ou changer aussi la méthode d’apprentissage pour trouver le modèle le plus performant.
Mais c’est facile !
Tout ce que nous avons besoin de savoir, c’est combien de fois notre chat est reconnu, n’est-ce pas ? 🙂
Si seulement c’était aussi simple 😁.
L’évaluation d’un modèle d’apprentissage automatique dépendra du problème que vous rencontrez.
Ici, vous essayez de développer un programme qui devrait revenir 0 s’il détecte votre chat e 1 s’il détecte autre chose.
En Machine Learning, nous appelons ce type de programme un algorithme de classification binaire 🤓
Il existe de nombreux tests possibles pour évaluer les performances d’un modèle. Je vais aborder deux d’entre eux afin que vous compreniez l’intérêt d’utiliser plusieurs tests pour vérifier votre programme.
- La sensibilité est le vrai taux positifc’est-à-dire la proportion de chats que le modèle a correctement identifiés.
C’est la capacité de votre programme à détecter votre chat. - Précision est la proportion de prédictions correctes parmi les points qui ont été prédits positifs.
C’est la capacité de votre programme à détecter votre chat QUAND c’est votre chat.
Mais c’est exactement pareil, non ? 😶
Sûrement pas!
Imaginez 150 photos dont 50 sont des chats Et 100 ne sont « pas des chats ».
Le programme détecte 45 photos de chats comme des chats (45/50) et 50 photos « non-chats » comme des chats (50/100).
- La sensibilité est de 90%, 45/50 ➡ Excellent 🎇;
- La précision est de 63 %, soit ( (45 + 50) / (50 + 100) ) ➡ Moyenne 🤔 ;
Si le programme laisse entrer les souris ou les petits chiens par la chatière, cela pourrait être un problème, n’est-ce pas ?
Ok, mais comment cela m’aide-t-il à évaluer mon modèle ? 🤨
Car vous devrez faire un choix entre ces deux métriques :
- Voulez-vous que votre chat rentre à chaque fois, même si la trappe s’ouvre parfois pour d’autres animaux ?
- Ou voulez-vous être sûr que c’est votre chat, même s’il n’est parfois pas reconnu ?
Voulez-vous être permissif ou sélectif ?
Pour en savoir plus sur ce sujet, consultez ce cours gratuit sur OpenClassrooms !