AI-For-Beginners/translations/pl/lessons/3-NeuralNetworks/04-OwnFramework
leestott b9c43e4edf 🌐 Update translations via Co-op Translator 2025-08-31 14:13:46 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-31 14:13:46 +00:00
OwnFramework.ipynb 🌐 Update translations via Co-op Translator 2025-08-31 14:13:46 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-24 10:52:15 +00:00

README.md

Wprowadzenie do Sieci Neuronowych. Perceptron Wielowarstwowy

W poprzedniej sekcji nauczyłeś się o najprostszym modelu sieci neuronowej - perceptronie jednowarstwowym, będącym liniowym modelem klasyfikacji dwuklasowej.

W tej sekcji rozszerzymy ten model do bardziej elastycznego frameworka, który pozwoli nam:

  • wykonywać klasyfikację wieloklasową oprócz dwuklasowej
  • rozwiązywać problemy regresji oprócz klasyfikacji
  • rozdzielać klasy, które nie są liniowo separowalne

Stworzymy również własny modułowy framework w Pythonie, który umożliwi nam budowanie różnych architektur sieci neuronowych.

Quiz przed wykładem

Formalizacja Uczenia Maszynowego

Zacznijmy od formalizacji problemu Uczenia Maszynowego. Załóżmy, że mamy zbiór danych treningowych X z etykietami Y, i musimy zbudować model f, który będzie dokonywał jak najdokładniejszych przewidywań. Jakość przewidywań mierzymy za pomocą funkcji straty . Często używane funkcje straty to:

  • W przypadku problemu regresji, gdy musimy przewidzieć liczbę, możemy użyć błędu bezwzględnegoi|f(x(i))-y(i)| lub błędu kwadratowegoi(f(x(i))-y(i))2
  • W przypadku klasyfikacji używamy straty 0-1 (która jest zasadniczo tym samym co dokładność modelu) lub straty logistycznej.

Dla perceptronu jednowarstwowego funkcja f była zdefiniowana jako funkcja liniowa f(x)=wx+b (gdzie w to macierz wag, x to wektor cech wejściowych, a b to wektor przesunięcia). Dla różnych architektur sieci neuronowych funkcja ta może przyjmować bardziej złożoną formę.

W przypadku klasyfikacji często pożądane jest uzyskanie prawdopodobieństw odpowiadających klas jako wyjścia sieci. Aby przekształcić dowolne liczby na prawdopodobieństwa (np. znormalizować wyjście), często używamy funkcji softmax σ, a funkcja f staje się f(x)=σ(wx+b)

W definicji f powyżej, w i b nazywane są parametrami θ=⟨w,b⟩. Mając zbiór danych ⟨X,Y⟩, możemy obliczyć całkowity błąd dla całego zbioru danych jako funkcję parametrów θ.

Celem trenowania sieci neuronowej jest minimalizacja błędu poprzez modyfikację parametrów θ

Optymalizacja za pomocą Gradientu Prostego

Istnieje dobrze znana metoda optymalizacji funkcji zwana gradientem prostym. Idea polega na tym, że możemy obliczyć pochodną (w przypadku wielowymiarowym nazywaną gradientem) funkcji straty względem parametrów i zmieniać parametry w taki sposób, aby błąd malał. Można to sformalizować w następujący sposób:

  • Inicjalizuj parametry losowymi wartościami w(0), b(0)
  • Powtarzaj następujący krok wiele razy:
    • w(i+1) = w(i)-η∂ℒ/∂w
    • b(i+1) = b(i)-η∂ℒ/∂b

Podczas treningu kroki optymalizacji powinny być obliczane z uwzględnieniem całego zbioru danych (pamiętaj, że strata jest obliczana jako suma dla wszystkich próbek treningowych). Jednak w praktyce bierzemy małe porcje zbioru danych zwane minipaczkami i obliczamy gradienty na podstawie podzbioru danych. Ponieważ podzbiór jest wybierany losowo za każdym razem, taka metoda nazywana jest stochastycznym gradientem prostym (SGD).

Perceptrony Wielowarstwowe i Wsteczna Propagacja

Sieć jednowarstwowa, jak widzieliśmy powyżej, jest w stanie klasyfikować klasy liniowo separowalne. Aby zbudować bogatszy model, możemy połączyć kilka warstw sieci. Matematycznie oznaczałoby to, że funkcja f przyjmie bardziej złożoną formę i będzie obliczana w kilku krokach:

  • z1=w1x+b1
  • z2=w2α(z1)+b2
  • f = σ(z2)

Tutaj α to nieliniowa funkcja aktywacji, σ to funkcja softmax, a parametry θ=<w1,b1,w2,b2>.

Algorytm gradientu prostego pozostanie taki sam, ale obliczanie gradientów będzie trudniejsze. Zgodnie z regułą różniczkowania łańcuchowego możemy obliczyć pochodne jako:

  • ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
  • ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)

Reguła różniczkowania łańcuchowego jest używana do obliczania pochodnych funkcji straty względem parametrów.

Zauważ, że lewa część wszystkich tych wyrażeń jest taka sama, dzięki czemu możemy efektywnie obliczać pochodne, zaczynając od funkcji straty i idąc "wstecz" przez graf obliczeniowy. Dlatego metoda trenowania perceptronu wielowarstwowego nazywana jest wsteczną propagacją, lub 'backprop'.

compute graph

TODO: cytowanie obrazu

Omówimy wsteczną propagację znacznie bardziej szczegółowo w naszym przykładzie w notatniku.

Podsumowanie

W tej lekcji stworzyliśmy własną bibliotekę sieci neuronowych i użyliśmy jej do prostego zadania klasyfikacji dwuwymiarowej.

🚀 Wyzwanie

W dołączonym notatniku zaimplementujesz własny framework do budowania i trenowania perceptronów wielowarstwowych. Będziesz mógł zobaczyć szczegółowo, jak działają nowoczesne sieci neuronowe.

Przejdź do notatnika OwnFramework i przepracuj go.

Quiz po wykładzie

Przegląd i Samodzielna Nauka

Wsteczna propagacja to powszechny algorytm używany w AI i ML, warto go zgłębić bardziej szczegółowo

Zadanie

W tym laboratorium zostaniesz poproszony o użycie frameworka stworzonego w tej lekcji do rozwiązania problemu klasyfikacji ręcznie pisanych cyfr MNIST.

Zastrzeżenie:
Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI Co-op Translator. Chociaż staramy się zapewnić dokładność, prosimy mieć na uwadze, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.