Pomogłoby to, gdybyś podał kontekst twierdzenia, że spadek gradientu jest nieefektywny. Niewystarczające w stosunku do czego?
Wydaje mi się, że brakującym kontekstem jest porównanie do stochastycznego lub okresowego spadku gradientu w uczeniu maszynowym. Oto jak odpowiedzieć na pytanie w tym kontekście. Optymalizujesz parametry modelu, nawet hiperparametry. Masz więc funkcję kosztu , gdzie - twoje dane, i - wektor parametrów, a - funkcja straty. Aby zminimalizować ten koszt, korzystasz z opadania gradientu ponad parametrami :
∑ni=1L(xi|Θ)xiΘL() θj
∂∂θj∑i=1nL(Θ|xi)
Widzisz więc, że musisz uzyskać sumę dla wszystkich danych . Jest to niefortunne, ponieważ oznacza to, że ciągle przeglądasz dane dla każdego kroku zejścia gradientu. Tak powstaje okresowe i stochastyczne zejście gradientu: co, jeśli próbkujemy z zestawu danych i obliczamy gradient na próbce, a nie na pełnym zestawie?
Tutaj oznacza liczbę obserwacji w próbce . Tak więc, jeśli twoja próbka stanowi 1/100 całego zestawu, przyspiesz obliczenia 100 razy! Oczywiście wprowadza to hałas, który wydłuża naukę, ale hałas zmniejsza się w tempiexi=1,…,n
∂∂θj∑k=1nsL(Θ|xk)
nssn−−√podczas gdy kwota obliczeniowa wzrasta przy , więc ta sztuczka może działać.
n
Alternatywnie, insteado czeka na obliczenie pełnej sumy , możesz podzielić to na partie i zrobić krok dla każdej partii . W ten sposób wykonasz M kroków do czasu obliczenia sumy dla całego zestawu danych. Byłyby to głośniejsze kroki, ale hałas z czasem zanika.∑ni=1∑Ms=1∑nsis=1