An introduction to deep learning
Jeremy Fix
November 13, 2024
Slides made with slidemakerÀ partir de données ayant une structure spatiale (localement corrélées), des caractéristiques peuvent être extraites par convolutions.
Sur les Images
Cela a également du sens pour les séries temporelles qui ont une structure dans le temps.
Qu’est-ce qu’une convolution : Exemple en 2D
Vue comme une multiplication matricielle avec des poids fortement régularisés
Étant donné deux vecteurs 1D \(f, k\), disons \(k = [c, b, a]\) \[ (f * k) = \begin{bmatrix} b & c & 0 & 0 & \cdots & 0 & 0 \\ a & b & c & 0 & \cdots & 0 & 0 \\ 0 & a & b & c & \cdots & 0 & 0 \\ 0 & 0 & a & b & \cdots & 0 & 0\\ \vdots & \vdots & \vdots & \vdots & \vdots & \vdots & \vdots\\ 0 & 0 & 0 & 0 & \cdots & b & c \\ 0 & 0 & 0 & 0 & \cdots & a & b \\ \end{bmatrix} . \begin{bmatrix} \\ f \\ \phantom{}\end{bmatrix} \]
Les caractéristiques locales peuvent être combinées pour apprendre
des caractéristiques de plus haut niveau.
Construisons un détecteur de maison
Idées Utiliser la structure des entrées pour limiter le nombre de paramètres sans limiter l’expressivité du réseau
Pour les entrées avec des corrélations spatiales (ou temporelles), les caractéristiques peuvent être extraites avec des convolutions de noyaux locaux
Une convolution peut être vue comme une couche entièrement connectée avec :
\(\rightarrow\) fortement régularisée !
L’architecture de LeNet-5 (LeCun et al., 1989), appelons-la le CNN classique
Architecture
Deux parties principales :
- partie convolutive : C1 -> C5 : convolution - non-linéarité -
sous-échantillonnage
- partie entièrement connectée : linéaire - non-linéarité Spécificités
:
- Sous-échantillonnage pondéré
- Connexions gaussiennes (couche de sortie RBF)
- motif de connectivité \(S_2 - C_3\)
pour réduire le nombre de poids
Nombre de paramètres :
Couche | Paramètres |
---|---|
\(C_1\) | \(156\) |
\(S_2\) | \(12\) |
\(C_3\) | \(1.516\) |
\(S_4\) | \(32\) |
\(C_5\) | \(48.120\) |
\(F_6\) | \(10.164\) |
Convolution :
- taille (par ex. \(3 \times 3\), \(5\times 5\))
- remplissage (padding) (par ex. \(1\),
\(2\))
- pas (stride) (par ex. \(1\))
Pooling (max/moyenne) :
- taille (par ex. \(2\times 2\))
- remplissage (par ex. \(0\))
- pas (par ex. \(2\))
Nous travaillons avec des tenseurs 4D pour les images 2D, des tenseurs 3D pour les séries temporelles nD (par ex. plusieurs enregistrements simultanés), des tenseurs 2D pour les séries temporelles 1D
Dans Pytorch, les tenseurs suivent la convention Batch-Canal-Hauteur-Largeur (BCHW, canal en premier). D’autres frameworks, comme TensorFlow ou CNTK, utilisent BHWC (canal en dernier).
Code Pytorch pour implémenter un CNN : Conv1D Conv2D, MaxPool1D MaxPool2D, AveragePooling, etc…
Tout doit être placé dans une sous-classe de nn.Module :
class MyModel(torch.nn.Module):
def __init__(self, ....):
super(MyModel, self).__init__()
self.conv_model = nn.Sequential(...)
output_size = ...
self.fc_model = nn.Sequential(...)
def forward(self, inputs):
conv_features = self.conv_model(inputs)
conv_features = conv_features.view(inputs.shape[0], -1)
return self.fc_model(conv_features)
Vous pouvez (devriez 😁 ) utiliser la couche récemment introduite de nn.Flatten
Introduit dans (Ciresan, Meier, & Schmidhuber, 2012), ensemble de CNNs entraînés avec augmentation de données
Introduit dans (Krizhevsky, Sutskever, & Hinton, 2012), l’“étincelle” donnant naissance à la renaissance des réseaux de neurones.
La première couche a appris à extraire des caractéristiques significatives
Vainqueur ILSVRC’13. Introduit dans (Zeiler & Fergus, 2014)
Études d’ablation sur AlexNet : les couches FC ne sont pas si importantes
A introduit l’idée du préentraînement supervisé (préentraînement sur ImageNet, ajustement du softmax pour Caltech-101, Caltech-256, Pascal 2012)
SGD mini-batch(128), momentum(0.9), taux d’apprentissage (0.01) planification manuelle
Deconvnet calcule approximativement le gradient de la perte par rapport à l’entrée (Simonyan, Vedaldi, & Zisserman, 2014). Il diffère dans la façon dont le ReLu est intégré.
Second à ILSVRC’14. Introduit par (Simonyan & Zisserman, 2015).
Introduit dans (Springenberg, Dosovitskiy, Brox, & Riedmiller, 2015).
Vainqueur ILSVR’14. Introduit par (Szegedy et al., 2014).
Idée Détection de caractéristiques multi-échelles et réduction de dimensionnalité
Vainqueur ILSVRC’15. Introduit dans (He, Zhang, Ren, & Sun, 2016a)
Réseaux Highway (Srivastava, Greff, & Schmidhuber,
2015)
\[ y = T(x).H(x) + C(x).x \]
DenseNets
Fitnet [Romero(2015)], Wideresnet(2017), Mobilenetv1, v2, v3 [Howard(2019)] : recherche de la meilleure architecture, EfficientNet (Tan & Le, 2020)
Voir aussi :
Vous devriez augmenter le nombre de filtres tout au long du réseau :
Exemples :
EfficientNet (Tan & Le, 2020) étudie les stratégies de mise à l’échelle des modèles convolutifs.
For calculating the effective receptive field size, see this guide on conv arithmetic.
Le champ récepteur effectif peut grandir plus vite avec des convolutions a-trou (ou convolution dilatée) (Yu & Koltun, 2016):
Illustration de ce guide sur l’arithmétique convolutive. Le constructeur de Conv2D accepte un argument dilation
Vous pouvez vérifier la norme du gradient par rapport aux paramètres des premières couches pour diagnostiquer les vanishing gradient
Opérateur | Résolution | Taille CR | #Canaux |
---|---|---|---|
BlocConv | \(32\times32\) | \(5\times5\) | 32 |
BlocConv | \(32\times32\) | \(9\times9\) | 32 |
Sous | \(16\times16\) | \(15\times15\) | 32 |
BlocConv | \(16\times16\) | \(15\times15\) | 128 |
BlocConv | \(16\times16\) | \(23\times23\) | 128 |
Sous | \(8\times8\) | \(31\times31\) | 128 |
PoolMoy | \(1\times1\) | 128 | |
Linéaire | \(100\) |
BlocConv : 2x [Conv(1x3)-(BN)-Relu-Conv(3x1)-(BN)-Relu]
Sous : Conv(3x3, pas=2)-(BN)-Relu
Paramètres communs :
Différentes configurations :
Nombre de paramètres : \(\simeq 2M\)
Temps par epoch (1080Ti) : 17s, 42min temps
d’entraînement Si appliquée, seuls les poids des couches de convolution
et linéaires sont régularisés (pas les biais, ni les coefficients de la
normalisation par lots)
Voir plutôt le document en ligne references.pdf