# Réseau neuronal résiduel

Un réseau neuronal résiduel (ResNet) est un réseau neuronal artificiel (ANN). Il s'agit d'une variante du HighwayNet , le premier réseau neuronal à action directe très profond avec des centaines de couches, beaucoup plus profond que les réseaux neuronaux précédents. Les sauts de connexion ou « raccourcis » sont utilisés pour passer par-dessus certaines couches (les HighwayNets peuvent également avoir des poids pour les sauts eux-mêmes, grâce à une matrice de poids supplémentaire pour leurs portes). Les neurones à l'origine d'un saut de connexion sont appelés les neurones « amonts ». Les modèles ResNet typiques sont mis en œuvre avec des sauts à double ou triple couche qui contiennent des non-linéarités (ReLU) et une normalisation par lots entre les deux. Les modèles avec plusieurs sauts parallèles sont appelés DenseNets. Dans le contexte des réseaux de neurones résiduels, un réseau non résiduel peut être décrit comme un réseau simple.
Comme dans le cas des réseaux de neurones récurrents à mémoire longue et à court terme, il existe deux raisons principales d'ajouter des connexions de saut : pour éviter le problème d’évanescence des gradients, conduisant ainsi à une optimisation plus facile des réseaux de neurones, où les mécanismes de déclenchement faciliter le flux d'informations à travers de nombreuses couches (« autoroutes de l'information »), ou pour atténuer le problème de dégradation (saturation de la précision) ; où l'ajout de couches supplémentaires à un modèle suffisamment profond peut augmenter les erreurs liées à l'apprentissage. Dans le cas le plus simple, seuls les poids de la connexion de la couche précédente sont adaptés, sans poids explicites pour la couche amont. Cela fonctionne mieux lorsqu'une seule couche non linéaire est franchie ou lorsque les couches intermédiaires sont toutes linéaires. Si ce n'est pas le cas, une matrice de pondération explicite doit être apprise pour la connexion ignorée (un HighwayNet doit être utilisé).
Les sauts peuvent permettre une simplification efficace du réseau, en utilisant moins de couches dans les étapes de formation initiales . Cela accélère l'apprentissage en réduisant l'impact de l’évanescence des gradients, car il y a moins de couches à traverser. Le réseau restaure ensuite progressivement les couches ignorées au fur et à mesure qu'il apprend l' espace des caractéristiques . Vers la fin de l'entraînement, lorsque toutes les couches sont développées, il reste plus proche du collecteur et apprend ainsi plus vite. Un réseau de neurones sans parties résiduelles explore davantage l'espace des caractéristiques. Cela le rend plus vulnérable aux perturbations et nécessite des données d'entraînement supplémentaires pour compenser.
Un réseau neuronal résiduel a été utilisé pour remporter le concours ImageNet 2015, et est devenu le réseau neuronal le plus cité du 21e siècle.
Étant donné une matrice de poids W$^{ℓ−1, ℓ}${\textstyle W^{\ell -1, \ell }} pour les poids de connexion de la couche ℓ−1{\textstyle \ell -1} pour ℓ{\textstyle \ell }, et une matrice de poids W$^{ℓ−2, ℓ}${\textstyle W^{\ell -2, \ell }} pour les poids de connexion de la couche ℓ−2{\textstyle \ell -2} à ℓ{\textstyle \ell }, alors la propagation vers l'avant à travers la fonction d'activation (alias HighwayNets) est
    ${\begin{aligned}a^{\ell }&:=\mathbf {g} (W^{\ell -1,\ell }\cdot a^{\ell -1}+b^{\ell }+W^{\ell -2,\ell }\cdot a^{\ell -2})\\&:=\mathbf {g} (Z^{\ell }+W^{\ell -2,\ell }\cdot a^{\ell -2})\end{aligned}}$
    a$^ℓ${\textstyle a^{\ell }} : activations (sorties) des neurones dans la couche ℓ{\textstyle \ell } ,
    g{\textstyle \mathbf {g} } : fonction d'activation pour la couche ℓ{\textstyle \ell } ,
    W$^{ℓ−1, ℓ}${\textstyle W^{\ell -1, \ell }} : matrice de poids pour les neurones entre les couches ℓ−1{\textstyle \ell -1} et ℓ{\textstyle \ell },
    Z$^ℓ$=W$^{ℓ−1, ℓ}$⋅a$^{ℓ−1}$+b$^ℓ${\textstyle Z^{\ell }=W^{\ell -1, \ell }\cdot a^{\ell -1}+b^{\ell }}
Si le nombre de sommets sur la couche ℓ−2{\textstyle \ell -2} est égal au nombre de sommets sur le calque ℓ{\textstyle \ell } et si W$^{ℓ−2, ℓ}${\textstyle W^{\ell -2, \ell }} est la matrice d'identité, la propagation vers l'avant à travers la fonction d'activation se simplifie en $a^{\ell }:=\mathbf {g} (Z^{\ell }+a^{\ell -2}).$ Dans ce cas, la connexion entre les couches ℓ−2{\textstyle \ell -2} et ℓ{\textstyle \ell } s'appelle un bloc d'identité .
Dans le cortex cérébral, ces sauts vers l'avant sont effectués pour plusieurs couches. Habituellement, tous les sauts vers l'avant partent de la même couche et se connectent successivement aux couches ultérieures. Dans le cas général, cela sera exprimé comme (alias DenseNets)
    $a^{\ell }:=\mathbf {g} \left(Z^{\ell }+\sum _{k=2}^{K}W^{\ell -k,\ell }\cdot a^{\ell -k}\right)$ .

## Propagation vers l'arrière

Pendant l'apprentissage par rétropropagation pour le chemin normal
    $\Delta w^{\ell -1,\ell }:=-\eta {\frac {\partial E^{\ell }}{\partial w^{\ell -1,\ell }}}=-\eta a^{\ell -1}\cdot \delta ^{\ell }$
et pour les chemins de saut (presque identiques)
    $\Delta w^{\ell -2,\ell }:=-\eta {\frac {\partial E^{\ell }}{\partial w^{\ell -2,\ell }}}=-\eta a^{\ell -2}\cdot \delta ^{\ell }$ .
Dans les deux cas
    η{\textstyle \eta } un taux d'apprentissage ( η<0){\textstyle \eta <0)} ,
    δ$^ℓ${\textstyle \delta ^{\ell }} le signal d'erreur des neurones au niveau de la couche ℓ{\textstyle \ell }, et
    a$_i$$^ℓ${\textstyle a_{i}^{\ell }} l'activation des neurones au niveau de la couche ℓ{\textstyle \ell } .
Si le chemin de saut a des poids fixes (par exemple la matrice d'identité, comme ci-dessus), alors ils ne sont pas mis à jour. Si elles peuvent être mises à jour, la règle est une règle de mise à jour de rétropropagation ordinaire.
Dans le cas général, il peut y avoir K{\textstyle K} sauter les matrices de pondération des chemins, donc
    $\Delta w^{\ell -k,\ell }:=-\eta {\frac {\partial E^{\ell }}{\partial w^{\ell -k,\ell }}}=-\eta a^{\ell -k}\cdot \delta ^{\ell }$
Comme les règles d'apprentissage sont similaires, les matrices de poids peuvent être fusionnées et apprises durant la même étape.