[PYTHON] Report_Apprentissage approfondi (partie 2)

Examen de l'apprentissage profond (partie 1)

Problème de disparition du dégradé ... Au fur et à mesure que vous vous déplacez vers les couches inférieures par la méthode de propagation d'erreur, le dégradé devient plus doux. Le gradient plus doux signifie que le paramètre est mis à jour dans la méthode de descente de gradient Ce sera presque pareil. En conséquence, les données d'entraînement Il ne sera pas possible de converger vers la solution optimale. (La disparition du gradient pouvant être confirmée par visualisation, il est également important de confirmer par visualisation.)

Fonction Sigmaid: une fonction qui passe lentement de 0 à 1, et la fonction d'étape était uniquement ON / OFF, Il peut dire ON / OFF et la force du signal. Inconvénient: même si la valeur est élevée, la modification est faible, ce qui peut entraîner un problème de disparition du gradient.

Test de confirmation (2-2) Lorsque la fonction sigmoïde est différenciée, la valeur maximale est prise lorsque la valeur d'entrée est 0. Choisissez la valeur correcte. Fonction Sigmaid

{f(x) = \frac{1}{1+e^{-x}}}

Lorsqu'il est différencié,

{f'(x) = (1 - f(x))f(x)}Sera.

Solution de disparition de gradient Il y a la sélection de la fonction d'activation, le réglage de la valeur initiale du poids, la normalisation du lot, etc.

・ Sélection de la fonction d'activation Fonction ReLU: contribue à éviter le problème de disparition du gradient et à le rendre clairsemé.

・ Valeur initiale du poids Méthode utilisant Xavier. La fonction d'activation lors du réglage de la valeur initiale de Xavier est ・ Fonction ReLU ・ Fonction Sigmaid ・ Fonction tangente bicurve

La valeur initiale est définie en divisant l'élément de pondération par la racine carrée du nombre de nœuds dans la couche précédente.   Méthode utilisant He. La fonction d'activation lors du réglage de la valeur initiale de He est ・ Fonction ReLU

La méthode de définition de la valeur initiale consiste à multiplier l'élément de pondération par la racine carrée du nombre de nœuds de la couche précédente divisée par √2.

Test de confirmation (2-3) Quel type de problème survient lorsque la valeur initiale du poids est définie sur 0? Énoncez brièvement.

Si le poids est défini sur 0, le produit de toutes les valeurs d'entrée et de tous les poids sera égal à 0, donc seule la valeur de biais sera sortie vers la couche de sortie. Sera fait. Par conséquent, les données d'entraînement ne peuvent pas être mises à jour.

Normalisation par lots L'invention concerne un procédé de suppression du biais dans les données de valeur d'entrée sur une base de mini-lots.

Utilisation: ajoutez une couche contenant la normalisation par lots avant et après avoir transmis une valeur à la fonction d'activation.

Test de confirmation (2-4) Énumérez deux effets couramment considérés de la normalisation des lots. ・ Points qui ne dépendent guère de la valeur initiale ・ Supprimer le surapprentissage ・ Calcul à grande vitesse (car la quantité de calcul peut être réduite en supprimant le biais des données)

Exercice Jupiter (2-5) Estimation Sigmaid image.png image.png image.png image.png image.png

Dans l'estimation utilisant la fonction sigmoïde ci-dessus, le gradient disparaît comme on peut le voir sur le graphique lorsque la méthode de propagation de retour d'erreur est exécutée. Il a été constaté que la précision était aussi faible qu'environ 0,1.

Ensuite, l'estimation est effectuée à l'aide de la fonction ReLU. image.png image.png image.png image.png image.png Les différences par rapport aux estimations utilisant la fonction sigmoïde sont incluses dans les commentaires. Cela fait uniquement de la fonction d'activation une fonction ReLU. En conséquence, il a été constaté que la disparition du gradient ne s'était pas produite et que la propagation de l'erreur était possible.

Ensuite, vérifiez en définissant la valeur initiale du poids. Estimer en définissant la valeur initiale du poids dans la fonction sigmoïde avec Xavier.

image.png image.png image.png image.png

Comme vous pouvez le voir sur le graphique, si vous effectuez Xavier en utilisant la distribution gaussienne comme paramètre initial du poids pour l'estimation avec la première fonction sigmoïde. Il a été constaté que la disparition du gradient ne s'est pas produite.

Ensuite, l'estimation est effectuée à l'aide de He, qui est une autre valeur initiale du poids. image.png  image.png image.png image.png

Il a également été constaté que la disparition du gradient ne se produisait pas même dans l'estimation utilisant la fonction ReLU et le réglage initial He du poids.

Avec la combinaison de la fonction ReLU et He, il n'était pas possible de juger si la disparition du gradient se produirait en initialisant le poids de He. Des estimations utilisant la fonction sigmoïde et He ont été effectuées ci-dessous pour confirmer si le gradient a disparu.

image.png image.png image.png image.png

A partir du graphique du résultat ci-dessus, il a été confirmé que la disparition du gradient ne s'est pas produite et que le gradient n'a pas disparu au réglage initial He du poids.

Méthode d'optimisation du taux d'apprentissage

Directives pour définir le taux d'apprentissage initial Au début, définissez un taux d'apprentissage élevé et réduisez-le progressivement. → Utilisez la méthode d'optimisation du taux d'apprentissage. ・ Momentum Après avoir soustrait l'erreur par le produit de la différenciation des paramètres et du taux d'apprentissage, le poids actuel est multiplié par le poids précédent. Différenciez le produit de la valeur soustraite et de l'inertie. ・ AbaGrad ・ Prop RMS ・ Adam

Superapprentissage

Surapprentissage: la ligne droite d'apprentissage s'écarte en raison d'une erreur de test et d'une erreur d'entraînement.

Supprimez le surapprentissage à l'aide de la régularisation (contraignant le degré de liberté du réseau). Liberté du réseau: nombre de couches, nombre de nœuds, valeurs des paramètres, etc ...

Types de régularisation ・ Régularisation L1 ・ Régularisation L2 ·Abandonner

Test de confirmation (2-10) La régularisation des modèles linéaires utilisés en machine learning est possible en limitant les poids des modèles. Il existe une méthode appelée régression de crête dans la méthode de régularisation, et sélectionnez la bonne comme caractéristique.

Réponse (a) Lorsque le paramètre hyper est défini sur une valeur élevée, tous les poids se rapprochent de 0 à l'infini. La régression de crête est l'une des régressions linéaires régularisées, qui est la régression linéaire plus le carré du poids appris.

Décroissance du poids La cause du surapprentissage se produit lorsqu'une valeur avec un poids important est prise. Comme solution au surapprentissage, la valeur de pondération est supprimée en ajoutant un terme de régularisation. Cependant, plus la valeur de poids est élevée, plus le paramètre est important dans l'apprentissage. Il est essentiel de contrôler la valeur du poids et de faire varier la taille du poids dans la plage de valeurs où le surapprentissage ne se produit pas.

Régularisation L1, L2 Ajoutez la norme p à la fonction d'erreur. Si P = 1, on l'appelle régularisation L1, et si P = 2, on l'appelle régularisation L2.

Test de confirmation (2-11) Répondez à l'un des graphiques montrant la régularisation L1. Graphique à droite La régularisation L1 peut prendre 0 en raison de ses caractéristiques. Par conséquent, cela correspond à une estimation parcimonieuse.

Abandonner La méthode principalement utilisée dans la méthode de régularisation La méthode de suppression aléatoire des nœuds et de leur apprentissage est appelée abandon. Apprenez différents modèles sans changer la quantité de données

Réseau neuronal convolutif (CNN)

Une méthode souvent utilisée principalement dans la classification d'images. Il peut être utilisé non seulement pour les images mais aussi pour les données audio.

Flux CNN (exemple) Couche d'entrée → Couche de pliage → Couche de pliage → Couche de regroupement → Couche de pliage → Couche de pliage → Couche de regroupement → Couche entièrement connectée → Couche de sortie

Couche pliante La valeur de sortie obtenue en multipliant la valeur d'entrée par le filtre et la polarisation sont ajoutées, et la valeur est convertie en valeur de sortie par la fonction d'activation. En utilisant la couche de convolution, des données tridimensionnelles (canal: données qui contrôlent l'espace) des données d'image verticales, horizontales et canal peuvent être obtenues. Vous pouvez apprendre tel quel, puis vous pouvez le dire.

· Biais Ajoutez un biais à la valeur obtenue en multipliant la couche d'entrée et le filtre. ・ Rembourrage Le résultat de la multiplication de la couche d'entrée et du filtre sera plus petit que la taille de la couche d'entrée. Par conséquent, en augmentant les données fixes La valeur de sortie peut être de la même taille que la couche d'entrée. Utilisez principalement 0 padding qui ajoute 0. ·foulée Modifiez l'emplacement de calcul de la couche d'entrée et du filtre. ·Canal Le nombre de canaux est le nombre de canaux qui sont décomposés en vertical, horizontal et profondeur pour apprendre l'espace.

S'il s'agit d'une couche entièrement connectée, les données d'image 3D seront également traitées comme des données 1D. Une couche convolutionnelle a été conçue pour apprendre les données 3D.

Exercice Jupiter (2-17) image.png image.png

Abréviation de l'image en colonne pour im2col. Une méthode qui convertit des données multidimensionnelles en un tableau à deux dimensions. Pour les données d'entrée ci-dessus, créez un tableau multidimensionnel (matrice 4x4 avec 2 canaux) avec random.rand (). Exécutez im2col avec un rembourrage de foulée 1 et 0 avec un filtre vertical et horizontal de taille 3. La fonction im2col convertit un tableau multidimensionnel en un tableau à deux dimensions. Ensuite, la fonction im2col est décrite ci-dessous. image.png

La fonction im2col utilise la valeur d'entrée, les dimensions verticales et horizontales du filtre, le nombre de foulées (= 1) et le nombre de bourrages (= 0) comme arguments. Stockez chaque taille du tableau avec input_data.shape. out_h et out_w sont les dimensions verticale et horizontale de la sortie

Ensuite, pour convertir un tableau bidimensionnel en tableau multidimensionnel, utilisez col2im en colonne en image. image.png

Notez qu'un tableau converti en tableau bidimensionnel par im2col n'est pas converti en tableau multidimensionnel par col2im. La restauration n'est pas possible car les méthodes im2col et col2im sont différentes.

Couche de regroupement Il existe deux types principaux (pooling max et pooling moyen). Sort la valeur maximale de la zone cible des données d'image d'entrée (pooling max). Sortie de la valeur moyenne de la zone cible (mise en commun moyenne)

Test de confirmation (2-18) Répondez à la taille de l'image de sortie lorsque l'image d'entrée de taille 6x6 est pliée avec le filtre de taille 2x2. La foulée et le rembourrage sont réglés sur 1. Réponse: taille d'image 7x7

Exercice Jupiter (2-19) image.png Programme de fonction Max pooling

Dernier CNN AlexNet: se compose de 3 couches entièrement connectées, dont 5 couches convolutives et une couche de regroupement.

i.png

Recommended Posts

Report_Apprentissage approfondi (partie 2)
Report_Apprentissage approfondi (partie 1)
Report_Apprentissage approfondi (partie 1)
Report_Apprentissage approfondi (partie 2)
Python: Apprentissage supervisé: Hyper Paramètres Partie 1
Python: apprentissage supervisé: Hyper Paramètre partie 2
[Tutoriel PyTorch ⑤] Apprentissage de PyTorch avec des exemples (Partie 2)
Essayez l'apprentissage en profondeur avec TensorFlow Partie 2
[Tutoriel PyTorch ⑤] Apprentissage de PyTorch avec des exemples (Partie 1)
estimation personnelle en temps réel (apprentissage)
Prédire la demande de puissance avec l'apprentissage automatique, partie 2
numpy partie 1
argparse partie 1
Dossier d'apprentissage
Dossier d'apprentissage n ° 3
Dossier d'apprentissage n ° 1
Apprentissage automatique
apprentissage de python
Python: Identification du genre (développement de l'apprentissage profond) Partie 1
Python: Identification du genre (développement de l'apprentissage profond) Partie 2
Dossier d'apprentissage n ° 2
numpy partie 2
6/10 Contenu d'apprentissage
L'apprentissage en profondeur
apprentissage numpy-sigmoïde
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning
Classification EV3 x Pyrhon Machine Learning Partie 3
Classification des images de guitare par apprentissage automatique Partie 1
Apprentissage automatique à partir de Python Personal Memorandum Part2
Bases de l'apprentissage avec un enseignant Partie 1-Régression simple- (Remarque)
Apprentissage automatique à partir de Python Personal Memorandum Part1
Apprentissage de la reconnaissance de formes en vidéo Partie 1 Champ de reconnaissance de formes
[Apprentissage automatique] Apprentissage supervisé utilisant l'estimation de la densité du noyau Partie 2
EV3 x Pyrhon Machine Learning Partie 1 Construction de l'environnement
EV3 x Python Machine Learning Partie 2 Régression linéaire
[Apprentissage automatique] Apprentissage supervisé utilisant l'estimation de la densité du noyau Partie 3
Interpolation d'images vidéo par apprentissage en profondeur, partie 1 [Python]
Prévision du cours des actions à l'aide du Deep Learning (TensorFlow) - Partie 2
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 2
Classification des images de guitare par apprentissage automatique, partie 2
Essayez Katsuhiro Morishita / Aso_Sea_Clouds_Pridiction Memo-Excluant la partie d'apprentissage-
Bases de l'apprentissage avec un enseignant Partie 3-Régression multiple (mise en œuvre) - (Notes) -