table des matières [Apprentissage en profondeur: Day1 NN] (https://qiita.com/matsukura04583/items/6317c57bc21de646da8e) [Apprentissage en profondeur: Day2 CNN] (https://qiita.com/matsukura04583/items/29f0dcc3ddeca4bf69a2) [Apprentissage en profondeur: Day3 RNN] (https://qiita.com/matsukura04583/items/9b77a238da4441e0f973) [Deep learning: Day4 Strengthening learning / Tensor Flow] (https://qiita.com/matsukura04583/items/50806b750c8d77f2305d)
En contrepartie, en rétrocalculant le différentiel à partir du résultat du calcul de l'erreur, le différentiel peut être calculé tout en évitant un calcul récursif inutile. Réduction du coût de calcul.
Section1) Vue d'ensemble du problème de disparition du gradient
(Flux et vision précédents de la vue d'ensemble des problèmes)
Problème de disparition de gradient
Au fur et à mesure que la méthode de rétropropagation d'erreur progresse vers les couches inférieures, le dégradé devient de plus en plus doux. Par conséquent, les paramètres de la couche inférieure sont à peine modifiés par la mise à jour par la méthode de descente de gradient, et l'apprentissage ne converge pas vers la valeur optimale. Fonction Sigmaid → (Problème) Avec une valeur élevée, le changement de sortie est faible, ce qui peut provoquer un problème de disparition du gradient.
1-1 Fonction d'activation
Fonction ReLU
De bons résultats ont été obtenus en contribuant à éviter le problème de disparition du gradient et en le rendant clairsemé.
** Réglage initial du poids-He ** Fonction d'activation lors du réglage de la valeur initiale de He Fonction Relu Comment définir la valeur initiale La valeur obtenue en divisant l'élément poids par la racine carrée du nombre de nœuds dans la couche précédente et en la multipliant par l'itinéraire 2.
La normalisation par lots est une méthode pour supprimer le biais des données de valeur d'entrée en unités de $ \ Rightarrow $ mini-batch. A quoi sert la normalisation par lots? ︖ $ \ Rightarrow $ Ajoutez une couche contenant le traitement de normalisation par lots avant et après avoir passé une valeur à la fonction d'activation.
u^{(l)}=w^{(l)}z^{(l)}+b^{(l)}Ou z
Section2) Vue d'ensemble de la méthode d'optimisation du taux d'apprentissage
(Flux et vision précédents de la vue d'ensemble des problèmes)
Revue de la méthode de descente de gradient
Revue du taux d'apprentissage Lorsque la valeur du taux d'habitude est grande ・ La valeur optimale n'est pas atteinte pour toujours et diverge. Lorsque la valeur du taux d'apprentissage est faible ・ Il ne diverge pas, mais s'il est trop petit, il faut du temps pour converger. ・ Il devient difficile de converger vers la valeur optimale locale globale.
Section2) Suite (Le retrait se réduit-il quand un chiffre est entré?)
2-1 élan
+ 2-3 RMSProp
+ 2-4Adam
Adam est un algorithme d'optimisation qui inclut la moyenne de décroissance exponentielle du gradient passé de ︖ $ \ Rightarrow $ momentum et la moyenne de décroissance exponentielle du carré du gradient passé de RMSProp.
Le mérite d'Adam est un algorithme qui a le mérite de ︖ $ \ Rightarrow $ momentum et RMS Drop.
Section3) Aperçu du surapprentissage (Flux et vision précédents de la vue d'ensemble des problèmes) La courbe d'apprentissage s'écarte entre l'erreur de test et l'erreur d'apprentissage. ︖ $ \ Rightarrow $ Spécialisé dans l'apprentissage pour un échantillon de formation spécifique. La cause est un grand nombre de paramètres, des valeurs de paramètres incorrectes, de nombreux nœuds, etc. $ \ Rightarrow $ Haut degré de liberté du réseau (nombre de couches, nombre de nœuds, valeurs des paramètres, etc ...)
3-1 régularisation L1, régularisation L2
La régularisation consiste à contraindre le degré de liberté du réseau (nombre de couches, nombre de nœuds, valeurs de paramètres, etc ...) dans ︖︖ $ \ Rightarrow $.
** ︖ $ \ Rightarrow $ Utilisez la méthode de régularisation pour supprimer le surapprentissage **
Décroissance du poids
** Causes du surapprentissage **
** Solution Overlearning ** ――Lorsque vous apprenez à supprimer des poids en ajoutant un terme de régularisation à l'erreur, les poids varient. --Il est nécessaire de contrôler le poids en dessous de la taille du poids auquel le surapprentissage est susceptible de se produire et de faire varier la taille du poids.
3-2 abandon
Tâches de surapprentissage ・ Qu'est-ce qu'un abandon avec un grand nombre de nœuds? ︖ $ \ Rightarrow $ Supprimez aléatoirement des nœuds pour l'apprentissage. En guise de mérite, on peut interpréter que différents modèles sont entraînés sans changer la quantité de données.
À propos du réseau neuronal convolutif
Section4) Concept de réseau neuronal convolutif
Schéma structurel de CNN
Diagramme de structure LeNet
4-1 couche pliante
4-1-1 biais
Concept arithmétique de couche pliante (biais)
Rembourrage 4-1-2
Concept arithmétique des couches pliantes (rembourrage)
4-1-3 foulée
Concept arithmétique des couches pliantes (rembourrage)
4-1-4 canaux
Concept arithmétique de couche pliante (canal)
Problèmes lors de l'apprentissage d'une image avec une couche entièrement connectée Inconvénients d'une couche entièrement connectée $ \ Rightarrow $ Dans le cas d'une image, il s'agit de données 3D verticales, horizontales et de canal, mais elles sont traitées comme des données 1D. La relation entre chaque canal de $ \ Rightarrow $ RGB n'est pas reflétée dans l'apprentissage.
4-2 Couche de regroupement
Schéma conceptuel de la couche de pooling
Section5) Dernier CNN + 5-1 AlexNet
Description du modèle AlexNet
Structure du modèle
Se compose de 3 couches entièrement connectées, dont 5 couches de pliage et une couche de mise en commun.
Mesures pour éviter le surapprentissage
J'utilise des dropouts pour la sortie d'une couche entièrement connectée de taille 4096.
[P12] Trouvez dz / dx en utilisant le principe de la loi des chaînes.
z = t^2,t=x+y
⇒ [Discussion] Il peut être calculé par le calcul suivant.
\frac{dz}{dx}=\frac{dz}{dy}\frac{dy}{dx}
,t=x+y
z = t^Puisqu'il est 2, si vous différenciez par t\frac{dz}{dt}=2t
t=x+Puisque c'est y, si vous différenciez par x\frac{dt}{dx}=1
\frac{dz}{dx}=2 t ・ 1=2t=2(x+y)
[P20] Lorsque la fonction sigmoïde est différenciée, la valeur maximale est prise lorsque la valeur d'entrée est 0. Sélectionnez la valeur correcte parmi les options. (1) 0,15 (2) 0,25 (3) 0,35 (4) 0,45
⇒ [Discussion] Différenciation du sigumoïde
(sigmoid)'=(1-sigmoid)(sigmoid)
Puisque la fonction sigmoïde est maximale à 0,5,
(sigmoid)'=(1-0.5)(0.5)=0.Sera 25 ans
[P28] Quel genre de problème survient lorsque la valeur initiale du poids est mise à 0? Expliquer brièvement. ⇒ [Discussion] Le gradient peut ne pas être obtenu. Puisque la formule de la valeur initiale du poids a été mentionnée ci-dessus, nous allons l'utiliser.
[P31] Énumérez deux effets généralement considérés de la normalisation des lots. ⇒ [Discussion] La distribution des paramètres dans la couche intermédiaire devient appropriée. Stabilisation de l'apprentissage dans la couche intermédiaire Cette méthode est actuellement largement utilisée bien qu'elle soit une nouvelle méthode proposée en 2015. ..
[P36] Exemple de défi
Bonne réponse: data_x [i: i_end], data_t [i: i_end] • [Explication] Il s'agit d'un processus pour récupérer des données pour la taille du lot. ⇒ [Discussion] Soyez prudent car les descriptions sont similaires et faciles à faire des erreurs.
[P63] Test de confirmation
⇒ [Discussion] La réponse est "un" Il est bon de s'en souvenir avec la figure.
[P68] Quelle est la réponse pour le graphique montrant la régularisation L1? ⇒ [Discussion] La réponse est juste
Il est bon de s'en souvenir avec la figure. Lasso est une figure avec une forme de diamant caractéristique. (La crête est circulaire)
[P69] Exemple de défi
⇒ [Discussion] La réponse est (4) param Il est bon de s'en souvenir avec la formule de calcul. Comprenez correctement L1 et L2.
[P71] Exemple de défi
⇒ [Discussion] La réponse est "signe (param)" [Explication] La norme L1 est|param|Donc, ce gradient est ajouté au gradient de l'erreur. C'est-à-dire signe(param)Est. signe est une fonction de signe. Il est également nécessaire de comprendre la fonction de code de signe qui apparaît pour la première fois.
[P78] Exemple de défi ⇒ [Discussion] Bonne réponse: image [haut: bas, gauche: droite ,:] [Explication] Considérez que le format de l'image est (largeur verticale, largeur horizontale, canal).
[P100] Test de confirmation 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. ⇒ [Discussion] Réponse 7✖️7 Hauteur de la taille d'entrée (H), largeur de la taille d'entrée (W) Output Hight(OH) Output Width(OW) Filler Hight(FH) Filler Width(FW) Foulée (S) Panoramique (P)
OH =\frac{H+2P-FH}{S}+1 =\frac{6+2,1-2}{1}+1=7
OW =\frac{W+2P-FW}{S}+1 =\frac{6+2,1-2}{1}+1=7
C'est une méthode de calcul fixe, il est donc pratique de la retenir comme une formule.
Résultat du passage à la combinaison ReLU-Xavier Résultat du passage à la combinaison Sigmoïde-HE
** [essayez] Vérifions le traitement de im2col -Commentez la ligne qui transpose dans la fonction et exécutez le code ci-dessous. ・ Modifions la taille de chaque dimension de input_data, la taille du filtre, la foulée et le rembourrage **
⇒ [Discussion] Les résultats de l'exercice sont les suivants.
python
#Confirmation du traitement Im2col
input_data = np.random.rand(2, 1, 4, 4)*100//1 # number, channel, height,Représente la largeur
print('========== input_data ===========\n', input_data)
print('==============================')
filter_h = 3
filter_w = 3
stride = 1
pad = 0
col = im2col(input_data, filter_h=filter_h, filter_w=filter_w, stride=stride, pad=pad)
print('============= col ==============\n', col)
print('==============================')
Essayez de changer la taille de chaque dimension de input_data, la taille du filtre, la foulée et le remplissage comme suit.
python
filter_h = 6
filter_w = 6
stride = 2
pad = 1
・ Il faut comprendre que im2col et col2im ne reviennent pas exactement de la même manière. ・ La scène à utiliser est différente en premier lieu. im2col est utilisé pour le pliage, mais col2im est utilisé pour la sortie finale.
** [essayez] Vérifions le traitement de col2im ・ Convertissons la sortie col en vérifiant im2col en image et vérifions-la ** ⇒ [Discussion]
python
#Ajout du traitement de col2im
img = col2im(col, input_shape=input_data.shape, filter_h=filter_h, filter_w=filter_w, stride=stride, pad=pad)
print(img)
## DN37_Jupyter Exercice (3)
・ Veuillez noter que le processus de convolution prend du temps à apprendre. Pour traiter sans stress, il est recommandé d'élever les spécifications du PC ou de préparer un appareil équipé d'un GPU.
Recommended Posts