Apprentissage Machine (supervisé)

Florent Capelli

24 Février 2024

Introduction

Qu’est-ce que c’est l’IA pour vous ?

Vos réponses au Wooclap !
Vos réponses au Wooclap !

De la spécification au programme

Écrire un programme revient souvent à :

  • Identifier le problème
    • Entrée ? Un tableau T
    • Sortie ? Un tableau U représentant T trié
  • Spécification :
  • U[i] ≤ U[i+1]
  • Il existe bijection π : [n] → [n], T[i] = U[π[i]]
  • Produire un programme respectant la spécification
def selection_sort(t):
    u=t.copy()
    for i in range(len(u)):
        m=i
        for j in range(i,len(u)):
            if u[j] < u[m]:
                m=j
        u[m], u[i] = u[i], u[m]
    return u

Quelle spécification ?

  • Une banque a-t-elle intêret à accorder un crédit à X ?
  • Reconnaître un chat sur des photos.
  • Détecter des spams
  • Recommander des films qu’un utilisateur aimerait

Spam!

Spam!
Algorithmes de recommandation

É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”.

Expliquer par l’exemple

On veut quelque chose “qui marche” :

  • On a des exemples : les données
    • “Bob 35 ans cadre dynamique n’a remboursé que 35% de son crédit au terme”.
    • “Cette image contient un chat et celle-ci non”.
    • “Ce message est un spam”.
    • “Alice a regardé et aimé Harry Potter et Better Call Saul”.
  • On veut créer un programme qui infère des règles depuis les exemples :
    • doit marcher sur les exemples (la plupart au moins).
    • doit généraliser sur des données non connues.

Classification

Approche particulièrement adaptée à deux types de programme :

  • Classification : on veut classer des objets 𝒪 dans des classes 𝒞
    • Spam/non spam,
    • Chat/pas chat.

Régression

  • Régression : on veut estimer une quantité (ou plusieurs) f(o) pour o ∈ 𝒪
    • Pourcentage du crédit remboursé.
    • Note donnée à film par l’utilisateur.

Classification comme régression

On peut voir la classification comme une régression :

  • f: 𝒪 → 𝒞 vue comme fc: 𝒪 → [0,1]fc(o) est la “probabilité que o soit classé dans c
  • Exemple:
    • fspam(″Un héritage en attente″) = 0.9, fmessage(″Un héritage en attente″) = 0.1
    • fspam(″Invitation à la conférence...″) = 0.6, fmessage(″Invitation à la conférence...″) = 0.4

Cadre théorique

Apprentissage supervisé

  • On apprend depuis des données étiquetées
  • On se limite aujourd’hui aux cas : régression et classification

D’autres types d’apprentissage :

“Étant donnée les pixels de l’écran, jouer à Pong”

Apprentissage par renforcement

Génère une image depuis du texte

Apprentissage non supervisé

Cadre théorique idéal (classification)

  • On a des objets 𝒪
    • 𝒪 est l’ensemble de tous les emails possibles.
  • On suppose qu’il existe f: 𝒪 → 𝒞 entre les objets et des classes qu’on ne connaît pas
    • 𝒞 = {spam, message}
    • f(o) = spam seulement si je considère que o est un spam.
  • On connait f(o1), …, f(on) pour certains objets oi ∈ 𝒪
    • f(″Devenir riche en 5 minutes...″) = spam
    • f(″Journées du laboratoire 2024...″) = message

Objectif: Trouver f* telle que f* classifie presque comme f.

Cadre théorique idéal (régression)

  • On a des objets 𝒪
    • 𝒪 est l’ensemble de tous les clients possibles d’une banque.
  • On suppose qu’il existe f: 𝒪 → 𝒰 qu’on ne connaît pas
    • 𝒰 = [0,100]
    • le client o remboursera f(o)% de l’argent emprunté
  • On connait (o1,f(o1)), …, (on,f(on)) pour certains objets oi ∈ 𝒪
    • f(Alice) = 100
    • f(Bob) = 35

Objectif : Trouver f* telle que f* ≃ f.

Objets et représentations

  • Est-ce que le patient a une angine ?
    • tension
    • fièvre
    • couleur de la gorge
    • etc.

Réponse : OUI/NON basée sur ces critères seulement.

Pour un objet o ∈ 𝒪, on ne connait qu’une représentation de o.

Importance de la représentation

  • On suppose l’existence d’une fonction f: 𝒪 → 𝒰 sur un ensemble d’objet 𝒪 qu’on ne peut pas représenter
    • Un humain, avec toute sa connaissance, situation personnelle, sociale, économique …
  • On représente o ∈ 𝒪 à l’aide de certains attributs
    • Âge, Métier, Revenus …
Â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”).

Meilleur cadre théorique

  1. Il existe une fonction idéale
    • f: 𝒪 → 𝒞.
      pas forcément toujours vrai ; même ici on peut être incertain
  2. On a une représentation de 𝒪 via des attributs ℛ = A1, …, Ak :
    • r: 𝒪 → ℛ
  3. On a des données
    • r(o1): f(o1), …, r(on): f(on)
  4. Hypothèses:
    • Les données sont des observations d’une variable aléatoire sur ℛ × 𝒞.
      en pratique, on a des biais d’observation
    • Quelle distribution ? On suppose une distribution 𝒟 sur 𝒪 (proba de “rencontrer” o ∈ 𝒪)
      très difficile d’estimer vraiment cette distribution
    • Intuitivement : on observe (x,c) avec proba Pro ≃ 𝒟(x=r(o)∧f(o)=c)
      Attention, ensembles infinis en général, on ne peut les mesure pas point par point

À la recherche d’un classifieur

  1. On a des données x1 : y1, …, xn : yn
  2. Rappel: x = r(o) ∈ ℛ, y = f(o) ∈ 𝒞.
  3. On cherche f*: ℛ → 𝒞 qui “approximef.

Idéalement f*(x) = y où il existe o ∈ 𝒪 tel que r(o) = x et f(o) = y.

  • Plusieurs y ∈ 𝒞 possibles en fonction du o choisit (erreur induite par la représentation!)
  • Idéalement : on veut le y le plus probable, ie qui maximise Pr(yx) := Pr(r(o)=xf(o)=y)
  • Même si on trouve f* avec exactement ce comportement on fera toujours des erreurs.

Erreur minimale possible : erreur de Bayes.

Résumé

  • But: classifier des objets 𝒪 dans des classes 𝒞 selon un processus idéal inconnu f: 𝒪 → 𝒞
    en général on suppose même que f elle-même est probabiliste
  • Entrée:
    • Observations (données) : x1 : y1, …, xn : yn
    • xi sont des représentations r(o) des objets comme des listes d’attributs
    • yi leur classe (supervisé)
  • Sortie idéale: une hypothèse h telle que h(x) = argmin Pr(yx)
  • Même la sortie idéale f* commet des erreurs : l’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!)

De l’importance d’une distribution

On cherche à détecter une maladie :

  • 𝒞 = {malade, sain}.
  • 𝒪  = population.
  • contient : tension, résultat d’une prise de sang complète, fièvre etc.
  • 99% des gens sont sains.

h qui renvoie “sain” quelque soit x est une hypothèse raisonnable.

Limites et impossibilités

Trop d’inconnues dans le problème :

  • impossible de calculer f*
  • si un oracle vous donne f*, impossible de vérifier si l’oracle ment!

Défis :

  • trouver h qui commet une erreur faible par rapport à f* à partir des données
    Où doit-on chercher h ?
  • évaluer l’erreur de h
    Définir “l’erreur”, et différencier entre erreur apparente et erreur réelle.

Trouver une bonne hypothèse

Classification

On cherche h qui sépare les points bleus des points rouges. À quoi doit ressembler h ?

Où tracer les “frontières” ?
4 droites ?
6 droites ?
Un cercle ?
Euh ? Tout plein de petits cercles ?

Régression

On veut trouver h qui “approxime” f à partir d’exemple. Quel type de fonction ?

Qu’est-ce que c’est que cette fonction ?
Une droite y=ax+b
Une droite sinueuse y=ax+bsin(x)+c
Une parabole y=ax^2+bx+c
Euh ? Tout plein de petits segments!

Famille d’hypothèses

Pour trouver une bonne hypothèse, on fixe une famille d’hypothèses et on cherche le “meilleur” h ∈ ℋ pour nos données.

Exemples pour la classification (deux classes VRAI / FAUX):

  • Une droite D(a,b,c) : ax + by + c ≥ 0?
    • On cherche les meilleurs (a,b,c) pour séparer nos données (VRAI au-dessus de la droite, FAUX en dessous) !
  • Un cercle de rayon r centrée en (a,b) : C(r,a,b) : (xa)2 + (yb)2 ≤ r2
    • On cherche le meilleur rayon r et le meilleur centre (a,b) pour séparer nos données !
  • Arbres de décisions (voir TP 3)
    • on classifie en répondant à une suite de questions ; permet de prendre des attributs discrets en compte.

Nos hypothèses sont définies à partir de paramètres. On essaie d’optimiser ces paramètres.

Évaluation

A-t-on bien appris ?

  • on a une petite erreur sur les données (erreur apparente)
  • on généralise à des exemples qu’on a jamais vu (erreur réelle)
You underfit it: grande erreur tout court

Évaluation d’un classifieur

Erreur observée d’une hypothèse h :

  • Ê(h) = #{xi ∣ yi ≠ h(xi)}/n,
  • ie, la proportion de points où h se trompe.
  • facile à calculer

Erreur réelle d’une hypothèse h :

  • E(h) = Pr (yh(x)|f(x)=y)
  • ie, la probabilité que h se trompe.
  • Comment l’estimer?

Erreur observée n’a aucun sens si on inclut des données apprises.

Séparer apprentissage du test

  • On apprend avec un sous-ensemble A ⊆ D des données tiré aléatoirement
  • On estime l’erreur avec D \ A
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

Validation croisée

  • On sépare les données D en deux ensembles D1, D2 de taille égale
  • On apprend :
    • h sur D,
    • h1 sur D1, on calcule l’erreur e1 de h1 sur D2
    • h2 sur D2, on calcule l’erreur e2 de h2 sur D1
  • L’erreur de h est e1 + e2.
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)

Mettre en place une solution d’apprentissage supervisé

Données

  • Choisir un modèle de représentation : quels attributs ?
  • Collecter des données : échantillon représentatif ? assez grand ?

Apprentissage

  • Choisir une famille d’hypothèses : exploration préliminaire des données, évaluation sur des petits sous-ensembles
  • Trouver la meilleure hypothèse : algorithme d’apprentissage adapté à la famille

Évaluation

  • Choisir une méthode d’évaluation
  • Évaluer les performances sur une partie des données non utilisées pour l’entraînement.

Exemple complet : la séparation linéaire

Classification binaire

  • On a deux paramètres (abcisse / ordonnée)
  • Deux classes : +1 / -1

  • Hypothèse : on cherche une hypothèse de la forme
    SIGNE(y−(ax+b)) ∈ { − 1,  + 1}
  • Erreur E(a,b) : nombre de point mal classés
  • Apprendre = problème d’optimisation. Trouver les meilleurs a, b!
  • Problème: E n’est pas dérivable, on ne sait rien faire…

Erreur dérivable et descente de gradient

SIGNE(x)
\sigma(x) = 2e^{10x}/(1+e^{10x})-1

E(a,b) = (1/4)∑i(ciSIGNE(yi−(axi+b)))2

Ê(a,b) = (1/4)∑i(ciσ(yi−(axi+b)))2

On va minimiser Ê par descente de gradient !

Descente de gradient (Méthode de Newton)

  • On part avec (a0,b0) aléatoires
  • On définit : (an + 1,bn + 1) = Ê(an,bn) − αÊ(an,bn)
    Ê = (∂Ê/∂a,∂Ê/∂b) et α > 0 est un paramètre de vitesse

Converge vers un minimum local.

Voir animation Why Momentum Really Work, Gabriel GOH

Animation

TensorFlow

Réseaux de neurones

Perceptron (1957)

L’algorithme qu’on vient de voir est exactement comment un neurone formel va apprendre :

  • F = σ(∑iwixi)
  • But : Minimiser (x,y) ∈ Dy − F(x)

Limites : on n’apprend que des données linéairement séparables (voir exemple précédent).

Réseau de neurone (artificiels)

Chaîner des neurones pour faire des fonctions plus complexes.

  • Fonction calculée est toujours dérivable
  • On sait la dériver efficacement (dérivation chaînée des neurones, avec mémoisation)
  • On sait mettre les poids à jour via la méthode du gradient

On a une méthode qui fait converger le réseau de neurone vers un optimum local!

Réseaux de neurones

Intêret pour les réseaux de neurones renouvelé :

Un GPU (ou carte graphique, crédit : Henry Mühlpfordt)
  • Avancée technologique ont permis de passer à une échelle supérieur (GPU)
  • Applications très prometteuses (reconnaissance d’images, transformers, etc.)
  • Données d’apprentissage bien plus facile d’accès (internet)

Quelques références

Livres

Apprentissage machine, Clé de l’Intelligence Artificielle, Rémi Gilleron
Deep Learning
The Little Book of Deep Learning, François Fleuret
Deep Learning
Neural Network and Deep Learning, Michael Nielsen

Autres