Perceptron

Sieci neuronowe, Teoria paź 31, 2007

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 1958. 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

Jeśli potraktujemy wejście X oraz wyjście Y jako wektory liczb rzeczywistych, to warstwa neuronów zachowuje się jako macierz N:

Y = NX

Działanie każdej kolejnej wartstwy można przedstawić jako kolejne mnożenie przez pewną macierz:

Y = N5N4N3N2N1X

Wszystkie te mnożenia można zastąpić mnożeniem przez jedną macierz:

N * = N5N4N3N2N1
Y = N * X

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:

f(x) = 1 jeśli x > 1, f(x) = 0 w przeciwnym wypadku
f(x) = 1 jeśli x > 1, f(x) = x jeśli 1 > x > 0, f(x) = 0 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: x1 i x2
Neuron 1: y1 = 2x1 − 2x2
Funkcja nieliniowa po neuronie 1: z1 = 1 jeśli y1 > 1, 0 w przeciwnym wypadku
Neuron 2: y2 = 2x2 − 2x1
Funkcja nieliniowa po neuronie 2: z2 = 1 jeśli y2 > 1, 0 w przeciwnym wypadku
Neuron 3: w = 2z1 + 2z2
Funkcja nieliniowa po neuronie 3: v = 1 jeśli w > 1, 0 w przeciwnym wypadku
Wejścia Wyjścia warstwy 1 Po funkcji nieliniowej Wyjścia warstwy 2 Po funkcji nieliniowej (ostateczny wynik)
x1 x2 y1 y2 z1 z2 w v
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

Inguaris

Inguaris – sztuczna inteligencja, uczenie maszynowe, systemy ekspertowe. Zajmujemy się praktycznym wykorzystaniem AI w e-commerce, finansach, wsparciu marketingu i wielu innych dziedzinach.