[PYTHON] [Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad

introduction

Cet article est une sortie facile à comprendre du chapitre 7 Deep Learning à partir de zéro, avec votre propre compréhension des techniques d'apprentissage. 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.

Implémentation de la méthode Momentum

class Momentum:
    def __init__(self, lr=0.01, momentum=0.9):
        self.lr = lr #Taux d'apprentissage
        self.momentum = momentum #Constante de momentum
        self.v = None #la vitesse
    
    def update(self, params, grads):
        if self.v is None: #Initialisez la vitesse de chaque paramètre uniquement au début
            self.v = {}
            for key,val in params.items():
                self.v[key] = np.zeros_like(val) #Initialiser en mettant à zéro la vitesse de chaque paramètre
            
        for key in params.keys():
            self.v[key] = self.momentum *self.v[key] - self.lr * grads[key] #Trouvez la vitesse à l'emplacement actuel
            params[key] = params[key] + self.v[key]

La méthode Momentum utilise le concept de vitesse, alors créez d'abord la vitesse avec des variables d'instance.

Trouvez la vitesse au point actuel de la pente et ajoutez-la aux paramètres de pondération actuels pour mettre à jour les paramètres.

Mise en œuvre de la méthode AdaGrad

class AdaGrad: #Le coefficient d'apprentissage peut être atténué pour chaque paramètre
    def __init__(self, lr=0.01):
        self.lr = lr
        self.h = None
        
    def update(self, params, grads):
        if self.h is None:
            self.h = {}
            for key,val in params.items():
                self.h[key] = np.zeros_like(val)
        for key in params.keys():
            self.h[key] = self.h[key] + (grads[key] * grads[key]) #Mettez la somme des carrés des gradients de chaque paramètre dans h
            params[key] = params[key] - ((self.lr * grads[key] )/ (np.sqrt(self.h[key]) + 1e-7))

Quant à la méthode AdaDrad, il n'est pas nécessaire de l'expliquer car elle implémente simplement la formule écrite dans l'article précédent.

Diminuez petit à petit le coefficient d'apprentissage et soustrayez comme SGD.

Recommended Posts

[Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
Apprentissage profond à partir de zéro
Python vs Ruby "Deep Learning from scratch" Chapitre 4 Implémentation de la fonction de perte
Apprentissage profond à partir de zéro 1 à 3 chapitres
Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
Application de Deep Learning 2 à partir de zéro Filtre anti-spam
Othello ~ De la troisième ligne de "Implementation Deep Learning" (4) [Fin]
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
Examen de la méthode de prévision des échanges utilisant le Deep Learning et la conversion en ondelettes - Partie 2
Apprentissage profond à partir de zéro (calcul des coûts)
Python vs Ruby "Deep Learning from scratch" Chapitre 1 Graphique de la fonction sin et de la fonction cos
Mémo d'apprentissage profond créé à partir de zéro
J'ai considéré la méthode d'apprentissage automatique et son langage d'implémentation à partir des informations de balise de Qiita
Chapitre 2 Implémentation de Perceptron Ne découpez que les bons points de Deeplearning à partir de zéro
Écrivez vos impressions sur l'édition du framework Deep Learning 3 créée à partir de zéro
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 10-2) Valeur initiale du poids
Mise en œuvre et expérience de la méthode de clustering convexe
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
Apprentissage profond à partir de zéro (propagation vers l'avant)
Othello-De la troisième ligne de "Implementation Deep Learning" (3)
Signification des modèles et paramètres d'apprentissage en profondeur
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]
"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"
[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
Othello-De la troisième ligne de "Implementation Deep Learning" (2)
[Mémo d'apprentissage] Deep Learning fait de zéro [~ Chapitre 4]
Réaliser la construction d'environnement pour "Deep Learning from scratch" avec docker et Vagrant
[Deep Learning from scratch] J'ai essayé d'implémenter la couche sigmoïde et la couche Relu
[Deep Learning from scratch] Implémentation de couche de la fonction softmax à l'erreur d'entropie croisée
Apprentissage profond à partir de zéro - Conseils du chapitre 4 pour la théorie de l'apprentissage profond et la mise en œuvre apprise en Python
Examen de la méthode de prévision des échanges utilisant le Deep Learning et la conversion en ondelettes
Mémo d'auto-apprentissage "Deep Learning from scratch" (glossaire illisible)
"Deep Learning from scratch" Mémo d'auto-apprentissage (n ° 9) Classe MultiLayerNet
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
GitHub du bon livre "Deep Learning from scratch"
Deep Learning from scratch Chapter 2 Perceptron (lecture du mémo)
Un mémorandum d'étude et de mise en œuvre du Deep Learning
Apprentissage parallèle du deep learning par Keras et Kubernetes
Résumé Python vs Ruby "Deep Learning from scratch"
Implémentation du modèle Deep Learning pour la reconnaissance d'images
Mémo d'auto-apprentissage «Deep Learning from scratch» (10) Classe MultiLayerNet
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 11) CNN
Apprentissage profond appris par mise en œuvre (segmentation) ~ Mise en œuvre de SegNet ~
Créez un environnement python pour apprendre la théorie et la mise en œuvre de l'apprentissage profond
[Deep Learning from scratch] Valeur initiale du poids du réseau neuronal utilisant la fonction sigmoïde
Deep learning 1 Pratique du deep learning
[Deep Learning from scratch] J'ai implémenté la couche Affine
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 19) Augmentation des données
Méthode de voisinage #k d'apprentissage automatique et sa mise en œuvre et divers
Bibliothèque DNN (Deep Learning): Comparaison de chainer et TensorFlow (1)
Méthode d'étude pour apprendre le machine learning à partir de zéro (version mars 2020)