neural-networks.io
neural-networks.io
Démonstration de la règle d'apprentissage
Hypothèses
Cette page démontre la règle d'apprentissage permettant de mettre à jour les poids
d'un réseau de neurones artificiel. Comme la règle de mise à jour des poids est la même
pour chaque perceptron, nous allons nous focaliser sur un seul élément. Dans cette démonstration,
nous supposerons que nous souhaitons mettre les poids à jour en respectant l'algorithm de
descente du gradient.
Fonction de transfert
Considérons le perceptron suivant:

La fonction de transfert est donnée par:
\begin{equation}
y= f(w_1.x_1 + w_2.x_2 + ... + w_N.x_N) = f(\sum\limits_{i=1}^N w_i.x_i)
\label{eq:transfert-function}
\end{equation}
Définissons la somme \( S \):
\begin{equation}
S(w_i,x_i)= \sum\limits_{i=1}^N w_i.x_i
\label{eq:sum}
\end{equation}
Nous pouvons réécrire \(y\) comme une fonction de \( S \) en fusionnant les équations \eqref{eq:sum} et \eqref{eq:transfert-function}:
$$ y(S)= f(\sum\limits_{i=1}^N w_i.x_i)=f(S(w_i,x_i)) $$
Erreur de sortie
Dans les réseaux de neurones artificiels, l'erreur que l'on souhaite minimiser est donnée par:
$$ E=(y'-y)^2 $$
où:
- \(E\) est l'erreur de sortie
- \(y'\) est la sortie souhaitée (de la base d'exemples d'entrainement)
- \(y\) est la sortie réelle (du réseau)
En pratique et pour simplifier la suite des équations, l'erreur est divisée par 2:
$$ E=\frac{1}{2}(y'-y)^2 $$
Descente de gradient
L'algorithme de descente de gradient utilisé pour entraîner le réseau (i.e. mettre à jour les poids) est donné par:
\begin{equation}
w_i'=w_i-\eta.\frac{dE}{dw_i}
\label{eq:gradient-descent}
\end{equation}
où:
- \(w_i\) est la valeur des poids avant mise à jour
- \(w_i'\) est la valeur des poids après mise à jour
- \(\eta\) est le taux d'apprentissage (learning rate)
Dérivée de l'erreur
Dérivons l'erreur:
\begin{equation}
\frac{dE}{dw_i} = \frac{1}{2}\frac{d}{dw_i}(y'-y)^2
\label{eq:error}
\end{equation}
Grace à la
formule de dérivation des fonctions composées
$$ (f \circ g)'=(f' \circ g).g') $$
l'équation \eqref{eq:error} peut être réécrite:
$$ \frac{dE}{dw_i} = \frac{2}{2}(y'-y)\frac{d}{dw_i} (y'-y) = -(y'-y)\frac{dy}{dw_i} $$
Calculons la dérivée de \(y\):
\begin{equation}
\frac{dy}{dw_i} = \frac{df(S(w_i,x_i))}{dw_i}
\label{eq:dy-dwi}
\end{equation}
Une nouvelle fois, nous utilisons la
formule de dérivation des fonctions composées
pour reformuler l'équation \eqref{eq:dy-dwi} :
$$ \frac{df(S)}{dw_i} = \frac{df(S)}{dS}\frac{dS}{dw_i} = x_i\frac{df(S)}{dS} $$
La dérivée de l'erreur devient:
\begin{equation}
\frac{dE}{dw_i} = -x_i(y'-y)\frac{df(S)}{dS}
\label{eq:derror}
\end{equation}
Mise à jour des poids
En fusionnant les équations \eqref{eq:gradient-descent} et \eqref{eq:derror} la formule de mise à jour des poids devient :
$$ w_i'=w_i-\eta.\frac{dE}{dw_i} = w_i + \eta. x_i.(y'-y).\frac{df(S)}{dS} $$
En conclusion :
$$ w_i'= w_i + \eta.x_i.(y'-y).\frac{df(S)}{dS} $$