MIAM (ICM1A-ICM2A), UP1, TD3 : Réseaux
de Neurones
Correction : Version avec exercices corrigés : FinCorrection
Ce TD ne comporte pas de partie ≪ Préparation du TP ≫ car le contexte du TP de réseaux de
neurones est le même que celui de régression.
1 Un réseau de neurones... sans neurones
On cherche à identifier la fonction f : x ∈ Ra 7→ y ∈ Rb sous la forme d’un réseau de neurone sans
couche interne (c’est-à-dire avec seulement une couche d’entrée et une couche de sortie).
Q1 : Écrire f, fonction de x et d’une matrice de poids W comme une composition d’une fonction
sigmoı̈de terme-à-terme gλ et d’une fonction A de x et de W dont on donnera l’expression. Quelle est
la taille de W ?
Correction :
f(x; W ) = gλ (A(x; W ))
!
x
A(x; W ) = W x avec x= (1)
1
W ∈ Mb,(a+1) (R)
: FinCorrection
Soit une base de données comprenant N vecteurs d’entrée et de sortie correspondants {xn }n=1..N
et {yn }n=1..N .
Q2 : Écrire le problème de minimisation d’une fonction-coût φ pondérée par les coefficients dia-
gonaux {mn }n=1..N à résoudre pour identifier les coefficients wij de la matrice W .
Correction :
min φ({xn }n=1..N ; W )
{wij }i=1..b,j=1..a
φ({xn }n=1..N ; W ) = ψ({f(xn ; W )}n=1..N ) (2)
N
1X
ψ({zn }n=1..N ) = mn ∥zn − yn ∥2
2 n=1
: FinCorrection
La minimisation pourra se faire via une méthode de descente de gradient. Ceci demande d’être
capable de calculer le gradient de φ par-rapport à W . Ce gradient peut être écrit formellement comme
suit :
∂φ
G= (3)
∂W
Q3 : Quelle est la nature mathématique de G (scalaire, vecteur, matrice, tenseur d’ordre...) ?
Correction : C’est une matrice :
∂φ
Gij = (4)
∂wij
∂T1
De façon générale, si T1 est un tenseur d’ordre t1 et T2 un tenseur d’ordre t2 , alors est d’ordre
∂T2
t1 + t2 . : FinCorrection
1
Q4 : Calculer les composantes du tenseur G (il s’agit de re-démontrer la formule de rétro-
propagation dans le cas particulier à une seule couche de neurones).
Correction : On note [zn ]p la p-ème composante du vecteur zn . ϕ est fonction des wij via ψ,
qui est fonction de chacune des composantes p de f(xn , W ) pour chacun des n. Il faut donc faire une
somme sur p et n :
∂φ
({xn }n=1..N ; W )
∂wij
N X b
!
1X ∂ψ ∂[f]p
= ({f(xn , W )}n=1..N ) (xn , W )
2 n=1 p=1 ∂[zn ]p ∂wij
N X
b
(5)
∂[A]p
(mn [zn − yn ]p gλ′ (A(xn ; W )) p
X
= (xn ; W ))
n=1 p=1
| {z } ∂wij
∂ψ | {z }
∂[f]p
∂[zn ]p
∂wij
Calcul intermédiaire :
a+1
X ∂wpk a+1
∂[A]p X
(x, W ) = [x]k = δpi δkj [x]k = δpi [x]j
∂wij k=1
∂wij k=1
( (6)
[x]j = [x]j si j ⩽ a
où
[x]a+1 =1
Total :
N X b
∂φ
mn [zn − yn ]p gλ′ (A(xn ; W )) p δpi [xn ]j
X
({xn } ; W ) =
∂wij n=1 p=1
(7)
N
mn [zn − yn ]i gλ′ (A(xn ; W )) j [xn ]j
X
=
n=1
: FinCorrection
Il est donc théoriquement possible d’entraı̂ner ce réseau de neurones en utilisant une méthode de
descente de gradient à l’aide de l’expression du gradient qui vient d’être trouvée. Pourtant, le cas
particulier que l’on est en train d’étudier peut en fait être traité à l’aide d’outils bien plus performants
à condition d’observer une chose.
Q5 : Montrer que le problème d’entraı̂nement de ce réseau de neurones peut se ramener à un
problème similaire de régression affine. On précisera en quel sens ils sont ≪ similaires ≫. En déduire
une méthode d’optimisation plus efficace que la descente de gradient.
Correction : On part de cette équation :
f(x; W ) = gλ (A(x; W )) (8)
On profite que gλ soit une fonction monotone et continue, donc inversible pour 0 < β < 1 :
!
1
ln −1
1 h i [β]p
[gλ (α)]p = ⇐⇒ gλ−1 (β) =− (9)
1 + e−λ[α]p p λ
Le problème de minimisation est :
N
1X
min mn ∥f(xn ; W ) − yn ∥2 (10)
W 2 n=1
2
Que l’on transforme en un problème similaire dans le sens où si le zéro est atteint, c’est au même
point (attention : dans le cas contraire, rien ne prouve que la solution est la même, et elle ne l’est pas
en général) :
N
1X 2
min mn A(xn ; W ) − gλ−1 (yn )
W 2
n=1
N
1X 2
min mn W xn − gλ−1 (yn ) (11)
W 2
n=1
2
N b a+1
1X h i
wij [xn ]j − gλ−1 (yn )
X X
min mn
wij 2 n=1 i=1 j=1
i
On a affaire à des problèmes découplés sur les différents i, c’est à dire que pour chaque i0 , les wi0 j
n’impactent pas les autres termes de la somme sur i. On résout donc b problèmes de minimisation du
type suivant :
2
N a
1X h i
wij [xn ]j − gλ−1 (yn )
X
∀i = 1..b, min mn (12)
wij 2 i
n=1 j=1
On s’est ramené au cas de la régression linéaire. On résout les problèmes de minimisation à incon-
nues vectorielles suivants :
1
∀i = 1..b, min (Xwi − bi )T M (Xwi − bi ) (13)
wi ∈Ra+1 2
Avec :
X matrice, Xnj = [xn ]j wi vecteur, [wi ]j = wij
h i (14)
M matrice diagonale, Mnn = mn bi vecteur, [bi ]n = gλ−1 (yn )
i
Ces problèmes se résolvent en inversant les systèmes linéaires de même membre de gauche suivants :
X T M X wi = X T M bi (15)
: FinCorrection
2 La dérivation automatique
Comme on l’a vu en cours dans le cadre des réseaux de neurones informés par la physique, on peut
parfois avoir besoin de dériver les données de sortie d’un réseau de neurones par rapport à ses données
d’entrée. Ce peut être notamment nécessaire pour interpréter physiquement les résultats obtenus.
On rappelle les notations du cours :
z = f(x, {wsij }) = gS (AS (x, {wsij }))
∀s = 2..S, αs = As (x, {wsij }) = Ws Bs−1 (x, {wsij })
(16)
α1 = A1 (x, {wsij }) = W1 x
∀s = 1..S − 1, βs = Bs (x, {wsij }) = gs (As (x, {wsij }))
Q1 : Donner les expressions récursives permettant de calculer la dérivée d’une composante de f
par-rapport à une composante de x.
3
Correction :
∂ [f]p ∂ [AS ]p
(x, {wsij }) = gS′ (AS (x, {wsij }))
p (x, {wsij })
∂ [x]q ∂ [x]q
∂ [As ]p us
X ∂ [Bs−1 ]r
∀s = 2..S, (x, {wsij }) = [Ws ]pr (x, {wsij })
∂ [x]q r=1
∂ [x]q
(17)
∂ [Bs ]p ∂ [As ]p
(x, {wsij }) = gs′ (As (x, {wsij })) p
∀s = 1..S − 1, (x, {wsij })
∂ [x]q ∂ [x]q
∂ [A1 ]p
(x, {wsij }) = [W1 ]pq
∂ [x]q
: FinCorrection
On suppose qu’à la suite de l’évaluation du réseau de neurones en un point x, on a calculé tous les
vecteurs {αs }s=1..S et {βs }s=1..S .
Q2 : Donner un algorithme de propagation directe (boucle de s = 1 à S) permettant de calculer la
matrice Jacobienne de f. Estimer la complexité de cet algorithme en supposant que tous les {us }s=1..S
sont du même ordre de grandeur, noté u.
Correction : La matrice Jacobienne J(x, {wsij }) est telle que :
∂ [f]p
Jpq (x, {wsij }) = (x, {wsij }) (18)
∂ [x]q
Algorithm 1: Calcul de la Jacobienne par propagation directe
H ← W1
for s = 2..S do ′
∀p = 1..us−1 , ∀q = 1..u0 , Gpq ← gs−1 (αs ) p Hpq (produit sur chaque ligne de H)
H ← Ws G
end
∀p = 1..uS , ∀q = 1..u0 , Gpq ← [gS′ (αS )]p Hpq
J(x, {wsij }) = G
La complexité de cet algorithme est gouvernée par les produits entre matrices : O S × u3 . :
FinCorrection
Q3 : Donner un algorithme de rétro-propagation (boucle de s = S à 1) permettant de calculer
cette Jacobienne. Lequel des deux algorithmes est-il le ≪ meilleur ≫ ? (en un sens à définir)
Correction : Il s’agit de faire les opérations dans l’autre sens.
Algorithm 2: Calcul de la Jacobienne par rétro-propagation
h ← gS′ (αS )
for s = S..2 do
∀p = 1..us , Gpq ← hp [Ws ]pq (produit sur chaque ligne de W )
h ← G gs−1′ (αs−1 ) (produit matrice-vecteur)
end
∀p = 1..u1 , Gpq ← hp [W1 ]pq
J(x, {wsij }) = G
La complexité de cet algorithme est gouvernée à égalité par les produits matrice-vecteur et les
2
produits sur chaque ligne de matrices. Elle vaut O S × u . C’est en ce sens que cet algorithme est
4
préférable. : FinCorrection