06 · Sieci · 4 min czytania · aktualizacja
Czym jest perceptron i czym różni się od regresji logistycznej?
W skrócie
Perceptron to najprostszy sztuczny neuron: liczy sumę ważoną wejść plus bias i zwraca 1, gdy przekracza ona zero. Dzieli przestrzeń cech hiperpłaszczyzną.
Co to jest
Perceptron (Rosenblatt 1958) to pojedynczy sztuczny neuron: mnoży każde wejście przez wagę, sumuje, dodaje przesunięcie (bias) i zwraca 1, gdy wynik jest większy od zera, a inaczej 0. Jest klasyfikatorem liniowym: jego granica decyzji to prosta w dwóch wymiarach, a ogólnie hiperpłaszczyzna.
Z takich neuronów, uzupełnionych o nieliniową funkcję aktywacji, składa się każda sieć neuronowa i każdy duży model językowy. Sam perceptron jest bliskim krewnym regresji logistycznej, przodkiem SVM i wzorem dla neuronów współczesnych sieci.
Intuicja: lekarz ocenia guz na podstawie kilku pomiarów. Każdy pomiar „głosuje” z pewną siłą — duży promień za złośliwym, gładkie brzegi za łagodnym. Perceptron sumuje te głosy i porównuje sumę z progiem. Uczenie to dobieranie siły głosów.
Mechanizm — dlaczego tak działa
Wzór: y = 1, gdy w·x + b > 0, inaczej 0. Zbiór punktów, dla których w·x + b = 0, to hiperpłaszczyzna; wektor wag w jest do niej prostopadły, a bias b przesuwa ją od początku układu. Każda waga mówi więc, jak mocno i w którą stronę dana cecha głosuje za odpowiedzią 1.
Reguła uczenia jest prosta: po każdej pomyłce w ← w + η (y − ŷ) x oraz b ← b + η (y − ŷ). Przykład źle sklasyfikowany jako 0 przyciąga hiperpłaszczyznę w stronę, która go przepuści; źle sklasyfikowany jako 1 — odpycha ją. Przy starcie z zerowych wag krok η nie wpływa na przebieg uczenia (skaluje tylko wagi), inaczej niż w sieciach uczonych gradientem.
Twierdzenie Novikoffa (1962): jeśli klasy da się rozdzielić liniowo z marginesem γ, a wszystkie przykłady mieszczą się w kuli o promieniu R, to perceptron popełni co najwyżej (R/γ)² poprawek i się zatrzyma. Druga połowa tej historii bywa pomijana: gdy klas nie da się rozdzielić hiperpłaszczyzną, algorytm nigdy się nie zatrzymuje — wagi cyklują bez końca. Minsky i Papert (1969) pokazali, że do takich problemów należy XOR, co uzasadnia warstwy ukryte.
Perceptron zwraca wyłącznie „tak/nie”, bez stopnia pewności. Regresja logistyczna to ten sam neuron z sigmoidem zamiast progu: zwraca prawdopodobieństwo między 0 a 1 i da się ją uczyć gradientem gładkiej straty. Dlatego we współczesnych sieciach „neuron” prawie zawsze oznacza sumę ważoną z gładką aktywacją, a nie twardy próg. Analogia biologiczna jest luźna: prawdziwe neurony nie liczą dokładnie sumy ważonej.
Na przykładzie
Na zbiorze Iris (150 kwiatów, 4 pomiary) uruchomiłem Perceptron(random_state=0) ze scikit-learn. Zadanie „setosa czy nie” jest liniowo separowalne: perceptron osiąga 100% trafności po 7 epokach i się zatrzymuje. Zadanie „versicolor czy virginica” separowalne nie jest: przy wyłączonym kryterium stopu algorytm wykorzystał cały limit 1000 epok, a w osobnym przebiegu na danych standaryzowanych liczba pomyłek (na 100 kwiatów) w 50 kolejnych epokach skakała między 2 a 9 i ani razu nie spadła do zera — dokładnie tak, jak przewiduje teoria.
Na Breast Cancer Wisconsin (569 guzów, 30 cech, standaryzacja, podział 75/25 z warstwowaniem, random_state=0) perceptron trafia w 94,4% przypadków testowych, a regresja logistyczna na tych samych danych w 95,8%. Różnica jest mała, ale regresja logistyczna daje coś więcej: prawdopodobieństwo, np. 0,996 dla jednego guza i 0,00003 dla innego, zamiast gołego 0/1.
Dane: Iris (irysy Fishera) Breast Cancer Wisconsin (diagnostyka raka piersi)
W praktyce
- scikit-learn:
Perceptron(domyślnieeta0=1.0,max_iter=1000), w praktyce zastępowany przezLogisticRegressionlubSGDClassifier(loss='log_loss'). - PyTorch:
nn.Linear(n_in, 1)to dokładnie suma ważona plus bias; próg zastępujesigmoidiBCEWithLogitsLoss. - Pojedynczy neuron liniowy nie rozwiąże XOR ani żadnej reguły wymagającej dwóch cięć — potrzebna jest warstwa ukryta.
- Typowy błąd: trenowanie perceptronu na danych nieseparowalnych i czekanie, aż „się uspokoi”. Nie uspokoi się — patrz na liczbę pomyłek w epoce.
- Wagi są porównywalne tylko po standaryzacji wejść; inaczej duża waga może znaczyć po prostu małą skalę cechy.
Najczęstsze pytania
- Czym różni się perceptron od regresji logistycznej?
- Oba liczą tę samą sumę ważoną. Perceptron porównuje ją z zerem i zwraca twarde 0/1, ucząc się tylko na pomyłkach. Regresja logistyczna przepuszcza ją przez sigmoid, zwraca prawdopodobieństwo i jest uczona gradientem entropii krzyżowej, więc poprawia też pewność, nie tylko stronę granicy.
- Dlaczego perceptron nie rozwiązuje problemu XOR?
- XOR wymaga odpowiedzi 1 dla (0,1) i (1,0), a 0 dla (0,0) i (1,1). Żadna prosta nie oddziela tych dwóch par punktów — potrzebne są dwa cięcia, czyli warstwa ukryta z co najmniej dwoma neuronami (Minsky i Papert 1969).
- Czy perceptron zawsze się nauczy, jeśli dane da się rozdzielić?
- Tak — twierdzenie Novikoffa gwarantuje skończoną liczbę poprawek, nie większą niż (R/γ)². Nie gwarantuje jednak, że znaleziona granica będzie dobrze generalizować: perceptron zatrzymuje się na pierwszej, która pasuje, niekoniecznie na tej z największym marginesem (to robi SVM).
Źródła
- Rosenblatt, F. (1958). "The perceptron: a probabilistic model for information storage and organization in the brain". Psychological Review 65(6), 386–408. doi:10.1037/h0042519
- Novikoff, A. (1962). "On convergence proofs on perceptrons". Proc. Symposium on the Mathematical Theory of Automata 12, 615–622.
- Minsky, M., Papert, S. (1969). Perceptrons. MIT Press.
- Bishop, C. (2006). Pattern Recognition and Machine Learning, rozdz. 4.1.7 "The perceptron algorithm".
- Hastie, Tibshirani, Friedman (2009). The Elements of Statistical Learning, 2nd ed., rozdz. 4.5.1 "Rosenblatt's perceptron learning algorithm".