Il serait utile que vous fournissiez un contexte pour affirmer que la descente en pente est inefficace. Inefficace par rapport à quoi?
Je suppose que le contexte manquant ici est la comparaison avec la descente de gradient stochastique ou par lots dans l'apprentissage automatique. Voici comment répondre à la question dans ce contexte. Vous optimisez les paramètres du modèle, même les hyperparamètres. Donc, vous avez la fonction de coût , où - vos données, et - vecteur de paramètres, et - fonction de perte. Pour minimiser ce coût, vous utilisez une descente de gradient sur les paramètres :
x i Θ L ( ) θ j ∂∑ni = 1L ( xje| Θ)XjeΘL ( ) θj
∂∂θj∑i = 1nL ( Θ | xje)
Donc, vous voyez que vous devez obtenir la somme de toutes les données . C'est dommage, car cela signifie que vous continuez à parcourir les données pour chaque étape de votre descente de gradient. C'est ainsi que la descente en lots et en gradient stochastique se produit: que se passe-t-il si nous échantillonnons à partir de l'ensemble de données et calculons le gradient sur un échantillon, pas l'ensemble complet?
Ici, est le nombre d'observations dans l'échantillon . Donc, si votre échantillon représente 1 / 100e de l'ensemble total, vous accélérez vos calculs de 100 fois! De toute évidence, cela introduit le bruit, ce qui allonge l'apprentissage, mais le bruit diminue à un taux de∂Xi = 1 , … , nnss√
∂∂θj∑k = 1nsL ( Θ | xk)
nss nn--√tandis que le montant du calcul augmente à , cette astuce peut donc fonctionner.
n
Alternativement, au lieu d'attendre que la somme totale soit calculée, vous pouvez la diviser en lots et effectuer une étape pour chaque lot ∑ M s = 1 ∑ n s i s = 1 . De cette façon, vous auriez effectué M étapes au moment où la somme sur l'ensemble des données est calculée. Ce seraient des étapes plus bruyantes, mais le bruit s'annule avec le temps.∑ni = 1∑Ms = 1∑nsjes= 1