Dieser Artikel ist eine leicht verständliche Ausgabe von Kapitel 7 Deep Learning von Grund auf mit Ihrem eigenen Verständnis der Lerntechniken. Ich konnte es selbst verstehen, also hoffe ich, dass Sie es bequem lesen können. Ich würde mich auch sehr freuen, wenn Sie sich beim Studium dieses Buches darauf beziehen könnten.
class Momentum:
def __init__(self, lr=0.01, momentum=0.9):
self.lr = lr #Lernrate
self.momentum = momentum #Impulskonstante
self.v = None #Geschwindigkeit
def update(self, params, grads):
if self.v is None: #Initialisieren Sie die Geschwindigkeit jedes Parameters nur am Anfang
self.v = {}
for key,val in params.items():
self.v[key] = np.zeros_like(val) #Initialisieren Sie, indem Sie die Geschwindigkeit jedes Parameters auf Null setzen
for key in params.keys():
self.v[key] = self.momentum *self.v[key] - self.lr * grads[key] #Finden Sie die Geschwindigkeit am aktuellen Standort
params[key] = params[key] + self.v[key]
Die Momentum-Methode verwendet das Konzept der Geschwindigkeit. Erstellen Sie daher zuerst Geschwindigkeit mit Instanzvariablen.
Ermitteln Sie die Geschwindigkeit am aktuellen Punkt aus der Steigung und fügen Sie sie den aktuellen Gewichtungsparametern hinzu, um die Parameter zu aktualisieren.
class AdaGrad: #Der Lernkoeffizient kann für jeden Parameter abgeschwächt werden
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]) #Setzen Sie die Summe der Quadrate der Gradienten jedes Parameters in h
params[key] = params[key] - ((self.lr * grads[key] )/ (np.sqrt(self.h[key]) + 1e-7))
Die AdaDrad-Methode muss nicht erklärt werden, da sie nur die im vorherigen Artikel beschriebene Formel implementiert.
Verringern Sie den Lernkoeffizienten nach und nach und subtrahieren Sie wie SGD.