[PYTHON] Cours de Deep Learning pouvant être écrasé sur place

output_0_0.png

Day2

■ Techniques d'apprentissage pour les modèles profonds

** Section 1) Vue d'ensemble du problème de disparition du gradient ** 1-1 Fonction d'activation ・ Fonction ReLU ・ Fonction Sigmaid (logistique) ・ Contact régulier à double courbe 1-2 Comment régler la valeur initiale -Xavier --- La valeur obtenue en divisant l'élément de poids par la racine carrée du nombre de nœuds dans la couche précédente. ⇒ Fonction d'activation cible: ReLU, sigmoïde, fonction tangente bicurve

  #Valeur initiale de Xavier
    network['W1'] = np.random.randn(input_layer_size, hidden_layer_1_size) / (np.sqrt(input_layer_size))
    network['W2'] = np.random.randn(hidden_layer_1_size, hidden_layer_2_size) / (np.sqrt(hidden_layer_1_size))
    network['W3'] = np.random.randn(hidden_layer_2_size, output_layer_size) / (np.sqrt(hidden_layer_2_size))

-He - L'élément poids divisé par la racine carrée du nombre de nœuds dans la couche précédente est $ \sqrt{2} Valeur multipliée par $ ⇒ Fonction d'activation cible: ReLU

    #Valeur initiale de He
    network['W1'] = np.random.randn(input_layer_size, hidden_layer_1_size) / np.sqrt(input_layer_size) * np.sqrt(2)
    network['W2'] = np.random.randn(hidden_layer_1_size, hidden_layer_2_size) / np.sqrt(hidden_layer_1_size) * np.sqrt(2)
    network['W3'] = np.random.randn(hidden_layer_2_size, output_layer_size) / np.sqrt(hidden_layer_2_size) * np.sqrt(2)

1-3 Normalisation des lots La normalisation par lots est une méthode de suppression du biais des données de valeur d'entrée dans les unités de mini-lots. Ajoutez la normalisation du lot avant et après avoir transmis la valeur à la fonction d'activation au moment de la normalisation du lot.

** Section 2) Méthode d'optimisation du taux d'apprentissage ** Si la valeur du taux d'apprentissage est élevée, la valeur optimale ne sera pas atteinte pour toujours et divergera. Si la valeur du taux d'apprentissage est petite, elle ne divergera pas, mais si elle est trop petite, il faudra du temps pour converger. De plus, il devient difficile de converger vers la valeur optimale locale globale. ◆ Méthode d'optimisation du taux d'apprentissage: ・ Réglez le taux d'apprentissage initial sur une valeur élevée et diminuez progressivement le taux d'apprentissage. ・ Taux d'apprentissage variable pour chaque paramètre 2-1 élan Après soustraction du produit de l'erreur différenciée par le paramètre et du taux d'apprentissage (méthode de descente de gradient), le produit du poids actuel moins le poids précédent et l'inertie est ajouté. ◆ Avantages de l'élan ・ Ce n'est pas une solution optimale locale, mais une solution optimale globale. ・ Le temps entre la vallée et la position la plus basse (valeur optimale) est rapide.  2-2 AdaGrad Soustrayez le produit du taux d'apprentissage redéfini et de la différenciation des paramètres de l'erreur. ◆ Avantages d'AdaGrad ・ Pour les pentes avec des pentes douces, approchez-vous de la valeur optimale. ◆ Problèmes ・ Comme le taux d'apprentissage diminuait progressivement, cela provoquait parfois un problème de pointe de selle.

2-3 RMSProp Soustrayez le produit du taux d'apprentissage redéfini et de la différenciation des paramètres de l'erreur. ◆ Avantages de RMS Drop ・ Ce n'est pas une solution optimale locale, mais une solution optimale globale. -Il y a peu de cas où il est nécessaire d'ajuster les hyper paramètres.  2-4 Adam Une méthode d'optimisation qui incorpore l'élan (moyenne de décroissance exponentielle des gradients passés) et RMSProp (moyenne de décroissance exponentielle du carré des gradients passés) ◆ Avantages d'Adam ・ C'est un algorithme d'optimisation qui présente les avantages de l'élan et de la chute RMS.

** Section3) À propos du surapprentissage ** La courbe d'apprentissage s'écarte entre l'erreur de test et l'erreur d'apprentissage ⇒Pour les raisons suivantes, je me suis spécialisé dans l'apprentissage pour un échantillon d'apprentissage spécifique avec une grande liberté de réseau (nombre de couches, nombre de nœuds, valeurs de paramètres, etc.). • Grand nombre de paramètres • Valeurs de paramètres incorrectes • De nombreux nœuds, etc ...

3-1 Régularisation L1, régularisation L2 ⇒ Lasso, régularisation des crêtes

3-2 Drop A Supprimer les nœuds au hasard pour apprendre ◆ En tant que mérite ・ Il peut être interprété que différents modèles sont entraînés sans changer la quantité de données.

■ À propos du réseau neuronal convolutif

** Section 4) Aperçu conceptuel du réseau de neurones convolutifs (diagramme de structure CNN) ** 4-1 Couche pliante Le résultat du calcul de convolution pour chaque filtre est émis. ◆ En tant que mérite ・ En conservant les informations spatiales, les inconvénients de la couche entièrement connectée peuvent être surmontés.

4-2 Couche de regroupement S'applique après la couche convolutionnelle. Transformez les données d'entrée en une forme plus gérable. Compressez les informations et réduisez l'échantillon. ◆ En tant que mérite ・ Être robuste face aux changements de position infimes ・ Supprimez dans une certaine mesure le surapprentissage ・ Réduisez les coûts de calcul

4-3 Autres couches utilisées ・ Couche réseau entièrement connectée ・ Couche d'abandon ・ Couche de normalisation par lots, etc.

** Section 5) Dernière CNN ** 5-1 AlexNet ・ Structure du modèle ⇒ Se compose de 3 couches entièrement connectées, dont 5 couches de pliage et de mise en commun ・ Mesures pour éviter le surapprentissage ⇒ Un dropout est utilisé pour la sortie d'une couche entièrement connectée de taille 4096.

◆ Prise en compte du jour 2

[P20] Trouvez dz / dx en utilisant le principe de la loi des chaînes.  z = t2  t = x + y

** ● Considération: ** $ \frac{dz}{dx}=\frac{dz}{dt}\frac{dt}{dx}  $ $  ⇒  \frac{dz}{dt} = 2t, \frac{dt}{dx} = 1 ,t=x+y $ Résultat de substitution de la formule ci-dessus: $ \frac{dz}{dx} = 2(x+y) $

[P12] 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.4

** ● Considération: ** $ sigmoid'(x) = sigmoid(x)(1-sigmoid(x)) $       $ sigmoid(0) = 0.5 $

Résultat de substitution de la formule ci-dessus: $ sigmoid'(0) = 0.5*(1-0.5) = 0.25 $ Par conséquent, la bonne réponse est (2)

[P28] Quel genre de problème survient lorsque la valeur initiale du poids est mise à 0? Expliquer brièvement.

** ● Considération: ** Si vous définissez la valeur initiale du poids sur 0, elle sera 0 lorsque vous multipliez le poids par la valeur d'entrée, et toutes les valeurs seront transmises à la couche inférieure avec la même valeur, vous ne pourrez donc pas régler la valeur de poids.

[P31] Énumérez deux effets généralement considérés de la normalisation des lots. ** ● Considération: ** Stabiliser le processus d'apprentissage dans son ensemble. Augmentez la vitesse d'apprentissage.

[P47] Expliquez brièvement les caractéristiques de Momentum, AdaGrad et RMS Drop.
** ● Considération: ** ・ Caractéristiques de l'élan Les paramètres sont mis à jour en ajoutant α fois à la quantité de mise à jour précédente en tenant compte de l'inertie. (En fait, ajustement automatique du taux d'apprentissage) ・ Caractéristiques d'AdaGrad Le taux d'apprentissage est automatiquement ajusté en considérant toutes les informations de gradient passées de manière uniforme, et le taux d'apprentissage η calculé lorsque l'apprentissage est répété devient plus petit. ・ Caractéristiques de RMS Drop Le taux d'apprentissage η calculé au fur et à mesure que l'apprentissage est répété en prenant la moyenne mobile exponentielle du carré du gradient passé devient plus petit.

[P68] Concernant la figure ci-dessous, répondez à l'un ou l'autre des graphiques montrant la régularisation L1. ** ● Considération: ** output_5_0.png

[P100] 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. ** ● Considération: ** Réponse: Hauteur: (6 + 2 * 0 --2) / 2 + 1 = 3 Largeur: (6 + 2 * 0 --2) / 2 + 1 = 3

Exercices de code source_Résolution de l'implémentation du problème de disparition de gradient

La partie de disparition du gradient <guass sigmoïde> est supprimée et ReLU-He avec les paramètres modifiés est inséré à la place. output_8_0.png

Exercices de code source_Implémentation du programme Optimisation du taux d'apprentissage

output_10_0.png

Exercices sur le code source_Implémentation du programme Solution de superapprentissage

output_12_0.png

Exercices sur le code source_Implémentation du programme Convolution

output_14_0.png

Exercices de code source_Couche de regroupement d'implémentation de programme

output_16_0.png

Exercice du code source_Programme Implémentation globale CNN

output_18_0.png

================================================================================================================= Day3

■ Examen de la vue d'ensemble de l'apprentissage profond Le dernier CNN

*  • AlexNet* AlexNet est un modèle qui a remporté la deuxième place du concours de reconnaissance d'image organisé en 2012 par une large marge. Avec l'avènement d'AlexNet, l'apprentissage en profondeur a attiré beaucoup d'attention

■ À propos du réseau neuronal récursif

** Section 1) Concept de réseau neuronal récursif ** ・ Présentation de RNN Il s'agit d'un réseau neuronal capable de gérer des données observées à intervalles réguliers et ayant des dépendances statistiques mutuelles.
Par exemple: données vocales, données texte, etc. ・ À propos de RNN RNN a une structure récursive qui contient l'état initial et l'état du temps passé t-1 dans la couche cachée, et trouve récursivement t au temps suivant à partir de là. ・ Description mathématique RNN

u^t = W_{ (in) }x^t + Wz^{ t-1 } + b \\
z^t = f(W_{ (in) }x^t + Wz^{ t-1 } + b)\\
v^t = W_{ out } z^t + c\\
y^t = g(W_{ out }z^t + c)\\

1-2 BPTT ・ Un type de méthode de réglage des paramètres dans RNN ⇒ Un type de propagation de retour d'erreur

** Section 2) Vue d'ensemble du LSTM (flux précédent et vision des problèmes) ** 2-1 CEC Je veux propager les informations stockées de CEC à d'autres nœuds à tout moment, ou les oublier à tout moment. ⇒ Comment résoudre la disparition du gradient et l'explosion du gradient. 2-2 Porte d'entrée et porte de sortie En ajoutant des portes d'entrée / sortie, les poids des valeurs d'entrée de chaque porte peuvent être modifiés par les matrices de poids W et U. 2-3 Porte de l'oubli Si vous n'avez plus besoin des informations passées, supprimez-les. 2-4 Connexion judas Je veux propager les informations stockées de CEC à d'autres nœuds à tout moment, ou les oublier à tout moment. ⇒Masquez les informations CEC.

Section3) GRU Dans le LSTM conventionnel, la charge de calcul était lourde car il y avait de nombreux paramètres. Cependant, avec GRU, les paramètres ont été considérablement réduits et on peut s'attendre à ce que la précision soit égale ou supérieure à cela.

** Section4) RNN bidirectionnel ** Un modèle pour améliorer la précision en ajoutant non seulement des informations passées mais également des informations futures

bidirecory.png

■ Traitement du langage naturel avec RNN

** Section 5) Présentation de Seq2Seq ** Seq2seq fait référence à un type de modèle d'encodeur-décodeur. Il est utilisé pour le dialogue automatique et la traduction automatique. 5-1 Encoder RNN Une structure dans laquelle les données de texte entrées par l'utilisateur sont divisées en jetons tels que des mots et transmises. 5-2 Decoder RNN Une structure dans laquelle le système génère des données de sortie pour chaque jeton tel qu'un mot. 5-3 HRED Vous pouvez répondre en tenant compte de l'historique des déclarations passées. 5-4 VHRED HRED avec le concept de variables latentes VAE ajouté. 5-5 VAE La VAE a permis de pousser les données dans une structure appelée distribution de probabilité de la variable latente z. Encodeur automatique 5-5-1 Un apprentissage non supervisé. Par conséquent, les données d'entrée au moment de l'apprentissage ne sont que des données de formation, pas des données d'enseignant.

Section6) Word2vec Un vocabulaire a été créé à partir des données d'apprentissage, et l'apprentissage de la représentation distribuée de données à grande échelle est devenu possible avec une vitesse de calcul et une quantité de mémoire réalistes.

Section7) AttentionMechanism Un mécanisme pour apprendre le degré de pertinence de "quels mots dans l'entrée et la sortie sont liés".

◆ Prise en compte du jour 3

[P11] Répondez à la taille de l'image de sortie lorsque l'image d'entrée de taille 5x5 est pliée avec le filtre de taille 3x3. La foulée est de 2 et le rembourrage est de 1.
** ● Considération: ** Réponse: Hauteur: (5 + 2 * 1-3) / 2 + 1 = 3 Largeur: (5 + 2 * 1-3) / 2 + 1 = 3

[P23] Le réseau RNN a trois poids majeurs. L'un est le poids appliqué lors de la définition de la couche intermédiaire actuelle à partir de l'entrée, et l'autre est le poids appliqué lors de la définition de la sortie de la couche intermédiaire. Expliquez le poids restant.

** ● Considération: ** Réponse: Poids utilisé pour obtenir récursivement (t-1) l'état du temps → l'état du temps actuel (t) dans la couche cachée

[P35] Trouvez dz / dx en utilisant le principe de la loi des chaînes.  z = t2  t = x + y

** ● Considération: ** $ \frac{dz}{dx}=\frac{dz}{dt}\frac{dt}{dx}  $ $  ⇒  \frac{dz}{dt} = 2t, \frac{dt}{dx} = 1 ,t=x+y $ Résultat de substitution de la formule ci-dessus: $ \frac{dz}{dx} = 2(x+y) $

[P44] Exprimez y1 dans la figure ci-dessous avec une formule utilisant x, s0, s1, win, w et wout.

ddd.png

** ● Considération: **

z_{ 1 } = sigmoid(W_{ (in) }x_{ 1 } + Ws_{ 0 } + b ) \\
y_{ 1 } = sigmoid(W_{ (out) }z_{ 1 } + c ) \\ 

[P61] 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.4
** ● Considération: ** $ sigmoid'(x) = sigmoid(x)(1-sigmoid(x)) $       $ sigmoid(0) = 0.5 $ Résultat de substitution de la formule ci-dessus: $ sigmoid'(0) = 0.5*(1-0.5) = 0.25 $
Par conséquent, la bonne réponse est (2)

[P71] Supposons que vous souhaitiez saisir la phrase suivante dans LSTM et prédire les mots qui s'appliquent aux espaces. Le mot «très» dans le texte n'est pas considéré comme ayant un effet s'il disparaît dans la prédiction à blanc. Quelle porte est considérée comme fonctionnelle dans un tel cas?
"Le film était intéressant. Au fait, j'avais tellement faim que quelque chose ____."

** ● Considération: ** La porte myosotis a pour fonction d'oublier des informations au moment où les informations passées ne sont plus nécessaires. ⇒ Par conséquent, la réponse est la porte de l'oubli.

[P87] Décrivez brièvement les problèmes auxquels font face LSTM et CEC.

** ● Considération: ** ・ Problèmes de LSTM LSTM a un problème en ce que le nombre de paramètres est grand et la charge de calcul est élevée. ※Solution GRU réduit considérablement les paramètres du LSTM conventionnel, et l'utilise dans une structure dont on peut s'attendre à ce qu'elle ait une précision identique ou supérieure pour réduire la charge de calcul. ・ Problèmes CEC Le poids des données d'entrée est uniforme quelle que soit la dépendance temporelle. ⇒ Il n'y a pas de caractéristique d'apprentissage du réseau de neurones ※Solution Le couplage judas est une structure qui permet à la valeur de CEC elle-même d'être propagée via une matrice de poids, et lorsque les informations passées ne sont plus nécessaires, les informations sont oubliées à ce moment. )

[P91] Décrivez brièvement la différence entre LSTM et GRU.

** ● Considération: ** ・ Dans GRU, la porte de l'oubli et la porte d'entrée ne sont pas clairement séparées. ・ GRU a peu de paramètres.

[P108] Parmi les options ci-dessous, sélectionnez celle qui décrit seq2seq. (1) Des RNN dans les sens aller et retour par rapport au temps sont construits, et ces deux représentations de couche intermédiaire sont utilisées comme quantités de caractéristiques. (2) Un type de modèle d'encodeur-décodeur qui utilise RNN et est utilisé pour des modèles tels que la traduction automatique. (3) Syntaxe Il s'agit d'un réseau de neurones qui obtient le vecteur d'expression de la phrase entière en effectuant l'opération de création d'un vecteur d'expression (phrase) à partir de mots adjacents sur une structure arborescente telle qu'un arbre (avec le même poids). (4) Un type de RNN, qui résout le problème de disparition de gradient, qui est un problème dans les RNN simples, en introduisant le concept de CEC et de porte.

** ● Considération: ** Réponse: (2)

[P118] Décrivez brièvement la différence entre seq2seq et HRED, et HRED et VHRED. ** ● Considération: ** -La différence entre seq2seq et HRED est que dans Seq2seq, il n'y a pas de contexte pour la question, juste la réponse continue, et dans HRED, la réponse suit le flux du mot précédent. ・ La différence entre HRED et VHRED est que HRED a la même sortie pour la même entrée, mais VHRED permet différentes sorties pour la même entrée en ajoutant une variable latente qui est un bruit probabiliste à la couche Contexte. ..

[P127] Répondez aux mots qui s'appliquent aux blancs dans l'explication ci-dessous concernant la VAE. Introduction de ____ dans la variable latente du codeur automatique.

** ● Considération: ** Réponse: Distribution de probabilité

[P136] Décrivez brièvement la différence entre RNN et word2vec, et seq2seq et Attention.

** ● Considération: ** -La différence entre RNN et word2vec est que RNN ne peut pas donner une chaîne de caractères de longueur variable comme un mot à NN, et word2vec peut représenter un mot dans un format de longueur fixe. ・ La différence entre seq2seq et Attention est que seq2seq est difficile à gérer de longues phrases. L'attention peut apprendre le degré de pertinence de «quels mots de l'entrée et de la sortie sont liés», ce qui facilite le traitement des phrases longues.

Implémentation Exercise_Program (RNN)

output_24_0.png

================================================================================================================= Day4

** Section 1) Exercice d'implémentation de TensorFlow **

** Section 2) Renforcer l'apprentissage ** ** 2-1 Qu'est-ce que l'apprentissage par renforcement ** Un domaine de l'apprentissage automatique qui vise à créer des agents qui peuvent choisir des actions dans l'environnement afin que les récompenses puissent être maximisées sur le long terme. ⇒ Il s'agit d'un mécanisme pour améliorer le principe de détermination des actions en fonction des bénéfices (récompenses) donnés à la suite des actions. ** 2-2 Exemple d'application de l'apprentissage par renforcement ** Environnement: Département de la promotion des entreprises Agent: logiciel qui détermine quels clients enverront des e-mails de campagne en fonction de leur profil et de leur historique d'achat. Action: Vous devrez choisir entre deux actions, envoyer et non envoyer, pour chaque client. Récompense: recevez une récompense négative du coût de la campagne et une récompense positive des ventes estimées être générées par la campagne.

** 2-3 Compromis entre l'exploration et l'utilisation ** Avec une parfaite connaissance de l'environnement à l'avance, il est possible de prédire et de déterminer un comportement optimal. Dans le cas d'un apprentissage intensif, les données sont collectées en agissant sur la base de connaissances incomplètes. Trouvez la meilleure action. ・ Dans les données passées, si vous ne prenez toujours que le meilleur comportement, vous ne pouvez pas trouver un autre meilleur comportement. ・ Si vous continuez à n'effectuer que des actions inconnues, vous ne pouvez pas utiliser votre expérience passée. De cette manière, on obtient l'état de compromis 2 mentionné ci-dessus, dans lequel la recherche est insuffisante et l'utilisation est insuffisante. ** 2-4 Image de l'apprentissage amélioré **

reforceNN.png

** 2-5 Différence d'apprentissage par renforcement ** La différence entre un apprentissage intensif et un apprentissage régulier enseigné et non supervisé. Conclusion: des objectifs différents ・ En mode non supervisé et avec apprentissage, l'objectif est de trouver des modèles contenus dans les données et de prédire à partir des données. ・ En renforçant l'apprentissage, l'objectif est de trouver d'excellentes mesures ** 2-6 Fonction de valeur d'action ** Il existe deux types de fonctions de valeur d'action, la fonction de valeur d'état et la fonction de valeur d'action, en tant que fonctions qui expriment une valeur. Lorsque vous vous concentrez sur la valeur d'un état, la fonction de valeur d'état Lorsque vous vous concentrez sur la valeur d'une combinaison d'état et de valeur, la valeur d'action fonctionne.

** 2-7 fonction politique ** Une fonction de politique est une fonction qui donne la probabilité de l'action à entreprendre dans un certain état dans une méthode d'apprentissage par renforcement basée sur des politiques. ** Méthode du gradient de politique 2-8 ** Méthode itérative de politique Une technique de modélisation et d'optimisation des politiques

\theta^{ t+1 } = \theta^{ t } + \epsilon \nabla J(\theta) \\

$ * Évaluer avec la bonté J (\ theta) de la politique définie $

◆ Politique Comment définir la méthode du gradient ・ Récompense moyenne ・ Remise sur la somme des récompenses

Exercice (1)

output_28_0.png

Exercice_ (2)

output_30_0.png


Recommended Posts

Cours de Deep Learning pouvant être écrasé sur place
Présentation et fonctionnalités utiles de scikit-learn qui peuvent également être utilisées pour l'apprentissage en profondeur
<Cours> Apprentissage en profondeur: Day2 CNN
<Cours> Apprentissage en profondeur: Jour 1 NN
Expliquez et déplacez réellement le modèle SMIS qui peut «essayer virtuellement des vêtements» par apprentissage en profondeur
Confirmation que rkhunter peut être installé
[Windows Edition] Keras Course, une bibliothèque où vous pouvez essayer le Deep Learning immédiatement - Partie 1
Module standard Python utilisable en ligne de commande
Masquer l'avertissement selon lequel zsh peut être utilisé par défaut sur Mac
Les débutants en apprentissage automatique suivent le cours d'apprentissage en profondeur de Coursera
Note récapitulative sur le Deep Learning -4.2 Fonction de perte-
<Cours> Deep Learning Day4 Renforcement de l'apprentissage / flux de tension
Accélérez l'apprentissage en profondeur avec le processeur Rasperry Pi 4
Note récapitulative sur l'apprentissage profond -4.3 Méthode de gradient
[Hackason] À propos de la création d'un outil pouvant être imprimé sur Raspberry Pi [Outil pratique]
L'apprentissage en profondeur
L'apprentissage automatique peut-il prédire les quadrilatères parallèles? (1) Peut-il être inséré à l'extérieur?
Types de fichiers pouvant être utilisés avec Go
Fonctions pouvant être utilisées dans l'instruction for
GitHub du bon livre "Deep Learning from scratch"
Construire un Sphinx qui peut être écrit avec Markdown
Répertorier les packages pouvant être mis à jour avec pip
Présentation de la commande "Glances", un outil de surveillance compréhensible en un coup d'œil, sur Mac
Introduction du package de collecte automatique d'images "icrawler" (0.6.3) qui peut être utilisé pendant l'apprentissage automatique
Comment filtrer les clés externes qui peuvent être sélectionnées sur l'écran d'administration de Django