Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung des Gradientenabstiegsalgorithmus in Python
Gradient Descent ist ein häufig verwendeter Optimierungsalgorithmus und wird häufig beim maschinellen Lernen eingesetzt. Python ist eine großartige Programmiersprache für die Datenwissenschaft und es gibt viele vorgefertigte Bibliotheken zur Implementierung von Gradientenabstiegsalgorithmen. In diesem Artikel wird der Gradientenabstiegsalgorithmus in Python ausführlich vorgestellt, einschließlich Konzepten und Implementierung.
1. Definition von Gradient Descent
Gradient Descent ist ein iterativer Algorithmus, der zur Optimierung der Parameter einer Funktion verwendet wird. Beim maschinellen Lernen verwenden wir normalerweise den Gradientenabstieg, um die Verlustfunktion zu minimieren. Daher kann der Gradientenabstieg als eine Methode zur Minimierung einer Funktion betrachtet werden. Der Gradientenabstiegsalgorithmus kann in jedem System verwendet werden, in dem Gradienten berechnet werden können, einschließlich linearer Regression, logistischer Regression, neuronalen Netzen und mehr.
2. Das Prinzip des Gradientenabstiegs
Das Grundprinzip des Gradientenabstiegsalgorithmus besteht darin, den Minimalwert einer Funktion zu ermitteln. Normalerweise betrachten wir den Minimalwert einer Funktion als den Minimalwert der Parameter der Funktion (die Parameter beziehen sich auf die Variablen, die wir optimieren müssen). Daher müssen wir die Ableitung der Parameterfunktion berechnen. Wir verwenden die Ableitung, um die aktuelle Steigung der Funktion zu bestimmen und multiplizieren sie mit der Lernrate, um zu bestimmen, in welche Richtung wir als nächstes gehen sollten. Wenn die Ableitung einer Funktion Null ist, haben wir das Minimum der Funktion gefunden. In praktischen Anwendungen müssen wir nicht garantieren, dass wir das globale Minimum der Funktion finden können, wir müssen nur ihr lokales Minimum finden.
3. Schritte des Gradientenabstiegsalgorithmus
1. Wir müssen die für die Optimierungsfunktion erforderlichen Parameter auf einen Anfangswert setzen, beispielsweise die Parameter auf Null oder eine Zufallszahl setzen.
2. Berechnen Sie die Verlustfunktion. Berechnet eine Verlustfunktion unter Verwendung der angegebenen Parameter.
3. Berechnen Sie den Gradienten. Berechnen Sie den Gradienten der Verlustfunktion. Der Gradient gibt die Steigung der Funktion unter den aktuellen Parametern an.
4. Parameter aktualisieren. Aktualisieren Sie Parameter basierend auf Farbverläufen. Die aktualisierten Parameter bringen die Verlustfunktion näher an die optimale Lösung.
5. Wiederholen Sie die Schritte 2 bis 4, bis die Stoppbedingung erfüllt ist. Die Stoppbedingung kann das Erreichen einer bestimmten Anzahl von Iterationen oder das Erreichen eines bestimmten Optimierungsniveaus sein.
4. Python implementiert den Gradientenabstieg (Batch-Gradientenabstieg)
Als nächstes stellen wir vor, wie der Batch-Gradientenabstiegsalgorithmus in Python implementiert wird. Der Batch-Gradientenabstiegsalgorithmus ist eine Form des Gradientenabstiegsalgorithmus und setzt voraus, dass wir über genügend Speicher verfügen um alle Trainingsbeispiele auf einmal zu verarbeiten.
Datenvorbereitung
Wir verwenden den integrierten Datensatz IRIS der Datensätze von sklearn als Beispieldaten für unsere Implementierung des Batch-Gradientenabstiegs. Das Folgende ist das Python-Paket, das wir verwenden müssen, und der Code zum Importieren des Datensatzes:
from sklearn.datasets import load_iris import numpy as np iris = load_iris() X = iris.data y = iris.target
Datenvorverarbeitung
Vor dem Stapelgradientenabstieg müssen wir unsere Daten normalisieren. Dies kann durch die Berechnung des Mittelwerts und der Standardabweichung jedes Merkmals erfolgen.
mean = np.mean(X,axis=0) std = np.std(X,axis=0) X = (X - mean)/std
Definieren Sie die Verlustfunktion
Wir werden die quadratische Fehlerfunktion als Verlustfunktion für das Modell verwenden. Unsere Verlustfunktion lautet:
def loss_function(X,y,theta): m = len(y) predictions = np.dot(X,theta) cost = (1/(2*m)) * np.sum((predictions-y)**2) return cost
Definieren Sie die Trainingsfunktion
Als nächstes definieren wir die Funktion zur Implementierung des Batch-Gradienten-Abstiegsalgorithmus.
def gradient_descent(X,y,theta,learning_rate,num_iterations): m = len(y) cost_history = np.zeros(num_iterations) theta_history = np.zeros((num_iterations,theta.shape[0])) for i in range(num_iterations): prediction = np.dot(X,theta) theta = theta - (1/m)*learning_rate*(X.T.dot((prediction - y))) theta_history[i,:] = theta.T cost_history[i] = loss_function(X,y,theta) return theta, cost_history, theta_history
Führen Sie die Trainingsfunktion aus
Wir führen nun die Modelltrainingsfunktion aus, geben die Kosten- und Parameterwerte des endgültigen Modells aus und passen dann die Trainingsdaten an das Modell an.
theta = np.zeros(X.shape[1]) learning_rate = 0.1 num_iterations = 1000 theta,cost_history,theta_history = gradient_descent(X,y,theta,learning_rate,num_iterations) print('Theta: ',theta) print('Final cost/MSE: ',cost_history[-1])
5. Zusammenfassung
In diesem Artikel haben wir den Gradientenabstiegsalgorithmus in Python erklärt, einschließlich Konzepte und Implementierung. Wir stellen zunächst die Definition und das Prinzip des Gradientenabstiegsalgorithmus vor und beschreiben dann die Schritte des Gradientenabstiegsalgorithmus im Detail. Schließlich haben wir einen Batch-Gradientenabstieg implementiert und den Beispieldatensatz ausgeführt, um das trainierte Modell und seine Kosten zu erhalten.
Der Gradientenabstiegsalgorithmus ist ein wesentlicher Wissenspunkt beim maschinellen Lernen, und Python ist eine der am häufigsten verwendeten Programmiersprachen in der Datenwissenschaft. Daher ist es sehr wichtig, den Gradientenabstiegsalgorithmus in Python zu lernen. Ich hoffe, dieser Artikel hilft Ihnen beim Erlernen des Gradientenabstiegsalgorithmus in Python.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Gradientenabstiegsalgorithmus in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!