AI kezdőknek · Bevezetés a neurális hálókba · Lecke 03

Perceptron

A perceptron az első komolyan megépített mesterséges neurális háló, és máig ez a legjobb kiindulópont ahhoz, hogy megértsük, mi is történik valójában egy neurális háló belsejében.

Vissza a tananyaghoz


Bemenetek (x)Kimenet
A perceptron a bemenetek súlyozott összegéből egyetlen kimenetet számít.

Az első mesterséges neuron

Az egyik legelső kísérlet arra, hogy a modern neurális hálókhoz hasonló rendszert építsenek, Frank Rosenblatt nevéhez fűződik, aki 1957-ben a Cornell Aeronautical Laboratoryban dolgozott. Az általa épített hardvereszközt Mark 1 néven ismerték, és arra tervezték, hogy egyszerű geometriai alakzatokat, például háromszögeket, négyzeteket és köröket ismerjen fel.

A bemeneti képet egy 20x20-as fotocella mátrix érzékelte, tehát a hálózatnak 400 bemenete és egyetlen bináris kimenete volt. Ez az egyszerű hálózat valójában egyetlen neuronból állt, amit küszöblogikai egységnek is neveztek. A hálózat súlyai fizikailag potenciométerek voltak, ezeket a tanítási fázis során kézzel kellett állítani, egyenként. A New York Times akkoriban azt írta a perceptronról, hogy egy olyan elektronikus számítógép embriója, amelyről a haditengerészet azt reméli, hogy egyszer majd járni, beszélni, látni, írni és önmagát reprodukálni is képes lesz, sőt, tudatában lesz saját létezésének. Ez a lelkesedés jól mutatja, mekkora várakozás övezte a korai AI kutatást, még mielőtt a valódi korlátok kiderültek volna.


400

Ennyi bemenete volt a Mark 1 perceptronnak, egy 20x20-as fotocella mátrixból, és mindössze egyetlen bináris kimenete. A súlyokat potenciométerekkel, kézzel, egyenként kellett állítani.


Hogyan működik a perceptron modell

Képzeljük el, hogy egy problémánkat N darab jellemzővel írjuk le, ilyenkor a bemeneti adat egy N méretű vektor. A perceptron egy bináris osztályozó modell, vagyis két osztály közötti különbségtételre képes. Minden egyes bemeneti vektorhoz a perceptron kimenete vagy plusz egy, vagy mínusz egy lesz, aszerint, hogy az adott bemenet melyik osztályba tartozik.

A kimenetet úgy számítjuk ki, hogy a bemeneti vektort megszorozzuk a súlyok vektorával, majd az eredményt egy úgynevezett lépcsős aktivációs függvényen vezetjük át. Ez a függvény roppant egyszerű, ha a bemenet összege nagyobb vagy egyenlő nullával, a kimenet plusz egy, egyébként mínusz egy. Ez a szigorú, éles döntés az, ami a perceptront alkalmassá teszi arra, hogy két, egymástól lineárisan elválasztható osztályt szétválasszon, de egyben ez a korlátja is, hiszen nem lineárisan szeparálható problémákra önmagában nem alkalmas.


x1 x2 x3 w1 w2 w3 Σ súlyozott összeg lépcsős függvény +1 −1 két osztály
A perceptron számítása, súlyozott összeg után éles, lépcsős döntés következik.

A perceptron tanítása

A perceptron tanításának célja, hogy megtaláljuk azt a súlyvektort, amely a lehető legtöbb bemenetet helyesen osztályozza, vagyis a lehető legkisebb hibát eredményezi. Ezt a hibát az úgynevezett perceptron kritérium definiálja, amely a hibásan osztályozott pontokra összegzi a súlyvektor és a bemenet szorzatát, a helyes címkével megszorozva.

Ezt a hibafüggvényt a súlyok függvényeként tekintjük, és a célunk a minimalizálása. Erre a leggyakrabban használt módszer a gradiens csökkentés, amelynek lényege, hogy véletlenszerű kezdeti súlyokból indulunk, majd minden lépésben a hibafüggvény gradiensének irányával ellentétesen módosítjuk a súlyokat, egy előre meghatározott tanulási ráta mértékében. A gyakorlatban ez azt jelenti, hogy minden téves osztályozás után egy kicsit elmozdítjuk a döntési határt a helyes irányba, és ezt sokszor megismételve a modell fokozatosan egyre jobban illeszkedik az adatokra.

Fontos megjegyezni, hogy a perceptron tanítási szabálya garantáltan konvergál, ha a két osztály valóban lineárisan elválasztható egymástól. Ha nem az, a modell soha nem fog tökéletesen illeszkedni, függetlenül attól, hány iterációt futtatunk. Ez volt az egyik oka annak, hogy a kutatás később a többrétegű hálózatok felé fordult, amelyekről a következő leckében lesz szó.


Lineárisan szeparálható nincs elválasztó egyenes Nem szeparálható (pl. XOR)
A tanítás csak akkor konvergál garantáltan, ha a két osztály egyetlen egyenessel elválasztható.

ElőrejelzésHiba méréseSúlyokmódosítása
A perceptron a hibából tanul, lépésről lépésre módosítva a súlyokat.

Miért fontos ma is ez az egyszerű modell

A perceptron önmagában ma már ritkán jelenik meg éles alkalmazásokban, mégis kulcsfontosságú, mert minden mai neurális hálózat, a legkisebb klasszifikátortól a legnagyobb nagy nyelvi modellig, ugyanazon az alapelven épül fel. Egy súlyozott összeg, majd egy nemlineáris átalakítás, sok ilyen egység egymásra rétegezve, és egy tanulási algoritmus, amely a hibából kiindulva fokozatosan finomítja a súlyokat. Ha valaki érti a perceptront, könnyebben érti meg, miért van szüksége egy modern hálózatnak több rétegre, aktivációs függvényekre és nagy mennyiségű tanítóadatra.


  1. Súlyozott összegA bemenetek és a súlyok szorzata, ez a perceptron óta változatlan alapelv.
  2. Nemlineáris átalakításA perceptronnál lépcsős függvény, a mai hálókban finomabb aktivációk.
  3. Egységek egymásra rétegezveSok ilyen egyszerű egységből épül fel minden modern hálózat.
  4. Tanulás a hibábólA tanítási algoritmus a hibából kiindulva fokozatosan finomítja a súlyokat.

Gyakorlati anyag

Ehhez a leckéhez tartozik egy Jupyter notebook, amelyben lépésről lépésre felépíthető és kipróbálható egy valódi perceptron implementáció. A notebook kód formában mutatja be a fenti tanítási algoritmust, valós adatokon.

Notebook megnyitása GitHubon →

← Előző lecke Következő lecke →

Workshop

AI Transformation Day

Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.

Érdekel a program →