
Perceptron (od angielskiego słowa „ perception” oznaczającego postrzeganie) - najprostsza sztuczna sieć neuronowa, wprowadzona po raz pierwszy przez Franka Rosenblatta w 1958 roku[1]. W swojej podstawowej formie (perceptron prosty) składa się z pojedynczego sztucznego neuronu McCullocha-Pittsa z regulowanymi wagami i progiem. Dalszy rozwój doprowadził do konstrukcji perceptronów wielowarstwowych, w tym perceptronów ze sprzężeniem zwrotnym, mających znacznie większe możliwości obliczeniowe.
Historia
[edytuj | edytuj kod]W 1943 roku neurofizjolog Warren McCulloch i logik Walter Pitts wprowadzili do informatyki „neuron” jako element logiczny z wieloma wejściami i jednym wyjściem binarnym, działający progowo, tj. neuron ten przyjmował stan 1, gdy suma sygnałów wejściowych przekroczyła zadany próg; w przeciwnym zaś wypadku przyjmował stan 0 w odpowiedzi na sygnały wejściowe (patrz schemat neuronu McCullocha-Pittsa ). Odpowiadało to neurobiologicznej analogii potencjału czynnościowego, który komórka nerwowa emituje, gdy następuje zmiana jej potencjału błonowego, gdy suma sygnałów, jakie dochodzą do komórki od dendrytów, przekroczy pewien próg. McCulloch i Pitts wykazali, że poprzez odpowiednie połączenie takich neuronów można tworzyć bramki logiczne AND, OR, NOT, a z nich bardziej złożone układy.
W 1958 roku Frank Rosenblatt opublikował model perceptronu, który do dziś stanowi podstawę sztucznych sieci neuronowych. Perceptron zbudowany przez Rosenblatta wraz z Charlesem Wightmanem służył do rozpoznawania znaków alfanumerycznych. Innowacją było tu zastosowanie procesu uczenia się jako metody programowania systemu.
W Polsce Jacek Karpiński, inżynier i genialny wynalazca, skonstruował w 1962 r. perceptron z tranzystorów. Jego sieć neuronowa rozpoznawała otoczenie za pomocą kamery i potrafiła się uczyć. Był to drugi taki perceptron na świecie[2].
Badania nad perceptronami zostały zahamowane na jakiś czas, gdy w roku 1969 Marvin Minsky i Seymour Papert wykazali perceptrony mogą być wykorzystywane tylko do klasyfikowania zbiorów liniowo separowalnych; pokazali m. in. niezdolność do tworzenia bramek XOR z perceptronów[3]. Wprowadzenie odpowiednich funkcji aktywacji pozwoliło jednak przezwyciężyć te ograniczenia; m. in. ReLU (Rectified Linear Unit), Sigmoid (funkcja logistyczna), Tgh (funkcja tangens hiperboliczny), Softmax, Leaky ReLU. (Funkcja aktywacji neuronu jest pokazana na schemacie powyżej w sposób symboliczny jako schodek w kwadracie).
Perceptron jednowarstwowy - budowa
[edytuj | edytuj kod]Perceptron jednowarstwowy jest zbudowany z neuronów, których wejścia są wspólne - na te wejścia podaje się analizowaną daną. Przy tym:
a). - liczba neuronów perceptronu: jeśli perceptron ma klasyfikować dane ze względu na jedną cechę, to ma jeden neuron; jeśli ma klasyfikować dane ze względu na dwie cechy, to ma dwa neurony; do analizy cech perceptron ma neuronów
b). - ilość wejść perceptronu (równa liczbie wejść każdego neuronu) zależy od danych: jeżeli każda dana wejściowa jest określona za pomocą liczb , to każdy neuron musi mieć wejść
c). - ilość wyjść perceptronu: ponieważ każdy neuron ma jedno wyjście, więc jeżeli perceptron analizuje cech, to ma wyjść - po jednym od każdego neuronu
Perceptron jako klasyfikator binarny
[edytuj | edytuj kod]Działanie perceptronu jest następujące:
- w przypadku analizy pojedynczej cechy perceptron ma jeden neuron; na jego wejścia podawane są wartości liczbowe analizowanej danej i jeżeli dana ta należy do analizowanej przez neuron klasy, to neuron na wyjściu poda liczbę , a gdy nie należy, to poda
- gdy perceptron klasyfikuje cech, to na neuronów, mających wspólnych wejść; poszczególnym cechom neurony przypiszą liczby 1 lub zero analizowanej danej; na wyjściu perceptronu będzie wyjść od poszczególnych neuronów, każde w stanie wyjściowym 1 lub 0; perceptron przypisze więc danej wejściowej liczbę o bitach - kolejne bity określają, czy ta dana posiada czy nie poszczególne analizowane cechy. Z tego względu perceptron należy do klasyfikatorów binarnych.
Trenowanie perceptronu
[edytuj | edytuj kod]Aby perceptron wykonywał zadanie klasyfikacji, należy go "wytrenować", tj. ustalić wartości wag. Można to np. zrobić metodą prób, podając przykładowe dane na wejście i modyfikuje wagi połączeń między neuronami tak, aby wynik na wyjściu przybierał pożądane wartości. Najprostsze perceptrony mogą klasyfikować dane na zbiory, które są liniowo separowalne. W przypadku zbioru danych określonych dwoma wielkościami oraz są one separowalne prostą na płaszczyźnie; w tym wypadku wagi perceptronu tworzą wektor normalny do tej prostej, płaszczyznę (w przypadku 3 wejść); w ogólności hiperpłaszczyznę wymiarową w przypadku wejść[4].
Trenowanie perceptronu oznacza matematycznie znalezienie właściwej prostej (ogólnie: hiperpłaszczyzny), która separuje dane wejściowe na te, które spełniają zadany warunek i te, które nie spełniają tego warunku. Dlatego tak ważne jest, aby dane były liniowo separowalne, inaczej nie będzie możliwe znalezienie odpowiednich wag sieci - perceptron nie będzie działał.
Wyjście perceptronu obliczamy za pomocą wzoru:
- ,
gdzie – waga, – wejście, – funkcja aktywacji, – wyjście, – liczba wejść, – wartość progowa (ang. bias).
W konstrukcji pierwotnego perceptronu jako funkcję aktywacji stosowano funkcję skokową, dla której wyjście przyjmowało wartość lub wartość . W ogólności funkcje aktywacji mogą dawać na wyjściu wartości dyskretne lub ciągłe, np. dla sigmoidalnej funkcji aktywacji wyjście przyjmuje wartości w zakresie .
Liniowe funkcje aktywacji - ograniczenia perceptronu
[edytuj | edytuj kod]Jeśli potraktujemy wejście oraz wyjście jako wektory liczb rzeczywistych, to warstwa neuronów zachowuje się jak macierz
Działanie każdej kolejnej warstwy można przedstawić jako kolejne mnożenie przez pewną macierz:
Wszystkie te mnożenia można zastąpić mnożeniem przez jedną macierz:
A zatem sieć perceptronowa o dowolnie wielu warstwach potrafi wykonać tylko te operacje, wykona sieć złożona z jednej warstwy neuronów.
Nieliniowe funkcje aktywacji. Perceptrony wielowarstwowe
[edytuj | edytuj kod]Sytuacja zmienia się całkowicie jeśli jako funkcje aktywacji zastosuje się funkcje nieliniowe, np.
albo
itd.

Takie sieci neuronowe potrafią obliczać znacznie bardziej skomplikowane funkcje.
Np. poniższa sieć neuronowa wylicza funkcję XOR:
- Wejścia: i
- Neuron 1:
- Funkcja nieliniowa po neuronie 1: jeśli w przeciwnym wypadku
- Neuron 2:
- Funkcja nieliniowa po neuronie 2: jeśli w przeciwnym wypadku
- Neuron 3:
- Funkcja nieliniowa po neuronie 3: jeśli w przeciwnym wypadku
| Wejścia | Wyjścia warstwy 1 | Po funkcji nieliniowej | Wyjścia warstwy 2 | Po funkcji nieliniowej (ostateczny wynik) | |||
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | −2 | 2 | 0 | 1 | 2 | 1 |
| 1 | 0 | 2 | −2 | 1 | 0 | 2 | 1 |
| 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
Zobacz też
[edytuj | edytuj kod]Przypisy
[edytuj | edytuj kod]- ↑ Margaret Ann Boden: Sztuczna inteligencja. Wydawnictwo Uniwersytetu Łódzkiego, 2020, s. 31. ISBN 83-8142-639-1. (pol.).
- ↑ Jacek Karpiński, geniusz. Stworzył najlepszy komputer na świecie. Komuniści zaprzepaścili jego osiągnięcie. Dziennik.pl, 2017-04-08. [dostęp 2024-08-27].
- ↑ Marsland 2014 ↓.
- ↑ Bartkowiak 2002 ↓, s. 10.
Bibliografia
[edytuj | edytuj kod]Po polsku:
Anna Bartkowiak: Sieci Neuronowe: Notatki do wykładu „Sieci Neuronowe” dla studentów kierunku Informatyka na Uniwersytecie Wrocławskim. 2002.
Po angielsku:
- Rosenblatt, Frank (1958): The perceptron: a probabilistic model for information storage and organization in the brain. Psychological Reviews 65 (1958) 386–408
- M. L. Minsky, S. A. Papert: Perceptrons. 2nd Edition, MIT-Press 1988, ISBN 0-262-63111-3.
- Stephen Marsland: Machine Learning. An algorithmic perspective. 2014. ISBN 978-1-4665-8328-3.









