Maison  >  Article  >  développement back-end  >  Comment implémenter un algorithme de descente de gradient en utilisant Python ?

Comment implémenter un algorithme de descente de gradient en utilisant Python ?

PHPz
PHPzoriginal
2023-09-19 14:55:541418parcourir

Comment implémenter un algorithme de descente de gradient en utilisant Python ?

Comment implémenter un algorithme de descente de gradient en utilisant Python ?

L'algorithme de descente de gradient est un algorithme d'optimisation couramment utilisé dans l'apprentissage automatique et l'apprentissage profond. L'idée de base est de trouver le point minimum de la fonction par itération, c'est-à-dire de trouver la valeur du paramètre qui minimise l'erreur de la fonction. Dans cet article, nous apprendrons comment implémenter l'algorithme de descente de gradient en Python et donnerons des exemples de code spécifiques.

L'idée principale de l'algorithme de descente de gradient est d'optimiser de manière itérative dans la direction opposée du gradient de la fonction, se rapprochant ainsi progressivement du point minimum de la fonction. Dans les applications pratiques, l'algorithme de descente de gradient est divisé en deux variantes : la descente de gradient par lots (Batch Gradient Descent) et la descente de gradient stochastique (Stochastic Gradient Descent).

Tout d'abord, nous introduisons l'implémentation de l'algorithme de descente de gradient par lots. Supposons que nous voulions minimiser une fonction univariée f(x), où x est une variable. À l'aide de l'algorithme de descente de gradient, nous devons calculer la dérivée première de la fonction f(x) par rapport à x, c'est-à-dire f'(x). Cette dérivée représente le taux de changement de la fonction au point actuel. Ensuite, nous mettons à jour le paramètre x de manière itérative, c'est-à-dire x = x - learning_rate * f'(x), où learning_rate est le taux d'apprentissage, qui est utilisé pour contrôler la taille du pas de chaque mise à jour de paramètre.

Ce qui suit est un exemple de code Python de l'algorithme de descente de gradient par lots :

def batch_gradient_descent(f, initial_x, learning_rate, num_iterations):
    x = initial_x
    for i in range(num_iterations):
        gradient = calculate_gradient(f, x)
        x = x - learning_rate * gradient
    return x

def calculate_gradient(f, x):
    h = 1e-9  # 求导的步长,可以根据函数的特点来调整
    return (f(x + h) - f(x - h)) / (2 * h)

Dans le code ci-dessus, la fonction batch_gradient_descent reçoit quatre paramètres : f est la fonction à optimiser, initial_x est la valeur du paramètre initial, learning_rate est l'apprentissage rate, et num_iterations est le nombre d'itérations. La fonction calculate_gradient est utilisée pour calculer le gradient de la fonction f en un certain point x.

Ensuite, nous introduisons l'implémentation de l'algorithme de descente de gradient stochastique. La différence entre l'algorithme de descente de gradient stochastique et l'algorithme de descente de gradient par lots est que seule une partie des données (une partie des échantillons sélectionnée au hasard) est utilisée à chaque fois que les paramètres sont mis à jour. Cette approche est plus efficace sur le plan informatique sur des ensembles de données à grande échelle, mais peut entraîner une convergence plus lente.

Ce qui suit est un exemple de code Python de l'algorithme de descente de gradient stochastique :

import random

def stochastic_gradient_descent(f, initial_x, learning_rate, num_iterations, batch_size):
    x = initial_x
    for i in range(num_iterations):
        batch = random.sample(train_data, batch_size)
        gradient = calculate_gradient(f, x, batch)
        x = x - learning_rate * gradient
    return x

def calculate_gradient(f, x, batch):
    gradient = 0
    for data in batch:
        x_val, y_val = data
        gradient += (f(x_val) - y_val) * x_val
    return gradient / len(batch)

Dans le code ci-dessus, la fonction stochastic_gradient_descent reçoit cinq paramètres : f est la fonction à optimiser, initial_x est la valeur du paramètre initial, learning_rate est l'apprentissage rate, et num_iterations est le nombre d'itérations, batch_size est le nombre d'échantillons utilisés dans chaque itération. La fonction calculate_gradient calcule le gradient d'une fonction f en un certain point x en fonction d'une partie sélectionnée aléatoirement de l'échantillon.

En résumé, nous avons présenté comment utiliser Python pour implémenter l'algorithme de descente de gradient et avons donné des exemples de code spécifiques de l'algorithme de descente de gradient par lots et de l'algorithme de descente de gradient stochastique. En sélectionnant correctement des paramètres tels que le taux d'apprentissage, le nombre d'itérations et le nombre d'échantillons, nous pouvons utiliser l'algorithme de descente de gradient pour optimiser diverses fonctions complexes et améliorer les performances des modèles d'apprentissage automatique et d'apprentissage profond.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn