La descente de gradient est un algorithme d'optimisation couramment utilisé et largement utilisé dans l'apprentissage automatique. Python est un excellent langage de programmation pour la science des données, et il existe de nombreuses bibliothèques prêtes à l'emploi pour implémenter des algorithmes de descente de gradient. Cet article présentera en détail l'algorithme de descente de gradient en Python, y compris les concepts et la mise en œuvre.
1. Définition de la descente de gradient
La descente de gradient est un algorithme itératif utilisé pour optimiser les paramètres d'une fonction. En apprentissage automatique, nous utilisons généralement la descente de gradient pour minimiser la fonction de perte. Par conséquent, la descente de gradient peut être considérée comme une méthode de minimisation d’une fonction. L'algorithme de descente de gradient peut être utilisé dans n'importe quel système où des gradients peuvent être calculés, y compris la régression linéaire, la régression logistique, les réseaux de neurones, etc.
2. Le principe de la descente de gradient
Le principe de base de l'algorithme de descente de gradient est de trouver la valeur minimale d'une fonction. Nous considérons généralement la valeur minimale d'une fonction comme la valeur minimale de la fonction des paramètres de la fonction (les paramètres font référence aux variables que nous devons optimiser). Par conséquent, nous devons calculer la dérivée de la fonction paramètre. Nous utilisons la dérivée pour déterminer la pente actuelle de la fonction et la multiplions par le taux d'apprentissage pour déterminer la direction dans laquelle nous devrions aller ensuite. Lorsque la dérivée d’une fonction est nulle, on a trouvé le minimum de la fonction. Dans les applications pratiques, nous n’avons pas besoin de garantir que nous pouvons trouver le minimum global de la fonction, il suffit de trouver son minimum local.
3. Étapes de l'algorithme de descente de gradient
1. Initialiser les paramètres. Nous devons définir les paramètres requis pour la fonction d'optimisation sur une valeur initiale, par exemple définir les paramètres sur zéro ou un nombre aléatoire.
2. Calculez la fonction de perte. Calcule une fonction de perte en utilisant les paramètres donnés.
3. Calculez le dégradé. Calculez le gradient de la fonction de perte. Le dégradé indique la pente de la fonction sous les paramètres actuels.
4. Mettre à jour les paramètres. Mettez à jour les paramètres en fonction des dégradés. Les paramètres mis à jour rapprocheront la fonction de perte de la solution optimale.
5. Répétez les étapes 2 à 4 jusqu'à ce que la condition d'arrêt soit remplie. La condition d'arrêt peut être d'atteindre un certain nombre d'itérations ou d'atteindre un certain niveau d'optimisation.
4. Python implémente la descente de gradient (descente de gradient par lots)
Ensuite, nous présenterons comment implémenter l'algorithme de descente de gradient par lots en Python. L'algorithme de descente de gradient par lots est une forme d'algorithme de descente de gradient et suppose que nous disposons de suffisamment de mémoire. pour traiter tous les échantillons d’entraînement en même temps.
Préparation des données
Nous utilisons l'ensemble de données intégré IRIS des ensembles de données de sklearn comme exemples de données pour notre implémentation de la descente de gradient par lots. Voici le package Python que nous devons utiliser et le code pour importer l'ensemble de données :
from sklearn.datasets import load_iris import numpy as np iris = load_iris() X = iris.data y = iris.target
Prétraitement des données
Avant d'effectuer une descente de gradient par lots, nous devons normaliser nos données. Cela peut être fait en calculant la moyenne et l’écart type de chaque caractéristique.
mean = np.mean(X,axis=0) std = np.std(X,axis=0) X = (X - mean)/std
Définissez la fonction de perte
Nous utiliserons la fonction d'erreur quadratique comme fonction de perte pour le modèle. Notre fonction de perte est :
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
Définissez la fonction d'entraînement
Ensuite, nous définissons la fonction pour implémenter l'algorithme de descente de gradient par lots.
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
Exécutez la fonction de formation
Nous exécutons maintenant la fonction de formation du modèle et produisons les valeurs de coût et de paramètre du modèle final, puis ajustons les données de formation au modèle.
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. Résumé
Dans cet article, nous avons expliqué l'algorithme de descente de gradient en Python, y compris les concepts et la mise en œuvre. Nous présentons d’abord la définition et le principe de l’algorithme de descente de gradient, puis décrivons en détail les étapes de l’algorithme de descente de gradient. Enfin, nous avons implémenté la descente de gradient par lots et exécuté l'échantillon de données pour obtenir le modèle entraîné et son coût.
L'algorithme de descente de gradient est un point de connaissance essentiel dans l'apprentissage automatique, et Python est l'un des langages de programmation les plus utilisés en science des données, il est donc très important d'apprendre l'algorithme de descente de gradient en Python. J'espère que cet article vous sera utile pour apprendre l'algorithme de descente de gradient en Python.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!