Perceptron

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Perceptron złożony z jednego neurona McCullocha-Pittsa

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. Może być wykorzystywany tylko do klasyfikowania zbiorów liniowo separowalnych[1].

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 wartość na wyjściu przybierała 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].

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 , 0 w przeciwnym wypadku
Neuron 2:
Funkcja nieliniowa po neuronie 2: jeśli , 0 w przeciwnym wypadku
Neuron 3:
Funkcja nieliniowa po neuronie 3: jeśli , 0 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

  1. a b c Stephen Marsland: Machine Learning : an algorithmic perspective. ISBN 978-1-4665-8328-3.