[PYTHON] [Deep Learning from scratch] À propos des couches requises pour implémenter le traitement de rétropropagation dans un réseau neuronal

introduction

Cet article est une sortie facile à comprendre de ** Deep Learning from scratch Chapter 6 Error back propagation method **. J'ai pu le comprendre moi-même, j'espère donc que vous pourrez le lire confortablement. De plus, je serais plus qu'heureux que vous puissiez vous y référer lorsque vous étudiez ce livre.

Qu'est-ce qu'une couche

Pour implémenter la rétropropagation dans un réseau de neurones, les neurones doivent être des couches. Il est plus facile de considérer une couche comme un neurone qui implémente à la fois la propagation avant et arrière.

Le nombre minimum de couches requises pour implémenter un réseau neuronal est ** couche sigmoïde, couche Relu, couche affine, couche de sortie vers la fonction de perte **.

En implémentant la couche en tant que classe et en la transformant comme un composant, il devient plus facile à utiliser lors de la réorganisation du réseau neuronal en différentes structures.

Donc, cette fois, je vais essayer de superposer les neurones d'addition et de multiplication que j'ai mentionnés dans l'article précédent.

Couche d'addition

class AddLayer:#Couche d'addition
    def __init__(self):
        pass#Ne fais rien
    
    def forward(self, x, y):
        out = x + y
        return out
    
    def backward(self, dout):
        dx = dout * 1
        dy = dout * 1 #Au moment de l'ajout, les deux variables héritent du différentiel précédent
        return dx, dy

Dans la couche d'addition, le processus de propagation directe additionne les valeurs des deux variables et les renvoie, et le processus de propagation arrière hérite et renvoie le différentiel précédent.

Multiplier la couche

class MulLayer:#Multiplier la couche
    def __init__(self):
        self.x = None
        self.y = None #Variable xy en variable d'instance

    def forward(self, x, y):
        self.x = x
        self.y = y #Enregistrez la valeur de la variable xy car elle sera utilisée dans le processus de propagation arrière.
        out = x * y
        
        return out

    def backward(self, dout):
        dx = dout * self.y
        dy = dout * self.x

        return dx, dy

Dans la couche de multiplication, le processus de propagation directe multiplie la variable xy et retourne, et le processus de propagation arrière multiplie la valeur de l'autre variable par le différentiel précédent pour obtenir et renvoyer le différentiel.

Recommended Posts

[Deep Learning from scratch] À propos des couches requises pour implémenter le traitement de rétropropagation dans un réseau neuronal
[Deep Learning from scratch] Implémentez le traitement de rétropropagation dans le réseau neuronal par la méthode de propagation de retour d'erreur
J'ai essayé d'implémenter Perceptron Part 1 [Deep Learning from scratch]
Chapitre 3 Réseau de neurones Ne découpez que les bons points de Deeplearning à partir de zéro
[Deep Learning from scratch] J'ai essayé d'expliquer la confirmation du gradient d'une manière facile à comprendre.
Deep Learning from scratch 4.4.2 Gradient pour les réseaux de neurones La question sur la fonction numerical_gradient a été résolue.
"Deep Learning from scratch" avec Haskell (inachevé)
[Deep Learning from scratch] À propos de l'optimisation des hyper paramètres
[Deep Learning from scratch] J'ai essayé d'implémenter la couche sigmoïde et la couche Relu
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
De rien sur Ubuntu 18.04 à la configuration d'un environnement Deep Learning sur Tensor
[Deep Learning from scratch] Accélération du réseau de neurones J'ai expliqué le traitement de la propagation arrière
[Deep Learning from scratch] Valeur initiale du poids du réseau neuronal utilisant la fonction sigmoïde
[Deep Learning from scratch] J'ai implémenté la couche Affine
Apprentissage profond à partir de zéro
Implémenter le réseau neuronal à partir de zéro
Implémentez un réseau de neurones feedforward dans Chainer pour classer les documents
[Deep Learning] Exécuter la console de réseau neuronal SONY à partir de CUI
[Deep Learning from scratch] J'ai essayé d'expliquer le décrochage
[Deep Learning from scratch] Poids initial du réseau neuronal lors de l'utilisation de la fonction Relu
[Apprentissage en profondeur] Découvrez comment utiliser chaque fonction du réseau neuronal convolutif [DW jour 3]
Un mémo lors de l'exécution de l'exemple de code de Deep Learning créé à partir de zéro avec Google Colaboratory
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 14) Exécutez le programme du chapitre 4 sur Google Colaboratory
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 8) J'ai dessiné le graphique du chapitre 6 avec matplotlib
J'ai essayé de mettre en œuvre le modèle de base du réseau neuronal récurrent
[Partie 4] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 1
[Partie 1] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Partie 3] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 3
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 7
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 5
[Partie 2] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
Un amateur a trébuché dans le Deep Learning à partir de zéro.
Une histoire sur la tentative d'implémentation de variables privées en Python.
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 2
Implémenter un réseau neuronal à 3 couches
Apprentissage profond à partir de zéro 1 à 3 chapitres
Introduction au Deep Learning ~ Rétropropagation ~
Chapitre 1 Introduction à Python Découpez uniquement les bons points de Deeplearning à partir de zéro
Pourquoi ModuleNotFoundError: Aucun module nommé'dataset.mnist 'n'apparaît dans "Deep Learning from scratch".
Apprentissage profond à partir de zéro (calcul des coûts)
J'ai essayé de comprendre attentivement la fonction d'apprentissage dans le réseau de neurones sans utiliser la bibliothèque d'apprentissage automatique (deuxième moitié)
Mémo d'apprentissage profond créé à partir de zéro
Une histoire sur la création d'un programme qui augmentera le nombre d'abonnés Instagram de 0 à 700 en une semaine
À propos de l'ordre d'apprentissage des langages de programmation (de débutant à intermédiaire) Partie 2
Graphique de l'historique du nombre de couches de deep learning et du changement de précision
Traitement de la voix par apprentissage profond: identifions qui est l'acteur vocal à partir de la voix
[Deep Learning from scratch] Implémentation de couche de la fonction softmax à l'erreur d'entropie croisée
Créez un environnement d'apprentissage pour le «Deep learning from scratch» avec Cloud9 (jupyter miniconda python3)
Introduction à la création d'IA avec Python! Partie 2 J'ai essayé de prédire le prix de l'immobilier dans la ville de Boston avec un réseau neuronal
Apprentissage amélioré pour apprendre de zéro à profond
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
Apprentissage profond à partir de zéro (propagation vers l'avant)
Apprentissage profond / Apprentissage profond à partir de zéro 2-Essayez de déplacer GRU
Deep learning / Deep learning made from scratch Chapitre 6 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [Chapitre 5]
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 6]
Alignement d'image: du SIFT au deep learning