Kurs: sieci neuronowe od środka · Lekcja 1 z 12 · 12 min
Neuron: jedna prosta
W skrócie
Neuron liczy ważoną sumę pomiarów, dodaje bias i patrzy na znak wyniku, więc rysuje jedną prostą. Lekcja pokazuje, kiedy taka prosta wystarcza, a kiedy nie.
Rozgrzewka Dwa pytania z kursu ML, na których ta lekcja się opiera. Minuta, a lekcji nie blokuje.
Sieć neuronowa to wiele neuronów połączonych w warstwy. Zanim je połączymy, sprawdźmy, co potrafi jeden. Znasz go już prawie cały: regresja logistyczna z kursu ML liczyła ważoną sumę cech i dopiero potem zamieniała ją w odpowiedź. Neuron robi to samo. Pytanie brzmi: czego jedna ważona suma nigdy nie zrobi?
Wybierz odpowiedź i pewność.
Odpowiedz, żeby odblokować lab.
Pokaż odpowiedź
Poprawna odpowiedź: Tylko przy setosie; przy versicolor i virginice nigdy
Przy setosie perceptron zatrzymuje się po 3 epokach, łącznie po 8 poprawkach. Przy versicolor i virginice po 100 epokach wciąż poprawia wagi, od 4 do 11 razy na epokę, bo tych gatunków nie rozdziela żadna prosta.
Spróbuj
- Zostań przy zadaniu „setosa czy nie” i przesuwaj suwaki, aż Twoja prosta trafi wszystkie 150 kwiatów. To cel labu.
- Kliknij trzy razy „1 epoka” i patrz na przerywaną linię perceptronu: po każdej pomyłce przesuwa się w stronę źle ocenionego kwiatu.
- Przełącz na „versicolor czy virginica” i klikaj „10 epok”. Słupki poprawek nie znikają. Suwaki mają tylko 9 wartości, co 0,5 od −2 do 2, więc najlepsza prosta z suwaków trafia tu 96 ze 100 kwiatów. Najlepsza możliwa prosta, bez tej siatki, trafia 97 (o tym niżej), nigdy wszystkie.
Pomysł w prostych słowach
Neuron dostaje pomiary kwiatu, na przykład długość i szerokość działki kielicha. Każdy pomiar mnoży przez jego wagę, sumuje, dodaje bias i patrzy na znak wyniku: dodatni znaczy „setosa”, ujemny „inny gatunek”. Waga mówi, jak mocno liczy się dany pomiar, a bias przesuwa próg.
Punkty, dla których suma wychodzi dokładnie zero, leżą na jednej prostej. To granica decyzji neuronu: po jednej stronie odpowiedź „tak”, po drugiej „nie”. Zmiana wag obraca tę prostą, zmiana biasu ją przesuwa. Niczego innego jeden neuron nie narysuje.
Dlaczego to działa
Perceptron Rosenblatta (1958) uczy się na pomyłkach. Bierze kwiaty po kolei. Gdy odpowiada dobrze, nic nie zmienia. Gdy się myli, dodaje pomiary tego kwiatu do wag albo je odejmuje, a prosta przesuwa się tak, żeby ten kwiat trafił na właściwą stronę. Jedno przejście przez wszystkie kwiaty to epoka.
Twierdzenie Novikoffa (1962) mówi: jeśli istnieje prosta, która rozdziela obie klasy bez błędu, perceptron znajdzie jakąś taką prostą po skończonej liczbie poprawek. Setosa ma krótsze i szersze działki niż reszta, więc taka prosta istnieje. Versicolor i virginica nakładają się w kilku kwiatach: nawet najlepsza możliwa prosta trafia 97 ze 100. Zawsze zostaje kwiat do poprawienia, więc reguła nigdy się nie zatrzymuje, a prosta skacze tam i z powrotem.
Neuron to prawie regresja logistyczna: ta sama ważona suma. Perceptron ma jednak twardy próg i uczy się tylko na pomyłkach. Regresja logistyczna daje prawdopodobieństwo i uczy się spadkiem gradientu na wszystkich przykładach. Dzisiejsze sieci idą drugą drogą: ich neurony mają gładkie funkcje aktywacji (lekcja 3) i uczą się na entropii krzyżowej (lekcja 4).
Częsty błąd
Prawda czy fałsz: „Perceptron w końcu się nauczy, wystarczy dłużej trenować.” Fałsz. Gwarancja zatrzymania dotyczy tylko klas, które da się rozdzielić jedną prostą. W labie versicolor i virginica po 100 epokach wciąż dają od 4 do 11 poprawek na epokę. Klasyczny przykład to XOR: punkty (0, 0) i (1, 1) w jednej klasie, (0, 1) i (1, 0) w drugiej. Żadna prosta ich nie rozdzieli, więc jeden neuron nie zejdzie do zera błędów bez względu na liczbę epok. Pomaga dopiero warstwa ukryta (lekcje 2 i 3).
Quiz
Trzy pytania na sprawdzenie się. Wybierz odpowiedź albo rozwiń odpowiedź pod pytaniem. Z klawiatury: strzałki wybierają, Enter albo spacja zatwierdza.
Najważniejsze wnioski
- Neuron liczy ważoną sumę pomiarów, dodaje bias i odpowiada według znaku wyniku.
- Granica decyzji jednego neuronu to prosta: wagi ją obracają, bias przesuwa.
- Perceptron zatrzymuje się tylko wtedy, gdy klasy da się rozdzielić prostą; inaczej poprawia wagi bez końca.
- Danych, których nie rozdziela prosta (jak XOR), jeden neuron nie nauczy się bez błędów; potrzebna jest warstwa ukryta.
Głębiej: wzór, kod, praktyka
Matematyka
Neuron odpowiada ŷ = 1, gdy w·x + b > 0, a w przeciwnym razie ŷ = 0. Granica decyzji to zbiór punktów w·x + b = 0, czyli prosta na płaszczyźnie dwóch pomiarów.
- Reguła perceptronu po każdym przykładzie:
w ← w + (y − ŷ)·x,b ← b + (y − ŷ). Przy dobrej odpowiedziy − ŷ = 0i nic się nie zmienia. - Twierdzenie Novikoffa: jeśli jakaś prosta rozdziela klasy z marginesem
γ, a wszystkie punkty mieszczą się w kole o promieniuR, liczba poprawek nie przekroczy(R / γ)². - Bez prostej rozdzielającej nie ma takiego ograniczenia i reguła się nie zatrzymuje.
W kodzie (Python)
Perceptron w numpy na tych samych irysach co w labie, po standaryzacji. Kwiaty idą w kolejności z pliku, bez tasowania:
import numpy as np
url = "https://raw.githubusercontent.com/scikit-learn/scikit-learn/1.5.2/sklearn/datasets/data/iris.csv"
data = np.loadtxt(url, delimiter=",", skiprows=1)
X, species = data[:, :4], data[:, 4].astype(int) # 0 setosa, 1 versicolor, 2 virginica
def zscore(A):
return (A - A.mean(axis=0)) / A.std(axis=0)
def perceptron(Z, y, max_epochs=100):
w, b, corrections = np.zeros(2), 0.0, []
for epoch in range(max_epochs):
mistakes = 0
for z, target in zip(Z, y): # kwiaty w kolejności z pliku, bez tasowania
d = target - int(z @ w + b > 0)
if d != 0:
w, b, mistakes = w + d * z, b + d, mistakes + 1
corrections.append(mistakes)
if mistakes == 0:
break
return corrections
c = perceptron(zscore(X[:, [0, 1]]), (species == 0).astype(int))
print(f"setosa vs rest: {len(c)} epochs, corrections {c}, total {sum(c)}")
m = species > 0
c = perceptron(zscore(X[m][:, [2, 3]]), (species[m] == 2).astype(int))
print(f"versicolor vs virginica: {len(c)} epochs, corrections per epoch {min(c)} to {max(c)}, zero in {c.count(0)} epochs")
Wynik
setosa vs rest: 7 epochs, corrections [4, 2, 2, 5, 2, 2, 0], total 17
versicolor vs virginica: 100 epochs, corrections per epoch 1 to 4, zero in 0 epochs
Liczby poprawek zależą od kolejności kwiatów: w pliku setosa zatrzymuje się po 7 epokach i 17 poprawkach, w labie, po tasowaniu, po 3 epokach i 8 poprawkach. Wniosek się nie zmienia: setosa zawsze się kończy, versicolor i virginica nigdy. Uruchomione w numpy 2.1.3.
Pobierz notebook (.ipynb). Otwórz go w Jupyterze albo wgraj do Google Colab; brakujące dane pobierze sam.
Dla praktyka
- Standaryzuj pomiary przed uczeniem. Inaczej pomiar w dużych liczbach dominuje sumę, a wagi trudno porównać.
- Tasuj przykłady w każdej epoce. Kolejność zmienia liczbę poprawek i to, którą z wielu dobrych prostych perceptron znajdzie.
- Gotowy
Perceptronjest w scikit-learn, ale w praktyce jeden neuron to raczej regresja logistyczna: daje prawdopodobieństwo i zbiega także wtedy, gdy klasy się nakładają. - Gdy klasy się nakładają, nie czekaj na zero błędów. Licz trafność na walidacji, a do zagięcia granicy dodaj warstwę ukrytą albo nowe cechy.
Więcej w Atlasie
Hasła encyklopedii o pojęciach z tej lekcji: