Różnica między neuronowym zanikiem masy netto a szybkością uczenia się


Odpowiedzi:


161

Szybkość uczenia się jest parametrem, który określa, jak bardzo krok aktualizacji wpływa na aktualną wartość wag. Podczas gdy zanik masy jest dodatkowym terminem w regule aktualizacji ciężaru, który powoduje, że wagi spadają wykładniczo do zera, jeśli żadna inna aktualizacja nie jest zaplanowana.

Powiedzmy, że mamy funkcję kosztu lub błędu , którą chcemy zminimalizować. Gradient descent mówi nam o zmianie ciężarów w kierunku najbardziej stromego zejścia w : gdzie jest wskaźnikiem uczenia się, a jeśli jest duży, będziesz mieć odpowiednio dużą modyfikację wag (ogólnie nie powinno być zbyt duże, w przeciwnym razie przekroczysz lokalne minimum w funkcji kosztów).E(w)wE

wiwiηEwi,
ηwi

Aby skutecznie ograniczyć liczbę bezpłatnych parametrów w modelu, aby uniknąć nadmiernego dopasowania, możliwe jest uregulowanie funkcji kosztów. Łatwym sposobem na to jest wprowadzenie poprzedzającego wagi średniej zero Gaussa, co jest równoważne zmianie funkcji kosztu na . W praktyce powoduje to karanie dużych ciężarów i skutecznie ogranicza swobodę w modelu. Parametr regularyzacji określa sposób wymiany pierwotnego kosztu za pomocą kary za duże ciężary.E~(w)=E(w)+λ2w2λE

Stosując opadanie gradientu do tej nowej funkcji kosztu, otrzymujemy: Nowy termin pochodzący z regularyzacji powoduje rozkład masy w stosunku do jej wielkości.

wiwiηEwiηλwi.
ηλwi

2
Dzięki za przydatne wyjaśnienie. Pytanie: w pakiecie R „nnet” znajduje się parametr wykorzystywany w szkoleniu sieci neuronowej zwany „rozpadem”. Czy wiesz, czy rozpad odpowiada twojej lambda lub eta * lambda?
Andrea Ianni ௫

3
Dodałbym również, że zanik masy ciała jest tym samym, co regularyzacja L2 dla tych, którzy znają to drugie.
Siergiej

2
@Sergei proszę nie, przestań rozpowszechniać tę dezinformację! Dotyczy to tylko bardzo szczególnego przypadku waniliowego SGD. Zobacz rozkład ciężaru ustalającego dla papieru Adam .
LucasB

Aby wyjaśnić: w momencie pisania, dokumentacja PyTorcha dla Adama używa terminu „rozpad masy ciała” (nawiasowo nazywany „karą L2”) w odniesieniu do tego, co według mnie autorzy nazywają regulacją L2. Jeśli dobrze rozumiem, ta odpowiedź odnosi się do SGD bez pędu, gdzie oba są równoważne.
Dylan F

14

Oprócz odpowiedzi @ mrig (+1), dla wielu praktycznych zastosowań sieci neuronowych lepiej jest użyć bardziej zaawansowanego algorytmu optymalizacji, takiego jak Levenberg-Marquardt (sieci małe i średnie) lub skalowane opadanie gradientu sprzężonego (średnio duże sieci), ponieważ będą one znacznie szybsze i nie ma potrzeby ustawiania szybkości uczenia się (oba algorytmy zasadniczo dostosowują szybkość uczenia się za pomocą krzywizny i gradientu). Każdy przyzwoity pakiet sieci neuronowej lub biblioteka będzie miała implementacje jednej z tych metod, każdy pakiet, który nie jest prawdopodobnie przestarzały. Używam biblioteki NETLAB dla MATLAB, która jest świetnym zestawem.


Co z algorytmami optymalizacji opartymi na Rprop? Jak się układają?
moc

4
Myślę, że większość ludzi używa wariantów pędu rprop +, takich jak RMSProp, adagrad, SGD + pęd nesterowa. Zobacz klasę cs231 .
facuq

1
Oczywiście zależy to od zastosowania. Ale w przypadku dużych zestawów danych / sieci, które są teraz trochę modne, myślę, że ludzie znajdują algorytmy, o których wspomniałem, bardziej odpowiednie.
facuq

6
@DikranMarsupial może tak być, ponieważ obecnie (prawie pięć lat po twojej odpowiedzi) ludzie używają Adama zamiast tego?
ComputerScientist

2
Rzeczywiście ta odpowiedź jest bardzo nieaktualna. Algorytmy te nie są praktyczne z typową obecnie skalą modeli i zestawów danych, a najczęściej używanym pakietom, które z pewnością nie są przestarzałe, brakuje tych algorytmów.
LucasB

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.