Disons que nous avons l'expression z=x1x2+sin(x1) et que nous voulons trouver des dérivées dzdx1 etdzdx2 . L'AD en mode inverse divise cette tâche en 2 parties, à savoir les passes avant et arrière.
Passe avant
Tout d'abord, nous décomposons notre expression complexe en un ensemble d'expressions primitives, c'est-à-dire des expressions consistant au plus en un seul appel de fonction. Notez que je renomme également les variables d'entrée et de sortie pour des raisons de cohérence, bien que ce ne soit pas nécessaire:
w1=x1
w2=x2
w3=w1w2
w4= péché( w1)
w5= w3+ w4
z= w5
L'avantage de cette représentation est que les règles de différenciation pour chaque expression distincte sont déjà connues. Par exemple, nous savons que la dérivée du péché est cos , et donc réw4réw1= cos( w1). Nous utiliserons ce fait en passe inverse ci-dessous.
Essentiellement, la transmission directe consiste à évaluer chacune de ces expressions et à enregistrer les résultats. Disons que nos entrées sont: X1= 2 et X2= 3 . Ensuite nous avons:
w1=x1=2
w2=x2=3
w3=w1w2=6
w4=sin(w1) =0.9
w5=w3+w4=6.9
z=w5=6.9
Passe arrière
C'est là que la magie commence, et cela commence par la règle de la chaîne . Dans sa forme de base, la règle de chaîne stipule que si vous avez la variable t(u(v)) qui dépend de u qui, à son tour, dépend de v , alors:
rétrév= dtréuréurév
ou, si t dépend de v via plusieurs chemins / variables uje , par exemple:
u1= f( v )
u2= g( v )
t = h ( u1, u2)
alors (voir la preuve ici ):
rétrév= ∑jerétréujeréujerév
En termes de graphe d'expression, si nous avons un nœud final z et des nœuds d'entrée wje , et le chemin de z à wje passe par les nœuds intermédiaires wp (c'est-à-dire z= g( wp) où wp= f( wje) ), on peut trouver la dérivée rézréwje as
rézréwje= ∑p ∈ p a r e n t s ( i )rézréwpréwpréwje
En d'autres termes, pour calculer la dérivée de la variable de sortie z rapport à toute variable intermédiaire ou d'entrée wje , il suffit de connaître les dérivées de ses parents et la formule pour calculer la dérivée de l'expression primitive wp= f( wje) .
La passe inverse commence à la fin (c'est-à-dire rézréz ) et se propage en arrière vers toutes les dépendances. Nous avons ici (expression pour "graine"):
rézréz= 1
Cela peut être lu comme «un changement de z entraîne exactement le même changement de z », ce qui est assez évident.
On sait alors que z= w5 et ainsi:
rézréw5= 1
w5 dépend linéairement dew3 etw4 , doncréw5réw3= 1etréw5réw4= 1. En utilisant la règle de chaîne, nous trouvons:
rézréw3= dzréw5réw5réw3= 1 × 1 = 1
rézréw4= dzréw5réw5réw4= 1 × 1 = 1
D'après la définition w3= w1w2 et les règles des dérivées partielles, nous constatons que réw3réw2= w1. Ainsi:
rézréw2= dzréw3réw3réw2= 1 × w1= w1
Ce qui, comme nous le savons déjà par la passe avant, est:
rézréw2= w1= 2
Enfin, w1 contribue à z via w3 et w4 . Encore une fois, à partir des règles des dérivées partielles, nous savons que réw3réw1= w2etréw4réw1= cos( w1). Ainsi:
rézréw1= dzréw3réw3réw1+ dzréw4réw4réw1= w2+ cos( w1)
Et encore une fois, étant donné les entrées connues, nous pouvons le calculer:
rézréw1= w2+ cos( w1) = 3 + cos( 2 ) = 2,58
w1w2X1X2
rézréX1= 2,58
rézréX2= 2
Et c'est tout!
Cette description ne concerne que les entrées scalaires, c'est-à-dire les nombres, mais en fait, elle peut également être appliquée à des tableaux multidimensionnels tels que des vecteurs et des matrices. Deux choses que l'on doit garder à l'esprit lors de la différenciation des expressions avec de tels objets:
- Les dérivés peuvent avoir une dimensionnalité beaucoup plus élevée que les entrées ou les sorties, par exemple le dérivé du vecteur par rapport au vecteur est une matrice et le dérivé de la matrice par rapport à la matrice est un tableau à 4 dimensions (parfois appelé tenseur). Dans de nombreux cas, ces dérivés sont très rares.
- y= f( x )XyyjeyjXkréyjeréXjyjeXj
rézréw1= w2+ cos( w1) = x2+ cos( x1)