Skip to main content

Section 5.2 Réseaux de neurones convolutifs

Les réseaux convolutifs sont des réseaux spécialisés à des données structurés sur une grille comme des images. C'est le succès d'un réseau convolutif profond qui a relancer en 2010-12 l'intérêt pour l'apprentissage profond. Ce type de réseau a été introduit par analogie avec le système occulaire. Ici on propose de les introduire par des arguments mathémtiques qui sont plutôt venus après.

Subsection 5.2.1 Données structurées et a priori

Si on suit les résultats théoriques précédent on voit que les réseaux de neurones totalement connectés ne permettent de briser la malédiction de la grande dimension même augmenter la profondeur semble être une solution pour améliorer les choses. Maintenant considérons des problèmes de type EDP ou de type traitement du signal. Construire une fonction capable de classifier des images ou de déterminer les contours d'une forme d'une image (segmentation). La dimension d'entrée est la taille du nombre de pixels. On voit donc qu'il va s'agir d'un problème en très grande dimension. De la même façon imaginons un réseau qui prend une fonction \(f\) discrétisée sur un maillage et renvoie la solution du problème de Laplace \(-\Delta u=f\) associé. Dans ce cas la dimension du problème est le nombre de dégré de liberté du maillage ce qui peut être la encore très important.

Cependant dans les deux cas, on supposer que la dimension réelle du problème est plus faible. En effet dans les deux cas il s'agit d'un problème structuré. Lorsqu'on regarde une image qui a du sens, les pixels voisins ne sont pas totalement indépendants. De la même façon lorsqu'on regarde une fonction continue discrétisée l'ensemble des valeurs possibles pour deux valeurs voisines est plus petit que si on regarde du bruit. Cette corrélation entre les données peut laisser supposer qu’ en pratique le problème est en dimension plus petite. Les réseaux convolutifs ont été conçus pour même de façon très basique le fonctionnement de la vision humaine. Une fois qu'on à pu remarquer leurs extrêmes efficacités on a essayé de comprendre pourquoi cela marchait aussi bien. L'iée qui est apparu c'est que finalement les réseaux convonlutifs encodent dans leurs architectures un certain nombre de propriétés de du problème qui permet de réduire drastiquement l'espace des fonctions possibles. C'est notamment l'objet des articles de S. Mallat [1.12] et des travaux en apprentissage géométrique [1.11]. On se propose de construire les réseaux convolutifs rapidement en suivant plus ses arguments.

Subsubsection 5.2.1.1 Symétrie

Le premier ingrédient qui va être utile c'est la notion de symétrie. Une symétrie est une transformation sur une donnée d'entrée d'une fonction qui va laisser inchangé le résultat de la fonction. La notion de symétrie est fondamentale pour permettre de réduire la dimension du problème. Imaginons qu'on doive déterminer une fonction \(f(\bs{x}): \mathbb{R}^2 \rightarrow \mathbb{R}^2\) tel que

\begin{equation*} f(\bs{x}): A\bs{x} \end{equation*}

avec \(A\) une matrice carrée de taille deux. On suppose que dans le problème qu'on regarde on sait que la fonction est une isométrie donc \(\parallel A \bs{x}\parallel_2 = \parallel \bs{x}\parallel_2\text{.}\) En passant en coordonnée polaire on peut montrer que cela revient à ce que \(A\) soit une matrice de rotation directe (déterminant positif) ou indirecte (déterminant négatif). On voit donc qu'il suffit de déterminer l'angle et de caractère direct ou indirect. La dimension intrasec du problème devient plutôt deux. Une idée est donc d'introduire certaines symétries du problème dans le réseau qu'on utilisera. Dans [1.11] il formalise cela pour les signaux structurés sur certains domaines (cela permet de généraliser à des données structurées autrement que sur des grilles) à l'aide de la théorie des groupes.

Définition 5.22.

On appelle un signal \(\mathcal{C}\)-valué sur le domaine \(\Omega\) une fonction:

\begin{equation*} \bs{x}(u):\Omega \rightarrow \mathcal{C} \end{equation*}

Chaque composante de \(\mathcal{C}\) est appelée \(canal\text{.}\) On peut y associé un espace de fonction \(L(\Omega,\mathcal{C})\) munit du produit scalaire

\begin{equation*} \langle \bs{X},\bs{Y}\rangle_{L}= \int \langle \bs{x}(\bs{u}),\bs{x}(\bs{u})\rangle_{\mathcal{C} } d \bs{u} \end{equation*}
Pour les réseaux convolutifs classiques \(\Omega\) sera un sous espace de \(\mathbb{R}^d\text{.}\) Pour des réseaux plus évolués qui traite de données structurées sur des graphes ou des maillages \(\Omega\) peut représenter une variété régulière.
Définition 5.23. Groupe.

On considère un ensemble \(\mathcal{G}\) munit d'une loi de composition interne \(\circ\)

\begin{equation*} \circ: \mathcal{G} \circ \mathcal{G} \rightarrow \mathcal{G} \end{equation*}

est un groupe si on satisfait les propriétés suivantes:

  • Associativité: \(a \circ (b\circ c) = (a \circ b)\circ c,\quad \forall a,b,c\in \mathcal{G} \)

  • Elément neutre: \(\exists e\in \mathcal{G}, \quad e \circ a = a, \forall a \in \mathcal{G} \)

  • Inverse: \(\exists a^{-1}\in \mathcal{G}, \quad a^{-1}\circ a = e, \forall a \in \mathcal{G} \)

Définition 5.24. Action de Groupe.

On considère un ensemble \(\mathcal{G}\) munit d'une loi de composition interne \(\circ\) d'élément neutre \(e\text{.}\) On considère un ensemble \(\Omega\text{.}\) Un Action de groupe est une application

\begin{equation*} \begin{cases} \amp \mathcal{G} \times \Omega \rightarrow \Omega \\ \amp (g,x)\rightarrow (g\cdot x) \end{cases} \end{equation*}

qui satisfait

\begin{equation*} \forall x\in \Omega, \quad e\cdot x= x \end{equation*}

et

\begin{equation*} \forall (g_1,g_2)\in \mathcal{G}^2, \forall x\in\Omega, \quad g_1\cdot \underbrace{(g_2\cdot x)}_{\in \Omega}= \underbrace{(g_1 \circ g_2)}_{\in \mathcal{G}}\cdot x \end{equation*}
On se donne pour \(\Omega =\mathbb{R}^2\) l'ensemble des vecteurs en dimension deux et \(\mathcal{G}\) le groupe des isométries dans \(\mathbb{R}^2\) muni de la composition qui se compose de l'union des matrices de rotation de déterminant positif et des matrices de notation de déterminant négatif. Ce groupe agit naturellement sur \(\mathbb{R}^2\). En effet, appliquer une première rotation puis une autre est équivalent à appliquer la composition de ses rotations.
On va maintenant introduire la notion de représentation de groupe.
Définition 5.26. Représentation de groupe.

Soit \(\mathcal{G}\) un groupe, soit \(E\) un \(\mathbb{K}\) espace vectoriel. Une une représentation de groupe est une application

\begin{equation*} \rho: \mathcal{G} \rightarrow GL(E) \end{equation*}

avec \(GL(E)\) l'espace des endomorphismes bijectifs linéaires de \(E\) dans \(E\) qui satisfait \(\rho(g_1 g_2): \rho (g_1)\circ \rho(g_2), \quad \forall g_1,g_2\in G^2\) On écrit une action de groupe sur \(x\in E\) à travers sa représentation comme:

\begin{equation*} \rho(g)\cdot x \end{equation*}
Une représentation de groupes est un moyen de voir un groupe comme un groupe de matrices inversibles, dans le but de comprendre certaines propriétés du groupe à l'aide des propriétés des matrices associées.
  • Propriété 1: soit \(e\) l'élément neutre de \(\mathcal{G}\)

    \(e\cdot x(u)= x(e^{-1}\cdot u) = x(e \cdot x)=x(u)\) car \(\mathcal{G}\) agit sur \(\Omega\text{.}\)

  • Propriété 2: soit \(g_1,g_2\) des éléments de \(\mathcal{G}\)

    D'abord

    \begin{equation*} A=g_2\cdot (g_1\cdot x(u))= (g_1\cdot f)(g_2^{-1}\cdot u) = x(g_1^{-1}\cdot (g_2^{-1}\cdot u)) \end{equation*}

    Ensuite

    \begin{equation*} B=(g_2\circ g_1)\cdot x(u)= f(g_2\circ g_1)^{-1} \cdot u) = x(( g_1^{-1 }\circ g_2^{-1}) \cdot u) \end{equation*}

    On démontre facilement que pour un groupe \(g_2\circ g_1)^{-1} =g_1^{-1 }\circ g_2^{-1} \text{.}\) Puisque \(\mathcal{G}\) agit sur \(\Omega\) on a

    \begin{equation*} ( g_1^{-1 }\circ g_2^{-1}) \cdot u = g_1^{-1}\cdot (g_2^{-1}\cdot u) \end{equation*}

    donc \(A=B\) ce qui conclut la preuve.

Maintenant on va pouvoir introduire les notions qui nous seront essentielles pour justifier et introduire les réseaux convolutifs. Ici notre signal correspond l'entrée d'un réseau, il s'agit de \(f(x)\text{.}\) L'ensemble \(\Omega\) correspond au support de notre signal (grille, maillage, graphe ou espace continue). En pratique on ne considera ici que le cas des grilles.
Définition 5.28. Invariance.

On se donne une fonction \(f: L(\Omega,\mathcal{C}) \rightarrow V\) qui transforme un signal. Cette fonction est dit \(\mathcal{G}\)-invariante si \(\forall g\in \mathcal{G}\) et \(\forall x\in L(\Omega,\mathcal{C})\) un signal on a

\begin{equation*} f(\rho(g)x)=f(x) \end{equation*}
Cela revient a dire qu'une application sur notre signal est invariante par rapport un groupe si l'action de groupe sur les signaux laisse invariante notre application.
Définition 5.29. Equivariance.

On se donne une fonction \(N: L(\Omega,\mathcal{C}) \rightarrow V\) qui transforme un signal. Cette fonction est dit \(\mathcal{G}\)-equivariante si \(\forall g\in \mathcal{G}\) et \(\forall x\in L(\Omega,\mathcal{C})\) un signal on a

\begin{equation*} f(\rho(g)x)=\rho(g)f(x) \end{equation*}
Cela revient a dire que l'action du groupe sur les signaux puis appliquer la transformation du signal est égal à transformer le signal puis appliquer l'action de groupe. Maintenant l'enjeu est de déterminer le rôle de ses notions dans la construction d'un réseau.

Les réseaux convolutifs sont construits pour traiter des problèmes de type traitement du signal sur des images. Un problème classique d'apprentissage est la classification. Imaginons qu'on est une image \(x\) et que l'on souhaite déterminer si l'image est un chat ou non. On souhaite construire

\begin{equation*} f_{\theta}(x):\mathbb{R}^n\rightarrow [0,1] \end{equation*}

qui donne la probabilité qu'une image soit un chat ou non. Maintenant raisonnons au niveau du problème qu'on souhaite approcher. Si on applique de translations ou des rotations à l'image a priori le résultat doit rester inchanger notre problème est donc invariant pour les groupes de translation et rotation. Si maintenant on regarde un problème de segmentation ou l'on veut un pixel noir dans le chat et blanc en dehors. On cherche donc a construire une fonction du type

\begin{equation*} f_{\theta}(x):\mathbb{R}^n\rightarrow \left\{0,1\right\}^n \end{equation*}

ici qu'on applique une translation ou rotation avant ou après la segmentation le résultat ne doit pas changer. On a donc un problème équivariant pour les groupes de translation et rotation. On illustre cela sur l'image suivante

Figure 5.30. Principe de l'équivariance

Puisqu'on sait ce que la fonction recherchée admet ce genre de symétrie si on en tient compte, cela permet de réduire l'espace des fonctions cibles. Afin que cette réduction soit effective on va encoder un de ces a priori géométriques dans la structure du réseau. En pratique le plus facile est l'invariance par translation.

On va considérer le cas 1D. Soir une grille \(\Omega\in \mathbb{Z}\) et un signal sur cette grille \(\bs{x} \in\mathbb{R}^{n}\text{.}\) Une couche de réseaux de neurones se décompose en une partie linéaire et une partie nonlinéaire. L'objectif est de déterminer une couche equivariant. La translation d'un pixel vers la droite est définie par

\begin{equation*} S=\begin{pmatrix} 0 \amp 1 \amp \cdots \amp \cdots \amp 0 \\ \vdots \amp 0 \amp 1 \amp \cdots \amp \vdots \\ \vdots \amp \vdots \amp \ddots \amp \ddots \amp \vdots \\ \vdots \amp \vdots \amp \amp \ddots \amp 1 \\ 1 \amp 0 \amp \cdots \amp \cdots \amp 0 \end{pmatrix} \end{equation*}

Si on veut appliquer une translation de \(k\) pixel il suffit de composer cette matrice \(k\) fois. On nomme l'opérateur \(S^k\text{.}\)

  • Partie linéaire:

    La matrice de translation \(S^k\) est aussi une matrice circulante. Hors le produit de matrices circulantes est une matrice circulante et le produit est commutatif. Par conséquent

    \begin{equation*} A S^k \bs{x} = S^k A\bs{x} \end{equation*}
  • Partie non-linéaire:

    La non-linéarité est appliquée localement a chaque composante du vecteur on voit donc qu'appliquer la non-linéarité puis translaté les composantes ou faire l'inverse donne un résultat identique.

On compose les deux parties de la couche maintenant et on a:

\begin{equation*} L(S^k x) = \sigma (A S^k \bs{x} ) = \sigma ( S^k A\bs{x} )= S^k\sigma(A\bs{x} )=S^kL(x) \end{equation*}

ce qui conclut la preuve.

On voit donc que pour obtenir une couche équivariante il suffit de choisir une matrice circulante. Pourquoi appelle-t-on nos réseaux des réseaux convolutifs ? Parce que les matrices sont circulantes sont les matrices des convolution discretes. Par conséquent lorsqu'on applique la partie linéaire de notre couche on est entrain d'appliquer une convolution discrète avec un filtre qu'on doit appendre. L'application de filtre par un produit de convolution est finalement assez naturelle pour introduire un traitement sur un signal.

En construction symétrie rotation et les deux ensembles

Subsubsection 5.2.1.2 Stabilité aux déformations et séparation d'échelle

Avec ce choix, on vient de faire un premier choix pour définir notre couche de convolution. Cependant ce n'est pas suffisant. L'idée est d'introduire un second a priori dans la structure de notre réseau. Ce second a priori est appelé stabilité aux petites déformations. L'idée est simple, si on applique une petite déformation au signal d'entrée on s'attend à ce que la sortie soit peu ou pas modifiée. Si on reprend l'exemple de l'image du chat, une légère dilatation implique un léger changement sur le résultat d'une segmentation par exemple. Pour formaliser cela on introduit le groupe des automorphismes sur \(\Omega\) noté \(Aut(\Omega)\text{.}\) Soit \(\tau\) un élément \(Aut(\Omega)\text{.}\) On note une mesure de \(\tau\text{,}\) \(c(\tau)\) qui est nulle pour les éléments de groupe de translation. On peut choisir par exemple: \(\operatorname{sup}_{u\in \Omega}\parallel \nabla \tau(u)\parallel_2^2\text{.}\)

Définition 5.32. Stabilité aux déformations.

Soit un signal \(x\in L(\Omega,\mathbb{R})\) une transformation sur les signaux \(f\text{.}\) Cette transformation est dite stable aux déformations si

\begin{equation*} \parallel f(\rho(\tau)x)-f(x)\parallel \le C c(\tau)\parallel x\parallel \end{equation*}

avec \(\rho(\tau)x=x(\tau^{-1}u)\text{.}\)

On parle de stabilité aux petites déformations si \(c(\tau) =O(\epsilon)\) avec \(C\) une constante indépendante de \(\epsilon\text{.}\)
Ce principe est résumé sur la figure Figure 5.33.
Figure 5.33. Exemple du principe de stabilité aux petites déformations.
On voit que cette fonction englobe l'invariance par translation. Dans la suite on voit la transformation \(f\) comme une couche d'un réseau de neurones. Comme dit précédemment ces couches appliquent moralement une convolution ce qui revient à multiplier la transformée de Fourier du signal \(x\) notée \(\hat{x}\) par une filtre avant de revenir dans l'espace physique. Imaginons maintenant que \(f\) est une fonction qui agit sur le spectre comme par exemple: \(\mid \hat{x}(\omega)\mid \text{.}\) On se donne une transformation \(\tau(u)=(1-\epsilon u)\) est contractante. On a

\begin{equation*} \mathcal{F} (x( (1-\epsilon)u ))=\frac{1}{1-\epsilon}\hat{x}\left(\left(\frac{1}{1-\epsilon}\right)\omega\right)\approx \hat{x}( (1+\epsilon)\omega ) \end{equation*}

avec \(\omega\) la fréquence. Imaginons qu'on est un signal tel que

\begin{equation*} f(x)=\mid \hat{x}(\omega)\mid = e^{-\frac{1}{\sigma}(\omega -\omega_0 )^2} + e^{-\frac{1}{\sigma}(\omega +\omega_0 )^2} \end{equation*}

On a donc lorsqu'on applique la petite déformation:

\begin{equation*} e^{-\frac{1}{\sigma}(\omega(1+\epsilon) -\omega_0 )^2}= e^{-\frac{(1+\epsilon)^2}{\sigma}(\omega -\frac{\omega_0}{1+\epsilon} )^2}\approx e^{-\frac{(1+\epsilon)^2}{\sigma}(\omega -(1-\epsilon)\omega_0 )^2} \end{equation*}

donc

\begin{equation*} f(g\cdot \tau)\approx e^{-\frac{(1+\epsilon)^2}{\sigma}(\omega -(1-\epsilon)\omega_0 )^2} + e^{-\frac{(1+\epsilon)^2}{\sigma}(\omega +(1-\epsilon)\omega_0 )^2} \end{equation*}

On a donc en plus de la dilatation des deux gaussiennes une translation du centre de taille \(\epsilon \omega_0\text{.}\) Si la fréquence \(\omega_0\) la translation du centre peut devenir importante et donc les supports des gaussiennes d'origines et de celles translatées deviennent disjoints. Dans ce cas la distance \(\mid f(x)-f(g\cdot \tau)\mid\) pourra être grande pour toute une gamme de valeur de \(\epsilon\text{.}\) On voit donc que les opérations agissant sur le spectre entier du signal comme le module sont instable pour les hautes fréquences. On peut en déduire qu'utiliser des convolutions appliquant des filtres globaux peuvent être assez instable. On ne détaillera pas, mais a l'inverse introduire des transformations locales (comme ce qu'on fait avec des ondelettes) est stable par rapport aux petites déformations.

Filtres locaux en espaces.

Afin d'obtenir de la stabilité par rapport aux petites déformations on choisit d'appliquer des filtres (noyaux) localisés en espace dans nos couches convolutives. On obtient donc des matrices de poids creuses avec un nombre faible de diagonales non nulles. Le stencil du noyau de convolution dans chaque direction (équivalent aux nombres de diagonales non nulles) se nomme taille des noyaux.

Définition 5.34. Couche de convolution.

Soit une entrée composée de plusieurs canaux (signaux) \(x=(x_1,...,x_m)\) avec \(x_i\) en dimension \(d\) (1,2 ou 3) avec \(n\) données par dimension. Une couche convolutive applique \(k\) filtres de convolution (donc multiplie chaque signal par \(k\) matrices circulantes) et on obtient en sorti \(k\) signaux. Cela revient d'entrée de taille \(m \times n^d\) et une sortie de taille \(k\times n^d\text{:}\)

\begin{equation*} g_i^{con} = \sigma\left( \sum_{j=1}^m K_{ij} f_j\right) \end{equation*}

pour \(0\le i\le k\text{.}\)

Le dernier "a priori" introduit dans les réseaux est ce qu'on appelle la séparation d'échelle.
Figure 5.35. Problème de classification et raffinement. (Cours geometric Deep learning)
Sur la figure Figure 5.35 on voit que le problème de classification entre des images de plage et de montagne est un problème ou les échelles grossières domine. Cela revient à dire que la sortie de la fonction qui prend l'image et renvoit la probabilité d'être une montagne ou une plage est invariante par raffinement ou dé-raffinement de la grille. En tenant compte de cela on peut diminuer la dimension du problème soit en apprenant sur grille grossière soit en encoder cette inavriance dans le réseau. C'est une première façon de casser la grande dimension. Une seconde possbilité correspond à l'image Figure 5.36.
Figure 5.36. Problème de classification et échelles locales. (Cours geometric Deep learning)
Ici on voit que la fonction qu'on cherche a construire \(f(x)=\sum_{i=1}g(x_i)\) ou \(x_i\) est un petit patche de l'image d'origine. Dans ce cas précis on voit qu'en construisant notre transformation de classification sur les patches on va pouvoir reconstruire facilement la transformation globale. Il suffit donc d'apprendre sur les patches ce qui réduit la dimension. On parle de domination des échelles locales. Ces deux hypothèses permettent de casser la grande dimension mais sont pas réalistes. La solution proposée par l'analyse multi-échelle et par les réseaux convolutifs l'idée est de traiter d'abord les interactions locales puis d'aller vers des interactions de plus en plus globales. Pour cela on se propose de réduire la dimension des images avec un opérateur de "pooling" qui dé-raffine l'image ou le signal.
Définition 5.37. Couche de "pooling".

Soit un signal \(x\) en dimension \(d\) avec \(n\) données par dimension. L'opérateur de pooling est un opérateur de \(\mathbb{R}^{n^d}\) vers \(\mathbb{R}^{(\frac{n}{k})^d}\) ou \(k \times d\) pixel sont transformés en \(1\) pixel. Si on prend la moyenne on parle pooling moyen local. Si on prend le maximum on parle pooling maximal local.

Figure 5.38. Exemple de max-pooling. (Google Image)

Subsection 5.2.2 Architectures de réseau convolutifs

Dans les réseaux convolutifs on applique en général plusieurs filtres convolutifs sur chaque signal (on parle channel). En enchaînant des couches convolutifs et de pooling on obtient à la fin une série de signaux de petite taille. En classification on cherche à obtenir à la fin un nombre unique dans \([0,1]\text{.}\) Pour convertir nos signaux on applique une couche d'aplatissement du signal appelé flatten et ensuite on applique un réseau totalement connecté.

Figure 5.39. Exemple de classifieur convolutif. (Google Image)
Les réseaux convolutifs souffrent aussi de problèmes de disparition/explosion de gradient lors de l'apprentissage s’ils sont trop profonds. L'ensemble des méthodes que l'ont a vu précédemment peuvent être appliquée pour limiter cela. Cependant une approche en plus a été proposée pour limiter cela. On parle des couches résiduelles. Cette méthode a été proposée pour les réseaux convolutifs, mais s'applique sans problèmes aux réseaux de type MPC.
Figure 5.40. Disparition de gradient dans un réseau convolutif. (Google Image)
En cas de disparition de gradient comme sur Figure 5.40 certaines couches deviennent non-entraînables. Une solution simple pour cela c'est d'ajouter une connexion entre certains blocs qui permettraient au gradient de "passer" dans tout les cas.

Définition 5.41. Couche et bloc résiduels.

On appelle une couche de neurones résiduelle une fonction \(L:\bs{x}\in \mathbb{R}^{d_i} \rightarrow \bs{y}\in\mathbb{R}^{d_{i+1}}\) définie par

\begin{equation} L_{i,i+1}(\bs{x})= \sigma (A \bs{x} + \bs{b} + \bs{x} ) \tag{5.7} \end{equation}

On appelle un bloc (séries de couches répétées) residuel un bloc de la forme:

\begin{equation*} B_{k}= \bs{x} + L_{n-1,n} \circ....\circ L_{0,1}(x) \end{equation*}

avec \(L_{i,i+1}\) des couches.

On voit que les réseaux ResNet on ajoute l'identité ( on parle de "shortcut" aussi) avant d'appliquer la non-linéarité à une couche ou a un bloc. Évidemment la présence de cette identité permet de stabiliser le gradient. Une des propriétés de cette approche est de changer la structure des fonctions approximables lorsqu'on augmente le nombre de couches.

Figure 5.42. Espace des fonctions approchable par un réseau avant ou sans couche résiduel. (Book "Dive into deep learning")
En effet sur la figure Figure 5.42 on voit que dans les deux cas (avec et sans couches résiduelles) l'espace des fonctions qui peuvent être approchées par le réseau va augmenter avec le nombre de couches. Cependant avec les couches résiduelles l'espace croit en incluant toujours l'espace précédent ce qui n'est pas le cas si on a pas de couches résiduelles. Sur la figure Figure 5.43 on donne un exemple de réseaux résiduels profonds. Avec ce genre d'architecture on a pu aller vers des réseaux convolutifs à 20/30 couches.
Figure 5.43. Exemple de réseau Residuel (ResNet). (Book "Dive into deep learning")
Pour finir, on va introduire une architecture classique pour des problèmes de régressions ou la sortie est aussi une image. On parle de l'architecture UNet. Il s'agit d'un réseau utilisé pour la segmentation d'image. L'idée est de décroître la dimension en enchaînant des couches de convolution et de pooling tout en multipliant le nombre de canaux avant de faire l'inverse et remonter vers le signal original.
Figure 5.44. Exemple de réseau Unet (Google image).
Il existe beaucoup de variantes dans les architectures de réseaux convolutifs. On ne les détaillera pas ici.

Subsection 5.2.3 Comparaison avec les réseaux totalement connecté

On a expliqué précédemment que les réseaux convolutifs encodaient dans leurs structures des apriori sur les problèmes de traitement du signal. Ces apriori vont permettent d'obtenir des meilleurs réesultats avec des réseaux totalement connectés. Pour montrer cela on va introduire un cas test simple.

On génère aléatoirement des sinus de fréquentes différentes et on ajoute aléatoirement des discontinuités dans les fonctions obtenues. On obtient donc des images de sinus, avec dans certains cas des discontinuités. On se propose, de résoudre un problème de classification qui detecte dans quel image il existe des discontiuités. On donne un exemple sur la figure suivante Figure 5.45.

Figure 5.45. Deux exemples de sinus sans et discontinuités.
Pour résoudre ce problème on utilise deux réseaux totalement connectés à 5 couches qui utilisent 566000 et 236000 paramètres et un réseau convolutif avec 6 couches et 41000 paramètres. Après des entrainement de même durée on obtient un taux de bonnes réponses autour de 50% pour les réseaux totalement connectés. Quand à lui le réseau convolutif donne un taux de bonnes réponses autour de 90-95%. On voit donc que le réseau CNN est bien meilleur malgré un nombre de poids 5 à 10 fois plus faible. Cet exemple, comme d'autre, montre que les réseaux CNNsont bien plus adpatés à ce type de problème.