[PYTHON] Report_Apprentissage approfondi (partie 1)

Test de confirmation (3-1) 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.

répondre Image de sortie (taille verticale) = (image d'entrée (taille verticale) + 2 x filtre de remplissage (taille verticale) / foulée) + 1            (5+2×1-3/2) + 1 = 3

Image de sortie (taille horizontale) = (image d'entrée (taille horizontale) + 2 x filtre de remplissage (taille horizontale) / foulée) + 1            (5+2×1-3/2) + 1 = 3

Par conséquent, la taille de l'image de sortie est de 3 × 3.

Réseau neuronal récursif (RNN)

RNN est un réseau neuronal qui peut gérer des données de séries chronologiques. Les données de séries chronologiques sont une série de données qui sont observées à intervalles réguliers dans l'ordre chronologique et qui ont des dépendances statistiques les unes sur les autres. Par exemple, les données vocales, les données textuelles, les données de cours boursier, etc.

Test de confirmation (3-2) Le réseau RNN a trois poids principaux. L'un est le poids appliqué lors de la définition de la couche intermédiaire à partir de l'entrée, L'un est le poids appliqué lors de la définition de la sortie de la couche intermédiaire. Expliquez le poids restant.

répondre Le poids appliqué de la couche intermédiaire du passé (une avant) à la couche intermédiaire du présent (maintenant).

Caractéristiques de RNN: Pour travailler avec un modèle de série chronologique, conservez l'état initial et l'état du temps passé t-1, puis récursivement t à la fois suivante. Vous avez besoin de la structure récursive souhaitée.

Exercice (3-3,4) image.png image.png image.png image.png

À la suite de l'exécution de code, une erreur se produit jusqu'à 2000 fois et l'erreur converge progressivement. Pour essayer, j'ai changé hidden_layer_size en 100. En conséquence, il a été constaté qu'en augmentant excessivement le nombre de couches cachées, des calculs considérables étaient nécessaires pour que les résultats convergent. image.png

Ensuite, j'ai changé weight_init_std (valeur initiale du poids) en 0,1. Confirmé que la convergence des erreurs ne s'est pas produite en réduisant la valeur initiale du poids. image.png

Enfin, j'ai changé le learning_rate à 0,5. Confirmez que la convergence des erreurs est plus rapide en augmentant le taux d'apprentissage. image.png

Utilisez Xavier comme valeur initiale du poids. image.png Modifiez la valeur initiale et exécutez. image.png Ensuite, définissez la valeur initiale du poids avec He et exécutez. image.png résultat image.png

Changez la fonction d'activation en fonction ReLU et vérifiez l'explosion du gradient. (Explosion de pente: l'opposé de la disparition de la pente, elle croît de manière exponentielle à chaque propagation arrière et ne converge pas.) image.png image.png image.png Le résultat était une explosion de gradient et a constaté qu'elle ne convergeait pas.

Exécuté à l'aide de tanh. Définir le dérivé de tanh image.png image.png résultat image.png On voit que le dégradé explose comme la fonction ReLU.

BPTT Abréviation de BackproPagation Through Time, qui est l'une des méthodes de propagation des erreurs.

la revue La méthode de propagation des erreurs est basée sur le résultat du calcul (sortie). Test de confirmation (3-5) Trouvez dx / dz en utilisant le principe de la loi des chaînes. z=t^2 t=x+y

dx/dz = az/dt * dt/dx

az/dt = 2t À partir de dt / dx = 1

dx/dz = 2t =2(x+y)

Test de confirmation (3-6) Exprimez y1 dans la figure ci-dessous avec une formule utilisant x, s0, s1, Win, W, Wout.

Défi de RNN: Il est difficile d'apprendre une longue série temporelle car le gradient disparaît au fur et à mesure que l'on remonte dans le temps.

la revue Le problème de la disparition du gradient est que le gradient devient plus doux à mesure qu'il se propage aux couches inférieures par la méthode de propagation des erreurs. pour cette raison, Dans la couche inférieure, les mises à jour des paramètres se produisent rarement et ne convergent pas vers la valeur optimale.

Test de confirmation (3-9) 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.

répondre 0.25 Différencier la fonction sigmoïde (1-sigmoïde (x)) * Il devient sugmoïde (x), et lorsque 0 est substitué à x et calculé, il devient 0,25.

Explosion de gradient Comme confirmé dans l'exercice ci-dessus, le gradient augmente de façon exponentielle à chaque rétropropagation et ne converge pas.

Modèle LSTM

CEC: En tant que solution pour la disparition du gradient et l'explosion du gradient, il peut être résolu si le gradient est 1. Le problème est que le poids des données d'entrée est uniforme quelle que soit la dépendance temporelle.

En ce qui concerne le fait que les poids sont uniformes, le problème est résolu en changeant les poids sur les dates d'entrée / sortie.

Les défis du modèle LSTM Toutes les informations passées sont stockées dans CEC. Par conséquent, même si les informations passées ne sont plus nécessaires, elles ne peuvent pas être supprimées. Je le garderai.

Comme solution, si les informations passées ne sont plus nécessaires, fournissez une fonction pour supprimer les informations à ce moment → porte Oblivion

Test de confirmation (3-10) Supposons que vous souhaitiez saisir la phrase suivante dans LSTM et prédire les mots qui entrent dans les espaces. Le mot «très» dans le texte est dans la prédiction vide On considère qu'il n'affectera pas même s'il disparaît. Quelle date est susceptible de fonctionner dans de tels cas? "Le film était intéressant. Au fait, j'avais tellement faim que quelque chose ..."

répondre Il semble que la porte de l'oubli fonctionne car «très» n'a aucun effet même si ce n'est pas dans la prédiction.

Connexion judas Je veux propager les informations passées stockées dans CEC à d'autres nœuds à tout moment, ou les oublier à tout moment. → Une structure qui permet la propagation à la valeur de CEC elle-même via une matrice de poids est appelée connexion judas.

GRU

Le modèle LSTM a un problème en ce que le nombre de paramètres est grand et la charge de calcul est élevée. GRU a été conçu pour le résoudre. Le nombre de paramètres a été considérablement réduit et la précision peut être attendue de la même partie ou plus. (En pratique, cela dépend du cas, donc ce n'est pas forcément compatible avec le haut)

Test de confirmation (3-12) Décrivez brièvement les problèmes rencontrés par le LSTM et le CEC. LSTM: Le nombre de paramètres est grand et la charge de calcul est lourde, et le calcul du résultat prend du temps. CEC: Puisque toutes les informations passées sont enregistrées, il n'est pas possible de supprimer les informations passées qui ne sont plus nécessaires.

Test de confirmation (3-13) Décrivez brièvement la différence entre LSTM et GRU. La différence entre LSTM et GRU est que le nombre de paramètres est petit et la charge de calcul est légère. (En pratique, les deux modèles sont exécutés et le modèle approprié est sélectionné.)

RNN bidirectionnel

Un modèle qui améliore la précision en ajoutant des informations futures en plus des informations passées. Exemple: utilisé dans la prédiction de phrases et la traduction automatique.

seq2seq Encoder-Un type de modèle de décodeur utilisé pour le dialogue automatique et la traduction automatique.

Encoder-RNN Une structure dans laquelle les données de texte entrées par l'utilisateur sont transmises en les divisant en jetons pour chaque mot. Divisez chaque jeton et décomposez l'ID de chaque jeton. Embedding Conversion d'un identifiant en un vecteur de représentation distribuée représentant ce jeton.

Flux de processus Entrez le vecteur 1 dans RNN et sortez l'état caché. Entrez cet état caché et le vecteur suivant 2 dans le RNN pour définir l'état caché. Répétez le flux de sortie. L'état caché lorsque le dernier vecteur est entré est défini comme état final, et cet état final est Il est appelé vecteur de pensée et est un vecteur qui exprime le sens de la phrase d'entrée.

Decoder-RNN Une structure dans laquelle le système génère des données de sortie pour chaque jeton tel qu'un mot.

Flux de processus Sortie de la probabilité de génération de chaque jeton à partir de l'état final de Encoder-RNN. état final comme état d'installation du Decoder-RNN Définissez et entrez dans Incorporation. Il sélectionne ensuite au hasard les jetons en fonction de la probabilité de génération (échantillonnage). Incorporation du jeton sélectionné par échantillonnage C'est la prochaine entrée du Decoder-RNN. Répétez ce qui précède pour convertir le jeton en une chaîne.

Test de confirmation (3-15) Choisissez parmi les options ci-dessous qui décrivent seq2seq.

répondre 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.

HRED Il se compose de seq2seq + Context-RNN. Context-RNNha Une structure qui rassemble une série de phrases compilées par Encoder et la convertit en un vecteur qui représente tout le contexte de conversation jusqu'à présent. Cette Vous pourrez y répondre avec l'historique des conversations passées pris en compte.

Défis de seq2seq Vous ne pouvez répondre qu'à une seule question à la fois. Il n'y a pas de contexte à la question, juste une réponse. Parce qu'il a été conçu pour faire des remarques plus humaines HRED.

HRED produit l'énoncé suivant à partir des n-1 énoncés passés. Cela répond en ligne avec le flux du mot précédent, résultant en une phrase plus humaine. Sera généré.

Les défis de la HRED ・ Il n'y a qu'une variété littérale, et il n'y a pas de variété «fluide» comme la conversation. Même si on leur donne la même liste de dialogue, seule la même réponse sera donnée à chaque fois Je ne peux pas. ・ Court et manque d'informations. A tendance à apprendre des réponses courtes et communes.

VHRED Une structure qui ajoute le concept de variables latentes VAE à HRED. Résolvez les problèmes de HRED en ajoutant VAE.

Test de confirmation (3-16) seq2 Décrivez brièvement la différence entre seq et HRED et entre HRED et VHRED. Différence entre seq2seq et HRED seq2seq est une sorte de modèle Encoder-Decoder, et HRED est une structure qui combine seq2seq avec Context-RNN. seq2seq est une question-réponse, mais HRED génère le dialogue suivant à partir du dialogue précédent.

Différence entre HRED et VHRED VHRED est une structure dans laquelle la variable latente de VAE est ajoutée à HRED. C'est un problème pour HRED. Il a été conçu pour éliminer le manque d'informations.

AE(Auto-Encoder) Un apprentissage non supervisé. Exemple spécifique Dans le cas de MNIST, un réseau neuronal qui produit la même image lorsqu'une image de 28 x 28 nombres est entrée.

Structure de l'auto-encodeur Le réseau neuronal qui convertit les données d'entrée en fonction latente z s'appelle Encoder et restaure l'image d'origine en utilisant la variable latente z comme entrée. Le réseau neuronal est appelé Decoder. En guise de mérite, la dimension peut être réduite. Flux de processus Traitez dans l'ordre des données d'entrée → codeur → variable latente z → décodeur → données de sortie.

VAE Dans un Auto-Encoder normal, certaines données sont placées dans la variable latente z, mais l'état de sa structure est inconnu. Par conséquent, VAE suppose une distribution de probabilité z à N (0,1) pour cette variable latente z.

Test de confirmation (3-19) Répondez aux blancs dans la description ci-dessous à propos de VAE. "Introduire ____ dans la variable latente de l'auto-encodeur."

répondre Distribution de probabilité

Word2Vec Dans RNN, il n'est pas possible de donner à NN une chaîne de caractères de longueur variable telle qu'un mot. Par conséquent, un vocabulaire est créé à partir des données d'apprentissage. Par exemple, si vous créez un vocabulaire de 7 mots, vous aurez à l'origine autant de mots que le dictionnaire.

mérite L'apprentissage de la représentation distribuée de données à grande échelle est devenu possible avec une vitesse de calcul et une capacité de mémoire réalistes. Conventionnel: la matrice de poids ne peut être créée que pour le vocabulaire x le vocabulaire Cette fois: Vocabulaire × vecteur de poids dans n'importe quelle dimension de vecteur mot peut être créé.

Attention Mechanism seq2seq est difficile à gérer de longues phrases. Soit 2 mots, soit 100 mots doivent être saisis dans un vecteur de dimension fixe. Comme solution, Attention Machanism a été imaginé car plus la phrase est longue, plus la dimension de la représentation interne de la séquence est grande. Quels mots de l'entrée et de la sortie sont liés? Une structure pour apprendre le degré de pertinence.

Test de confirmation (3-20) Décrivez la différence entre RNN et Word2Vec, seq2seq et Attention. Différence entre RNN et Word2Vec RNN génère une matrice de pondération uniquement pour le vocabulaire x le vocabulaire, mais Word2Vec génère un vecteur de pondération pour le vocabulaire x la résolution de mot arbitraire. Cela a permis de calculer avec une vitesse de calcul et une quantité de mémoire réalistes en utilisant Word2Vec.

Différence entre seq2seq et Attention Avec seq2seq, il est difficile de gérer des phrases longues et seules des longueurs fixes peuvent être prises en charge, mais avec Attention, les longueurs variables peuvent être prises en charge en apprenant le degré de pertinence entre les entrées et les sorties.

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)
datetime partie 1
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
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 1
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) -