Neurona, która mówi tylko tak lub nie
Preceptron Franka Rosenblatta (1958) jest przodkiem współczesnej sztucznej neurony: przyjmuje wektor wejściowy x, oblicza ważoną sumę plus przesunięcie w kierunku osi zerowej i przekazuje wynik przez twardy próg. Jeśli suma jest dodatnia, neuron się aktywuje (wyjście +1); w przeciwnym razie nie się aktywuje (wyjście -1 lub 0, w zależności od konwencji). Geometrycznie, wektor wag w i przesunięcie b definiują hiperpłaszczyznę, która dzieli przestrzeń wejściową na dwie części, a preceptor po prostu zgłasza, po której stronie punkt się znajduje.
predict(x) = sign( w·x + b ) // +1 if w·x + b > 0, else −1 decision boundary: w·x + b = 0 (a line in 2D, a hyperplane in general)
Zasada uczenia się: tylko błędne odpowiedzi przesuwają linię
Trening jest celowo ograniczony. Przedstaw jeden przykład oznaczony (x, y) w każdej chwili, z y = +1 lub -1. Jeśli bieżące wagi prawidłowo klasyfikują go, nic nie rób. Jeśli je błędnie sklasyfikują, delikatnie zmodyfikuj wagi w kierunku, który uczyniłby ten przykład bardziej poprawnym:
dla każdego przykładu treningowego (x, y): jeśli znak(w·x + b) != y: // błędna klasyfikacja w ← w + eta * y * x // eta = współczynnik uczenia się b ← b + eta * y // prawidłowo sklasyfikowane punkty powodują brak aktualizacji w ogóle Każda aktualizacja obraca granicę decyzyjną nieco w kierunku poprawnej strony błędnie sklasyfikowanego punktu, bez dotykania przykładów, które model już poprawnie klasyfikuje. Powtarzaj operacje przeglądania całego zbioru treningowego (każde pełne przejście jest "epoką") i, przy odpowiednich warunkach, linia ostatecznie ustala się tam, gdzie każdy punkt jest prawidłowo sklasyfikowany.
for each training example (x, y):
if sign(w·x + b) != y: // misclassified
w ← w + eta * y * x // eta = learning rate
b ← b + eta * y
// correctly classified points cause no update at all
Twierdzenie o zbieżności
Twierdzenie dotyczące konwergencji perceptronu, udowodnione krótko po wprowadzeniu algorytmu przez Rosenblatta, gwarantuje, że jeśli dane treningowe są liniowo rozróżnialne – czyli istnieje hiperpowierzchnia, która rzeczywiście umieszcza wszystkie przykłady pozytywne po jednej stronie i wszystkie przykłady negatywne po drugiej – to ten prosty algorytm oparty na błędach znajdzie taką hiperpowierzchnię w skończonej liczbie aktualizacji, a ograniczenie tej liczby zależy tylko od marginesu między dwoma klasami oraz wielkości danych, nie od liczby cech.
Było to w 1958 roku naprawdę imponujący wynik: prosty algorytm aktualizacji z twardą gwarancją konwergencji.
Ściana: funkcja XOR i Minsky i Papert
Gwarancja ma tryb awaryjny, w którym niepowodzenie doprowadza do nieuchronnego braku konwergencji wag. Wagi stale oscylują, korygując jedną pomyłkę kosztem tworzenia innej, w nieskończoność. Przykładem z podręcznika jest funkcja XOR: jej cztery punkty (0,0)→0, (0,1)→1, (1,0)→1, (1,1)→0 mają dwa punkty o wartościach dodatnich na przeciwnych rogach kwadratu jednostkowego, więc żaden pojedynczy prosty ciąg nie może je odizolować od dwóch punktów o wartościach ujemnych. Książka Marvina Minsky'ego i Seymoura Paperta z 1969 roku "Perceptrons" rygorystycznie udowodniła tę ograniczenie i szeroko jest powszechnie uważana za spowalniającą finansowanie i zainteresowanie sieciami neuronowymi przez ponad dziesięć lat – okres często nazywany pierwszym zimnem sztucznym.
Wyjście: układać je warstwowo
Rozwiązanie, które Minsky i Papert już zasadniczo rozumieli, polega na łączeniu jednostek podobnych do perceptronów w warstwy: ukryta warstwa może dzielić przestrzeń wejściową na fragmenty, a następnie z nich ponownie łączy je jednostka wyjściowa, a wystarczają już dwie ukryte jednostki, aby rozwiązać problem XOR rysując dwie linie zamiast jednej. To, czego brakowało do lat 80., to praktyczny sposób trenowania warstw ukrytych, ponieważ prostego podejścia opartego na błędach nic nie mówi o jednostkach, które nie są bezpośrednio połączone z etykietowanym wyjściem. Zastąpienie twardego progu gładką funkcją aktywacji i uczenie się przez gradient pochodny wzdłuż łańcucha – wstępne rozprzestrzenianie się – to pomysł, który przekształcił pojedynczą neuron Rosenblatta w głębokie sieci używane dzisiaj.
Frequently asked questions
Czy perceptron zawsze zbiega się?
Tylko wtedy, gdy dane treningowe są liniowo rozróżnialne - jeśli istnieje hiperprzestrzeń, która umieszcza wszystkie przykłady o wartości pozytywnej po jednej stronie i wszystkie przykłady o wartości negatywnej po drugiej. Wtedy twierdzenie o zbieżności perceptronu gwarantuje, że algorytm znajdzie taką hiperprzestrzeń w skończonej liczbie aktualizacji. Na danych nie rozróżnialnych, wagi nigdy się ustabilizują i będą oscylować w nieskończoność.
Dlaczego perceptron nie może nauczyć się funkcji XOR?
Punkty XOR (dwa wejścia logiczne) nie są liniowo rozróżnialne: żaden pojedynczy prosty ciąg nie jest w stanie umieścić obu wartości logicznych 'prawda' po jednej stronie, a obu wartości logicznych 'fałsz' po drugiej, ponieważ punkty prawdy znajdują się na przeciwnych rogach kwadratu wejściowego. Perceptron może jedynie narysować jedną prostą granicę decyzyjną, więc żadne ustawienie jego wag nie rozwiąże XOR - potrzebna jest co najmniej jedna warstwa ukryta, aby wygiąć granicę w dwie linie.
Czy nowoczesna sieć neuronowa to po prostu zbiór perceptronów?
Strukturalnie, tak – warstwa neuronów obliczająca ważoną sumę plus bias jest tą samą ideą, którą miał Rosenblatt. Różnice, które sprawiają, że uczenie głębokie działa, to gładka, różniczkowalna funkcja aktywacji zamiast twardego kroku, wiele warstw ułożonych jedna na drugiej zamiast jednej, oraz trening przez gradientowe propagację wstecz zamiast prostego, opartego na błędzie, reguły perceptronu.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz The Perceptron 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ę The Perceptron