Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Chapitre 1: Introduction à l’Apprentissage Supervisé et les Classifieurs Linéaires

Introduction à l’Apprentissage Supervisé

L’apprentissage supervisé est une branche fondamentale de l’apprentissage automatique où un algorithme apprend à partir d’un ensemble de données étiquetées. Cela signifie que chaque donnée d’entrée est associée à une sortie correcte. L’objectif est de construire un modèle capable de prédire la sortie pour de nouvelles données non étiquetées. Ce chapitre explorera deux types d’algorithmes supervisés : la régression linéaire et les classifieurs linéaires, en mettant un accent particulier sur le Perceptron et les Support Vector Machines (SVM).

Régression Linéaire par Descente de Gradient

La régression linéaire est un algorithme d’apprentissage supervisé utilisé pour prédire une variable de sortie continue. Elle suppose une relation linéaire entre les variables d’entrée et la variable de sortie.

Le Modèle de Régression Linéaire

Le modèle de régression linéaire cherche à trouver les paramètres (coefficients) d’une droite (ou d’un hyperplan en dimensions supérieures) qui minimise l’erreur entre les prédictions du modèle et les vraies valeurs des données d’entraînement. Pour un modèle simple à une seule variable, cela peut être exprimé comme :

y=θ0+θ1xy = \theta_0 + \theta_1 x

yy est la variable de sortie, xx la variable d’entrée, θ0\theta_0 l’ordonnée à l’origine et θ1\theta_1 la pente. En général, pour DD variables d’entrée, on a :

hθ(x)=θ0+θ1x1++θDxD=θTxh_\theta(\mathbf{x}) = \theta_0 + \theta_1 x_1 + \dots + \theta_D x_D = \mathbf{\theta}^T \mathbf{x}

θ\mathbf{\theta} est le vecteur des paramètres et x\mathbf{x} est le vecteur des variables d’entrée (avec x0=1x_0=1 pour le terme de biais).

La Fonction de Coût

Pour évaluer la performance de notre modèle, nous utilisons une fonction de coût (ou fonction objectif) qui mesure la différence entre les prédictions du modèle et les vraies valeurs. Pour la régression linéaire, la fonction de coût du carré des erreurs (Mean Squared Error - MSE) est couramment utilisée :

J(θ)=12mi=1m(hθ(x(i))y(i))2J(\mathbf{\theta}) = \frac{1}{2m} \sum_{i=1}^m (h_\theta(\mathbf{x}^{(i)}) - y^{(i)})^2

mm est le nombre d’exemples d’entraînement, hθ(x(i))h_\theta(\mathbf{x}^{(i)}) est la prédiction du modèle pour l’exemple ii, et y(i)y^{(i)} est la vraie valeur pour l’exemple ii. Le facteur 12\frac{1}{2} est inclus pour simplifier le calcul de la dérivée.

Descente de Gradient

La descente de gradient est un algorithme d’optimisation itératif utilisé pour trouver les valeurs des paramètres θ\mathbf{\theta} qui minimisent la fonction de coût J(θ)J(\mathbf{\theta}). L’idée est de se déplacer dans la direction opposée au gradient de la fonction de coût, car c’est la direction de la plus forte diminution.

L’équation de mise à jour des paramètres est donnée par :

θj:=θjηθjJ(θ)\theta_j := \theta_j - \eta \frac{\partial}{\partial \theta_j} J(\mathbf{\theta})

η\eta est le taux d’apprentissage (learning rate), un hyperparamètre qui contrôle la taille des pas effectués à chaque itération.

Pour la régression linéaire, les dérivées partielles de la fonction de coût sont :

θ0J(θ)=1mi=1m(hθ(x(i))y(i))\frac{\partial}{\partial \theta_0} J(\mathbf{\theta}) = \frac{1}{m} \sum_{i=1}^m (h_\theta(\mathbf{x}^{(i)}) - y^{(i)})
θjJ(θ)=1mi=1m(hθ(x(i))y(i))xj(i)pour j=1,,D\frac{\partial}{\partial \theta_j} J(\mathbf{\theta}) = \frac{1}{m} \sum_{i=1}^m (h_\theta(\mathbf{x}^{(i)}) - y^{(i)}) x_j^{(i)} \quad \text{pour } j=1, \dots, D

Les mises à jour simultanées pour chaque paramètre sont :

θ0:=θ0η1mi=1m(hθ(x(i))y(i))\theta_0 := \theta_0 - \eta \frac{1}{m} \sum_{i=1}^m (h_\theta(\mathbf{x}^{(i)}) - y^{(i)})
θj:=θjη1mi=1m(hθ(x(i))y(i))xj(i)pour j=1,,D\theta_j := \theta_j - \eta \frac{1}{m} \sum_{i=1}^m (h_\theta(\mathbf{x}^{(i)}) - y^{(i)}) x_j^{(i)} \quad \text{pour } j=1, \dots, D

La page 1 du PDF illustre l’effet de différents taux d’apprentissage (η\eta) sur la convergence de la descente de gradient.

Régression Linéaire par Descente de Gradient avec différents taux d’apprentissage. On observe que pour \eta=0.02, la convergence est lente, pour \eta=0.1 elle est plus rapide, et pour \eta=0.5 (trop élevé), l’algorithme diverge.

Régression Linéaire par Descente de Gradient avec différents taux d’apprentissage. On observe que pour η=0.02\eta=0.02, la convergence est lente, pour η=0.1\eta=0.1 elle est plus rapide, et pour η=0.5\eta=0.5 (trop élevé), l’algorithme diverge.

Interprétation de la figure (page 1):

Le choix du taux d’apprentissage est crucial pour la performance de la descente de gradient.

Perceptron et autres Classifieurs Linéaires

Après avoir exploré la régression pour les variables continues, nous nous tournons vers les classifieurs linéaires pour les problèmes de classification, où la variable de sortie est catégorique.

Approche Intuitive (2 variables)

Considérons un problème de classification simple avec deux variables (caractéristiques) et deux classes. Par exemple, nous pourrions avoir des données sur la "clarté" et la "longueur" de deux espèces de poissons. L’objectif est de trouver une ligne (ou un hyperplan) qui sépare au mieux ces deux classes.

Séparation de deux classes de poissons (points rouges et bleus) par une ligne droite. L’objectif est de trouver la meilleure "séparatrice".

Séparation de deux classes de poissons (points rouges et bleus) par une ligne droite. L’objectif est de trouver la meilleure "séparatrice".

La figure de la page 3 montre des points représentant des poissons, colorés en rouge et bleu, avec une ligne droite tentant de les séparer. La question clé est : "Comment trouver cette séparatrice ?" C’est précisément ce que les classifieurs linéaires comme le Perceptron s’efforcent de faire.

Le Perceptron

Le Perceptron, inventé par Frank Rosenblatt en 1957, est l’un des plus anciens et des plus simples algorithmes d’apprentissage automatique pour la classification binaire.

Historique et Contexte

Le Perceptron est un algorithme ancien mais fondamental. Il a été développé à une époque où l’intelligence artificielle était en plein essor. Frank Rosenblatt, un psychologue américain, a conçu le Perceptron comme un modèle simplifié du fonctionnement du cerveau.

Frank Rosenblatt, inventeur du Perceptron, devant son ordinateur Mark I Perceptron.

Frank Rosenblatt, inventeur du Perceptron, devant son ordinateur Mark I Perceptron.

La figure de la page 4 montre Rosenblatt avec le "Mark I Perceptron", une machine conçue pour implémenter l’algorithme.

Idée Globale du Perceptron

L’algorithme du Perceptron repose sur une idée simple :

Classifieur à Fonction Discriminante Linéaire

Un classifieur linéaire utilise une fonction discriminante linéaire pour séparer les classes.

Il est important de noter que le modèle lui-même (la valeur réelle wx(n)+b\mathbf{\vec{w}} \cdot \mathbf{\vec{x}}^{(n)} + b) est différent de la sortie/prédiction (la valeur binaire +1 ou -1).

Quelques Intuitions (Page 6)

Pour comprendre le Perceptron, il est utile d’avoir quelques intuitions sur la fonction de coût :

Le Perceptron, vision réseau de Neurones / Optimisation

L’algorithme du Perceptron peut être vu comme une méthode de minimisation d’une fonction de coût J(θ)J(\mathbf{\theta}). La fonction de coût utilisée par le Perceptron est souvent appelée la fonction de coût de Hinge (dans sa version simplifiée pour le Perceptron) :

J(θ,X)=n=1Nmax(0,(wxn+b)tn)J(\mathbf{\theta}, X) = \sum_{n=1}^N \max(0, -(\mathbf{\vec{w}} \cdot \mathbf{\vec{x}}_n + b) t_n)

tn{+1,1}t_n \in \{+1, -1\} est l’étiquette réelle de l’exemple nn. Le terme (wxn+b)tn(\mathbf{\vec{w}} \cdot \mathbf{\vec{x}}_n + b) t_n est positif si l’exemple est bien classé et négatif si mal classé. On cherche donc à le maximiser. Par conséquent, minimiser scoretn-\text{score} \cdot t_n revient à minimiser la perte quand l’exemple est mal classé.

L’algorithme effectue une descente de gradient sur cette fonction de coût. Le gradient de J(θ,X)J(\mathbf{\theta}, X) par rapport aux paramètres θ\mathbf{\theta} est :

θJ(θ,X)=nexemples mal classeˊstnxn\nabla_\mathbf{\theta} J(\mathbf{\theta}, X) = -\sum_{n \in \text{exemples mal classés}} t_n \cdot \mathbf{\vec{x}}_n

(en généralisant xn\mathbf{x}_n pour inclure le terme de biais).

L’équation de mise à jour des paramètres θ=(b,w)\mathbf{\theta} = (b, \mathbf{\vec{w}}) devient :

θ:=θηθJ(θ,X)\mathbf{\theta} := \mathbf{\theta} - \eta \nabla_\mathbf{\theta} J(\mathbf{\theta}, X)

Ce qui se traduit pour un exemple mal classé (xn,tn)(\mathbf{x}_n, t_n) par :

θ:=θ+ηtnxn\mathbf{\theta} := \mathbf{\theta} + \eta t_n \mathbf{\vec{x}}_n

Cette mise à jour ne se produit que pour les exemples mal classés.

Comme indiqué sur la page 7 du PDF, cette fonction de coût JJ diminue lorsque l’erreur diminue.

Algorithme du Perceptron (Online)

L’algorithme du Perceptron est souvent présenté comme un algorithme "Online" (en ligne), ce qui signifie qu’il met à jour ses paramètres après chaque exemple (ou un petit lot d’exemples).

Algorithme :

Le Perceptron est garanti de converger si les données sont linéairement séparables. Si elles ne le sont pas, l’algorithme ne converge pas et continuera d’osciller.

Non Séparabilité Linéaire

Un point important à considérer est la séparabilité linéaire.

Stratégies d’Optimisation

La descente de gradient, comme appliquée au Perceptron, peut être implémentée avec différentes stratégies de mise à jour :

Le Perceptron tel que décrit ci-dessus est un exemple de SGD, car il met à jour les poids après chaque erreur, c’est-à-dire après avoir traité un seul exemple.

La page 11 du PDF illustre les trajectoires de ces différentes stratégies dans l’espace des paramètres θ0,θ1\theta_0, \theta_1.

Comparaison des trajectoires de SGD, Mini-batch et Batch Gradient Descent dans l’espace des paramètres. Le Batch est lisse, le Mini-batch est plus erratique, et le SGD est le plus bruité.

Comparaison des trajectoires de SGD, Mini-batch et Batch Gradient Descent dans l’espace des paramètres. Le Batch est lisse, le Mini-batch est plus erratique, et le SGD est le plus bruité.

Interprétation de la figure (page 11):

Support Vector Machines (SVM)

Les Support Vector Machines (SVM) sont une autre classe de classifieurs linéaires (et non linéaires via les noyaux) très puissants. Contrairement au Perceptron qui vise à corriger les erreurs, les SVM cherchent à trouver la "meilleure" frontière de décision en maximisant la marge entre les classes.

Idée Principale : Maximiser la Marge

L’idée fondamentale des SVM est de construire un hyperplan qui sépare les classes avec la plus grande marge possible. La marge est la distance minimale entre l’hyperplan de séparation et les exemples les plus proches de chaque classe. Ces exemples les plus proches sont appelés les vecteurs supports.

Illustration d’un SVM avec un hyperplan séparateur et les vecteurs supports. La marge est la distance entre les deux hyperplans parallèles à la frontière de décision.

Illustration d’un SVM avec un hyperplan séparateur et les vecteurs supports. La marge est la distance entre les deux hyperplans parallèles à la frontière de décision.

La figure de la page 14 illustre ceci :

Gestion des Données Non-Séparables : La Marge Douce (Soft Margin)

Dans la réalité, les données ne sont pas toujours parfaitement séparables linéairement. Les SVM gèrent cela grâce à la notion de marge douce et aux variables d’écart (ξ\xi).

La fonction de coût d’un SVM inclut un terme de pénalité pour ces variables d’écart, contrôlé par un hyperparamètre CC. Un CC élevé signifie une pénalité forte pour les erreurs, encourageant une marge plus dure ; un CC faible permet plus d’erreurs et une marge plus douce. Les points mal classés sont tous des vecteurs supports (ils influent sur l’hyperplan) et l’algorithme "paie un prix" pour eux via la fonction de coût.

Références

Pour approfondir les concepts abordés dans ce chapitre, les ressources suivantes sont recommandées :