Problem NIE korygowania stronniczości
Według artykułu
W przypadku rzadkich gradientów, dla wiarygodnego oszacowania drugiego momentu należy uśrednić dla wielu gradientów, wybierając małą wartość β2; jednak jest to dokładnie przypadek małego β2, w którym brak korekcji odchylenia inicjalizacji prowadziłby do znacznie większych początkowych kroków.
Zwykle w praktyce jest ustawiane znacznie bliżej 1 niż (jak sugeruje autor , ), więc współczynniki aktualizacji 1 - β 2 = 0,001 są znacznie mniejsze niż 1 - β 1 = 0.1 .β2)β1β2)= 0,999β1= 0,91 - β2)= 0,0011 - β1= 0,1
W pierwszym etapie treningu m1= 0,1 gt , v1= 0,001 g2)t , m1/ ( v1--√+ ϵ )termin w aktualizacji parametru może być bardzo duży, jeśli zastosujemy bezpośrednio tendencyjne oszacowanie.
Z drugiej strony, gdy używa się oszacowania skorygowanego o błąd systematyczny, m1^= g1 i v1^= g2)1 , mt^/ ( vt^--√+ ϵ )pojęcie staje się mniej wrażliwe naβ1iβ2).
Jak korygowane jest odchylenie
Algorytm wykorzystuje średnią ruchomą do oszacowania pierwszego i drugiego momentu. Boczna ocena byłaby taka, że zaczynamy od arbitralnej domysły m0 , i aktualizujemy oszacowanie stopniowo o mt= βmt - 1+ ( 1 - β) gt . Jest więc oczywiste, że w pierwszych kilku krokach nasza średnia ruchoma jest silnie tendencyjna w kierunku początkowego m0 .
Aby to skorygować, możemy usunąć efekt wstępnego odgadnięcia (odchylenie) z średniej ruchomej. Na przykład w czasie 1, m1= βm0+ ( 1 - β) gt , βm0 termin β m 0 z m1 i dzielimy go przez ( 1 - β) , co daje m1^= ( m1- βm0) / ( 1 - β) . Kiedym0= 0 ,mt^= mt/ (1- βt) . Pełny dowód podano w części 3 artykułu.
Jak dobrze skomentował Mark L. Stone
To jak pomnożenie przez 2 (o mój, wynik jest tendencyjny), a następnie podzielenie przez 2 w celu „poprawienia”.
Jakoś to nie jest dokładnie równoważne
gradient w punkcie początkowym służy do początkowych wartości tych rzeczy, a następnie do aktualizacji pierwszego parametru
(oczywiście można to zmienić w tę samą formę, zmieniając regułę aktualizacji (patrz aktualizacja odpowiedzi), i uważam, że ten wiersz ma na celu przede wszystkim pokazanie niepotrzebności wprowadzenia błędu, ale być może warto zauważyć różnicę)
Na przykład poprawiony pierwszy moment w czasie 2
m2)^= β( 1 - β) g1+ ( 1 - β) g2)1 - β2)= βsol1+ g2)β+ 1
sol1m2)= βsol1+ ( 1 - β) g2)
sol1
Czy korekcja uprzedzeń to naprawdę wielka sprawa
Ponieważ faktycznie wpływa tylko na kilka pierwszych kroków treningu, wydaje się, że nie jest to bardzo duży problem, w wielu popularnych ramach (np. Keras , caffe ) wdrażana jest tylko tendencyjna ocena.
ϵ
m^t
m^t= βt - 1sol1+ βt - 2sol2)+ . . . + gtβt - 1+ βt - 2+ . . . + 1
m1← g1
mt← βmt+ gt
m^t← ( 1 - β) mt1 - βt
Dlatego można to zrobić bez wprowadzania terminu stronniczości i poprawiania go. Myślę, że artykuł umieścił go w formie korekcji błędu systematycznego dla wygody porównywania z innymi algorytmami (np. RmsProp).