Zanikające i eksplodujące gradienty
Poznać problemy głębokich sieci i pierwsze sposoby ich naprawy
Zanikające i eksplodujące gradienty to bezpłatna lekcja Deep Learning Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Deep Learning Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Deep Learning Academy zawiera 4 lekcji w sumie.
Gradienty są iloczynem
W wielu warstwach propagacja wsteczna mnoży przez siebie wiele pochodnych lokalnych. Rozmiar tego długiego iloczynu decyduje o tym, czy uczenie działa, czy się załamuje.
Mnożenie małych liczb
Jeśli pochodna każdego ogniwa jest mniejsza od jedności, iloczyn szybko maleje. Po przejściu przez wiele warstw gradient staje się bardzo mały, niemal zerowy, zanim dotrze do początkowych warstw.
To zanikające gradienty
Gdy gradienty zmniejszają się niemal do zera, początkowe warstwy prawie się nie aktualizują i przestają się uczyć. To problem zanikającego gradientu, który przez długi czas hamował rozwój głębokich sieci.
Mnożenie dużych liczb
Jeśli każda pochodna jest większa od jedności, iloczyn zamiast tego gwałtownie rośnie. Gradienty stają się ogromne podczas przechodzenia wstecz, a wagi wykonują gwałtowne ruchy.
To eksplodujące gradienty
Niekontrolowany wzrost gradientów to problem eksplodującego gradientu. Strata często skacze do NaN, gdy aktualizacje przekraczają wszelkie użyteczne wartości. 💥
Sigmoid pogorszył sytuację
Sigmoid i tanh ściskają dane wejściowe, więc ich pochodne pozostają znacznie mniejsze od jedności. Ich układanie warstwami mnożyło małe liczby i sprawiało, że zanikające gradienty były częste.
ReLU na ratunek
ReLU ma dla dodatnich danych wejściowych pochodną równą dokładnie jeden, więc nie zmniejsza gradientu. Przejście na ReLU było jednym z kluczowych wczesnych rozwiązań.
relu_grad = 1.0 if x > 0 else 0.0Staranna inicjalizacja wag
Przemyślane schematy, takie jak inicjalizacja Xavier i He, skalują początkowe wagi tak, aby iloczyn gradientów pozostawał bliski jedności w wielu warstwach.
Ogranicz eksplodujące gradienty
W przypadku eksplozji obcinanie gradientu ogranicza jego rozmiar przed aktualizacją, chroniąc model przed pojedynczym ogromnym krokiem.
torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)Połączenia pomijające pomagają
ResNet dodaje połączenia pomijające, które pozwalają gradientom płynąć bezpośrednio wstecz, omijając długi łańcuch mnożeń powodujący zanikanie.
Dlaczego to wszystko ma znaczenie
Utrzymanie iloczynu gradientów blisko jedności pozwala w ogóle trenować bardzo głębokie sieci. Każde z przedstawionych rozwiązań służy ochronie tej równowagi.
Szybkie sprawdzenie
Sprawdźmy tryby awarii.
Podsumowanie
Długie iloczyny pochodnych mogą zanikać albo eksplodować. ReLU, staranna inicjalizacja, obcinanie gradientu i połączenia pomijające pomagają utrzymać prawidłowe gradienty w głębokich sieciach. 💥
Często zadawane pytania
Czy lekcja „Zanikające i eksplodujące gradienty” jest bezpłatna?
Tak — pełny tekst „Zanikające i eksplodujące gradienty” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Deep Learning Academy, przejdź na CoddyKit PRO. Kurs Deep Learning Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Zanikające i eksplodujące gradienty”?
Poznać problemy głębokich sieci i pierwsze sposoby ich naprawy Ćwiczysz Deep Learning Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Deep Learning Academy?
Nie wymagamy żadnego doświadczenia. Deep Learning Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Zanikające i eksplodujące gradienty”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Deep Learning Academy?
Tak. Każda lekcja Deep Learning Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Reguła łańcuchowa, warstwa po warstwie
- Przejście w przód zapisuje dane, wsteczne je wykorzystuje
- Ręczna propagacja wsteczna w małej sieci
- Zanikające i eksplodujące gradienty