Gradient

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 26

Gradient

Vidéo ■ partie 7.1. Dérivées partielles


Vidéo ■ partie 7.2. Gradient et géométrie
Vidéo ■ partie 7.3. Gradient et minimum/maximum
Vidéo ■ partie 7.4. Différentiation automatique
Vidéo ■ partie 7.5. Gradient pour un réseau de neurones
Le gradient est un vecteur qui remplace la notion de dérivée pour les fonctions de plusieurs variables.
On sait que la dérivée permet de décider si une fonction est croissante ou décroissante. De même, le
vecteur gradient indique la direction dans laquelle la fonction croît ou décroît le plus vite. Nous allons
voir comment calculer de façon algorithmique le gradient grâce à la « différentiation automatique ».

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

1.3. Interprétation géométrique


Pour une fonction d’une variable, la dérivée est la pente de la tangente au graphe de la fonction (le graphe
étant alors une courbe). Pour une fonction de deux variables (x, y) 7→ f (x, y), les dérivées partielles
indiquent les pentes au graphe de f selon certaines directions (le graphe étant ici une surface). Plus
précisément :
∂f
• ∂ x (x 0 , y0 ) est la pente du graphe de f en (x 0 , y0 ) suivant la direction de l’axe (O x). En effet cette pente
est celle de la tangente à la courbe z = f (x, y0 ) et est donnée par la dérivée de x 7→ f (x, y0 ) en x 0 , c’est
∂f
donc bien ∂ x (x 0 , y0 ).
∂f
• ∂ y (x 0 , y0 ) est la pente du graphe de f en (x 0 , y0 ) suivant la direction de l’axe (O y).

∂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.

2.2. Tangentes aux lignes de niveau


Soit f : R2 → R une fonction différentiable. On considère les lignes de niveau f (x, y) = k.
Proposition 1.
Le vecteur gradient grad f (x 0 , y0 ) est orthogonal à la ligne de niveau de f passant au point (x 0 , y0 ).
Sur ce premier dessin, sont dessinés la ligne de niveau passant par le point (x 0 , y0 ) (en rouge), un vecteur
tangent v en ce point et la tangente à la ligne de niveau (en vert). Le vecteur gradient est un vecteur du
plan qui est orthogonal à la ligne de niveau en ce point (en bleu).

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

Dans le cadre de notre étude, nous nous intéressons à l’équation de la tangente.


Proposition 2.
Au point (x 0 , y0 ), l’équation de la tangente à la ligne de niveau de f est :
∂f ∂f
(x 0 , y0 )(x − x 0 ) + (x 0 , y0 )( y − y0 ) = 0
∂x ∂y
pourvu que le gradient de f en ce point ne soit pas le vecteur nul.

Exemple (Tangentes à une ellipse).


x2 y2
Trouver les tangentes à l’ellipse E d’équation a2
+ b2
= 1.

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

2.3. Lignes de plus forte pente


Considérons les lignes de niveau f (x, y) = k d’une fonction f : R2 → R. On se place en un point (x 0 , y0 ).
On cherche dans quelle direction se déplacer pour augmenter au plus vite la valeur de f .
Proposition 3.
Le vecteur gradient grad f (x 0 , y0 ) indique la direction de plus grande pente à partir du point (x 0 , y0 ).
Autrement dit, si l’on veut, à partir d’un point donné (x 0 , y0 ) de niveau a, passer au niveau b > a le plus
vite possible alors il faut démarrer en suivant la direction du gradient grad f (x 0 , y0 ).

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.

2.4. Dérivée directionnelle


Pour prouver que le gradient indique la ligne de la plus grande pente, nous avons besoin de généraliser la
notion de dérivée partielle. Ce passage est plus technique et peut être ignoré en première lecture.

Soit v = hk un vecteur du plan. La dérivée directionnelle de f suivant le vecteur v en (x 0 , y0 ) est le
nombre :
∂f ∂f
Dv f (x 0 , y0 ) = h (x 0 , y0 ) + k (x 0 , y0 ).
∂x ∂y
La dérivée directionnelle correspond à la pente de la fonction pour la tranche dirigée par le vecteur v.
GRADIENT 7

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

Ainsi, on peut réécrire la dérivée directionnelle sous la forme :


Dv f (x 0 , y0 ) = 〈grad f (x 0 , y0 ) | v〉.
On peut maintenant prouver que le gradient indique la ligne de plus grande pente.

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 ).

2.5. Surface de niveau


Les résultats présentés ci-dessus pour les fonctions de deux variables se généralisent aux fonctions de trois
variables ou plus. Commençons avec trois variables et une fonction f : R3 → R. Rappelons qu’un plan de
R3 passant par (x 0 , y0 , z0 ) et de vecteur normal n = (a, b, c) a pour équation cartésienne :
a(x − x 0 ) + b( y − y0 ) + c(z − z0 ) = 0.
De même qu’il existe une droite tangente pour les lignes de niveau, il existe un plan tangent à une surface
de niveau.
GRADIENT 8

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

Plus généralement pour f : Rn → R, grad f (x 1 , . . . , x n ) est orthogonal à l’espace tangent à l’hypersurface


de niveau f = k passant par le point (x 1 , . . . , x n ) ∈ Rn et ce vecteur gradient grad f (x 1 , . . . , x n ) indique la
direction de plus grande pente à partir du point (x 1 , . . . , x n ).

2.6. Calcul approché


p
Rappelez-vous que la dérivée nous a permis de faire des calculs approchés, par exemple pour estimer 1.01
sans calculatrice (voir le chapitre « Dérivée »). Voici, en deux variables, l’analogue de la formule pour une
variable :
∂f ∂f
f (x 0 + h, y0 + k) ≃ f (x 0 , y0 ) + h (x 0 , y0 ) + k (x 0 , y0 ).
∂x ∂y
Cette approximation est valable pour h et k petits.
L’interprétation géométrique est la suivante : on approche le graphe de f en (x 0 , y0 ) par le plan tangent au
graphe en ce point. Sur la figure ci-dessous sont représentés : le graphe de f (en rouge), le plan tangent au-
dessus du point (x 0 , y0 ) (en bleu). La valeur z1 = f (x 0 +h, y0 +k) est la valeur exacte donnée par le point de la
∂f ∂f
surface au dessus de (x 0 +h, y0 + k). On approche cette valeur par z2 = f (x 0 , y0 )+h ∂ x (x 0 , y0 )+ k ∂ y (x 0 , y0 )
donnée par le point du plan tangent au dessus de (x 0 + h, y0 + k).
GRADIENT 9

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.

2.7. Minimum et maximum


Définition.
Soit f : R2 → R.
• La fonction f admet un minimum local en (x 0 , y0 ) s’il existe un disque D centré en ce point tel que
f (x, y) ⩾ f (x 0 , y0 ) pour tout (x, y) ∈ D.
• La fonction f admet un maximum local en (x 0 , y0 ) pour lequel
f (x, y) ⩽ f (x 0 , y0 ) pour tout (x, y) ∈ D.
• On parle d’un extremum local pour un minimum ou un maximum local.

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

La fonction f (x, y) = −x 2 − y 2 admet, elle, un maximum en (0, 0).

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.

Cas d’un minimum Cas d’un maximum Cas d’un point-selle

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.

3.1. Différentiation automatique


Graphe de calcul. Voici le graphe de calcul d’une fonction f de deux variables (schéma de principe à
gauche, évaluation en (x 0 , y0 ) à droite).

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 )}}

Formule mathématique. Soit f : R2 → R et g : R → R.

f g

z = f (x, y) ∈ R

(x, y) ∈ R2 g(z) = g f (x, y) ∈ R

g◦f

La composition F = g ◦ f : R2 → R correspond au graphe de calcul dessiné ci-dessous :

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

La preuve de la formule pour ∂∂ Fx (x 0 , y0 ) découle directement de la formule de la dérivée d’une composition


pour la fonction d’une seule variable x 7→ F (x, y0 ). Il en est de même pour l’autre dérivée partielle. Ces
formules justifient notre règle de calcul : la dérivée partielle est le produit des dérivées locales le long de
chacune des branches.
x0

{{∂ 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

On obtient les dérivées partielles comme produit des dérivées locales :


∂F 1 2x 0 y0
• ˜
(x 0 , y0 ) = × [2x 0 y0 ] = 2 ,
∂x z0 x 0 y0 + sin y0
∂F 1 x 02 + cos y0
• ˜
(x 0 , y0 ) = × [x 02 + cos y0 ] = 2 .
∂y z0 x 0 y0 + sin y0
Dans la pratique, pour les réseaux de neurones, on ne calcule jamais l’expression formelle de grad F (x 0 , y0 )
mais seulement des gradients en des valeurs (x 0 , y0 ) données. On reprend donc à chaque fois les étapes
ci-dessus mais uniquement pour des valeurs numériques.
La première étape est de calculer les valeurs des fonctions (de la gauche vers la droite).

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]

On calcule le produit des dérivées locales le long des arêtes.

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)}}

On obtient les dérivées partielles :


∂F 1 12 ∂F 1 9 + cos 2
• ˜ • ˜
(3, 2) = × [12] = et (3, 2) = × [9 + cos 2] = .
∂x 18 + sin 2 18 + sin 2 ∂y 18 + sin 2 18 + sin 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

3.2. Différentiation automatique (suite)


Graphe de calcul. Voici le graphe de calcul d’une situation que l’on a déjà rencontrée dans le cas d’une
seule variable, mais dont la formule se justifie par les fonctions de deux variables. Il s’agit du graphe de
calcul de F (t) = f u(t), v(t) où u : R → R, v : R → R et f : R2 → R. L’objectif est de calculer F ′ (t).


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 )

Dérivées locales. On calcule les dérivées locales comme d’habitude.


u(t 0 )
u [u′ (t 0 )]
[∂ x f (x 0 , y0 )]
f
t0 F (t 0 )

[∂ y f (x 0 , y0 )]
v
v(t 0 )
[v ′ (t 0 )]

Dérivée. La dérivée s’obtient en deux étapes :


• on calcule le produit des dérivées locales le long des chemins partant de chaque arête sortante jusqu’à la
sortie,
• puis on calcule la somme de ces produits.

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

Formule mathématique. La situation est cette fois la suivante :

(u, v) f

t ∈R (u(t), v(t)) = (x, y) ∈ R2 f (x, y) ∈ R

La formule de dérivation de la composition de



F (t) = f u(t), v(t)
est :

∂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

général avant de tout reprendre dans la cas t 0 = 1. Voici le graphe de calcul :

et
p
xy z

sin t

Une fois complété avec les dérivées locales cela donne :

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

4. Gradient pour un réseau de neurones

4.1. Fonction associée à un réseau


Pour un réseau de neurones R ayant n entrées (x 1 , . . . , x n ) et une seule sortie, nous associons une fonction :
F : Rn → R, (x 1 , . . . , x n ) 7→ F (x 1 , . . . , x n ). La situation est en fait plus compliquée. Jusqu’ici les paramètres
du réseau étaient donnés. À partir de maintenant les variables du problème ne seront plus les entrées mais
les poids du réseau. Notons a1 , . . . , am ces poids (l’ensemble des coefficients et des biais). Si l’entrée est
fixée et que les poids sont les variables du réseau alors on pourrait considérer que ce même réseau R définit
la fonction Fe : Rm → R, (a1 , . . . , am ) 7→ Fe(a1 , . . . , am ).

Entrée Réseau Sortie

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.

4.2. Formule du gradient


On considère la portion suivante d’un réseau de neurones :

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

• a et b sont des poids,


• f , g, h sont des fonctions d’activation,
• f ′ , g ′ , h′ sont leur dérivées,
• F est la fonction associée au réseau complet.
Pour distinguer la fonction de sa valeur en un point, on notera f la fonction et f⋆ la valeur de la fonction à
la sortie du neurone correspondant.
Voici la formule pour calculer la dérivée partielle de F par rapport au coefficient a, connaissant la dérivée
partielle par rapport au coefficient b.

∂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.

4.3. Premier exemple


Voici un réseau très simple.

a u2 c ln v
x F (x, a, b, c)
[2u] [1/v]
b

Avec :
GRADIENT 23

• une entrée x, une sortie F (x),


• trois poids a, b, c,
• des fonctions d’activation (plutôt fantaisistes) u 7→ u2 et v 7→ ln v.
Nous avions l’habitude de considérer la fonction x 7→ F (x) mais dorénavant les poids sont de nouvelles
variables, nous devons donc étudier la fonction Fb introduite ci-dessus que nous noterons encore F dans la
suite :
F (x, a, b, c) = ln c(a x + b)2 .


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

{{2/5}} 100 ln 500


3 5
1 2 F (2, 3, 4, 5)
[1]
4 {{1/5}}
{{1/5}}

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

4.4. Second exemple


Pour le réseau suivant, on associe comme précédemment une fonction F .
cos u
[− sin u]
a

c
exp w
x F (x, a, b, c, d)
[exp w]
d

b
sin v
[cos v]

On considère les poids a, b, c, d comme des variables, la fonction F : R5 → R s’écrit donc :



F (x, a, b, c, d) = exp c cos(a x) + d sin(b x) .
On va noter u = a x et v = b x, ainsi cos u et sin v sont les sorties des deux premiers neurones. On note
w = c cos u + d sin v. La sortie du troisième neurone (qui est aussi la valeur de F ) est alors exp w.
On part de la sortie pour l’initialisation. Il y a deux dérivées partielles à calculer.
Calcul de la dérivée partielle par rapport à c. On applique la formule du demi-sourire :
∂F
= cos u · exp w.
∂c
Calcul de la dérivée partielle par rapport à d. On applique de nouveau la formule du demi-sourire :
∂F
= sin v · exp w.
∂d
Calcul de la dérivée partielle par rapport à a. On applique la formule du sourire :
∂F − sin u ∂F
=x· ·c·
∂a cos u ∂c
GRADIENT 25

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

4.5. Preuve et formule générale


f g h
a b
F
[f ]′
[g ]′
[h′ ]

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

Preuve : on a g⋆ = g(· · · + a f⋆ + · · · ), la formule s’obtient en dérivant a 7→ g(· · · + a f + · · · ) par rapport à la


variable a. On note g⋆′ = g ′ (· · · + a f⋆ + · · · ).

∂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

Preuve : c’est la formule


∂F ∂F ∂g
= ·
∂a ∂g ∂a
(valable car g est une fonction d’une seule variable) suivie de l’application de l’équation (2).

∂F ∂F
= · b · h′⋆ (5)
∂g ∂h

Preuve : c’est la formule


∂F ∂F ∂h
= ·
∂g ∂h ∂ g
suivie de l’application de l’équation (1).
Dans le cas d’un neurone de sortie on a :

∂F
=1 (6)
∂g

car comme g est la dernière fonction, on a F⋆ = 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

Preuve de la formule du sourire.


On va exprimer ∂∂ Fa directement en fonction de ∂∂ Fb .
Par les équations (4) et (5), on a d’une part :
∂F ∂F
= · b · h′⋆ · f⋆ · g⋆′ (7)
∂a ∂h
et d’autre part :
∂F ∂F ∂h
= · .
∂b ∂h ∂ b
Donc, en utilisant l’équation (3), on obtient :
∂F ∂F
= · g⋆ · h′⋆ . (8)
∂b ∂h
Cette dernière équation permet de calculer ∂∂ Fh en fonction ∂∂ Fb . Ainsi des équations (7) et (8), on obtient la
formule du sourire :
∂F g′ ∂F
= f⋆ · ⋆ · b · .
∂a g⋆ ∂b
Dans le cas de plusieurs arêtes sortantes, il s’agit de faire une somme comme on l’a déjà vu lors de la
différentiation automatique.

Vous aimerez peut-être aussi