So how do we backpropagate. Well, the point 0.7 is the sum of 0.1 and 0.6. So both point 0.1 and 0.6 will have gradient +1, which are indicated in the brackets. Then Viterbi Transformer just select one path among two. So just copy the gradient for the corresponding edge in the input graph and set the gradient for other paths that are not selected as zero. It’s exactly what’s happening in Max-Pooling or Mean-Pooling. The Path Selector is the same, it is just a system that selects the correct answer. Note that 3 [0.1] (0) in the graph should be 3 [0.1] (1) at this stage, and will come back to this later. Then you can backpropagate gradient through the neural net. That will make the energy of the correct answer small.
Alors comment rétropropager ? Le point 0,7 est la somme de 0,1 et 0,6. Donc, les points 0,1 et 0,6 auront tous deux un gradient de +1, indiqué entre parenthèses dans la figure 9. Ensuite, le transformer de Viterbi n’a qu’à sélectionner un chemin parmi deux. Il suffit donc de copier le gradient pour l’arête correspondante dans le graphe d’entrée et de définir le gradient des autres trajectoires comme étant nulles car non retenues. C’est exactement ce qui se passe dans le max-pooling ou le mean-pooling. Le sélecteur de trajectoire est le même, c’est juste un système qui sélectionne la bonne réponse. A noter qu’à ce stade, le 3 [0.1] (0) dans le graphe de la figure 9, deviendrait 3 [0.1] (1). Nous pouvons alors rétroprogager le gradient à travers le réseau rendant l’énergie de la bonne réponse faible.