Skip to main content

Section 11.4 Neural ODE

TOO DOO

il existe une variante de cette approche qui s'est développée fortement depuis plusieurs années pour construire des ANN. Elle est basée sur une analogie entre les réseaux de neurones et une ODE pour obtenir une nouvelle façon de construire des réseaux de neurones généraux (bien au-delà du problème d'apprendre une ODE). On se souvient de l'approche "ResNet" qui consiste à écrit une couche comme:

\begin{equation*} z^{l+1}=z^l + block_{\theta}(z^l) \end{equation*}

par exemple. L'ajout de l'indentité permettait notamment d'éviter des explosions/disparitions de gradient. On voit que cette forme est très proche de la discrétisation d'une ODE ou le réseau correspondrait au flux (comme précédemment). Lorsqu'on utilise cette analogie, on voit que mettre plus et plus de couches reviendraient à discrétiser de plus en plus l'ODE. L'idée du papier ... consiste à proposer un nouveau "réseau de neurones" appelé ODEnet ou Neural ODE.

Définition 11.5. Neural ODE.

On se donne une donnée d'entrée \(x\in\mathbb{R}^d\) et une donnée de sortie \(y\in\mathbb{R}^d\text{.}\) On appelle un Neural ODE une processus de transformation de la forme:
\begin{equation*} z(0) = h_{\theta_i}(x),\quad y=h_{\theta_e}(z(T)) \end{equation*}
avec \(z(t)\) qui satisfait
\begin{equation} \frac{d z(t)}{dt}=f_{\theta}(t,z(t))\tag{11.2} \end{equation}
une équation différentielle dont le flux \(f_{\theta}\) dépend de paramètres \(\theta\text{.}\)
En général \(f_{\theta}\) un bloc de réseaux de neurones (par exemple deux ou trois couches d'un réseau type MLP ou CNN). On voit que plus on va discrétiser finement cette équation plus on va obtenir un nombre de couches importantes. Pour la classification ce type de réseaux revient à apprendre une transformation géométrique régulière qui sera appliquée par la discrétisation de l'ODE et il suffit d'ajouter à la fin un classifieur de type MPC. Dans la définition Définition 11.5 cela correspond à la fonction \(h_{\theta_e}\text{.}\)

Lorsqu'on on utilise ce genre de représentation pour appendre une ODE à partir de données il n’y a pas de problème, mais lorsqu'on veut utiliser cette formulation pour des problèmes généraux comme la classification d'image il peut avoir un manque d'expressivité. En effet les poids sont les mêmes dans chaque couche et la variété d'une couche a l'autre vient du fait que dans les entrées il y a le temps. Afin d'ajouter de la variation dans les couches, on peut construire un réseau ou les poids dépendent du temps.

Définition 11.6. Neural ODE 2.

On se donne une donnée d'entrée \(x\in\mathbb{R}^d\) et une donnée de sortie \(y\in\mathbb{R}^d\text{.}\) On appelle un Neural ODE une processus de transformation de la forme:
\begin{equation*} z(0) = h_{\theta_i}(x),\quad y=h_{\theta_e}(z(T)) \end{equation*}
avec \(z(t)\) qui satisfait
\begin{equation*} \frac{d z(t)}{dt}=f(\theta(t),z(t)) \end{equation*}
une équation différentielle dont les poids dépendent directement du temps.
L'originalité de cette approche vient du fait que le nombre de couches est a priori variable, car il va dépendre de la discrétisation en temps. L'idée est d'entraîner cette ODE en traitant cela comme un problème inverse et de contrôle optimal. La fonction de coût est donnée par

\begin{equation*} L(\theta)= \sum_{i=1}^{N_{data}}\parallel h_{\theta_e}((z(T))_i)- y_i\parallel_2^2 \end{equation*}

avec \(\theta=(\theta_1,...,\theta_n)\) et \((z(0))_i=h_{\theta_i}(x_i)\text{.}\) Pour un problème d'apprentissage ODE sur des fonctions vectorielles avec des exemples de trajectoires on utilisera plutôt:

\begin{equation*} L(\theta)= \sum_{i=1}^{N_{data}}\sum_{j=0}^{N_t}\parallel (\bs{z}(t_j))_i- \bs{z}_{j}^i\parallel_2^2 \end{equation*}

avec \(\bs{z}_{j}^i\) des exemples de solution au temps \(t_j\) associés à une condition initiale \(i\text{.}\)

En pratique il faut maintenant calculer le gradient de notre fonction de coût par rapport a nos entrées \(z(t),\theta,t\) et la méthode qu'on peut utiliser pour cela est celle de principe du maximum de Pontryagin. On va commence par regarder le gradient par rapport à l'état avant de généraliser. Dans le papier fondateur des ODEnet [1.16] les auteurs proposent une autre preuve plus formelle qu'on donnera ici.

Cette démonstration formelle est tirée du papier [1.16]. Elle suppose une régularité importante des solutions du problème.

  • On commence par construire le gradient par rapport à l'état.

    On commence par définir un état (qui en pratique est l'état adjoint du système) comme:

    \begin{equation*} a(t)=\frac{d L}{d z(t)} \end{equation*}

    Pour commencer on souhaite montrer formellement que l'état adjoint est solution de

    \begin{equation} \displaystyle{\frac{d a(t)}{d t}=-a(t)^{\top} \frac{\partial f(z(t), t, \theta)}{\partial z}}\tag{11.6} \end{equation}

    Dans un premier temps on essaye d'établir l'équivalent continu de la formule de récurrence qui relit le gradient de \(L\) par rapport aux paramètres d'une couche en fonction de celui par rapport aux paramètres de la couche suivante.

    On commence par remarquer que:

    \begin{equation*} a(t)=\frac{d L}{\partial z(t)}=\frac{d L}{d z(t+\varepsilon)} \frac{d z(t+\varepsilon)}{d z(t)} \end{equation*}

    et par définition de \(a(t)\)

    \begin{equation*} a(t)=a(t+\epsilon)\frac{d z(t+\varepsilon)}{d z(t)} \end{equation*}

    A partir de la on peut attaquer le calcul de la dérivée de \(a(t)\text{.}\)

    \begin{equation*} \begin{aligned} \frac{d a(t)}{d t} \amp =\lim _{\varepsilon \rightarrow 0^{+}} \frac{a(t+\varepsilon)-a(t)}{\varepsilon} \\ \amp =\lim _{\varepsilon \rightarrow 0^{+}} \frac{a(t+\varepsilon)-a(t+\varepsilon) \frac{\partial}{\partial z(t)} z(t+\varepsilon))}{\varepsilon} \\ \amp =\lim _{\varepsilon \rightarrow 0^{+}} \frac{a(t+\varepsilon)-a(t+\varepsilon) \frac{\partial}{\partial z(t)}\left(z(t)+\varepsilon f(z(t), t, \theta)+\mathcal{O}\left(\varepsilon^2\right)\right)}{\varepsilon} \\ \amp =\lim _{\varepsilon \rightarrow 0^{+}} \frac{a(t+\varepsilon)-a(t+\varepsilon)\left(I+\varepsilon \frac{\partial f(z(t), t, \theta)}{\partial z(t)}+\mathcal{O}\left(\varepsilon^2\right)\right)}{\varepsilon} \\ \amp =\lim _{\varepsilon \rightarrow 0^{+}} \frac{-\varepsilon a(t+\varepsilon) \frac{\partial f(z(t), t, \theta)}{\partial z(t)}+\mathcal{O}\left(\varepsilon^2\right)}{\varepsilon} \\ \amp =\lim _{\varepsilon \rightarrow 0^{+}}-a(t+\varepsilon) \frac{\partial f(z(t), t, \theta)}{\partial z(t)}+\mathcal{O}(\varepsilon) \\ \amp =-a(t) \frac{\partial f(z(t), t, \theta)}{\partial z(t)} \end{aligned} \end{equation*}
  • On va maintenant en déduire le gradient complet. Pour cela on va réécrire une ODEnet de la façon suivante:

    \begin{equation} \frac{d}{dt}\left(\begin{array}{c} z(t) \\ \theta(t) \end{array}\right) = \left(\begin{array}{c} f(z(t),\theta) \\ 0\end{array}\right)\tag{11.7} \end{equation}

    de la même façon on peut introduire

    \begin{equation*} a_{total}(t)= \left(\begin{array}{l} a(t) \\ a_{\theta}(t)\end{array}\right) \end{equation*}

    avec \(a_{\theta}=\frac{d L}{d \theta(t)}\text{.}\) Lorsqu'on applique la formule (11.6) a l'équation augmentée (11.7) on obtient:

    \begin{equation*} \frac{d a_{total}(t)}{dt}= - \left(\begin{array}{l} a(t)\frac{\partial f(z(t),\theta,t)}{\partial z(t) } \\ a(t)\frac{\partial f(z(t),\theta,t)}{\partial \theta(t)} \end{array}\right) \end{equation*}

    Dans le cadre du modèle Définition 11.6 on a donc obtenu le gradient. Dans le premier cas ou les poids ne dépendent pas du temps on intégre en temps pour obtenir le gradient par rapport aux paramètres \(\theta\) pour obtenir le résultat en partant du principe que \(\theta(T)=0\) (cela revient a dire qu'initialement les poids sont nuls).

Définition 11.8.

On définit le dual augmenté d'un ODEnet:

\begin{equation*} \frac{d }{dt}\left(\begin{array}{l} z(t) \\ a(t) \\ theta(t) \end{array}\right)= \left(\begin{array}{l} f(z(t),\theta,t) \\ - a(t)\frac{\partial f(z(t),\theta,t)}{\partial z(t) } \\ - a(t)\frac{\partial f(z(t),\theta,t)}{\partial \theta} \end{array}\right) \end{equation*}

avec la condition initiale \((z(T),\frac{\partial L}{\partial z(T)},0)\)

Subsection 11.4.1 Propriété d'approximation universelle

Un des arguments qui justifie l'utilisation des réseaux de neurones c'est les théorèmes d'approximation universelle du type Théorème 5.8 - Théorème 5.9. Il est donc important d'obtenir des résultats du même type pour les Neural ODE.

On va commencer par le cas le plus simple \(h_{\theta_i}(x)=I_d\text{,}\) \(h_{\theta_e}(z)=I_d\) et des poids constant en temps. On résout donc

\begin{equation} \frac{d z(t)}{d t}=f_{\theta}(z(t),t)\tag{11.8} \end{equation}

avec \(z(0)=x\) et \(z(T)=y\text{.}\) On chercha a approcher avec cela une fonction contiue \(y=f(x)\text{.}\) La question est donc de savoir quel est l'espace de fonction que l'on peut approcher en résolvant Définition 11.5. Ce type de réseau ne satisfait pas la propriété d'approximation universelle. On va donner un contre exemple rapide.

En construction

Subsection 11.4.2 Variantes

En construction

Subsection 11.4.3 Symplectique ODEnet

En construction