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ć)

pir
źródło

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.

Miguel
źródło
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