• 12 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 29/01/2024

Appréhendez l'apprentissage des réseaux de neurones

Fonction de transfert

Par souci de cohérence, les mêmes notations ont été conservées à travers les différentes parties. Ainsi, les entrées d'un réseau sont encore notées $\(X_1,\ldots,X_p\)$ comme les variables explicatives d'un modèle, tandis que les poids des entrées sont des paramètres $\(\boldsymbol{\alpha}, \boldsymbol{\beta}\)$ à estimer lors de la procédure d'apprentissage, et que la sortie est la variable $\(Y\)$ à expliquer ou cible du modèle.

Un perceptron multicouche réalise donc une transformation des variables d'entrée :

  $\(\quad Y=f(X_1,\ldots,X_p ; \boldsymbol{\alpha})\)$

$\(\boldsymbol{\alpha}\)$ est le vecteur contenant chacun des paramètres $\(\alpha_{jk\ell}\)$ de la $\(j^{ème}\)$  entrée du $\(k^{ème}\)$ neurone de la $\(l^{ème}\)$ couche ; la couche d'entrée ( $\(\ell=0\)$ ) n'est pas paramétrée, elle ne fait que distribuer les entrées sur tous les neurones de la couche suivante.

Un théorème dit d'approximation universelle montre que cette structure élémentaire à une seule couche cachée  est suffisante pour prendre en compte les problèmes classiques de modélisation ou apprentissage statistique. En effet, toute fonction régulière peut être approchée uniformément avec une précision arbitraire et dans un domaine fini de l'espace de ses variables, par un réseau de neurones comportant une couche de neurones cachés en nombre fini possédant tous la même fonction d'activation, et un neurone de sortie linéaire.

En régression ( $\(Y\)$ quantitative), la dernière couche est constituée d'un seul neurone muni de la fonction d'activation identité, tandis que les autres neurones (couche cachée) sont munis de la fonction sigmoïde. En classification binaire, le neurone de sortie est muni également de la fonction sigmoïde tandis que dans le cas d'une discrimination à $\(m\)$ classes ( $\(Y\)$ qualitative), ce sont $\(m\)$ neurones avec fonction sigmoïde, un par classe, qui sont considérés en sortie.

Ainsi, en régression avec un perceptron à une couche cachée de $\(q\)$ neurones et un neurone de sortie, cette fonction s'écrit : 

$\(\quad y=f(\boldsymbol{x};\boldsymbol{\alpha, \beta}) \quad = \quad \beta_0+\boldsymbol{\beta}'\boldsymbol{z}\)$

  avec $\(\quad z_k \quad = \quad g(\alpha_{k0}+\boldsymbol{\alpha_k}'\boldsymbol{x}); k=1,\ldots,q.\)$

Apprentissage

Supposons que l'on dispose d'une base d'apprentissage de taille $\(n\)$ d'observation  $\((x_i^1,\ldots,x_i^p ; y_i)\)$ des variables explicatives $\(X^1,\ldots,X^p\)$ et de la variable à prévoir $\(Y\)$ . Considérons le cas le plus simple de la régression avec un réseau constitué d'un neurone de sortie linéaire et d'une couche à $\(q\)$ neurones, dont les paramètres sont optimisés par moindres carrés. Ceci se généralise à toute fonction perte dérivable, et donc à la discrimination à $\(m\)$ classes.

L'apprentissage est l'estimation des paramètres $\(\boldsymbol{\alpha}_{j=0,p;k=1,q}\)$ et $\(\boldsymbol{\beta_{k=0,q}}\)$ par minimisation de la fonction perte quadratique (ou d'une fonction d'entropie en classification) :

$\(\quad Q(\boldsymbol{\alpha, \beta}) =\sum_{i=1}^n Q_i=\sum_{i=1}^n\left[y_i-f(\boldsymbol{x} ; \boldsymbol{\alpha, \beta})\right]^2\)$

Différents algorithmes d'optimisation sont proposés, ils sont généralement basés sur une évaluation du gradient par rétropropagation.

Rétropropagation du gradient

Il s'agit donc d'évaluer la dérivée de la fonction coût en une observation et par rapport aux différents paramètres.
Soit $\(z_{ki}=g(\alpha_{k0}+\boldsymbol{\alpha_k}'\boldsymbol{x}_i)\)$ et $\(\boldsymbol{z}_i=\{z_{1i},\ldots,z_{qi}\}\)$ .

Les dérivées partielles de la fonction perte quadratique s'écrivent :

$\(\quad \frac{\partial Q_i}{\partial \beta_k} = -2(y_i-\phi(x_i))(\boldsymbol{\beta}'\boldsymbol{z}_i)z_{ki} = \delta_iz_{ki}\)$

$\(\quad \frac{\partial Q_i}{\partial \alpha_{kj}} = - 2(y_i-\phi(x_i))(\boldsymbol{\beta}'\boldsymbol{z}_i)\beta_k g'(\boldsymbol{\alpha}_k'\boldsymbol{x}_i)x_{ip} = s_{ki}x_{ip}.\)$

 Les termes $\(\delta_i\)$ et $\(s_{ki}\)$ sont respectivement les termes d'erreur du modèle courant à la sortie et sur chaque neurone caché. Ces termes d'erreur vérifient les équations dites de rétropropagation :

  $\(\quad s_{ki}=g'(\boldsymbol{\alpha}_k'\boldsymbol{x}_i)\beta_k\delta_i\)$

dont les termes sont évalués en deux passes. Une passe avant, avec les valeurs courantes des poids : l'application des différentes entrées $\(\boldsymbol{x}_i\)$ au réseau permet de déterminer les valeurs ajustées $\(\widehat{f}(\boldsymbol{x}_i)\)$ . La passe retour permet ensuite de déterminer les $\(\delta_i\)$ qui sont rétropropagés afin de calculer les $\(s_{ki}\)$ , et ainsi obtenir les évaluations des gradients.

Algorithmes d'optimisation

Sachant évaluer les gradients, différents algorithmes, plus ou moins sophistiqués, sont implémentés. Le plus élémentaire est une utilisation itérative du gradient : en tout point de l'espace des paramètres, le vecteur gradient de $\(Q\)$ pointe dans la direction de l'erreur croissante. Pour faire décroître $\(Q\)$ , il suffit donc de se déplacer en sens contraire. Il s'agit d'un algorithme itératif modifiant les poids de chaque neurone selon :

 $\(\quad \beta_k^{(r+1)}=\beta_k^{(r)}-\tau\sum_{i=1}^n\frac{\partial Q_i}{\partial \beta_k^{(r)}}\)$

$\(\quad \alpha_{kp}^{(r+1)}=\alpha_{kp}^{(r)}-\tau\sum_{i=1}^n\frac{\partial Q_i}{\partial \alpha_{kp}^{(r)}}.\)$

Algorithme de rétropropagation élémentaire du gradient :

  •  $\(\tt Initialisation\)$ des poids $\(b_{jk\ell}\\)$ par tirage aléatoire selon une loi uniforme sur $\([0, 1]\)$

  • Normaliser dans $\([0,1]\)$ les données d'apprentissage.

  • Tant que $\(Q <\)$ errmax ou niter $\(<\)$ itermax :

    • ranger la base d'apprentissage dans un nouvel ordre aléatoire ;

    • pour chaque élément $\(i=1,\ldots,n\)$ de la base :

      • calculer $\(\varepsilon(i)=y_i-f(x_i^1,\ldots,x_i^p ; \boldsymbol(b)(i-1))\)$ en propageant les entrées vers l'avant,

      • l'erreur est rétropropagée dans les différentes couches afin d'affecter à chaque entrée une responsabilité dans l'erreur globale,

      • mise à jour de chaque poids $\(b_{jk\ell}(i)=b_{jk\ell}(i-i)+\Delta b_{jk\ell}(i)\)$

Le coefficient de proportionnalité $\(\tau\)$ est appelé le taux d'apprentissage. Il peut être fixe, à déterminer par l'utilisateur, ou encore varier en cours d'exécution selon certaines heuristiques. Il paraît en effet intuitivement raisonnable que, grand au début pour aller plus vite, ce taux décroisse pour aboutir à un réglage plus fin au fur et à mesure que le système s'approche d'une solution.

Bien d'autres méthodes d'optimisation ont été adaptées à l'apprentissage d'un réseau : méthodes du gradient avec second ordre utilisant une approximation itérative de la matrice hessienne (algorithme BFGS, de Levenberg-Marquardt), ou encore une évaluation implicite de cette matrice par la méthode dite du gradient conjugué. La littérature sur le sujet propose quantités de recettes destinées à améliorer la vitesse de convergence de l'algorithme, ou bien lui éviter de rester collé à une solution locale défavorable. D'autres heuristiques proposent d'ajouter un terme d'inertie afin d'éviter des oscillations de l'algorithme.

D'autres algorithmes encore sont des versions adaptatives, lorsque de nouvelles observations sont proposées une à une au réseau. Dans ce dernier type d'algorithme, des propriétés de dynamique markovienne (processus ergodique convergeant vers la mesure stationnaire) impliquent une  convergence presque sûre : la probabilité d'atteindre une précision fixée a priori tend vers 1 lorsque la taille de l'échantillon d'apprentissage tend vers l'infini.

On pourra se reporter à l'abondante littérature sur le sujet pour obtenir des précisions sur les algorithmes d'apprentissage et leurs nombreuses variantes.

Contrôle de la complexité

Régularisation

Dans les réseaux élémentaires, une option simple pour éviter le surapprentissage consiste à introduire un terme de pénalisation ou régularisation, comme en régression ridge, dans le critère à optimiser. Celui-ci devient alors :  $\(Q(\boldsymbol{\theta}) +\gamma \|\theta\|^2.\)$

Plus la valeur du paramètre $\(\gamma\)$ (decay) est importante et moins les poids des entrées des neurones peuvent prendre des valeurs chaotiques, contribuant ainsi à limiter les risques de surapprentissage.

Choix des paramètres

L'utilisateur doit donc déterminer :

  • les variables d'entrée et la variable de sortie et leur faire subir, comme pour toutes méthodes statistiques, d'éventuelles transformations, normalisations ;

  • l'architecture du réseau : le nombre de couches cachées qui correspond à une aptitude à traiter des problèmes de non-linéarité, le nombre de neurones par couche cachée. Ces deux choix conditionnent directement le nombre de paramètres (de poids) à estimer et donc la complexité du modèle. Ils participent à la recherche d'un bon compromis biais/variance, c'est-à-dire à l'équilibre entre qualité d'apprentissage et qualité de prévision ;

  • trois autres paramètres interviennent également sur ce compromis : le nombre maximum d'itérations, l'erreur maximum tolérée et un terme éventuel de régularisation ridge (decay) ;

  • le taux d'apprentissage ainsi qu'une éventuelle stratégie d'évolution de celui-ci ;

  • la taille des ensembles ou batchs d'observations considérés à chaque itération.

En pratique, tous ces paramètres ne peuvent être réglés simultanément par l'utilisateur. Celui-ci est confronté à des choix concernant principalement le contrôle du surapprentissage : limiter le nombre de neurones ou la durée d'apprentissage, ou encore augmenter le coefficient de pénalisation de la norme des paramètres. Ceci nécessite de déterminer un mode d'estimation de l'erreur : échantillon validation ou test, validation croisée ou bootstrap.

Remarques

Les champs d'application des perceptrons multicouches (PMC) sont très nombreux : discrimination, prévision d'une série temporelle, reconnaissance de forme... Ils sont en général bien explicités dans les documentations des logiciels spécialisés.

Les critiques principales énoncées à l'encontre du PMC concernent les difficultés liées à l'apprentissage (temps de calcul, taille de l'échantillon, localité de l'optimum obtenu) ainsi que son statut de boîte noire. En effet, contrairement à un modèle de discrimination ou un arbre, il est a priori impossible de connaître l'influence effective d'une entrée (une variable) sur le système dès qu'une couche cachée intervient. Néanmoins, des techniques de recherche de sensibilité du système à chacune des entrées permettent de préciser les idées et, éventuellement de simplifier le système en supprimant certaines des entrées.

En revanche, ils possèdent d'indéniables qualités lorsque l'absence de linéarité et/ou le nombre de variables explicatives (images) rendent les modèles statistiques traditionnels inutilisables. Leur flexibilité, par l'introduction de couches spécifiques en apprentissage profond, alliée à une procédure d'apprentissage intégrant la pondération (le choix) des variables comme de leurs interactions, peuvent les rendre très efficaces.

Exemple de certificat de réussite
Exemple de certificat de réussite