[PYTHON] Apprentissage en profondeur / rétropropagation de l'erreur de produit matriciel

1.Tout d'abord

Comme il était difficile de comprendre l'erreur de propagation en retour du produit matriciel, je vais le résumer.

2. Rétropropagation de l'erreur de produit scalaire

Revoir la rétropropagation d'erreur du produit scalaire, ![Capture d'écran 2020-03-29 15.41.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/209705/aaff755d-2340-a6ac-ad21- e590c81d87db.png) En supposant que la cible à gradient est L et que $ \ frac {\ partial L} {\ partial y} $ est connu à l'avance, à partir de la loi des chaînes スクリーンショット 2020-03-29 15.51.39.png Ce n'est pas un problème, n'est-ce pas?

3. Rétropropagation de l'erreur de produit de la matrice

Cependant, en ce qui concerne les produits matriciels, cela change avec l'intuition. スクリーンショット 2020-03-29 16.04.49.png

D'une manière ou d'une autre, il ne vient pas avec une épingle. Alors, je vais le confirmer concrètement. Le paramètre est considéré comme connecté au neurone Y via le produit interne de deux neurones X et de quatre poids W. スクリーンショット 2020-03-29 16.20.37.png スクリーンショット 2020-03-29 16.24.32.png ** 1) Tout d'abord, trouvez $ \ frac {\ partial L} {\ partial X} $. ** Tout d'abord, calculez-les à l'avance. スクリーンショット 2020-03-29 16.30.57.png En utilisant ce calcul sur le chemin スクリーンショット 2020-03-29 16.35.53.png

** 2) Ensuite, trouvez $ \ frac {\ partial L} {\ partial y} $. ** Tout d'abord, calculez-les à l'avance. スクリーンショット 2020-03-29 16.44.41.png En utilisant ce calcul sur le chemin スクリーンショット 2020-03-29 16.46.43.png

4. Code de propagation avant et arrière pour les produits matriciels

Si x1 = X, x2 = Y, grad = $ \ frac {\ partial L} {\ partial y} $,

class MatMul(object):
    def __init__(self, x1, x2):
        self.x1 = x1
        self.x2 = x2

    def forward(self):
        y = np.dot(self.x1, self.x2)
        self.y = y
        return y

    def backward(self, grad):
        grad_x1 = np.dot(grad, self.x2.T)
        grad_x2 = np.dot(self.x1.T, grad)
        return (grad_x1, grad_x2)

Recommended Posts

Apprentissage en profondeur / rétropropagation de l'erreur de produit matriciel
Introduction au Deep Learning ~ Rétropropagation ~
L'apprentissage en profondeur
Mémorandum d'apprentissage profond
Apprentissage en profondeur Python
Apprentissage profond × Python
Apprentissage profond / rétropropagation d'erreur de la fonction sigmoïde
Premier apprentissage profond ~ Lutte ~
Python: pratique du Deep Learning
Fonctions d'apprentissage en profondeur / d'activation
Apprentissage profond à partir de zéro
Deep learning 1 Pratique du deep learning
Apprentissage profond / entropie croisée
Premier apprentissage profond ~ Préparation ~
Première solution d'apprentissage en profondeur ~
J'ai essayé le deep learning
Technologie d'apprentissage en profondeur à grande échelle
Fonction d'apprentissage profond / softmax
[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
Où dans l'apprentissage en profondeur, le produit matriciel / produit interne est utilisé
Apprentissage profond à partir de zéro 1 à 3 chapitres
Essayez l'apprentissage en profondeur avec TensorFlow
Deep Learning Gaiden ~ Programmation GPU ~
Reconnaissance d'image par apprentissage profond 1 théorie
Deep running 2 Réglage de l'apprentissage profond
Apprentissage profond / code de travail LSTM
<Cours> Apprentissage en profondeur: Jour 1 NN
Apprentissage profond du noyau avec Pyro
Apprentissage profond pour la formation composée?
Présentation d'Udacity Deep Learning Nanodegree
Sujets> Deep Learning: Day3 RNN
Introduction au Deep Learning ~ Règles d'apprentissage ~
Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
Générez des Pokémon avec Deep Learning