Perceptron

najprostsza wersja sieci neuronowej

Perceptron – najprostsza sieć neuronowa, składająca się z jednego bądź wielu niezależnych neuronów McCullocha-Pittsa, implementująca algorytm uczenia nadzorowanego klasyfikatorów binarnych. Perceptron jest funkcją, która potrafi określić przynależność parametrów wejściowych do jednej z dwóch klas, poprzez wskazanie czy coś należy czy nie do pierwszej klasy. Może być wykorzystywany tylko do klasyfikowania zbiorów liniowo separowalnych[1]. Aby móc testować przynależność do więcej niż dwóch klas, należy użyć perceptronu z większą ilością neuronów, w którym klasy zakodowane są jako wyjścia perceptronu (dla danych testowych), w postaci bitów.

Perceptron złożony z jednego neuronu McCullocha-Pittsa

Zasada działania edytuj

Działanie perceptronu polega na klasyfikowaniu danych pojawiających się na wejściu i ustawianiu stosownie do tego wartości wyjścia. Przed używaniem perceptron należy wytrenować, podając mu przykładowe dane na wejście i modyfikując w odpowiedni sposób wagi wejść i połączeń między warstwami neuronów, tak aby wynik na wyjściu przybierał pożądane wartości. Perceptrony mogą klasyfikować dane na zbiory, które są liniowo separowalne. Własność ta uniemożliwia na przykład wytrenowanie złożonego z jednego neuronu perceptronu, który wykonywałby logiczną operację XOR na wartościach wejść[1]. Z matematycznego punktu widzenia wagi perceptronu tworzą wektor normalny, który określa prostą (w przypadku dwóch wejść) lub hiperpłaszczyznę decyzyjną[2]. Trenowanie perceptronu to dopasowanie tej hiperpłaszczyzny do danych wejściowych, aby mógł wskazywać czy punkt należy lub nie należy do zbioru wskazywanego przez hiperpłaszczyznę. Dlatego tak ważne jest, aby dane były liniowo separowalne, inaczej dopasowanie do danych będzie niemożliwe.

Historia edytuj

Pojęcie perceptronu zostało wprowadzone przez Franka Rosenblatta w roku 1957. Perceptron zbudowany przez niego wraz z Charlesem Wightmanem był częściowo elektromechanicznym, częściowo elektronicznym urządzeniem, którego przeznaczeniem było rozpoznawanie znaków alfanumerycznych. Innowacją było tu zastosowanie procesu uczenia się jako metody programowania systemu. W roku 1969 Marvin Minsky i Seymour Papert wykazali ograniczenia perceptronów, co spowodowało długotrwały impas w pracach nad sztucznymi sieciami neuronowymi[1].

Ograniczenia perceptronu edytuj

Jeśli potraktujemy wejście   oraz wyjście   jako wektory liczb rzeczywistych, to warstwa neuronów zachowuje się jako 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 wykonywać tylko te operacje, które potrafi wykonać sieć złożona z jednej warstwy neuronów – a jest to bardzo mało. Nie znaczy to jednak, że wielowarstwowe perceptrony są pozbawione sensu – chociaż już działający perceptron wielowarstwowy można zastąpić jednowarstwowym, to sposób w jaki taka sieć się uczy, jest zupełnie inny.

Sytuacja zmienia się całkowicie jeśli po każdej warstwie wstawimy jakąś funkcję nieliniową, taką jak:

 

albo

 

itd.

Takie sieci neuronowe potrafią obliczać znacznie bardziej skomplikowane funkcje. Na przykład 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

Przypisy edytuj

Bibliografia edytuj