Propagacja wsteczna w sieciach neuronowych: algorytm uczenia maszynowego i przykład

⚡ Inteligentne podsumowanie

Propagacja wsteczna to podstawowy algorytm treningowy sieci neuronowej, który dostraja każdą wagę błędu zmierzonego w poprzedniej epoce, dzięki czemu model lepiej generalizuje się na niewidzianych danych, warstwa po warstwie.

  • 🔘 Główna idea: Zasada łańcuchowa wyznacza gradient straty dla każdego ciężaru, warstwa po warstwie.
  • Pętla treningowa: Przejście do przodu, zmierzenie błędu, propagacja do tyłu, aktualizacja wag, powtórzenie.
  • Dwa warianty: Statyczna propagacja wsteczna mapuje stałe dane wejściowe na stałe dane wyjściowe; rekurencyjna propagacja wsteczna najpierw ustala się, a następnie propaguje.
  • 🧪 Dlaczego jest to ważne: Metoda gradientu zstępującego sprawdza się jedynie w przypadku głębokich sieci, ponieważ gradienty są wykorzystywane ponownie warstwa po warstwie.
  • 🛠️. Znane ograniczenia: Wydajność zależy od jakości danych wejściowych, a zaszumione próbki zniekształcają poznane wagi.
  • ⚙️ Zdrowie gradientowe: Mnożenie wielu małych pochodnych powoduje zanik gradientów; ReLU i normalizacja zmniejszają ten efekt.

Propagacja wsteczna w sieci neuronowej: algorytm uczenia maszynowego

Co to jest sztuczna sieć neuronowa?

Sztuczna sieć neuronowa to grupa połączonych jednostek wejścia/wyjścia, gdzie każde połączenie ma swoją wagę. Pomaga ona budować modele predykcyjne z dużych baz danych, a jej konstrukcja zapożycza słownictwo z ludzkiego układu nerwowego. Sieci tego typu wspierają rozumienie obrazów, uczenie maszynowe, mowę komputerową i wiele innych zadań związanych z rozpoznawaniem wzorców.

Propagacja wsteczna to algorytm decydujący o tym, jakie powinny być te wagi, dlatego te dwie koncepcje najlepiej rozpatrywać łącznie.

Co to jest propagacja wsteczna?

Propagacja wsteczna stanowi istotę uczenia sieci neuronowych. Jest to metoda precyzyjnego dostrajania wag sieci neuronowej na podstawie współczynnika błędów uzyskanego w poprzedniej epoce (tj. iteracji). Prawidłowe dostrojenie wag pozwala zmniejszyć współczynniki błędów i zwiększyć wiarygodność modelu poprzez zwiększenie jego generalizacji.

Propagacja wsteczna w sieci neuronowej to skrót od „wstecznej propagacji błędów”. Jest to standardowa metoda uczenia sztucznych sieci neuronowych. Metoda ta pomaga obliczyć gradient funkcji straty w odniesieniu do wszystkich wag w sieci.

Dwa terminy są często mylone. Tylko propagacja wsteczna oblicza gradient; optymalizator taki jak gradient zstępujący to właściwie to, co zmiany wagi używające tego gradientu. Prawie każdy nowoczesny framework automatycznie przeprowadza propagację wsteczną za pomocą swojego silnika autodiff.

Jak działa algorytm propagacji wstecznej

Algorytm propagacji wstecznej w sieciach neuronowych oblicza gradient funkcji straty dla pojedynczej wagi zgodnie z regułą łańcuchową. W przeciwieństwie do prostego obliczenia bezpośredniego, efektywnie oblicza on jedną warstwę na raz. Oblicza gradient, ale nie definiuje sposobu jego wykorzystania. Uogólnia obliczenia w regule delta.

Reguła łańcuchowa zapewnia wydajność tego rozwiązania. Wpływ jednej z początkowych wag na ostateczną stratę jest iloczynem pochodnych lokalnych na drodze do wyjścia, więc algorytm buforuje pośredni wynik każdej warstwy w drodze powrotnej i ponownie go wykorzystuje dla każdej wagi w warstwie poniżej, zamiast przeliczać całą sieć według wagi.

Aby to zrozumieć, rozważ poniższy przykładowy diagram sieci neuronowej z propagacją wsteczną. Rysunek tracto jeden pełny przebieg: dane wejściowe trafiają z lewej strony, aktywacje przesuwają się do przodu przez ukrytą warstwę do wyjścia, a zmierzony błąd powraca tymi samymi połączeniami, aby skorygować wagi.

Diagram algorytmu propagacji wstecznej pokazujący przejście do przodu przez warstwy wejściową, ukrytą i wyjściową oraz błąd przemieszczający się wstecz

  1. Wejścia X docierają wstępnie podłączoną ścieżką
  2. Dane wejściowe modelowane są przy użyciu rzeczywistych wag W. Wagi dobierane są zazwyczaj losowo.
  3. Oblicz wynik dla każdego neuronu, począwszy od warstwy wejściowej, poprzez warstwy ukryte, aż do warstwy wyjściowej.
  4. Oblicz błąd w wynikach:
    ErrorB= Actual Output – Desired Output
    
  5. Wróć z warstwy wyjściowej do warstwy ukrytej, aby dostosować wagi w taki sposób, aby zmniejszyć błąd.
  6. Powtarzaj proces aż do uzyskania pożądanego rezultatu.

Wiele podręczników podaje tę samą ilość pożądany minus rzeczywisty. Obie konwencje działają, ponieważ znak jest absorbowany, gdy optymalizator subskrybujetracchodzi o gradient, pod warunkiem, że zachowasz jedną konwencję w całej sieci.

W praktyce błąd rzadko jest gołym podrzędnymtracFunkcja straty, taka jak średni błąd kwadratowy w regresji lub entropia krzyżowa w klasyfikacji, konwertuje różnice dla poszczególnych wyników na pojedynczą liczbę, której wsteczna propagacja gradientu jest faktycznie obliczana.

Dlaczego potrzebujemy propagacji wstecznej?

Najbardziej widoczne zalety propagacji wstecznej to:

  • Propagacja wsteczna jest szybka, prosta i łatwa do zaprogramowania
  • Nie dodaje żadnych własnych nowych parametrów; dostrajanie, które wykonujesz, należy do optymalizatora i sieci, głównie do szybkości uczenia się i liczby wejść
  • Jest to metoda elastyczna, gdyż nie wymaga wcześniejszej wiedzy o sieci
  • Jest to standardowa metoda, która na ogół działa dobrze
  • Aby się tego nauczyć, nie trzeba specjalnie wspominać o cechach funkcji.

Mówiąc prościej, bez wydajnego sposobu uzyskiwania gradientów, trenowanie czegokolwiek głębszego niż pojedyncza warstwa byłoby obliczeniowo niepraktyczne.

Co to jest sieć przesyłania dalej?

Sieć neuronowa z wyprzedzeniem to sztuczna sieć neuronowa, w której węzły nigdy nie tworzą cyklu. Ten rodzaj sieci neuronowej składa się z warstwy wejściowej, warstw ukrytych i warstwy wyjściowej. Jest to pierwszy i najprostszy rodzaj sztucznej sieci neuronowej.

To rozróżnienie ma tutaj znaczenie, ponieważ przebieg do przodu propagacji wstecznej jest dokładnie przebiegiem do przodu; tylko korekcja błędów przebiega w przeciwnym kierunku.

Rodzaje sieci propagacji wstecznej

Dwa typy sieci propagacji wstecznej to:

  • Statyczna propagacja wsteczna
  • Powtarzająca się propagacja wsteczna

Statyczna propagacja wsteczna

Jest to jeden z rodzajów sieci propagacji wstecznej, która generuje mapęping statycznego wejścia dla statycznego wyjścia. Jest to przydatne do rozwiązywania problemów z klasyfikacją statyczną, takich jak optyczne rozpoznawanie znaków.

Powtarzająca się propagacja wsteczna

Powtarzająca się propagacja wsteczna w data mining jest podawany do przodu, aż do osiągnięcia ustalonej wartości. Następnie błąd jest obliczany i propagowany wstecz.

Główną różnicą pomiędzy tymi dwiema metodami jest to, że mapaping jest szybki w statycznej propagacji wstecznej, a niestatyczny w rekurencyjnej propagacji wstecznej. Poniższa tabela zestawia te dwa zjawiska.

Kryterium Statyczna propagacja wsteczna Powtarzająca się propagacja wsteczna
Mapaping Statyczne wejście do statycznego wyjścia Niestatyczny; sieć stabilizuje się przed użyciem błędu
Prędkość Szybko, jedno przejście na próbkę Wolniej, aktywacja jest powtarzana, aż do momentu stabilizacji
Kształt sieci Sprzężenie zwrotne, brak cykli Zawiera połączenia zwrotne
Typowe zastosowanie Optyczne rozpoznawanie znaków, klasyfikacja o stałym rozmiarze Problemy, których wynik zależy od ustalonego stanu wewnętrznego

Historia wstecznej propagacji

  • W 1961 roku J. Kelly, Henry Arthur i E. Bryson wyprowadzili podstawową koncepcję ciągłej propagacji wstecznej w kontekście teorii sterowania.
  • W 1969 roku Bryson i Ho opracowali wieloetapową metodę dynamicznej optymalizacji systemu.
  • W 1970 roku Seppo Linnainmaa opublikował odwrotny tryb automatycznego różniczkowania, metodę obliczeniową, na której opiera się współczesna propagacja wsteczna.
  • W 1974 Werbos stwierdził możliwość zastosowania tej zasady w sztucznej sieci neuronowej.
  • W 1982 roku Hopfield przedstawił swój pomysł sieci neuronowej.
  • W 1986 roku, dzięki staraniom Davida E. Rumelharta, Geoffreya E. Hintona, Ronalda J. Williamsa, propagacja wsteczna zyskała uznanie.
  • W 1989 roku Yann LeCun i jego współpracownicy nauczyli sieć konwolucyjną z wykorzystaniem propagacji wstecznej odczytywać ręcznie pisane cyfry. Było to jedno z pierwszych zastosowań praktycznych na dużą skalę.
  • W 1993 roku Wan jako pierwsza osoba wygrała międzynarodowy konkurs rozpoznawania wzorców za pomocą metody propagacji wstecznej.
  • W 2006 r. prace Hintona nad głębokimi sieciami przekonań i wstępnym trenowaniem warstwowym rozbudziły na nowo zainteresowanie trenowaniem głębokich sieci, które wcześniej zanikło z powodu zanikających gradientów.
  • W 2010 roku Xavier Glorot i Yoshua Bengio przeanalizowali, dlaczego sieci głębokie są trudne do trenowania i wprowadzili ulepszoną inicjalizację wag, która wraz z aktywacjami ReLU sprawiła, że ​​głęboka propagacja wsteczna stała się praktyczna.
  • W 2012 roku AlexNet (Krizhevsky, Sutskever i Hinton) wygrał konkurs ImageNet, wykorzystując akcelerowaną przez GPU propagację wsteczną, co zapoczątkowało współczesny boom na głębokie uczenie się.
  • W 2014 r. wprowadzono optymalizator Adam (Kingma i Ba), który szybko stał się domyślną odmianą metody gradientu zstępującego stosowaną w propagacji wstecznej.
  • W 2015 roku normalizacja wsadowa i sieci resztkowe (ResNet) rozwiązały problemy przepływu gradientowego w bardzo głębokich sieciach, umożliwiając propagację wsteczną przez setki warstw.
  • W latach 2015–2017 TensorFlow i PyTorch uczynił automatyczne różnicowanie standardową funkcją oprogramowania, dzięki czemu gradienty nie musiały być już wyprowadzane ręcznie.
  • W 2017 r. wprowadzono architekturę Transformer, która jest trenowana od początku do końca z wykorzystaniem propagacji wstecznej, podobnie jak duże modele językowe zbudowane na niej.
  • W 2019 roku Bengio, Hinton i LeCun otrzymali nagrodę ACM AM Turing Award za pracę nad głębokimi sieciami neuronowymi.
  • W 2020 roku w artykule „Backpropagation and the Brain” (Lillicrap, Santoro, Marris, Akerman i Hinton) przedstawiono tezę, że mózg może przypominać uczenie się metodą propagacji wstecznej, co ponownie otworzyło debatę na temat wiarygodności biologicznej tego zjawiska.
  • W 2022 roku Hinton zaproponował algorytm Forward-Forward, metodę szkoleniową całkowicie zapobiegającą podaniom wstecznym.
  • W 2024 roku John Hopfield i Geoffrey Hinton otrzymali Nagrodę Nobla w dziedzinie fizyki za fundamentalne odkrycia, które umożliwiły uczenie maszynowe za pomocą sztucznych sieci neuronowych.
  • W roku 2025 metody „do przodu-do przodu” rozszerzono na sieci splotowe, co pokazało, że uczenie bez propagacji wstecznej może być skuteczne w zadaniach klasyfikacji obrazów.
  • Od 2026 r. propagacja wsteczna pozostaje standardowym algorytmem szkoleniowym dla praktycznie wszystkich modeli głębokiego uczenia, podczas gdy wciąż trwają badania nad metodami uczenia bez gradientów, lokalnymi i równoległymi, które zmniejszają zapotrzebowanie na pamięć i koszty obliczeniowe.

Kluczowe punkty dotyczące propagacji wstecznej

  • Uproszczenie struktury sieci poprzez usunięcie ważonych łączy, które mają najmniejszy wpływ na trenowaną sieć
  • Należy przestudiować grupę wartości wejściowych i aktywacyjnych, aby opracować relację między wejściową i ukrytą warstwą jednostek.
  • Pomaga ocenić wpływ, jaki dana zmienna wejściowa ma na wynik sieci. Wiedzę zdobytą w wyniku tej analizy należy przedstawić w postaci reguł.
  • Propagacja wsteczna jest szczególnie przydatna w przypadku głębokich sieci neuronowych pracujących nad projektami podatnymi na błędy, takimi jak rozpoznawanie obrazu lub mowy.
  • Propagacja wsteczna wykorzystuje reguły łańcuchowe i potęgowe, co pozwala jej działać z dowolną liczbą wyjść.

Najlepsze praktyki w zakresie propagacji wstecznej

Propagację wsteczną w sieciach neuronowych można wyjaśnić za pomocą analogii do „sznurowadła”. Aktualizacja ciężaru zachowuje się podobnie jak naprężenie sznurowadła: zbyt mała – nic się nie trzyma, zbyt duża – coś pęka.

Napięcie koronki Co to oznacza podczas treningu
Za małe napięcie Zbyt mało ograniczeń i bardzo luźno — model nie pasuje
Zbyt duże napięcie Zbyt duże ograniczenia (przetrenowanie); zbyt długi czas trwania (stosunkowo powolny proces); większe prawdopodobieństwo złamania
Ciągnięcie jednej koronki mocniej niż drugiej Dyskomfort (błąd) – jedna część sieci dominuje nad dopasowaniem

Z tej analogii wynikają dwa praktyczne nawyki: skaluj dane wejściowe przed rozpoczęciem treningu, tak aby żadna pojedyncza cecha nie wymagała większego wysiłku niż pozostałe, oraz obserwuj utratę walidacji, aby napięcie zostało rozładowane zanim dojdzie do przetrenowania.

Wady stosowania propagacji wstecznej

  • Rzeczywista wydajność propagacji wstecznej w przypadku konkretnego problemu zależy od danych wejściowych.
  • Algorytm propagacji wstecznej w eksploracji danych może być dość wrażliwy na zaszumione dane
  • W przypadku mini partii propagację wsteczną należy wdrożyć przy użyciu podejścia opartego na macierzy;ping pojedynczo jest zauważalnie wolniejsze.
  • W głębokich sieciach wielokrotne mnożenie małych pochodnych może zmniejszać gradienty w kierunku zera, przez co najwcześniejsze warstwy ledwo się uczą — problem zanikającego gradientu opisany w Google Awaryjny kurs uczenia maszynowego.

Żadna z tych rzeczy nie wyklucza tej metody. To właśnie z tych powodów praktycy sięgają po aktywacje ReLU, normalizację i precyzyjne harmonogramy tempa uczenia się, gdy przechodzą z płytkiej sieci do sieci głęboka nauka model.

FAQ

Propagacja wsteczna oblicza gradient straty względem każdej wagi. Metoda gradientu zstępującego to optymalizator, który wykorzystuje ten gradient i przesuwa każdą wagę. Jeden mierzy nachylenie, drugi wykonuje krok.

Tempo uczenia się określa, jak daleko każdy ciężarek porusza się wzdłuż swojego gradientu. Zbyt małe oznacza powolne tempo uczenia; zbyt duże – strata oscyluje lub jest rozbieżna. Harmonogramy, w których tempo zmniejsza się w ciągu epok, zazwyczaj zbiegają się bardziej niezawodnie.

Propagacja wsteczna w czasie trenuje sieci rekurencyjne poprzez rozwinięcie sekwencji w łańcuch kopii, a następnie zastosowanie na nim standardowej propagacji wstecznej. Długie sekwencje są zazwyczaj skracane, ponieważ w przeciwnym razie gradienty zanikają lub eksplodują na wielu etapach.

Każda różniczkowalna strata działa. Średni błąd kwadratowy pasuje do regresji, binarna entropia krzyżowa pasuje do problemów dwuklasowych, a kategorialna entropia krzyżowa pasuje do wieloklasowych warstw wyjściowych. Wybór zmienia gradient w warstwie wyjściowej, a nie sam algorytm wsteczny.

Zautomatyzowane narzędzia wyszukiwania badają wskaźniki uczenia, szerokości warstw i ustawienia regularyzacji znacznie szybciej niż ręczne metody prób i błędów. Optymalizacja bayesowska i wczesne zatrzymanieping harmonogramiści szybko usuwają słabe przebiegi, pozostawiając obliczenia konfiguracjom, które faktycznie zmniejszają straty wynikające z walidacji.

Drugi pilot GitHub Tworzy pętle szkoleniowe, kontrole gradientu i definicje warstw na podstawie krótkiego komentarza, co skraca pracę nad szablonem. Zweryfikuj generowane pochodne za pomocą numerycznej kontroli gradientu, ponieważ prawdopodobnie wyglądający, ale błędny znak trenuje w trybie cichym.

Duże wagi powodują, że produkty wsteczne rosną na każdej warstwie, aż do momentu przekroczenia limitu aktualizacji i utraty stabilności. Przycinanie gradientoweping, mniejsze początkowe wagi, normalizacja wsadowa i niższy współczynnik uczenia się utrzymują wielkości w zakresie.

Partia to grupa próbek przetworzonych przed jedną aktualizacją wagi. Iteracja to pojedyncza taka aktualizacja. Epoka to jedno pełne przejście przez zbiór treningowy, zawierające tyle iteracji, ile jest partii.

Podsumuj ten post następująco: