Florent Capelli
24 Février 2024
Écrire un programme revient souvent à :
Étant donné un dossier de client, quel est la probabilité que le client ne rembourse pas son crédit ?
Étant donnée une image, y a-t-il un chat sur cette image ?
Étant donné un email, dois-je l’envoyer dans le dossier spam ?
Connaissant les films regardés précédemment par l’utilisateur, trouver un film qu’il va aimer.
On ne sait pas toujours expliquer ou évaluer ce qu’on veut en sortie. On veut quelque chose “qui marche”.
On veut quelque chose “qui marche” :
Approche particulièrement adaptée à deux types de programme :
On peut voir la classification comme une régression :
D’autres types d’apprentissage :
Apprentissage par renforcement
Apprentissage non supervisé
Objectif: Trouver f* telle que f* classifie presque comme f.
Objectif : Trouver f* telle que f* ≃ f.
Réponse : OUI/NON basée sur ces critères seulement.
Pour un objet o ∈ 𝒪, on ne connait qu’une représentation de o.
Âge | Métier | Revenus | Crédit initial | Taux | Année | Part remboursée |
---|---|---|---|---|---|---|
32 | Agent immobilier | 45k€ | 100k€ | 2.5% | 2004 | 60% |
45 | Enseignant | 30k€ | 150k€ | 1.5% | 2015 | 100% |
… | ||||||
32 | Agent immobilier | 45k€ | 100k€ | 2.5% | 2004 | 90% |
Possiblement pas pertinent pour “apprendre” f.
Quid du problème si r(o)=(“couleur des yeux”, “pointure de chaussure”, “équipe de foot préférée”).
Idéalement f*(x) = y où il existe o ∈ 𝒪 tel que r(o) = x et f(o) = y.
Erreur minimale possible : erreur de Bayes.
On peut définir les mêmes choses pour la regression. Cependant, on essaie désormais de minimiser l’espérance de l’écart entre h et f.
Classifier = apprendre une distribution (beaucoup de stat!)
On cherche à détecter une maladie :
h qui renvoie “sain” quelque soit x est une hypothèse raisonnable.
Trop d’inconnues dans le problème :
Défis :
On cherche h qui sépare les points bleus des points rouges. À quoi doit ressembler h ?
On veut trouver h qui “approxime” f à partir d’exemple. Quel type de fonction ?
Pour trouver une bonne hypothèse, on fixe une famille ℋ d’hypothèses et on cherche le “meilleur” h ∈ ℋ pour nos données.
Nos hypothèses sont définies à partir de paramètres. On essaie d’optimiser ces paramètres.
A-t-on bien appris ?
Erreur observée d’une hypothèse h :
Erreur réelle d’une hypothèse h :
Erreur observée n’a aucun sens si on inclut des données apprises.
Airline | Flight | AirportFrom | AirportTo | DayOfWeek | Time | Length | Delay |
---|---|---|---|---|---|---|---|
CO | 269 | SFO | IAH | 3 | 15 | 205 | 1 |
US | 1558 | PHX | CLT | 3 | 15 | 222 | 0 |
… | … | … | … | … | … | … | … |
AA | 2400 | LAX | DFW | 3 | 20 | 165 | 0 |
AA | 2466 | SFO | DFW | 3 | 20 | 195 | 1 |
… | … | … | … | … | … | … | … |
Problème : une grosse partie des données n’est pas utilisée pour l’entraînement
Airline | Flight | AirportFrom | AirportTo | DayOfWeek | Time | Length | Delay | ||
---|---|---|---|---|---|---|---|---|---|
CO | 269 | SFO | IAH | 3 | 15 | 205 | 1 | h1 | h |
US | 1558 | PHX | CLT | 3 | 15 | 222 | 0 | ||
… | … | … | … | … | … | … | … | ||
AA | 2400 | LAX | DFW | 3 | 20 | 165 | 0 | h2 | |
AA | 2466 | SFO | DFW | 3 | 20 | 195 | 1 | ||
… | … | … | … | … | … | … | … |
Coûteux, non prouvé en théorie mais fonctionne en pratique (en coupant en plus que 2)
E(a,b) = (1/4)∑i(ci−SIGNE(yi−(axi+b)))2
Ê(a,b) = (1/4)∑i(ci−σ(yi−(axi+b)))2
On va minimiser Ê par descente de gradient !
Converge vers un minimum local.
Voir animation Why Momentum Really Work, Gabriel GOH
L’algorithme qu’on vient de voir est exactement comment un neurone formel va apprendre :
Limites : on n’apprend que des données linéairement séparables (voir exemple précédent).
Chaîner des neurones pour faire des fonctions plus complexes.
On a une méthode qui fait converger le réseau de neurone vers un optimum local!
Intêret pour les réseaux de neurones renouvelé :