Dlaczego ważne jest uwzględnienie terminu korekty odchylenia dla optymalizatora Adama w przypadku głębokiego uczenia się?

15

Czytałem o optymalizatorze Adama do głębokiego uczenia się i natknąłem się na następujące zdanie w nowej książce Głębokie uczenie się autorstwa Begnio, Goodfellow i Courtville:

Adam wprowadza korekty błędu wstępnego w szacunkach zarówno momentów pierwszego rzędu (okres pędu), jak i (niecentrowanych) momentów drugiego rzędu, aby uwzględnić ich inicjalizację u źródła.

wydaje się, że głównym powodem włączenia tych terminów korekcji odchylenia jest to, że w jakiś sposób usuwa ono odchylenie inicjalizacji i .mt=0vt=0

  • Nie jestem w 100% pewien, co to oznacza, ale wydaje mi się, że prawdopodobnie oznacza to, że 1. i 2. moment zaczynają się od zera, a jakoś rozpoczęcie od zera pochyla wartości bliżej zera w niesprawiedliwy (lub użyteczny) sposób na trening ?
  • Chociaż chciałbym wiedzieć, co to znaczy nieco bardziej precyzyjnie i jak to szkodzi nauce. W szczególności, jakie zalety ma odblokowanie optymalizatora pod względem optymalizacji?
  • W jaki sposób pomaga to w szkoleniu modeli głębokiego uczenia się?
  • Co to znaczy, gdy jest bezstronny? Wiem, co oznacza obiektywne odchylenie standardowe, ale nie jest dla mnie jasne, co to znaczy w tym kontekście.
  • Czy korekcja uprzedzeń to naprawdę wielka sprawa, czy może coś przesadziło w dokumencie Adama?

Tylko dlatego, żeby ludzie wiedzieli, że naprawdę bardzo starałem się zrozumieć oryginalny artykuł, ale bardzo mało z niego przeczytałem i ponownie przeczytałem. Zakładam, że na niektóre z tych pytań można tam znaleźć odpowiedź, ale wydaje mi się, że nie potrafię przeanalizować odpowiedzi.

Charlie Parker
źródło
2
Link: arxiv.org/pdf/1412.6980v8.pdf Szacunki gradientu 1. i 2. momentu są aktualizowane za pomocą średniej ruchomej i rozpoczęły się od obu wartości szacunkowych równych zero, stąd te wartości początkowe, dla których wartość rzeczywista nie jest równa zero, wpłynęłyby na wyniki , ponieważ początkowe szacunki zerowe tylko stopniowo wymierają. Nie rozumiem, dlaczego gradient w punkcie początkowym nie jest używany do początkowych wartości tych rzeczy, a następnie do aktualizacji pierwszego parametru. Wtedy nie byłoby zanieczyszczenia przez początkowe wartości zerowe, które należy cofnąć, więc nie byłoby potrzeby korygowania odchylenia.
Mark L. Stone,
1
Wygląda więc na to, że zamiast specjalnego kodu do początkowej iteracji, autorzy postanowili zrobić matematycznie równoważną rzecz, wprowadzając uprzedzenie, a następnie cofając je. Dodaje to niepotrzebne, choć szybkie, obliczenia dla wszystkich iteracji. Robiąc to, zachowali czystość kodu, który wygląda tak samo na wszystkich iteracjach. Zamiast tego zacznę od pierwszej oceny gradientu, a formuła aktualizacji momentu gradientu zacznie się dopiero od drugiej iteracji.
Mark L. Stone,
@ MarkL.Stone autorzy tak bardzo podkreślają korekcję błędu, że wydawało mi się, że było to coś nowego lub ważnego w ich pracy. Więc mogliby po prostu nie „poprawić błędu” i mieć ten sam algorytm? Jeśli to prawda, nie rozumiem, dlaczego Adam jest tak ważnym optymalizatorem lub czym jest ta wielka sprawa. Zawsze myślałem, że to korekta błędu.
Charlie Parker,
4
Wprowadzają stronniczość, a następnie korygują ją, bez wyraźnego powodu, dla mnie oczywistego. To jak pomnożenie przez 2 (o mój, wynik jest tendencyjny), a następnie podzielenie przez 2 w celu „poprawienia”. Cała sprawa z wprowadzaniem i usuwaniem uprzedzeń wydaje się niepotrzebnym efektem ubocznym. Być może gazeta nie była wystarczająco długa bez zrobienia tego, więc dodali ten spiel, aby wydłużyć go :) Adam może mieć swoje zalety, ale robiliby to tak, jak zaproponowałem. Chciałbym, aby autorzy pojawili się tutaj i wyjaśnili to. Może brakuje mi jakiegoś subtelnego punktu lub czegoś nie rozumiem.
Mark L. Stone

Odpowiedzi:

17

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.

wprowadź opis zdjęcia tutaj

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,1solt , v1=0,001solt2) , 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^=sol1 i v1^=sol12) , 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-β)solt . 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-β)solt , β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-β)sol1+(1-β)sol2)1-β2)=βsol1+sol2)β+1

sol1

m2)=βsol1+(1-β)sol2)
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-2)sol2)+...+soltβt-1+βt-2)+...+1

m1sol1

mtβmt+solt
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).

dontloo
źródło
1
Czy zgadzasz się z moim drugim komentarzem do pytania? Dla mnie to sedno sprawy. Mnożenie i dzielenie przez 2 miało być po prostu „łatwiejszą do zrozumienia” analogią, a nie matematyką stosowaną w omawianej sprawie. jeśli były inne dokumenty, których nie przeglądałem, które wprowadzały błąd systematyczny przez ten sam mechanizm, który w przypadku ADAM wydaje się całkowicie do uniknięcia, ale go nie poprawił, to jest to po prostu całkowicie gŁUPIE (chyba że w jakiś sposób stronniczość pomógł wydajność algorytmu).
Mark L. Stone,
@ MarkL.Stone tak! właściwie to głosowałem, przepraszam za mój angielski. i myślę, że algorytmem, który nie poprawił błędu, jest rmsprop, ale w przeciwieństwie do adama rmsprop działa dobrze z odchyleniem.
dontloo
@dontloo, czy twoja odpowiedź odnosi się do komentarza Marka L. Stone'a, dlaczego korekta uprzedzeń wydaje się zbyteczna? (Myślę, że jest to dość ważne, może nawet bardziej niż parafrazowanie tego, co mówi oryginalny artykuł).
Charlie Parker,
@CharlieParker masz na myśli, dlaczego korekcja błędu jest zbędna lub dlaczego autor sprawia, że ​​wygląda na zbędny?
dontloo,
@dontloo Nie sądzę, że autorzy sprawiają, że jest to zbyteczne. Myślałem, że rzeczywiście tego potrzebują (biorąc pod uwagę ich szczególne warunki). Jednak pomyślałem, że nie było to konieczne, biorąc pod uwagę sugestię Marka. Myślę, że moje pytanie w sekcji komentarzy jest teraz, czy naprawdę potrzebowali terminu korekty.
Charlie Parker,