← Tous les articles

Modèles classiques / Mathématiques Prototype

Comprendre la régression linéaire

Une droite, des paramètres, une erreur.
Puis un plan, des vecteurs et le même calcul.

La régression linéaire est probablement l’un des modèles les plus simples du machine learning.

On lui donne des variables en entrée, il produit une valeur numérique en sortie.

Par exemple, on pourrait chercher à prédire le prix d’un appartement à partir de sa surface, ou la consommation électrique d’un bâtiment à partir de sa température.

Mais derrière cette apparente simplicité se cache déjà une grande partie des idées que l’on retrouvera ensuite dans des modèles beaucoup plus complexes :

  • des paramètres
  • des prédictions
  • une erreur
  • une fonction de coût
  • et un problème d’optimisation.

Commençons avec le cas le plus simple possible.

1. Trouver une droite qui représente les données

Imaginons que nous disposions de plusieurs observations reliant une variable xx à une valeur yy.

Par exemple :

  • xx pourrait représenter la surface d’un logement
  • yy, son prix.

Chaque observation devient un point dans le plan.

À première vue, ces points semblent suivre une tendance : lorsque xx augmente, yy a également tendance à augmenter.

Une façon très simple de représenter cette relation consiste à tracer une droite.

y^=ax+b\hat y = \coefOne{a}x+\bias{b}

Ici, y^\hat y représente la valeur prédite par notre modèle.

Dans les formules et les contrôles, la pente est bleue et le biais orange. Ces couleurs suivront les paramètres jusque dans leurs valeurs numériques.

Deux paramètres contrôlent entièrement la droite :

a\coefOne{a}

sa pente, et

b\bias{b}

son décalage vertical.

Modifier a\coefOne{a} change l’inclinaison de la droite.

Modifier b\bias{b} la déplace vers le haut ou vers le bas.

En modifiant les deux paramètres, essayez de placer la droite de manière à ce qu’elle représente au mieux les observations.

EXPÉRIENCE 01 / 08

Construire votre droite

Faites varier la pente et le décalage vertical. Les points restent fixes.

a · penteb · biais
-2-1012-6-30369xy
y^=0.50x−0.50\hat y=\coefOne{0.50}x\bias{-0.50}

Très vite, une difficulté apparaît.

On peut facilement reconnaître une droite manifestement mauvaise.

Mais entre deux droites raisonnables, laquelle est réellement la meilleure ?

Notre intuition visuelle ne suffit plus.

Il nous faut une manière de mesurer l’erreur.

2. Mesurer l’écart entre la prédiction et la réalité

Pour chaque observation ii, notre modèle produit une prédiction :

y^i=axi+b\hat y_i=\coefOne{a}x_i+\bias{b}

La valeur réelle est yiy_i.

La différence entre les deux est appelée le résidu :

ei=yi−y^ie_i = y_i-\hat y_i

Graphiquement, le segment vertical relie le point observé à sa prédiction sur la droite. Le résidu est signé et la longueur du segment vaut ∣ei∣|e_i|.

EXPÉRIENCE 02 / 08

Voir les résidus, puis leur annulation

Sélectionnez une observation. La somme des résidus peut être nulle même pour une mauvaise droite.

a · penteb · biais
-2-1012-6-30369xy
y^=0.50x−0.50\hat y=\coefOne{0.50}x\bias{-0.50}

Observation 1 · valeurs affichées arrondies à 2 décimales

y^=ax+b\hat y=\coefOne{a} x+\bias{b}
y^=0.50×(−2.00)−0.50\hat y=\coefOne{0.50}\times(-2.00)\bias{-0.50}
y^=−1.00−0.50=−1.50\hat y=\coefOne{-1.00}\bias{-0.50}=-1.50
e=y−y^=−1.60−(−1.50)=−0.10e=y-\hat y=-1.60-(-1.50)=-0.10
Somme des résidus
13.50
Prédiction du point sélectionné
-1.50

Lorsque vous modifiez a\coefOne{a} ou b\bias{b}, les résidus évoluent immédiatement.

Une meilleure droite produit généralement des résidus plus petits.

On pourrait donc être tenté d’additionner toutes les erreurs :

∑iei\sum_i e_i

Mais il y a un problème.

Les résidus situés au-dessus de la droite ont un signe, ceux situés en dessous ont le signe opposé.

Ils peuvent donc s’annuler.

Une droite visiblement mauvaise peut parfaitement produire une somme des résidus proche de zéro.

Ce n’est donc pas une bonne mesure de la qualité du modèle.

3. Empêcher les erreurs de s’annuler

Une solution consiste à mettre chaque résidu au carré :

ei2=(yi−y^i)2e_i^2=(y_i-\hat y_i)^2

Tous les carrés sont alors positifs ou nuls.

On peut ensuite calculer leur moyenne :

L(a,b)=1n∑i=1n(yi−(axi+b))2L(\coefOne{a},\bias{b}) = \frac{1}{n} \sum_{i=1}^{n} (y_i-(\coefOne{a}x_i+\bias{b}))^2

Cette quantité est la Mean Squared Error, ou MSE.

Dans la suite, nous l’utiliserons comme fonction de coût (ou loss).

Plus la droite est proche des observations, plus la loss est faible.

Plus elle s’en éloigne, plus la loss augmente.

EXPÉRIENCE 03 / 08

La loss réagit à votre droite

Chaque résidu est mis au carré avant de calculer la moyenne. Une petite somme signée ne suffit pas.

a · penteb · biais
-2-1012-6-30369xy
y^=0.50x−0.50\hat y=\coefOne{0.50}x\bias{-0.50}

Observation 1 · valeurs affichées arrondies à 2 décimales

y^=ax+b\hat y=\coefOne{a} x+\bias{b}
y^=0.50×(−2.00)−0.50\hat y=\coefOne{0.50}\times(-2.00)\bias{-0.50}
y^=−1.00−0.50=−1.50\hat y=\coefOne{-1.00}\bias{-0.50}=-1.50
e=y−y^=−1.60−(−1.50)=−0.10e=y-\hat y=-1.60-(-1.50)=-0.10
e12=(−0.10)2=0.01e_{1}^2=(-0.10)^2=0.01
L=∑iei29=35.459=3.94L=\frac{\sum_i e_i^2}{9}=\frac{35.45}{9}=3.94
Somme des résidus
13.50
MSE · 9 observations
3.94
Prédiction du point sélectionné
-1.50

Essayez volontairement de produire une mauvaise droite.

La valeur augmente.

Rapprochez-la des points.

La valeur diminue.

Nous avons maintenant transformé une idée assez vague, « trouver une bonne droite » en un objectif mathématique précis :

trouver a et b qui minimisent L(a,b)\text{trouver } \coefOne{a} \text{ et } \bias{b} \text{ qui minimisent } L(\coefOne{a},\bias{b})

C’est un changement important.

La régression linéaire n’est plus simplement un problème de géométrie.

Elle devient un problème d’optimisation.

4. Une droite est aussi un point

Il existe une autre manière de regarder exactement le même problème.

Prenons une droite définie par :

a=1.5\coefOne{a}=\coefOne{1.5}

et

b=2\bias{b}=\bias{2}

Ces deux nombres suffisent à identifier entièrement cette droite.

On peut donc représenter notre modèle non plus dans l’espace des données, mais dans un nouvel espace dont les axes sont ses paramètres.

Un axe pour a\coefOne{a}.

Un axe pour b\bias{b}.

La droite précédente devient alors simplement le point :

(a,b)=(1.5,2)(\coefOne{a},\bias{b})=(\coefOne{1.5},\bias{2})

Chaque droite possible correspond à un point différent dans cet espace.

Et pour chacun de ces points, nous pouvons calculer une loss.

Nous obtenons alors une surface :

L(a,b)L(\coefOne{a},\bias{b})
EXPÉRIENCE 04 / 08

Une droite, un point sur la loss

À gauche, une droite. À droite, ses paramètres et leur loss. Les deux vues décrivent le même modèle.

a · penteb · biais
-2-1012-6-30369xy
L (MSE)520abChaque point représente une droiteAxes : ±3 · échelle de loss fixe
y^=0.50x−0.50\hat y=\coefOne{0.50}x\bias{-0.50}
Somme des résidus
13.50
MSE · 9 observations
3.94
Prédiction du point sélectionné
-1.50

Lorsque vous modifiez la droite à gauche, le point se déplace simultanément sur la surface à droite.

Une droite particulièrement mauvaise correspond à une région élevée de la surface.

Une meilleure droite descend vers le fond.

La meilleure droite correspond donc simplement au point le plus bas de cette surface.

Nous venons de relier deux représentations du même problème :

choisir une droite\text{choisir une droite}

et

chercher un minimum dans l’espace des parameˋtres\text{chercher un minimum dans l’espace des paramètres}

Cette idée sera importante plus tard.

Elle ne concerne pas uniquement la régression linéaire.

Une grande partie de l’apprentissage automatique consiste précisément à chercher de bons paramètres dans des espaces beaucoup plus grands.

5. Une seule variable n’est pas toujours suffisante

Jusqu’ici, notre modèle ne recevait qu’une seule variable :

xx

Mais dans un problème réel, une prédiction dépend rarement d’une seule information.

Pour estimer le prix d’un appartement, on pourrait par exemple utiliser :

x1=surfacex_1 = \text{surface}

et

x2=distance au centre-villex_2 = \text{distance au centre-ville}

Notre modèle pourrait alors devenir :

y^=w1x1+w2x2+b\hat y=\coefOne{w_1}x_1+\coefTwo{w_2}x_2+\bias{b}

La pente a\coefOne{a} se sépare désormais en

w1\coefOne{w_1} : c’est le poids de la première variable et il modifie la pente sur l'axe x1x_1.

Et w2\coefTwo{w_2} qui corresponds au poids de la deuxième variable et qui va lui aussi gérer une pente mais cette fois ci sur l'axe x2x_2.

Nous avons maintenant deux poids :

w1\coefOne{w_1} et w2 \coefTwo{w_2}

Chacun contrôle l’importance d’une variable dans la prédiction.

6. De la droite au plan

Avec une seule variable xx, notre modèle pouvait être représenté par une droite.

Avec deux variables x1x_1 et x2x_2, chaque observation possède désormais trois coordonnées :

(x1,x2,y)(x_1,x_2,y)

Nos données vivent donc dans un espace en trois dimensions.

Et notre modèle :

y^=w1x1+w2x2+b\hat y=\coefOne{w_1}x_1+\coefTwo{w_2}x_2+\bias{b}

ne forme plus une droite.

Il forme un plan. Les observations ci-dessous utilisent des valeurs illustratives sans unité, pour garder les calculs lisibles.

Modifier w1\coefOne{w_1} incline le plan dans une direction.

Modifier w2\coefTwo{w_2} l’incline dans l’autre.

Modifier b\bias{b} déplace le plan selon l’axe des sorties yy, sans changer son inclinaison.

EXPÉRIENCE 05 / 08

Incliner un plan, déplacer son biais

Les deux poids inclinent le plan ; le biais le déplace selon y. a est devenu w₁, toujours en bleu.

w₁ · poids 1w₂ · poids 2b · biais
x₁x₂yVue projetée · résidus selon y
y^=0.40x1+0.40x2+0.00\hat y=\coefOne{0.40}x_1+\coefTwo{0.40}x_2+\bias{0.00}
Somme des résidus
9.00
MSE · 9 observations
4.21
Prédiction du point sélectionné
-1.20

La représentation change, mais le principe reste exactement le même.

Pour chaque observation :

(xi1,xi2)(x_{i1},x_{i2})

le modèle calcule :

y^i=w1xi1+w2xi2+b\hat y_i = \coefOne{w_1}x_{i1} + \coefTwo{w_2}x_{i2} + \bias{b}

Puis nous comparons cette prédiction à la valeur réelle yiy_i.

7. L’espace des paramètres existe toujours

Nous pouvons reprendre exactement le raisonnement utilisé avec a\coefOne{a} et b\bias{b}.

Notre modèle possède maintenant 3 paramètres :

w1,w2,b\coefOne{w_1},\quad \coefTwo{w_2},\quad \bias{b}

Chaque choix de (w1,w2,b)(\coefOne{w_1},\coefTwo{w_2}, \bias{b}) produit un plan différent.

Et chacun de ces plans produit une loss différente.

On peut donc définir :

L(w1,w2,b)=1n∑i(yi−y^i)2L(\coefOne{w_1},\coefTwo{w_2},\bias{b}) = \frac1n \sum_i (y_i-\hat y_i)^2
EXPÉRIENCE 06 / 08

Un plan, un point sur une coupe de loss

La surface montre L(w₁, w₂ ; b fixé). Modifier b recalcule toute la surface, sans changer ses échelles.

w₁ · poids 1w₂ · poids 2b · biais
x₁x₂yVue projetée · résidus selon y
L (MSE)670w₁w₂Coupe à b = 0.00Axes : ±3 · échelle de loss fixe
y^=0.40x1+0.40x2+0.00\hat y=\coefOne{0.40}x_1+\coefTwo{0.40}x_2+\bias{0.00}
Somme des résidus
9.00
MSE · 9 observations
4.21
Prédiction du point sélectionné
-1.20

Lorsque les poids changent, le plan se déforme.

Simultanément, le point représentant (w1,w2)(\coefOne{w_1},\coefTwo{w_2}) se déplace sur une coupe de la loss : L(w1,w2;b fixeˊ)L(\coefOne{w_1},\coefTwo{w_2}; \bias{b}\text{ fixé}). Modifier b\bias{b} change toute cette surface. Trois paramètres plus la loss demanderaient quatre dimensions : cette coupe nous permet de regarder deux paramètres à la fois.

Nous sommes toujours confrontés au même problème :

trouver les poids et le biais qui rendent la loss minimale\text{trouver les poids et le biais qui rendent la loss minimale}

La difficulté ne dépend donc pas vraiment du fait que notre modèle ressemble à une droite ou à un plan.

Elle dépend des paramètres que nous devons choisir.

8. Regarder à l’intérieur du calcul

Jusqu’ici, nous avons écrit :

y^=w1x1+w2x2+b\hat y=\coefOne{w_1}x_1+\coefTwo{w_2}x_2+\bias{b}

Mais on peut également représenter les mêmes valeurs sous forme de vecteurs.

Prenons une observation :

x=[x1x2]x= \begin{bmatrix} x_1\\ x_2 \end{bmatrix}

et les poids du modèle :

w=[w1w2]w= \begin{bmatrix} \coefOne{w_1}\\ \coefTwo{w_2} \end{bmatrix}

La prédiction est simplement la somme des produits correspondants :

y^=x1w1+x2w2+b\hat y = x_1\coefOne{w_1}+x_2\coefTwo{w_2}+\bias{b}

La somme des produits x1w1+x2w2x_1\coefOne{w_1}+x_2\coefTwo{w_2} porte un nom : le produit scalaire. Nous lui ajoutons le biais pour obtenir la prédiction.

On peut l’écrire de manière plus compacte :

y^=x⊤w+b\hat y=x^\top w+\bias{b}

Cette notation peut sembler plus abstraite au premier abord.

Mais elle ne fait rien de nouveau.

Elle regroupe le produit scalaire et le biais :

x1w1+x2w2+bx_1\coefOne{w_1}+x_2\coefTwo{w_2}+\bias{b}

en une seule opération.

EXPÉRIENCE 07 / 08

Regarder chaque terme du calcul

Choisissez un point, puis suivez les valeurs, les produits et leur somme. Le biais est ajouté à la fin.

w₁ · poids 1w₂ · poids 2b · biais
x₁x₂yVue projetée · résidus selon y
y^=0.40x1+0.40x2+0.00\hat y=\coefOne{0.40}\inputOne{x_1}+\coefTwo{0.40}\inputTwo{x_2}+\bias{0.00}

Observation 1 · valeurs affichées arrondies à 2 décimales

x₁x₂
x=[−1.50−1.50]w=[0.400.40]b=0.00x=\begin{bmatrix}\inputOne{-1.50}\\\inputTwo{-1.50}\end{bmatrix}\qquad w=\begin{bmatrix}\coefOne{0.40}\\\coefTwo{0.40}\end{bmatrix}\qquad \bias{b}=\bias{0.00}
y^=w1x1+w2x2+b\hat y=\coefOne{w_1} \inputOne{x_1}+\coefTwo{w_2}\inputTwo{x_2}+\bias{b}
y^=0.40×(−1.50)+0.40×(−1.50)+0.00\hat y=\coefOne{0.40}\times\inputOne{(-1.50)}+\coefTwo{0.40}\times\inputTwo{(-1.50)}+\bias{0.00}
y^=−0.60−0.60+0.00=−1.20\hat y=\coefOne{-0.60}\coefTwo{-0.60}+\bias{0.00}=-1.20
e=y−y^=0.70−(−1.20)=1.90e=y-\hat y=0.70-(-1.20)=1.90
Somme des résidus
9.00
MSE · 9 observations
4.21
Prédiction du point sélectionné
-1.20

La notation vectorielle n’est donc pas une nouvelle idée.

C’est simplement une manière plus pratique d’écrire le même calcul.

9. Pourquoi utiliser des vecteurs ?

Avec seulement deux variables, écrire :

w1x1+w2x2\coefOne{w_1}x_1+\coefTwo{w_2}x_2

reste parfaitement lisible.

Mais imaginons maintenant que nous utilisions cent variables.

Nous aurions :

y^=w1x1+w2x2+⋯+w100x100+b\hat y = \coefOne{w_1}x_1 + \coefTwo{w_2}x_2 + \cdots + w_{100}x_{100}+\bias{b}

La logique n’a pourtant pas changé.

Nous faisons toujours la même chose :

  • chaque variable est multipliée par un poids ;
  • toutes les contributions sont additionnées ;
  • le biais est ajouté à cette somme.

Avec :

x=[x1x2⋮xd]x= \begin{bmatrix} x_1\\ x_2\\ \vdots\\ x_d \end{bmatrix}

et :

w=[w1w2⋮wd]w= \begin{bmatrix} \coefOne{w_1}\\ \coefTwo{w_2}\\ \vdots\\ w_d \end{bmatrix}

nous pouvons écrire tout cela simplement :

y^=x⊤w+b\hat y=x^\top w+\bias{b}

Que d=2d=2, d=100d=100 ou d=10 000d=10\,000, l’équation reste la même.

C’est précisément l’intérêt de cette notation.

10. Prédire plusieurs observations d’un seul coup

Pour l’instant, xx représentait une seule observation.

Mais notre dataset en contient plusieurs.

Prenons trois observations comportant chacune deux variables :

x(1)=[x11x12]x^{(1)} = \begin{bmatrix} x_{11}\\ x_{12} \end{bmatrix} x(2)=[x21x22]x^{(2)} = \begin{bmatrix} x_{21}\\ x_{22} \end{bmatrix} x(3)=[x31x32]x^{(3)} = \begin{bmatrix} x_{31}\\ x_{32} \end{bmatrix}

Nous pouvons les empiler dans une matrice :

X=[x11x12x21x22x31x32]X= \begin{bmatrix} x_{11} & x_{12}\\ x_{21} & x_{22}\\ x_{31} & x_{32} \end{bmatrix}

Chaque ligne correspond à une observation.

Chaque colonne correspond à une variable.

Nos poids restent :

w=[w1w2]w= \begin{bmatrix} \coefOne{w_1}\\ \coefTwo{w_2} \end{bmatrix}

Nous pouvons maintenant calculer toutes les prédictions en une seule opération :

y^=Xw+b13\hat y=Xw+\bias{b}\mathbf1_3

Le vecteur 13\mathbf1_3 contient trois fois la valeur 1 : multiplier ce vecteur par b\bias{b} ajoute le même biais à chacune des trois prédictions.

11. Déplier la multiplication

L’écriture :

Xw+b13Xw+\bias{b}\mathbf1_3

semble extrêmement compacte.

Déplions-la.

[x11x12x21x22x31x32][w1w2]+b[111]=[x11w1+x12w2+bx21w1+x22w2+bx31w1+x32w2+b]\begin{bmatrix} x_{11} & x_{12}\\ x_{21} & x_{22}\\ x_{31} & x_{32} \end{bmatrix} \begin{bmatrix} \coefOne{w_1}\\ \coefTwo{w_2} \end{bmatrix}+\bias{b}\begin{bmatrix}1\\1\\1\end{bmatrix} = \begin{bmatrix} x_{11}\coefOne{w_1}+x_{12}\coefTwo{w_2}+\bias{b}\\ x_{21}\coefOne{w_1}+x_{22}\coefTwo{w_2}+\bias{b}\\ x_{31}\coefOne{w_1}+x_{32}\coefTwo{w_2}+\bias{b} \end{bmatrix}

La première ligne produit :

y^1=x11w1+x12w2+b\hat y_1=x_{11}\coefOne{w_1}+x_{12}\coefTwo{w_2}+\bias{b}

La deuxième :

y^2=x21w1+x22w2+b\hat y_2=x_{21}\coefOne{w_1}+x_{22}\coefTwo{w_2}+\bias{b}

Et ainsi de suite.

Autrement dit, la multiplication matricielle n’est ici qu’un moyen de dire :

applique le même modèle à toutes les observations.

EXPÉRIENCE 08 / 08

Déplier la multiplication matricielle

Chaque ligne de X produit une prédiction. Les trois observations viennent du même nuage que les scènes précédentes.

w₁ · poids 1w₂ · poids 2b · biais
x₁x₂yVue projetée · résidus selon y
y^=0.40x1+0.40x2+0.00\hat y=\coefOne{0.40}\inputOne{x_1}+\coefTwo{0.40}\inputTwo{x_2}+\bias{0.00}
y^=Xw+b13\hat y=Xw+\bias{b}\mathbf1_3
X
[0.400.40]⏟w+0.00[111]=[−1.200.600.60]⏟y^\underbrace{\begin{bmatrix}\coefOne{0.40}\\\coefTwo{0.40}\end{bmatrix}}_w+\bias{0.00}\begin{bmatrix}1\\1\\1\end{bmatrix}=\underbrace{\begin{bmatrix}\textcolor{#C0FFEE}{-1.20}\\0.60\\0.60\end{bmatrix}}_{\hat y}

Observation 1 · valeurs affichées arrondies à 2 décimales

x₁x₂
x=[−1.50−1.50]w=[0.400.40]b=0.00x=\begin{bmatrix}\inputOne{-1.50}\\\inputTwo{-1.50}\end{bmatrix}\qquad w=\begin{bmatrix}\coefOne{0.40}\\\coefTwo{0.40}\end{bmatrix}\qquad \bias{b}=\bias{0.00}
y^=w1x1+w2x2+b\hat y=\coefOne{w_1} \inputOne{x_1}+\coefTwo{w_2}\inputTwo{x_2}+\bias{b}
y^=0.40×(−1.50)+0.40×(−1.50)+0.00\hat y=\coefOne{0.40}\times\inputOne{(-1.50)}+\coefTwo{0.40}\times\inputTwo{(-1.50)}+\bias{0.00}
y^=−0.60−0.60+0.00=−1.20\hat y=\coefOne{-0.60}\coefTwo{-0.60}+\bias{0.00}=-1.20
e=y−y^=0.70−(−1.20)=1.90e=y-\hat y=0.70-(-1.20)=1.90
Somme des résidus
3.90
MSE · 3 observations
3.37
Prédiction du point sélectionné
-1.20

C’est exactement le même modèle que tout à l’heure.

Nous avons seulement changé notre manière de l’écrire.

12. Généraliser à nn observations et dd variables

Nous pouvons maintenant oublier le cas particulier de deux variables.

Supposons que nous ayons :

  • nn observations
  • dd variables par observation.

Notre matrice de données possède alors la forme :

X∈Rn×dX\in\mathbb{R}^{n\times d}

Le vecteur des poids :

w∈Rdw\in\mathbb{R}^{d}

Et les prédictions :

y^=Xw+b1n\hat y=Xw+\bias{b}\mathbf1_n

où 1n\mathbf1_n contient nn fois la valeur 1, et avec :

y^∈Rn\hat y\in\mathbb{R}^{n}

La géométrie devient impossible à représenter directement lorsque dd augmente.

Mais le calcul ne change pas.

Pour chaque observation :

y^i=xi⊤w+b\hat y_i=x_i^\top w+\bias{b}

puis pour toutes les observations à la fois :

y^=Xw+b1n\hat y=Xw+\bias{b}\mathbf1_n

La régression linéaire en grande dimension repose donc exactement sur la même idée que notre première droite.

Nous avons simplement remplacé deux paramètres visibles par un vecteur pouvant en contenir beaucoup plus.

13. Et la loss dans tout ça ?

Notre modèle produit désormais un vecteur de prédictions :

y^=Xw+b1n\hat y=Xw+\bias{b}\mathbf1_n

Nous possédons également les vraies valeurs :

yy

La différence :

y−y^y-\hat y

contient tous les résidus du modèle.

Notre MSE devient donc :

L(w,b)=1n∑i=1n(yi−y^i)2L(w,\bias{b}) = \frac1n \sum_{i=1}^{n} (y_i-\hat y_i)^2

ou, sous forme vectorielle :

L(w,b)=1n∥y−Xw−b1n∥2L(w,\bias{b}) = \frac1n \|y-Xw-\bias{b}\mathbf1_n\|^2

Encore une fois, la notation semble beaucoup plus compacte.

Mais elle décrit exactement ce que nous faisions déjà avec notre première droite :

  1. produire une prédiction ;
  2. la comparer à la vraie valeur ;
  3. mesurer l’erreur ;
  4. chercher les paramètres qui rendent cette erreur aussi faible que possible.

La seule différence est que notre espace de paramètres peut maintenant comporter beaucoup plus de dimensions.

Avec deux paramètres, nous pouvions visualiser la surface de loss.

Avec cent paramètres, cette surface existe toujours.

Nous ne pouvons simplement plus la dessiner.

14. La régression linéaire est donc un problème d’optimisation

Nous sommes partis d’un problème très simple :

tracer une droite au milieu de quelques points.

Progressivement, cette idée est devenue :

y^=Xw+b1n\hat y=Xw+\bias{b}\mathbf1_n

avec un objectif :

min⁡w,bL(w,b)\min_{w,\bias{b}} L(w,\bias{b})

Le rôle du modèle est de transformer les entrées en prédictions.

Le rôle de la fonction de coût est de mesurer la qualité de ces prédictions.

Il reste alors à choisir les paramètres ww et b\bias{b} qui minimisent cette fonction.

Et c’est précisément ici que commence le problème suivant.

Jusqu’à présent, nous avons pu modifier les poids nous-mêmes avec des sliders.

Mais un modèle de machine learning doit pouvoir les trouver automatiquement.

Comment savoir dans quelle direction modifier chaque poids ?

De combien faut-il le modifier ?

Et maintenant que nous savons quel problème nous voulons résoudre, il reste à voir comment le résoudre automatiquement.