[PYTHON] [Deep Learning from scratch] Accélération du réseau de neurones J'ai expliqué le traitement de la propagation arrière

introduction

Cet article est une sortie facile à comprendre de ** Deep Learning from scratch Chapter 6 Error Backpropagation 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 que le traitement de rétro-propagation?

Comme je l'ai mentionné une dernière fois, le traitement de rétropropagation est le traitement de la résolution du graphe de calcul de droite à gauche, et la différenciation de chaque variable peut être obtenue.

La formule de gradient du réseau de neurones implémentée dans le chapitre précédent utilisait une méthode pour trouver la différenciation en ajoutant une valeur minute à une variable appelée différenciation numérique. La différenciation numérique est simple et facile à comprendre, mais elle présente l'inconvénient d'un temps de traitement long. C'est là que le ** traitement de rétropropagation ** est utilisé. En mettant en œuvre un traitement de rétro-propagation dans le traitement du réseau neuronal, le gradient peut être obtenu plus rapidement et plus efficacement qu'auparavant.

Comme point de départ, je voudrais implémenter le traitement de propagation avant et le traitement de propagation arrière d'un simple graphe de calcul en python. スクリーンショット 2019-10-31 20.35.55.png

a = 100
as = 3
o = 50
os = 4
t = 1.1

#Traitement de propagation avant
az = a * as #Quantité totale de pommes
oz = o * os #Quantité totale de mikan
z = az + oz #Quantité totale de mikan de pomme
y = z * t #montant total

#Traitement de rétro-propagation
dy = 1 #Différenciation de la réponse y du traitement de propagation directe

# z *Puisque t est une multiplication, les valeurs de chaque variable sont échangées et la différenciation précédente est appliquée.
dz = t * dy = 1.1 #Différenciation de z
dt = z * dy = 500 #Différenciation de t

# az +Puisque oz est un ajout, il hérite du différentiel précédent tel quel
daz = dz = 1.1 #Différenciation de az
doz = dz = 1.1 #Différenciation de l'oz

# o *Puisque os est une multiplication, les valeurs de chaque variable sont échangées et la différenciation précédente est appliquée.
do = os * doz = 4.4 #Différenciation de o
dos = o * doz = 55 #Différenciation du système d'exploitation

# a *Puisqu'il s'agit d'une multiplication, les valeurs de chaque variable sont échangées et la différenciation précédente est appliquée.
da = as * daz = 3.3 #Différenciation d'un
das = a * adz = 330 #Différenciation de as

Puisque le traitement de rétro-propagation de multiplication et d'addition peut être facilement exécuté comme décrit ci-dessus, le traitement de rétro-propagation est mis en œuvre dans le réseau neuronal en l'utilisant.

Recommended Posts

[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] Implémentez le traitement de rétropropagation dans le réseau neuronal par la méthode de propagation de retour d'erreur
[Deep Learning from scratch] Principales méthodes de mise à jour des paramètres pour les réseaux neuronaux
Apprentissage profond à partir de zéro (propagation vers l'avant)
Version Lua Apprentissage profond à partir de zéro Partie 6 [Traitement d'inférence de réseau neuronal]
Apprentissage profond à partir de zéro
[Python] [Traitement du langage naturel] J'ai essayé le Deep Learning ❷ fait de toutes pièces en japonais ①
[Deep Learning from scratch] J'ai implémenté la couche Affine
[Deep Learning from scratch] J'ai essayé d'expliquer le décrochage
Apprentissage profond à partir de zéro 1 à 3 chapitres
J'ai essayé d'implémenter Perceptron Part 1 [Deep Learning from scratch]
Apprentissage profond à partir de zéro (calcul des coûts)
Mémo d'apprentissage profond créé à partir de zéro
[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 4.4.2 Gradient pour les réseaux de neurones La question sur la fonction numerical_gradient a été résolue.
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
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
[Deep Learning from scratch] J'ai essayé d'implémenter la couche sigmoïde et la couche Relu
[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]
"Deep Learning from scratch" avec Haskell (inachevé)
Deep learning / Deep learning made from scratch Chapitre 7 Mémo
[Windows 10] Construction de l'environnement "Deep Learning from scratch"
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
[Deep Learning from scratch] À propos de l'optimisation des hyper paramètres
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning
[Mémo d'apprentissage] Deep Learning fait de zéro [~ Chapitre 4]
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
[Deep Learning from scratch] Valeur initiale du poids du réseau neuronal utilisant la fonction sigmoïde
Mémo d'auto-apprentissage "Deep Learning from scratch" (glossaire illisible)
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
GitHub du bon livre "Deep Learning from scratch"
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Résumé Python vs Ruby "Deep Learning from scratch"
Mémo d'auto-apprentissage «Deep Learning from scratch» (10) Classe MultiLayerNet
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 11) CNN
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 16) J'ai essayé de créer SimpleConvNet avec Keras
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 17) J'ai essayé de créer DeepConvNet avec Keras
[Deep Learning from scratch] Poids initial du réseau neuronal lors de l'utilisation de la fonction Relu
J'ai configuré Django à partir de zéro (Vagrant, Centos, Python3)
Application de Deep Learning 2 à partir de zéro Filtre anti-spam
Deep Learning 2 from scratch 1.3 Traitement du langage naturel 1.3 Résumé
[Deep Learning] Exécuter la console de réseau neuronal SONY à partir de CUI
Chapitre 3 Réseau de neurones Ne découpez que les bons points de Deeplearning à partir de zéro
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 8) J'ai dessiné le graphique du chapitre 6 avec matplotlib
J'ai essayé le deep learning
[Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad
Essayez de créer un réseau de neurones / d'apprentissage en profondeur avec scratch
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 2
Créez un environnement pour "Deep Learning from scratch" avec Docker
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
Un amateur a trébuché dans le Deep Learning ❷ fait de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 4