Perceptron
Perceptron - sieć neuronowa najprostszego typu. Pojęcie to stosowane jest zamiennie do określenia sieci składającej się z:
- pojedynczego neuronu McCullocha-Pittsa
- pewnej liczby neuronów wejściowych, których wyjścia połączone są z wejściami pewnej liczby neuronów wyjściowych; mimo iż ten typ perceptronów bywa nazywany perceptronem dwuwarstwowym, zwykle określa się go mianem perceptronu jednowarstwowego, ponieważ właściwą warstwą dokonującą sumowania i obliczania wyjścia według wartości funkcji aktywacji jest tylko warstwa druga
- wielu warstw neuronów, gdzie wyjścia poprzedniej warstwy łączą się z wejściami kolejnej; są to tak zwane perceptrony wielowarstwowe.
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ść.
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.
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:
jeśli
,
w przeciwnym wypadku
jeśli
,
jeśli
,
w przeciwnym wypadku- 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 |




jeśli
,
w przeciwnym wypadku
jeśli
,
i 

jeśli
, 0 w przeciwnym wypadku
jeśli
, 0 w przeciwnym wypadku
jeśli
, 0 w przeciwnym wypadku




