# Qu’est-ce que l’apprentissage automatique, et en quoi diffère-t-il de la programmation classique?

Date: 2020-03-16 · Author: Robert Scales · https://guidetoartificialintelligence.com/fr/apprendre/apprentissage-automatique-vs-programmation-classique/

**Answer:** En programmation classique, une personne écrit les règles et l’ordinateur les suit. En apprentissage automatique, une personne fournit des exemples accompagnés des bonnes réponses, et l’ordinateur trouve lui-même ses règles, appelées un modèle, qu’il peut ensuite appliquer à de nouveaux cas.

La plupart des logiciels sont une liste d’instructions. Un programmeur décide exactement de ce qui doit se passer dans chaque situation et l’écrit : si le total du panier dépasse 50 $, la livraison est gratuite; si le mot de passe est erroné trois fois, le compte est verrouillé. L’ordinateur est rapide et infatigable, mais il ne sait que ce qu’on lui a dit.

L’apprentissage automatique inverse l’ordre. Au lieu d’écrire les règles, vous rassemblez des exemples dont la bonne réponse est déjà connue, et vous laissez un programme chercher une régularité qui relie les entrées aux réponses. La régularité qu’il trouve s’appelle un modèle. Une fois que vous l’avez, vous pouvez lui soumettre un nouveau cas qu’il n’a jamais vu et obtenir une prédiction. La meilleure façon de sentir la différence est d’examiner un même problème résolu des deux façons.

## Le même problème, deux approches : un filtre antipourriel

Le courriel indésirable est un bon cas d’essai, parce que tout le monde sait à quoi ressemble un pourriel, et pourtant il est étonnamment difficile à décrire par des règles.

**À la manière de la programmation classique.** Vous lisez des pourriels et vous écrivez des règles d’après ce que vous voyez. Dans son essai de 2002, « A Plan for Spam », le programmeur Paul Graham raconte avoir fait exactement cela. Des règles comme « signaler les messages dont l’objet est entièrement en majuscules » aident au début. Il rapporte qu’une règle, qui cherchait le mot « click », attrapait 79,7 % de ses pourriels, mais signalait aussi 1,2 % de ses courriels légitimes. Après environ six mois à ajouter des règles, il trouvait très difficile d’attraper les derniers pour cent de pourriels, et chaque règle plus stricte signalait à tort davantage de vrais messages.

**À la manière de l’apprentissage automatique.** Graham a alors changé de méthode. Il a rassemblé deux piles de courriels, environ 4 000 pourriels et environ 4 000 messages normaux, et a laissé un programme compter combien de fois chaque mot apparaissait dans chaque pile. À partir de ces comptes, le programme calculait, pour chaque mot, à quel point il indiquait un pourriel. Chaque nouveau courriel recevait une note qui combinait celles de ses mots les plus révélateurs. Graham rapporte que ce filtre laissait passer moins de 5 pourriels sur 1 000, sans signaler un seul bon courriel lors de ses tests. Il a aussi trouvé des indices auxquels Graham n’avait jamais pensé, comme « ff0000 », le code Web du rouge vif.

Voici le contraste, côte à côte :

| | Programmation classique | Apprentissage automatique |
|---|---|---|
| Ce que fournit une personne | Les règles | Des exemples avec leurs réponses |
| Ce que produit l’ordinateur | Des réponses | Un modèle (des règles apprises) |
| Comment il s’améliore | Quelqu’un écrit d’autres règles | Vous ajoutez des exemples plus nombreux ou meilleurs |
| Exemple du pourriel | « Si l’objet est tout en majuscules, marquer comme pourriel » | Apprend des notes de mots à partir de 8 000 courriels triés |

## Le vocabulaire, en mots simples

Le cours gratuit de Google, *Machine Learning Crash Course*, utilise la détection des pourriels comme fil conducteur, et ses termes valent la peine d’être appris, parce que vous les croiserez partout.

- **Étiquette :** la réponse que l’on veut prédire. Pour un courriel, « pourriel » ou « pas un pourriel ».
- **Caractéristique :** une information d’entrée que le modèle peut utiliser. Pour un courriel, les mots du message, l’adresse de l’expéditeur, l’heure d’envoi.
- **Exemple étiqueté :** un cas qui comporte à la fois ses caractéristiques et son étiquette, comme un courriel qu’une personne a marqué comme pourriel.
- **Modèle :** la relation apprise entre les caractéristiques et l’étiquette.
- **Inférence :** l’utilisation du modèle terminé sur de nouveaux cas non étiquetés, comme les messages qui arriveront demain dans votre boîte de réception.

Une façon utile de s’en souvenir : en programmation classique, vous écrivez vous-même le « si… alors… ». En apprentissage automatique, les exemples l’écrivent pour vous, sous forme de nombres.

## Quand utiliser l’un ou l’autre?

L’apprentissage automatique n’est pas toujours meilleur. Si les règles sont claires et stables, comme pour calculer la taxe de vente, du code classique est plus simple, plus facile à vérifier et plus facile à expliquer. L’apprentissage automatique brille quand les règles sont difficiles à mettre en mots, changent sans cesse ou dépendent de nombreux petits signaux à la fois. Le pourriel coche les trois cases : les polluposteurs s’adaptent, et aucun mot à lui seul ne les trahit.

Il a aussi un coût. Un modèle ne vaut que ce que valent ses exemples. Si vos courriels étiquetés viennent d’un seul type d’utilisateur, le filtre risque de mal fonctionner pour les autres. Et les règles apprises forment généralement une longue liste de nombres plutôt que des phrases qu’une personne peut lire.

> **À essayer :** ouvrez le dossier des pourriels de votre messagerie et choisissez dix messages. Notez trois règles qui, selon vous, les attraperaient tous. Puis vérifiez votre boîte de réception : combien de vrais messages vos règles attraperaient-elles aussi? C’est exactement ce compromis qui a poussé Graham vers l’apprentissage à partir d’exemples.

## Que veut dire entraîner un modèle?

L’entraînement est l’étape où le modèle est construit à partir des exemples. Le cours de Google le définit simplement : entraîner, c’est trouver de bonnes valeurs pour les nombres internes du modèle, qu’on appelle habituellement des poids, à l’aide d’exemples étiquetés. Un poids indique combien une caractéristique doit compter. Dans un modèle antipourriel, le mot « click » pourrait finir avec un poids élevé en faveur du pourriel, et le mot « invoice » (facture), avec un poids faible.

Le programme apprend ces poids par essais et corrections. Il part de valeurs approximatives, fait une prédiction pour chaque exemple et mesure à quel point il s’est trompé avec un nombre appelé la perte. Une prédiction parfaite a une perte nulle; une mauvaise a une perte élevée. Le programme ajuste ensuite légèrement les poids dans la direction qui réduit la perte, et il recommence sur tous les exemples, plusieurs fois. Quand la perte moyenne cesse de baisser, l’entraînement est terminé.

Le filtre de Graham en est une forme simple : compter les mots donne une note à chacun, et ces notes jouent le rôle de poids. Des systèmes plus grands, comme les réseaux de neurones derrière les modèles de langage récents, s’entraînent dans le même esprit avec des millions ou des milliards de poids. Le modèle terminé est ensuite testé sur des exemples qu’il n’a jamais vus pendant l’entraînement, parce que le vrai but n’est pas de mémoriser les anciens courriels, mais de bien trier ceux de demain.

## Sources

- Framing: Key ML Terminology (Machine Learning Crash Course): https://developers.google.com/machine-learning/crash-course/framing/ml-terminology
- A Plan for Spam: http://www.paulgraham.com/spam.html
- Descending into ML: Training and Loss (Machine Learning Crash Course): https://developers.google.com/machine-learning/crash-course/descending-into-ml/training-and-loss
