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. Ez a lecke a Microsoft nyílt forráskódú "AI kezdőknek" (AI For Beginners) tananyagának magyar adaptációja.

Vissza a tananyaghoz


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.


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.


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


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.


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 →

Forrás

Ez a lecke a Microsoft nyílt forráskódú, MIT licenc alatt elérhető "AI For Beginners" tananyagának magyar adaptációja. Eredeti angol lecke. GitHub. Felhasznált magyar gépi fordítás. GitHub.


← 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 →