Gradient
Gradient
Gradient
1. Dérivées partielles
Pour une fonction de plusieurs variables, il existe une dérivée pour chacune des variables, qu’on appelle
dérivée partielle.
1.1. Définition
Définition.
∂f
Soit f : R2 → R. La dérivée partielle ∂ x (x 0 , y0 ) de f par rapport à la variable x au point (x 0 , y0 ) ∈ R2 est
la dérivée en x 0 de la fonction d’une variable x 7→ f (x, y0 ).
∂f
De même ∂ y (x 0 , y0 ) est la dérivée partielle de f par rapport à la variable y au point (x 0 , y0 ).
Comme d’habitude et sauf mention contraire, nous supposerons que toutes les dérivées partielles existent.
Autrement dit, en revenant à la définition de la dérivée comme une limite :
∂f f (x 0 + h, y0 ) − f (x 0 , y0 ) ∂f f (x 0 , y0 + h) − f (x 0 , y0 )
(x 0 , y0 ) = lim et (x 0 , y0 ) = lim .
∂x h→0 h ∂y h→0 h
∂f
Plus généralement, pour une fonction f : Rn → R de plusieurs variables, ∂ x (x 1 , . . . , x n ) est la dérivée
i
partielle de f par rapport à la variable x i au point (x 1 , . . . , x n ) ∈ Rn . C’est la dérivée en x i de la fonction
d’une variable x i 7→ f (x 1 , . . . , x n ) où l’on considère fixes les variables x j pour j ̸= i.
Notations.
∂f ∂f
(x, y) et (x, y)
∂x ∂y
df
sont les analogues de l’écriture dx (x) pour l’écriture de la dérivée lorsqu’il n’y a qu’une seule variable. Le
symbole « ∂ » se lit « d rond ». Une autre notation est ∂ x f (x, y), ∂ y f (x, y) ou bien encore f x′ (x, y), f y′ (x, y).
GRADIENT 2
Remarque.
Pour une fonction d’une variable f : R → R, on distingue le nombre dérivé f ′ (x 0 ) et la fonction dérivée f ′
définie par x 7→ f ′ (x). Il en est de même avec les dérivées partielles. Pour f : R2 → R :
∂f ∂f
• (x 0 , y0 ) et (x 0 , y0 ) sont des nombres réels.
∂x ∂y
∂f ∂f
• et sont des fonctions de deux variables, par exemple :
∂x ∂y
∂f
: R2 −→ R
∂x
∂f
(x, y) 7−→ (x, y)
∂x
1.2. Calculs
La calcul d’une dérivée partielle n’est pas plus compliqué que le calcul d’une dérivée.
Méthode. Pour calculer une dérivée partielle par rapport à une variable, il suffit de dériver par rapport à
cette variable en considérant les autres variables comme des constantes.
Exemple.
Calculer les dérivées partielles de la fonction f : R2 → R définie par f (x, y) = x 2 e3 y .
Solution.
∂f
Pour calculer la dérivée partielle ∂ x , par rapport à x, on considère que y est une constante et on dérive
x 2 e3 y comme si c’était une fonction de la variable x uniquement :
∂f
(x, y) = 2x e3 y .
∂x
∂f
Pour l’autre dérivée ∂ y, on considère que x est une constante et on dérive x 2 e3 y comme si c’était une
fonction de y :
∂f
(x, y) = 3x 2 e3 y .
∂y
Exemple.
Pour f : R3 → R définie par f (x, y, z) = cos(x + y 2 )e−z on a :
∂f
(x, y, z) = − sin(x + y 2 )e−z ,
∂x
∂f
(x, y, z) = −2 y sin(x + y 2 )e−z ,
∂y
∂f
(x, y, z) = − cos(x + y 2 )e−z .
∂z
Exemple.
Soit f : Rn → R définie par f (x 1 , . . . , x n ) = x 12 + x 22 + · · · + x n2 , alors pour i = 1, . . . , n :
∂f
(x 1 , . . . , x n ) = 2x i .
∂ xi
GRADIENT 3
∂f
Sur la figure de gauche, la dérivée partielle ∂x indique la pente de la tranche parallèle à l’axe (O x) (en
∂f
orange). Sur la figure de droite, la dérivée partielle ∂y indique la pente de la tranche parallèle à l’axe (O y)
(en vert).
y y
x x
y0 x0 y0 x0
v = (1, 0) v = (0, 1)
2. Gradient
Le gradient est un vecteur dont les coordonnées sont les dérivées partielles. Il a de nombreuses applications
géométriques car il donne l’équation des tangences aux courbes et surfaces de niveau. Surtout, il indique la
direction dans laquelle la fonction varie le plus vite.
2.1. Définition
Définition.
Soit f : R2 → R une fonction admettant des dérivées partielles. Le gradient de f en (x 0 , y0 ) ∈ R2 , noté
grad f (x 0 , y0 ), est le vecteur :
∂f
(x , y )
∂ x 0 0
grad f (x 0 , y0 ) = .
∂f
(x 0 , y0 )
∂y
Les physiciens et les anglo-saxons notent souvent ∇ f (x, y) pour grad f (x, y). Le symbole ∇ se lit « nabla ».
Plus généralement, pour f : Rn → R, le gradient de f en (x 1 , . . . , x n ) ∈ Rn est le vecteur :
∂f
(x , . . . , x n )
∂ x1 1
.
grad f (x 1 , . . . , x n ) =
.. .
∂f
(x 1 , . . . , x n )
∂ xn
GRADIENT 4
Exemple.
2x y 3
4
• f (x, y) = x y , grad f (x, y) =
2 3
. Au point (x 0 , y0 ) = (2, 1), grad f (2, 1) = .
3x 2 y 2 12
2x sin( yz)
• f (x, y, z) = x sin( yz), grad f (x, y, z) = x 2 z cos( yz) .
2
x 2 y cos( yz)
2x 1
.
• f (x 1 , . . . , x n ) = x 12 + x 22 + · · · + x n2 , grad f (x 1 , . . . , x n ) = .. .
2x n
Remarque.
Le gradient est un élément de Rn écrit comme un vecteur colonne. Parfois, pour alléger l’écriture, on peut
aussi l’écrire sous la forme d’un vecteur ligne.
grad f (x 0 , y0 )
T
v
(x 0 , y0 )
À chaque point du plan, on peut associer un vecteur gradient. Ce vecteur gradient est orthogonal à la ligne
de niveau passant par ce point. Nous verrons juste après comment savoir s’il est orienté « vers le haut » ou
« vers le bas ».
GRADIENT 5
grad f (x 0 , y0 )
(x 0 , y0 )
a
x
T
b
2 y2
Cette ellipse E est la ligne de niveau f (x, y) = 1 de la fonction f (x, y) = ax 2 + b2
. Les dérivées partielles
en (x 0 , y0 ) sont :
∂f 2x 0 ∂f 2 y0
(x 0 , y0 ) = 2 et (x 0 , y0 ) = 2 .
∂x a ∂y b
L’équation de la tangente à l’ellipse E en ce point est donc :
2x 0 2 y0
2
(x − x 0 ) + 2 ( y − y0 ) = 0.
a b
GRADIENT 6
x 02 y02 x0 y0
Mais comme a2
+ b2
= 1, l’équation de la tangente se simplifie en 2
x + 2 y = 1.
a b
f =b
f =a
grad f (x 0 , y0 )
(x 0 , y0 )
Comme illustration, un skieur de descente, voulant optimiser sa course, choisira en permanence de s’orienter
suivant la plus forte pente, c’est-à-dire dans le sens opposé au gradient.
y
x
∂f ∂f
Remarque : pour v = 1
0 alors Dv f (x 0 , y0 ) = ∂ x (x 0 ,
y0 ) et pour v = 01 alors Dv f (x 0 , y0 ) = ∂ y (x 0 , y0 ).
′
On rappelle que le produit scalaire de deux vecteurs u = xy et v = xy ′ est donné par
〈u | v〉 = x x ′ + y y ′ .
On sait que le produit scalaire se calcule aussi géométriquement par :
〈u | v〉 = ∥u∥ · ∥v∥ · cos(θ )
où θ est l’angle entre u et v.
∥v∥
∥u∥ u
Démonstration. La dérivée suivant le vecteur non nul v au point (x 0 , y0 ) décrit la variation de f autour de
ce point lorsqu’on se déplace dans la direction v. La direction selon laquelle la croissance est la plus grande
est celle du gradient de f . En effet,
Dv f (x 0 , y0 ) = 〈grad f (x 0 , y0 ) | v〉 = ∥ grad f (x 0 , y0 )∥ · ∥v∥ · cos θ
où θ est l’angle entre le vecteur grad f (x 0 , y0 ) et le vecteur v. Le maximum est atteint lorsque l’angle θ = 0,
c’est-à-dire lorsque v pointe dans la même direction que grad f (x 0 , y0 ).
Proposition 4.
Le vecteur gradient grad f (x 0 , y0 , z0 ) est orthogonal à la surface de niveau de f passant au point (x 0 , y0 , z0 ).
Autrement dit, l’équation du plan tangent à la surface de niveau de f en (x 0 , y0 , z0 ) est
∂f ∂f ∂f
(x 0 , y0 , z0 )(x − x 0 ) + (x 0 , y0 , z0 )( y − y0 ) + (x 0 , y0 , z0 )(z − z0 ) = 0
∂x ∂y ∂z
pourvu que le gradient de f en ce point ne soit pas le vecteur nul.
grad f (x 0 , y0 , z0 )
z
(x 0 , y0 , z0 )
niveau f = k
z2
z1
(x 0 , y0 )
(x 0 + h, y0 + k)
x
Exemple.
Valeur approchée de f (1.002, 0.997) si f (x, y) = x 2 y.
∂f ∂f
Solution. Ici (x 0 , y0 ) = (1, 1), h = 2 × 10−3 , k = −3 × 10−3 , ∂ x (x, y) = 2x y, ∂ y (x, y) = x 2 , donc
∂f ∂f
∂ x (x 0 , y0 ) = 2, ∂ y (x 0 , y0 ) = 1. Ainsi
f (1 + h, 1 + k) ≃ f (1, 1) + 2h + k
donc
f (1.002, 0.997) ≃ 1 + 2 × 2 × 10−3 − 3 × 10−3 ≃ 1.001.
Avec une calculatrice, on trouve f (1.002, 0.997) = 1.000992 : l’approximation est bonne.
Exemple.
L’exemple type de minimum est celui de la fonction f (x, y) = x 2 + y 2 en (0, 0). Voici son graphe et ses
lignes de niveau.
GRADIENT 10
Proposition 5.
Soit f : R2 → R. Si f admet un minimum ou un maximum local en (x 0 , y0 ) alors le gradient est le vecteur nul
en ce point, autrement dit :
∂f ∂f
(x 0 , y0 ) = 0 et (x 0 , y0 ) = 0.
∂x ∂y
Démonstration. Prenons le cas d’un minimum local. La fonction d’une variable x 7→ f (x, y0 ) admet aussi
∂f
un minimum en x 0 donc sa dérivée est nulle en x 0 , c’est-à-dire ∂ x (x 0 , y0 ) = 0. De même y 7→ f (x 0 , y)
∂f
admet un minimum en y0 donc ∂ y (x 0 , y0 ) = 0.
Dans la suite du cours nous chercherons les points pour lesquels une fonction donnée présente un minimum
local. D’après la proposition précédente, ces points sont à chercher parmi les points en lesquels le gradient
GRADIENT 11
∂f
s’annule. On dira que (x 0 , y0 ) est un point critique de f si les deux dérivées partielles ∂ x (x 0 , y0 ) et
∂f
∂ y (x 0 , y0 ) s’annulent simultanément.
Exemple.
Chercher les points en lesquels f (x, y) = x 2 − y 3 + x y peut atteindre son minimum.
Recherche des points critiques. On calcule
∂f ∂f
(x, y) = 2x + y et (x, y) = −3 y 2 + x.
∂x ∂y
On cherche les points (x, y) en lesquels les deux dérivées partielles s’annulent. Par l’annulation de la
première dérivée, on a 2x + y = 0 donc y = −2x. Par l’annulation de la seconde dérivée, on a −3 y 2 + x = 0
ce qui donne par substitution −12x 2 + x = 0, ainsi x(−12x + 1) = 0. Donc soit x = 0 et alors on a y = 0,
1
soit x = 12 et alors y = − 16 . Bilan : il y a deux points critiques :
1 1
(0, 0) et ,− .
12 6
Étude du point critique (0, 0). On a f (0, 0) = 0 mais on remarque que f (0, y) = − y 3 qui peut être
négatif ou positif (selon le signe de y proche de 0), donc en (0, 0) il n’y a ni minimum ni maximum.
1
Étude du point critique ( 12 , − 16 ). Il existe un critère (que l’on ne décrira pas ici) qui permet de dire
qu’en ce point f admet un minimum local.
Sur le dessin ci-dessous, le minimum est situé à l’intérieur du petit ovale, l’autre point critique en (0, 0)
correspond à l’intersection de la ligne de niveau f = 0 avec elle-même.
Sur l’exemple précédent, nous avons assez facilement calculé les points critiques à partir des deux équations
à deux inconnues. Il faut prendre garde que ce n’est pas un système linéaire et que dans le cas d’une fonction
plus compliquée il aurait été impossible de déterminer exactement les points critiques.
On note aussi dans l’exemple précédent que certains points critiques ne sont ni des maximums ni des
minimums. L’exemple type, illustré ci-dessous, est celui d’un col appelé aussi point-selle en référence à sa
forme de selle de cheval.
Exemple.
Soit f (x, y) = x 2 − y 2 . Voici son graphe vu sous trois angles différents et ses lignes de niveau.
GRADIENT 12
Comme il peut être difficile de calculer les points critiques de façon exacte, nous allons utiliser des méthodes
GRADIENT 13
numériques. L’idée qui sera détaillée dans le prochain chapitre est la suivante : comme le gradient indique
la direction dans laquelle la fonction f croît le plus rapidement, nous allons suivre la direction opposée au
gradient, pour laquelle f décroît le plus rapidement. Ainsi, partant d’un point (x 0 , y0 ) au hasard, on sait
dans quelle direction se déplacer pour obtenir un nouveau point (x 1 , y1 ) en lequel f est plus petite. Et on
recommence.
Sur les trois dessins ci-dessous, on a dessiné les lignes de niveau d’une fonction f ainsi que les vecteurs
− grad f (x, y). On voit que ces vecteurs pointent bien vers le minimum (figure de gauche), s’éloignent
d’un maximum (figure centrale), le cas d’un point-selle est spécial (figure de droite). Dans tous les cas, la
longueur des vecteurs gradients diminue à l’approche du point critique.
3. Différentiation automatique
Dans le chapitre « Dérivée », nous avons vu comment calculer la dérivée d’une fonction composée à l’aide
de son graphe de calcul. Nous allons faire de même pour les dérivées partielles des fonctions de plusieurs
variables afin de calculer le gradient d’une fonction définie par un réseau de neurones.
x0
f f
f (x 0 , y0 )
y0
Dérivées locales. Voici la règle pour les dérivées locales à rajouter à chaque branche (entre crochets).
GRADIENT 14
x0
[∂ x f (x 0 , y0 )]
f
f (x 0 , y0 )
[∂ y f (x 0 , y0 )]
y0
∂f
On note ∂ x f comme raccourci de la fonction ∂x.
Dérivées partielles. On obtient chacune des dérivées partielles d’une composition F comme le produit des
dérivées locales le long des branches allant de la sortie F (x, y) vers l’entrée x (ou y).
x0
{{∂ x F (x 0 , y0 )}}
[∂ x f (x 0 , y0 )]
f ×
F (x 0 , y0 )
[∂ y f (x 0 , y0 )]
×
y0
{{∂ y F (x 0 , y0 )}}
f g
z = f (x, y) ∈ R
(x, y) ∈ R2 g(z) = g f (x, y) ∈ R
g◦f
f g
On a donc :
F (x, y) = g ◦ f (x, y) = g f (x, y) .
Les dérivées partielles de F sont données par les formules :
∂F ∂f
(x 0 , y0 ) · g ′ f (x 0 , y0 )
(x 0 , y0 ) =
∂x ∂x
∂F ∂f
(x 0 , y0 ) · g ′ f (x 0 , y0 )
(x 0 , y0 ) =
∂y ∂y
GRADIENT 15
{{∂ x F (x 0 , y0 )}} [∂ x f (x 0 , y0 )]
f g
z0 = f (x 0 , y0 ) F (x 0 , y0 ) = g(z0 )
×
[∂ y f (x 0 , y0 )] [g ′ (z0 )]
y0
×
{{∂ y F (x 0 , y0 )}}
Addition et multiplication.
Dans le cas f (x, y) = x + y et f (x, y) = x × y, on retrouve les dérivées locales déjà utilisées dans le cas
d’une seule variable.
x0 x0
[1] [ y0 ]
⊕ ⊗
x 0 + y0 x 0 × y0
[1] [x 0 ]
y0 y0
Exemple. Soit F (x, y) = ln(x 2 y + sin y). On souhaite calculer grad F (3, 2). Nous allons montrer comment
calculer grad F (x 0 , y0 ) pour x 0 et y0 quelconques, puis nous reprendrons les calculs depuis le début dans le
cas (x 0 , y0 ) = (3, 2).
x 2 y + sin y ln z
x0
{{∂ x F (x 0 , y0 )}}
[2x 0 y0 ]
f ln z
z0 = x 02 y0 + sin y0 F (x 0 , y0 )
[x 02 + cos y0 ] [ z10 ]
y0
{{∂ y F (x 0 , y0 )}}
GRADIENT 16
x 2 y + sin y ln z
18 + sin 2 ln(18 + sin 2)
La seconde étape est de calculer toutes les dérivées locales. On utilise les valeurs de l’étape précédente et la
∂f ∂f
connaissance des formules de chacune des dérivées des fonctions élémentaires (ici ∂ x , ∂ y et ddzln ).
[12]
f ln z
18 + sin 2 ln(18 + sin 2)
1
[ 18+sin 2]
[9 + cos 2]
3
{{∂ x F (3, 2)}}
[12]
f ln z
18 + sin 2 ln(18 + sin 2)
×
1
[9 + cos 2] [ 18+sin 2]
×
2
{{∂ y F (3, 2)}}
Règle générale. Dans le cas de n entrées (x 1 , . . . , x n ), la règle des dérivées locales se généralise naturelle-
∂f
ment : on associe à la branche numéro i la dérivée locale ∂ x .
i
GRADIENT 17
x1
[∂ x 1 f ]
f
f (x 1 , . . . , x n )
[∂ x n f ]
xn
u(t 0 )
u
u(t)
f
f (x, y) t0 F (t 0 ) = f (u(t 0 ), v(t 0 ))
v
v(t) v(t 0 )
[∂ y f (x 0 , y0 )]
v
v(t 0 )
[v ′ (t 0 )]
x 0 = u(t 0 )
[u′ (t 0 )]
u
[∂ x f (x 0 , y0 )]
×
f
t0 F (t 0 )
{{F ′ (t 0 )}} [∂ y f (x 0 , y0 )]
v
×
y0 = v(t 0 )
[v ′ (t 0 )]
GRADIENT 18
(u, v) f
∂f ∂f
F ′ (t 0 ) = u′ (t 0 ) (u(t 0 ), v(t 0 )) + v ′ (t 0 ) (u(t 0 ), v(t 0 ))
∂x ∂y
Exemple. Soit F (t) = exp(t) sin(t). On souhaite calculer F ′ (1). On commence par calculer F ′ (t 0 ) en
p
et
p
xy z
sin t
x 0 = exp t 0
et [exp t 0 ]
[ y0 ]
p
xy z p
t0 z0 = x 0 y0 z0
[ 2p1z0 ]
[x 0 ]
sin t
y0 = sin t 0
[cos t 0 ]
On trouve ainsi :
′ 1 1
F (t 0 ) = p · [ y0 ] · [exp t 0 ] + p · [x 0 ] · [cos t 0 ]
2 z0 2 z0
et donc
exp t 0 · (sin t 0 + cos t 0 )
F ′ (t 0 ) =
p .
2 exp t 0 sin t 0
Reprenons tout depuis le début pour calculer F ′ (1) en oubliant que l’on a déjà trouvé la formule générale :
GRADIENT 19
e
t
e
[e] [sin(1)] ×
p
xy z p
1 e sin(1) e sin(1)
{{F ′ (1)}} [ p1 ]
2 e sin(1)
[e]
sin t
sin(1)
×
[cos(1)]
On trouve ainsi :
′ 1 1
F (1) = p · [sin(1)] · [e] + p · [e] · [cos(1)]
2 e sin(1) 2 e sin(1)
et donc
e(sin(1) + cos(1))
F ′ (1) = p .
2 e sin(1)
Règle générale. Dans le cas de n sorties, on somme sur toutes les arêtes sortantes comme dans la situation
ci-dessous.
[1]
1
[2 y] x + y2 + z
t ln t F (t)
[1/t]
[−1/z 2 ]
sin t
[cos t]
1 2 ln t cos t
La fonction est F (t) = t + (ln t)2 + sin t et en sommant on trouve bien F ′ (t) = 1 + t − sin2 t
.
Un autre exemple. On termine par un exemple plus compliqué : on souhaite calculer la dérivée de
F (t) = t 2 · ln t · ln(ln t).
Voici le graphe de calcul que l’on utilise (noter qu’avec ce graphe, on ne calcule qu’une seule fois ln t dont le
résultat est réutilisé pour calculer ln(ln t)).
x = t2
⊗ ×
t z1 = x · y
×
{{F ′ (t)}} ⊗
F (t)
y = ln t
×
z2 = ln y
La dérivée s’obtient comme somme sur tous les chemins de la sortie à l’entrée. C’est donc un peu plus
compliqué que ce l’on pense au premier abord : il faut ici faire la somme selon trois chemins différents, car
l’arête sortant de la variable t vers la variable y se sépare ensuite en deux. Nous allons voir comment gérer
cette difficulté dans la section suivante.
GRADIENT 20
x1
poids
a1 , . . . , am y
xn
Ce dont nous aurons besoin pour la suite et que nous allons calculer dans ce chapitre c’est le gradient de Fe
par rapport aux poids (a1 , . . . , am ), autrement dit, il s’agit de calculer :
∂ Fe
.
∂ aj
Pour concilier les deux points de vue (entrées et poids), on dira qu’un réseau de neurones ayant des entrées
(x 1 , . . . , x n ) et des poids (a1 , . . . , am ) définit la fonction :
Fb : Rn × Rm −→ R
(x 1 , . . . , x n ), (a1 , . . . , am ) 7−→ F (x 1 , . . . , x n , a1 , . . . , am )
b
Remarque.
Ce n’est pas tout à fait la fonction Fe dont on voudra calculer le gradient mais notre attention se portera sur
une fonction d’erreur E de la forme E = ( Fe − y0 )2 , où Fe est la fonction définie ci-dessus correspondant à
une certaine entrée et à la sortie y0 . On calcule facilement les dérivées partielles de E à partir de celles de Fe
par la formule :
∂E ∂ Fe
=2 ( Fe − y0 ).
∂ aj ∂ aj
Voir le chapitre « Rétropropagation » pour plus de détails.
f g h
a b
F
[g ′ ]
On s’intéresse à une seule arête entrante du neurone central rouge, celle qui porte le poids a.
GRADIENT 21
∂F g′ ∂F
= f⋆ · ⋆ · b ·
∂a g⋆ ∂b
Voici un schéma pour retenir cette « formule du sourire » : on multiplie les coefficients f⋆ , g⋆′ , b et la dérivée
partielle par rapport à b le long de l’arc et on divise par le coefficient g⋆ au bout du segment.
f⋆ g⋆
a b
[g⋆′ ]
Il est à noter que dans la formule, seule l’arête portant le coefficient a intervient, les autres arêtes entrantes
n’interviennent pas (et ne sont pas représentées). Par contre, dans le cas de plusieurs arêtes sortantes il faut
calculer la somme des formules précédentes sur chaque arête :
ℓ
∂F X g′ ∂F
= f ⋆ · ⋆ · bi ·
∂a i=1
g⋆ ∂ bi
Cette somme comporte autant de termes que d’arêtes sortantes (il n’y a pas à énumérer tous les chemins
entre le sommet et la sortie comme auparavant dans la différentiation automatique).
b1
b2
f⋆ g⋆
a
[g⋆′ ]
bℓ
Pour pouvoir calculer toutes les dérivées partielles, on procède par récurrence, en partant de la fin puis en
revenant en arrière de proche en proche.
f⋆ g⋆
a
F
[g⋆′ ]
Voici la formule d’initialisation associée aux coefficients en sortie de réseau, dite « formule du demi-sourire » :
∂F
= f⋆ · g⋆′
∂a
GRADIENT 22
Voici quelques situations particulières, mais qui sont simplement des applications de la formule du sourire.
Formule à l’entrée. On applique la formule du sourire avec x à la place de f .
∂F g′ ∂F
= x · ⋆ ·b·
∂a g⋆ ∂b
g⋆
a b
x F
[g⋆′ ]
Dérivée partielle par rapport aux variables d’entrées. On applique la formule du sourire en ajoutant des
coefficients virtuels égaux à 1 (la dérivée de x par rapport à x est 1) :
∂F b ∂F
= ·
∂x x ∂b
b
1 x F
[1]
Cas d’un biais. On applique la formule du sourire en ajoutant un coefficient virtuel égal à 1 :
∂F g′ ∂F
= ⋆ ·b·
∂a g⋆ ∂b
g⋆
b
F
a [g⋆′ ]
Remarque.
• Ces formules ne sont pas valables lorsque g⋆ = 0. Nous verrons lors de la preuve de ces formules
comment régler ce problème.
• Il faut s’habituer au jeu d’écriture un peu ambigu, comme on le fait pour une expression y qui dépend
de x. On peut noter cette expression y(x) ou bien simplement y, cette dernière écriture peut désigner
une fonction de x ou bien la valeur prise en x. Par exemple dans la formule du sourire ∂∂ Fa et ∂∂ Fb sont en
fait les valeurs des dérivées partielles et ne sont pas vraiment considérées comme des fonctions. Dans la
pratique cela ne posera pas de problème car le but est de calculer les valeurs des dérivées partielles (et
pas l’expression des fonctions dérivées partielles).
• De plus, les expressions sont dérivées par rapport à différentes variables. Par exemple, si une expression
F dépend de y, et l’expression y dépend de x, alors on peut calculer ∂∂ Fy , mais aussi ∂∂ Fx .
• Enfin la fonction F considérée ici dépend des variables d’entrée x i mais aussi des poids a j , si on suivait
le formalisme introduit en section 4.1, on devrait plutôt la noter Fb.
a u2 c ln v
x F (x, a, b, c)
[2u] [1/v]
b
Avec :
GRADIENT 23
Nous souhaitons calculer les dérivées partielles de F par rapport aux poids a, b, c. Nous ne souhaitons pas
obtenir une formule générale mais juste la valeur exacte de ces dérivées partielles en un point précis. Nous
choisissons l’exemple de (x, a, b, c) = (2, 3, 4, 5). On récrit le réseau avec les valeurs des poids, les valeurs
des fonctions et les valeurs des dérivées locales.
3 100 5 ln 500
2 F (2, 3, 4, 5)
[20] [1/500]
4
Calcul de la dérivée partielle par rapport à c. On part de la sortie pour l’initialisation. On applique la
formule du demi-sourire.
3 100 5 ln 500
2 F (2, 3, 4, 5)
[1/500]
4
∂F 1 1
= 100 × = .
∂c 500 5
Calcul de la dérivée partielle par rapport à a. On applique la formule du sourire :
∂F 20 ∂F
=2× ×5× .
∂a 100 ∂c
3 100 5 ln 500
2 F (2, 3, 4, 5)
[20]
{{1/5}}
∂F 1
Mais on a déjà calculé ∂c = 5 (entre accolades doubles), donc :
∂F 2
= .
∂a 5
Calcul de la dérivée partielle par rapport à b. On applique la formule du sourire (en posant 1 pour le
coefficient manquant) :
∂F 20 ∂F
=1× ×5× .
∂b 100 ∂c
{{2/5}} 100 ln 500
3 5
2 F (2, 3, 4, 5)
[20]
4 {{1/5}}
Donc
∂F 1
= .
∂b 5
Calcul de la dérivée partielle par rapport à x. On peut aussi calculer cette dérivée partielle, même si nous
n’en aurons pas besoin dans les autres chapitres.
∂F 1 ∂F
=1× ×3× .
∂x 2 ∂a
GRADIENT 24
donc
∂F 3
= .
∂x 5
Bilan. Ainsi F (2, 3, 4, 5) = ln 500 et on a calculé les dérivées partielles (entre doubles accolades) pour
chacune des variables x, a, b, c.
{{2/5}} 100 ln 500
a=3 c=5
x =2 F (2, 3, 4, 5)
{{3/5}} b=4 {{1/5}}
{{1/5}}
Vérification. On peut vérifier nos formules en calculant directement les dérivées partielles à partir de
l’expression :
F (x, a, b, c) = ln c(a x + b)2 .
Par exemple :
∂F 2c x(a x + b) 2x
(x, a, b, c) = =
∂a c(a x + b)2 ax + b
et on a bien
∂F 4 2
(2, 3, 4, 5) = = .
∂a 10 5
c
exp w
x F (x, a, b, c, d)
[exp w]
d
b
sin v
[cos v]
donc
∂F
= −x c sin u exp w.
∂a
Calcul de la dérivée partielle par rapport à b. On applique la formule du sourire :
∂F cos v ∂F
=x· ·d·
∂b sin v ∂d
donc
∂F
= x d cos v exp w.
∂b
Calcul de la dérivée partielle par rapport à x. Cette dérivée partielle s’obtient comme la somme de deux
termes correspondant aux deux arêtes sortantes :
∂F 1 ∂F 1 ∂F
=a· · + b· ·
∂x x ∂a x ∂b
donc
∂F
= (−ac sin u + bd cos v) exp w.
∂x
Vérification. En effectuant les substitutions u = a x, v = b x et w = c cos(a x) + d sin(b x), on retrouve les
dérivées partielles attendues, par exemple
∂F
= − ac sin(a x) + bd cos(b x) exp c cos(a x) + d sin(b x) .
∂x
Préliminaires.
∂h
= b · h′⋆ (1)
∂g
Preuve : on a h⋆ = h(b g⋆ ), la formule s’obtient en dérivant g 7→ h(b g) par rapport à la variable g, avec
h′⋆ = h′ (b g⋆ ).
∂g
= f⋆ · g⋆′ (2)
∂a
∂h
= g⋆ · h′⋆ (3)
∂b
Preuve : c’est la même formule que l’équation (2) mais cette fois pour b 7→ h(b g) et h′⋆ = h′ (b g⋆ ).
Formule générale.
∂F ∂F
= · f⋆ · g⋆′ (4)
∂a ∂g
GRADIENT 26
∂F ∂F
= · b · h′⋆ (5)
∂g ∂h
∂F
=1 (6)
∂g
Algorithme.
g i−1 ai gi ai+1 g i+1 gn
F
[g i−1
′
] [g i′ ] [g i+1
′
] [g n′ ]
Voici comment calculer toutes les dérivées partielles voulues (y compris dans le cas g⋆ = 0 qui avait été
exclu dans la formule du sourire).
• On part du neurone de sortie pour lequel on initialise le processus par la formule (6) ce qui donne
∂F
∂ g = 1.
n
∂F
• On procède par récurrence à rebours. On suppose que l’on a déjà calculé ∂ g i+1 On en déduit :
∂F ∂F ′
= · ai+1 · g i+1,⋆
∂ gi ∂ g i+1
par la formule (5).
• Cela permet de calculer les dérivées partielles par rapport aux poids à l’aide de la formule (4) :
∂F ∂F ′
= · g i−1,⋆ · g i,⋆ .
∂ ai ∂ gi