Obcinanie gradientu podczas treningu głębokich sieci neuronowych


10

Kiedy chciałbyś wykonać obcinanie gradientu podczas treningu RNN lub CNN? Szczególnie interesuje mnie to drugie. Jaka byłaby dobra wartość początkowa do wycinania? (można go oczywiście dostroić)

Odpowiedzi:


4

Chcesz wykonać obcinanie gradientu, gdy pojawia się problem znikania gradientów lub rozbijania gradientów. Jednak w obu przypadkach istnieją lepsze rozwiązania:

  • Eksplodujący gradient ma miejsce, gdy gradient staje się zbyt duży i pojawia się przepełnienie numeryczne. Można to łatwo naprawić, inicjując wagi sieci na mniejsze wartości. Jeśli to nie zadziała, prawdopodobnie w kodzie jest błąd.

  • Znikający gradient występuje, gdy optymalizacja utknie w punkcie siodłowym, gradient staje się zbyt mały, aby optymalizacja mogła się rozwijać. Można to naprawić za pomocą spadku gradientu z pędem lub rekwizytem RMS lub jednym i drugim (znanym również jako optymalizator Adama).

Wartości początkowe dla górnej granicy wycinania gradientu byłyby czymś mniejszym niż największa liczba, jaką może przyjąć zmienna. Jeśli chodzi o dolną granicę, powiedziałbym, że jest to specyficzne dla problemu, ale być może zacznij od czegoś takiego jak 1e-10.


1
Nie jestem pewien, czy kontekst tej odpowiedzi ma wykluczać RNN, ale jeśli tak nie jest, oba proponowane rozwiązania nie są lepsze niż obcinanie gradientu, szczególnie w przypadku RNN.
Alex R.

Przepraszam, myślałem więcej w kontekście CNN, nie krępuj się edytować
Miguel
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.