[PYTHON] Spécialisation en apprentissage profond (Coursera) Dossier d'auto-apprentissage (C4W2)
introduction
Voici le contenu du cours 4, semaine 2 (C4W2) de Spécialisation en apprentissage profond.
(C4W2L01) Why look at case studies?
Contenu
- Aperçu de cette semaine
- Classic Networks
- ResNet (152 layers)
- Inception
(C4W2L02) Classic Networks
Contenu
LeNet-5 (1998)
- Input ; 32 x 32 x 1
- CONV (5x5, s=1) ; 28 x 28 x 1
- Avg POOL (f=2, s=2) ; 14 x 14 x 6
- CONV (5x5, s=1) ; 10 x 10 x 16
- Avg POOL (f=2, s=2) ; 5 x 5 x 6
- FC; 120 paramètres
- FC; 84 paramètres
- \hat{y}
--Nombre de paramètres; 60k
- $ n_H $, $ n_W $ deviennent plus petits et $ n_C $ devient plus grand
--Réseaux typiques de CONV, POOL, CONV, POOL, FC, FC
AlexNet (2012)
- Input ; 227x227x3
- CONV (11x11, s=4) ; 55 x 55 x 96
- Max POOL (3x3, s=2) ; 27 x 27 x 96
- CONV (5x5, same) ; 27 x 27 x 256
- Max POOL (3x3, s=2) ; 13 x 13 x 256
- CONV (3x3, same) ; 13 x 13 x 384
- CONV (3x3, same) ; 13 x 13 x 384
- CONV (3x3, same) ; 13 x 13 x 256
- Max POOL (3x3, s=2) ; 6 x 6 x 256
- FC; 4096 paramètres
- FC; 4096 paramètres
- softmax; 1000 paramètres
- Similarity to LeNet, but much bigger (\sim 60M parameters)
- ReLU
- Multiple GPUs
- Local Response Normalization
VGG-16
- CONV = 3x3 filter, s=1, same
- Max POOL = 2x2, s=2
- Input ; 224 x 224 x 3
- CONV64 x 2 ; 224 x 224 x 64
- POOL ; 112 x 112 x 64
- CONV128 x 2 ; 112 x 112 x 128
- POOL ; 56 x 56 x 128
- CONV256 x 3; 56 x 56 x 256
- POOL ; 28 x 28 x 256
- CONV512 x 3; 28 x 28 x 512
- POOL ; 14 x 14 x 512
- CONV512 x 3 ; 14 x 14 x 512
- POOL ; 7 x 7 x 512
- FC; 4096 paramètres
- FC; 4096 paramètres
- Softmax; 1000 paramètres
--Nombre de paramètres; $ \ sim 138 millions de dollars
- Uniformité structurelle relative
Impressions
――La rapidité du temps où 2015 s'exprime comme classique
(C4W2L03) Residual Networks (ResNet)
Contenu
-
Residual block
- a^{[l]}
- z^{[l+1]} = W^{[l+1]}a^{[l]} + b^{[l+1]}
- a^{[l+1]} = g(z^{[l+1]})
- z^{[l+2]} = W^{[l+2]}a^{[l+1]} + b^{[l+2]}
- a^{[l+1]} = g(z^{[l+1]} + a^{[l]})
-
Plus la couche est profonde, plus l'erreur d'apprentissage est grande dans un réseau normal.
――Mais avec ResNet, les erreurs d'entraînement diminuent même si elles dépassent 100 couches. Efficace pour apprendre les réseaux profonds
(C4W2L04) Why ResNets works
Contenu
--Si $ W ^ {[l + 2]} = 0 $, $ b ^ {[l + 2]} = 0 $, alors $ a ^ {[l + 2]} = g (a ^ {[l] ]}) = a ^ {[l]} $
- La fonction d'identité est facile à apprendre pour le bloc résiduel (le bloc résiduel est facile à apprendre pour le bloc résiduel)
(C4W2L05) Network in network and 1x1 convolutions
Contenu
- Why does a 1x1 convolution do?
- (6 \times 6 \times 32) \ast (1 \times 1 \times 32) = (6 \times 6 \times
\textrm{#filters})
--Image de l'application entièrement connecté (FC) à chaque pixel d'entrée
- Également connu sous le nom de réseau en réseau
- Using 1x1 convolutions
- Input ; 28 \times 28 \times 192
- ReLU, CONV 1x1, 32 filters → Output ; 28 \times 28 \times 32
- $ n_C $ peut être réduit
(C4W2L06) Inception network motivation
Contenu
- Appliquez ce qui suit à l'entrée (28x28x192) et combinez-les.
- 1x1 → Output ; 28x28x64
- 3x3 → Output ; 28x28x128
- 5x5 → Output ; 28x28x32
- Max POOL → Output ; 28x28x32
--Total 28x28x256
- Appliquez toutes les différentes tailles de filtre et regroupement et laissez le réseau choisir le bon
- The problem of computational cost
- Input ; 28x28x192
- CONV 5x5, same, 32 → Output ; 28x28x32
--Coût de calcul; 28x28x32x5x5x192 = 120M
- Using 1x1 convolution
- Input ; 28x28x192
- CONV 1x1, 16 → Output ; 28x28x16 (bottle neck layer)
- CONV 5x5, 32 → Output ; 28x28x32
--Coût de calcul; 28x28x16x192 + 28x28x32x5x5x16 = 12,4 M (1/10 ci-dessus)
- Si vous concevez correctement la couche du col de la bouteille, vous pouvez réduire la quantité de calcul sans affecter les performances.
(C4W2L07) Inception network
Contenu
--Description du réseau Inception avec couche de col de bouteille
(C4W2L08) Using open-source implementation
Contenu
--Description du téléchargement du code source depuis GitHub (
git clone```)
(C4W2L09) Transfer Learning
Contenu
-Dans $ x $ → couche → couche → $ \ cdots $ → couche → softmax → $ \ hat {y} $
--Quand il y a peu de données, former uniquement softmax (les autres paramètres sont fixes)
--Pour les grands ensembles de données, par exemple, la dernière moitié de la couche est entraînée et la première moitié de la couche est fixe.
- Apprenez tout le réseau lorsque vous avez des données très volumineuses
(C4W2L10) Data augumentation
Contenu
- Common augmentation method
- mirroring
- random cropping
--Les éléments suivants sont rarement utilisés
- rotation
- shearing
- local warping
- color shifting
--Ajouter (ou soustraire) des nombres à R, G, B
- L'article d'AlexNet décrit la méthode d'augmentation des couleurs PCA.
- Implementing distortions during training
- Après avoir chargé une image, déformez l'image et faites-la en mini-lot et train.
(C4W2L11) The state of computer vision
Contenu
- La quantité actuelle de données est sensuellement la reconnaissance vocale $ \ gt $ reconnaissance d'image $ \ gt $ détection d'objet (reconnaît où se trouve l'objet)
- Si vous avez beaucoup de données, vous pouvez utiliser un algorithme simple avec moins d'ingénierie manuelle.
- L'ingénierie manuelle ou le piratage augmente lorsqu'il y a peu de données
- Two sources of knowledge
- labeled data
- hand-engineering features / network architecture / other components
--Transfer Learning est utile lorsqu'il y a peu de données
- Tips for doing well on benchmark / winning competitions
- Ensemble
- Training several networks independently and average their output (3 ~ 15 networks)
- Multi-crop at test time
- Run classifier on multiple versions of test images and average results (10 crops)
- Use open source code
- Use architecture of network published in the literature
- Use open source implementations if possible
- Use pre-trained models and fine-tune on your data set
référence
- L'exercice de cette semaine est la mise en œuvre de ResNet
référence