Es wäre hilfreich, wenn Sie einen Kontext für die Behauptung angeben, dass der Gradientenabstieg ineffizient ist. Ineffizient im Vergleich zu was?
Ich vermute, dass der fehlende Kontext hier der Vergleich mit dem stochastischen oder Batch-Gradienten-Abfall beim maschinellen Lernen ist. Hier erfahren Sie, wie Sie die Frage in diesem Zusammenhang beantworten können. Sie optimieren die Parameter des Modells, auch die Hyperparameter. Sie haben also die Kostenfunktion , wobei x i - Ihre Daten und Θ - Vektor von Parametern und L ( ) - Verlustfunktion. Um diese Kosten zu minimieren, verwenden Sie den Gradientenabstieg über die Parameter θ j :
∂∑ni=1L(xi|Θ)xiΘL() θj
∂∂θj∑i=1nL(Θ|xi)
Sie sehen also, dass Sie die Summe über alle Daten . Dies ist unglücklich, da dies bedeutet, dass Sie die Daten für jeden Schritt Ihres Gefälleverlaufs in einer Schleife durchlaufen. Auf diese Weise wird der Batch- und der stochastische Gradientenabstieg ermittelt: Was passiert, wenn wir aus dem Datensatz eine Stichprobe erstellen und den Gradienten anhand einer Stichprobe berechnen, nicht anhand des vollständigen Satzes?
∂xi=1,…,n
Hiernsist die Anzahl von Beobachtungen in der Probes. Wenn Ihre Stichprobe also 1/100 des Gesamtsatzes ausmacht, beschleunigen Sie Ihre Berechnungen um das 100-fache! Dies führt natürlich das Rauschen ein, das das Lernen verlängert, aber das Rauschen nimmt mit einer Rate von√ ab
∂∂θj∑k=1nsL(Θ|xk)
nss während sich der Berechnungsbetrag um
nerhöht, sodass dieser Trick funktionieren kann.
n−−√n
Alternativ können Sie, anstatt zu warten, bis die vollständige Summe berechnet ist, diese in Chargen aufteilen und für jede Charge einen Schritt ausführen: ∑ M s = 1 ∑ n s i s = 1 . Auf diese Weise hätten Sie bis zur Berechnung der Summe über den gesamten Datensatz M Schritte ausgeführt. Dies wären lautere Schritte, aber das Geräusch wird mit der Zeit leiser.∑ni=1∑Ms=1∑nsis=1