Comment trouver \(h^*\)

Il faut trouver \(h_{\mathbf{w}}^*\), le modèle avec les meilleurs valeurs pour les paramètres internes \(\mathbf{w}\). Ceci implique trouver le \(\mathbf{w}\) qui donne le meilleur hyperplan frontière. C’est un problème d’optimisation mathématique.

L’optimisation est formulée à l’aide d’une fonction de perte ou de coût.

Soit la fonction de perte suivante : \[L(w_0, w_1) = w_0^2 + w_1^2 + 20\]

Optimiser une perte implique trouver le point \((w_0, w_1)\) qui donne le minimum globale de la fonction de perte. Dans ce cas, le minimum est \(20\) lorsque \((w_0, w_1) = (0,0)\).

Soit la fonction de perte suivante : \[ L(w_0, w_1 |x_0, x_1) = \exp\left(-{(w_0 - x_0)^2 + (w_1 - x_1)^2}\right) + \exp\left(-{(w_0 - x_0)^2 + (w_1 - x_1)^2}\right) \]

Trouver le minimum globale est moins évident. Essayons d’identifier une méthode analytique de trouver le minimum d’une fonction.

Trouver le minimum d’une fonction

Une technique pour trouver le minimum d’une fonction est de trouver le point où sa dérivée \(=0\).

Par contre, cela ne trouve pas nécessairement un minimum. Il y a des fonctions avec plusieurs points où la dérivée est 0. Les minimums et les maximums ont des dérivées \(= 0\). Il y a aussi plus qu’un minimum.

La dérivée/gradient donne la direction et une quantité vers un maximum 🪄

Soit \(L(y_i,\ h_{\mathbf{w}}(\mathbf{x_i}))\) la perte selon la vraie étiquette \(y_i\) d’un exemple \(\mathbf{x_i}\) et la prédiction du modèle avec les paramètres internes \(\mathbf{w}\) pour \(\mathbf{x_i}\) .

Pour chaque \(\mathbf{x}_i\), \(L\) peut être évaluée sur un sous-ensemble de tous les \(\mathbf{w}\) possibles. Chaque \(\mathbf{x_i}\) peut donner une surface de pertes différentes pour les mêmes \(\mathbf{w}\), selon la fonction de perte. Habituellement, nous cherchons à optimiser la perte moyenne, donc trouver le minimum dans la surface de perte moyenne de chaque surface associée à \(\mathbf{x_i}\).

La fonction de coût moyenne selons les paramètres \(\mathbf{w}\) est souvent écrit \(J(\mathbf{w})\) ou \(J(\mathbf{\theta})\).

Optimisation par descente du gradient

Si nous prenons la négation du gradient, nous obtenons une direction et quantité vers un minimum. Nous voulons descendre sur la surface en suivant les gradients. Plus que la norme du gradient est gros, plus que le pas dans la direction est grande. Ceci rend l’optimisation (la promenade sur la surface de perte) sensible à la norme des gradients.

Par contre, nous ne voulons pas normaliser le gradient. Intuitivement, il est sensé qu’une « direction plus à pique vers le minimum » aie une pente/gradient plus prononcée et nous amène plus rapidement à destination. Si le gradient à un point sur la surface est presque plat, nous ne voulons pas prendre un pas aussi gros.

Idéalement, nos normes ne sont pas tous \(1\), mais tout de même dans la même ordre de grandeur. Ceci peut être encouragé en normalisant nos caractéristiques, comme vu dans le cas du KNN.

En plus, nous observons que commencer avec des plus grandes norme et finir avec des plus petites aide l’optimisation. Nous espérons qu’un gros pas au début nous mène dans la région du minimum globale (ou d’un bon minimum local) et après nous convergons vers le minimum en limitant les oscillations.

Soit \(\alpha\) le taux d’apprentissage qui scale le gradient de la fonction de coût \(∇J(\mathbf{w})\). Les paramètres du modèle sont mise-à-jour comme suit :

\[\mathbf{w} \leftarrow \mathbf{w} + -\alpha∇J(\mathbf{w})\]

\(\alpha\) est souvent initialisé à \(0.1\) et décroît à chaque époque. L’image suivante montre l’effet de initialiser \(\alpha\) a des valeurs différentes. Notez le nombre d’époques nécessaires pour converger.

Vidéo 3B1B à propos de la descente de gradient

https://www.youtube.com/watch?v=IHZwWFHWa-w