Rétropropagation du gradient dans le cadre d’une ultime couche Softmax

Cet article présente la rétropropagation du gradient dans un réseau neuronal monocouche complètement connecté, avec softmax comme fonction d’activation et la divergence de Kullback-Leibler comme fonction de coût. Minimiser cette fonction qui fait office de distance entre nos deux distributions va se résumer dans notre cas à réduire l’entropie croisée entre le résultat obtenu et le résultat souhaité.

Le but est d’optimiser une matrice de poids W pour que la prédiction d’appartenance de X à une classe soit la plus proche de la classe Y connue.

1. Présentation du contexte

1.1. Graphe

Ce que l’on connait:
$X$ vecteur d’entrées de dimension (D)
$y$ classe à laquelle apparatient le vecteur d’entrées, $y$ est un scalaire $\in \{1,\cdots,C\}$. On associe à $y$ un vecteur de dimension C: $Y\_one\_hot$, qui est la version « one hot encoded » de $y$. Tous ses termes sont 0 sauf $Y\_one\_hot[y]=1$

Ce que l’on cherche:
$W$ matrice des poids de dimension (D,C). Où C représente le nombre de classes possibles

Représentation générale du graphe des calculs effectués:
** 1 ** multiplication matricielle : $\lambda = X.W$
$\lambda$ vecteur logits de dimension (C)
** 2 ** $S=softmax(\lambda)$
$S$ vecteur de dimension (C) qui donne la probabilité d’appartenance de X pour chacune des classes
** 3 ** Fonction de coût: $L = D_{KL}(Y\_one\_hot||S)$ où $Y\_one\_hot$ correspond à la répartition de probabilité pour la classe connue.
$L$ (Loss) scalaire (1)

1.2. Motivation

Le but est de trouver $$\frac{\partial L}{\partial W}$$ Jacobien généralisé de L par rapport à W, pour pouvoir modifier W en utilisant le taux d’apprentissage:$$ W \leftarrow W + learning\_rate * \frac{\partial L}{\partial W}$$

1.3. La fonction 𝑆𝑜𝑓𝑡𝑚𝑎𝑥

1.3.1. Définition

$$
\begin{align}
Softmax, \forall N \in \mathbb{N}^{}\
S\colon
&\mathbb{R}^{N} &&\to \mathbb{R}^{N} \
&a =
\begin{bmatrix}
a_1\
\vdots \
a_n
\end{bmatrix}
&&\mapsto S(a) =
\begin{bmatrix}
S_1\
\vdots \
S_n
\end{bmatrix}
\end{align*}
$$

La suite sur github, car problème d’affichage des alignements codés en Latex sous mathjax BP-softmax-layer.ipynb