Strona główna▸Artykuły▸

Wewnątrz Sieci Neuronowej: Jak Przepływ Do Przodu Konwertuje Wejście na Prognozę

Krok po kroku przewodniczący przez przepływ do przodu, sekwencję sum ważonych i funkcji aktywacji, która przekształca oryginalne dane wejściowe w prognozę sieci neuronowej.

mysimulator teamZaktualizowano — czerwiec 2026≈ 5 min czytania▶ Otwórz symulację

Jedna neurona: ważone głosowanie

Każde przewidywanie, jakie wykonuje sieć neuronowa, jest wynikiem tysięcy, milionów lub miliardów jednego małego działania powtarzanego i warstwowanego razem: neurona sztucznej. Neuron otrzymuje kilka numerycznych wejść, mnoży każde z nich przez nauczone wagę, sumuje wyniki, dodaje do nich jedną więcej nauczoną liczbę nazywaną przesunięciem, a w końcu przepuszcza tę sumę poprzez funkcję aktywacji nieliniową, aby wygenerować swoją wartość wyjściową:

wyjście = aktywacja( (waga₁ × wejście₁) + (waga₂ × wejście₂) + ... + przesunięcie )

Wagi reprezentują, jak silnie każdy wejście wpływa na tę konkretną neuron — duży dodatni waga oznacza, że wejście silnie napędza wyjście neurona w górę, ujemna waga spuszcza je, a waga bliska zera oznacza, że wejście jest prawie ignorowane. Każda waga i przesunięcie w sieci zaczyna się jako mała liczba losowa i stopniowo dostosowana podczas treningu (przez propagację wsteczną i spadku gradientu) aż do momentu, gdy zbiorcze przewidywania sieci stają się dokładne. Przepływ wsteczny to, co dzieje się, gdy nauczone (lub częściowo nauczone) sieć jest rzeczywiście używana do wygenerowania przewidywania: dane wejściowe przechodzą dalej, warstwa za warstwą, podlegając transformacji w każdym kroku, aż w końcu pojawiają się jako wyjście.

Od jednego neuronu do warstwy, i od warstwy do sieci

Jeden neuron sam w sobie może wyznaczyć tylko prostopadłą granicę decyzyjną, co jest zbyt ograniczone dla większości rzeczywistych problemów. Sieci zdobywają swoją moc poprzez organizowanie wielu neuronów w warstwy i stosowanie kilku warstw na siebie. Typowa sieć przepływowa ma trzy rodzaje warstw: warstwę wejściową, której „neurony” prosto przechowują wartości cech (jasność pikseli, liczby słów, odczyty czujników); jedno lub więcej ukrytych warstw, gdzie odbywa się rzeczywista obliczanie i łączenie cech; oraz warstwę wyjściową, która tworzy końcowe prognozę w formie wymaganej przez zadanie — pojedynczą liczbę dla regresji, lub zestaw prawdopodobieństw klas dla klasyfikacji.

W pełni połączonej warstwie każdy neuron otrzymuje wyjście każdego neuronu z poprzedniej warstwy, oblicza swoje własny sumator ważony i przesunutą wartość oraz stosuje funkcję aktywacji. W skompaktowanej notacji macierzowej, jeśli a[l-1] jest wektorem wyjść poprzedniej warstwy, W[l] jest macierzą wag dla bieżącej warstwy, a b[l] to jej wektor przesunutych wartości, wartości przed aktywacją bieżącej warstwy są z[l] = W[l]·a[l-1] + b[l], a jej wyjście jest a[l] = funkcja_aktywacji(z[l]). Ta sama formuła stosowana jest warstwa za warstwą, z każdym wyjściem warstwy stającym się wejściem kolejnej, aż do ostatniej warstwy, która tworzy prognozę sieci, a[L].

Dlaczego funkcje aktywacyjne nie są opcjonalne

Jeśli każda neurona prosiłaby o sumę swoich wagi przekazanych wejść i przechowywała wynik bez żadnej funkcji aktywacyjnej, a nawet gdyby takie funkcje były brane pod uwagę gdziekolwiek w sieci, cała sieć matematycznie spłaszczyłaby się do równoważności z jednym warstwą liniową — ponieważ łańcuch czysto liniowych operacji jest samym jeszcze jednym operacją liniową. To sprawiłoby z głębokich sieci bez sensu: sto-warstwowa sieć bez funkcji aktywacyjnych mogłaby nauczyć się niczego więcej, niż jedna warstwa.

Funkcje aktywacyjne nieliniowe są tym, co pozwala sieciom ugiąć, krzywić i łączyć wejścia w skomplikowane sposoby, dając im zdolność do przybliżania prawie dowolnej funkcji, mając wystarczająco dużo neuronów i warstw.

Przykładowa obliczeniowa procedura: trzy liczby stają się prognozą

Precyzyjne przeprowadzanie przodu pomaga w utrwaleniu abstrakcji. Podajmy na przykład mały sieć, która przyjmuje dwa wejściowe numery, ma warstwę ukrytą z dwiema neuronami ReLU oraz pojedynczy neuron wyjściowy z aktywacją sigmoidalną (do prognozy tak/nie). Dla wejścia [1.0, 0.5]: pierwszy neuron ukryty może obliczyć sumę ważoną wynoszącą około 0.9; ponieważ ReLU przepuszcza liczby dodatnie bez zmian, jego wyjście to 0.9. Drugi neuron ukryty może obliczyć sumę ważoną wynoszącą -0.3; ReLU zasymetryzuje tę wartość do 0, co oznacza, że ten neuron nie przekazuje dalszej wartości dla tego konkretnego wejścia — efektownie „wyciszył się”. Neuron wyjściowy potem bierze zmiennoprzecinkowe kombinację tych dwóch wyjść ukrytych (0.9 i 0), dodaje swoje przesunięcie i przepuszcza wynik przez sigmoidę, tworząc coś w rodzaju 0.82 — co sieć zwraca jako 82% szans na klasę pozytywną.

Każda z tych wag i przesunięć (sześć liczb we tym prostej ilustracji: cztery łączące wejścia z warstwą ukrytą, dwie łączące warstwę ukrytą z wyjściem) została nauczona podczas treningu. Proces przodu jest jedynie mechanizmem stosowania tych nauczonych liczb do nowego wejścia; uczenie się następuje oddzielnie, poprzez backpropagację i spadkową descentę gradientów, porównując tę prognozę 0.82 z prawdziwym etykietą i przesuwanie każdej wagi o małą ilość, aby przyszłe prognozy były bardziej precyzyjne.

Głębokość, szerokość i co one Ci kupują

Dwa strukturalne wyborzy zdefiniowują pojemność sieci: jej szerokość (ile neuronów znajduje się w każdym warstwie) oraz głębokość (ile warstw jest stosowanych). Szeroka warstwa może reprezentować więcej różnych wzorców na danym etapie przetwarzania, podczas gdy dodatkowa głębokość pozwala sieciom budować coraz bardziej abstrakcyjne reprezentacje, łącząc wcześniejsze, proste wzorce w bardziej skomplikowane — to szczególnie widoczne w konwolucyjnych sieciach treningowych na obrazach, gdzie wcześniejsze warstwy uczą się dostrzegania prostych krawędzi i kolorowych pól, środkowe warstwy łączą te elementy w tekstury i kształty, a późniejsze warstwy tworzą z nich rozpoznawalne obiekty. Szerokość i głębokość mają jednak swoje koszty: więcej parametrów oznacza więcej obliczeń na przepuszczeniu do przodu, większy ryzyko nadadapcji bez wystarczającej ilości danych treningowych, a w bardzo głębokich sieciach większe ryzyko problemów znikającego lub eksplozycyjnego gradientu, które sprawiają, że trening może stać się niestabilny bez środków zapobiegania takich jak dokładna inicjalizacja wag, normalizacja po grupie lub połączenia residualne (skoczne).

Często zadawane pytania

Jak różni się przepływ do przodu od backpropagacji?

Przepływ do przodu to proces przesyłania wejścia przez warstwy sieci, aby uzyskać prognozę wyjściową, używając bieżących wag sieci. Backpropagacja następuje potem w odwrotnej kierunku, obliczając, jak każdą wagę wpłynęła na błąd między tą prognozą a prawdziwym odpowiedziem, aby gradient descent mógł aktualizować wagi odpowiednio.

Dlaczego ReLU jest znacznie popularniejsze niż sigmoida dla ukrytych warstw?

Sigmoid skraca swoją wyjście do małej zakresu i ma bardzo płaski pochodny dla dużych dodatnich lub ujemnych wejść, co powoduje, że gradienty stają się coraz mniejsze w kierunku zera podczas przesyłania wstecz przez wiele warstw — problem znikającego gradientu. Pochodna ReLU jest stała 1 dla dowolnie dodatnich wejść, co utrzymuje gradienty w odpowiednim rozmiarze i sprawia, że trenowanie głębokich sieci jest znacznie łatwiejsze.

Czy sieć neuronowa bez ukrytych warstw może nauczyć się czegoś użytecznego?

Tak, ale tylko liniowych lub niemal liniowych relacji. Sieć z jedyną warstwą wejściową połączoną bezpośrednio z warstwą wyjściową, z jednym funkcją aktywacyjną na wyjściu, jest matematycznie równoważna modelowi regresji liniowej lub logistycznej, i nie może pokryć bardziej skomplikowanych, krzywych granic decyzyjnych, które ukryte warstwy z aktywacjami nieliniowymi sprawiają, że to możliwe.

Czy szersza sieć zawsze wykazuje lepszą wydajność od głębszej, czy na odwrót?

Niektóre wymiary nie są uniwersalnie lepsze; prawidłowy balans zależy od problemu. W praktyce, podobno głębokie sieci o średniej głębokości tendencjonalnie reprezentują skomplikowane, hierarchiczne wzory (np. w obrazach lub języku) bardziej efektywnie, parametr na parametr, niż bardzo szerokie, ale niewielkie sieci, co jest częścią przyczyny, dla której pole przeniosło się od szerokich i niewielkich architektur do głębokich struktur, które są powszechnie stosowane dzisiaj.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz Inside a Neural Network: Forward Pass i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację Inside a Neural Network: Forward Pass

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)