Az XOR-probléma a neurális hálózatokban.
Bevezetés
Ez az első bejegyzés a mesterséges neurális hálózatok (ANN) megvalósításait vizsgáló sorozatban. A cikk célja, hogy segítsen az olvasónak megérteni az alapfogalmakat, mielőtt rátérne a következő algoritmikus megvalósításokra.
Nem feltételezünk előzetes ismereteket, bár a rövidség kedvéért a cikk nem minden terminológiát magyaráz meg. Ehelyett hiperhivatkozásokat adunk a Wikipédiára és más forrásokra, ahol további olvasásra lehet szükség.
Ez egy nagy téma. Az ANN-ek sokféleképpen alkalmazhatók, és használhatók felügyelt, felügyelet nélküli, félig felügyelt és megerősítéses tanulásra. Ez még azelőtt, hogy belemennénk a problémaspecifikus architektúrákba ezeken a kategóriákon belül. De valahol el kell kezdenünk, ezért a terjedelem leszűkítése érdekében az ANN-ek egy egyszerű problémára való alkalmazásával kezdjük.
Az XOr probléma
Az XOr, vagy “kizárólagos vagy” probléma az ANN-kutatás klasszikus problémája. Ez az a probléma, amikor egy neurális hálózat segítségével két bináris bemenet esetén meg kell jósolni az XOr logikai kapuk kimeneteit. Egy XOr függvénynek igaz értéket kell visszaadnia, ha a két bemenet nem egyenlő, és hamis értéket, ha egyenlőek. Az összes lehetséges bemenetet és a megjósolt kimeneteket az 1. ábra mutatja.
Az XOr egy osztályozási probléma, amelynél a várható kimenetek előre ismertek. Ezért célszerű felügyelt tanulási megközelítést alkalmazni.
A felszínen az XOr nagyon egyszerű problémának tűnik, azonban Minksy és Papert (1969) kimutatta, hogy ez nagy problémát jelentett az 1960-as évek neurális hálózati architektúrái, az úgynevezett perceptronok számára.
Perceptronok
Mint minden ANN, a perceptron is egységek hálózatából áll, amelyek analógok a biológiai neuronokkal. Egy egység más egységektől kaphat bemenetet. Ennek során a kapott értékek összegét veszi, és eldönti, hogy továbbítja-e a jelet a többi egységnek, amelyekkel kapcsolatban áll. Ezt nevezzük aktiválásnak. Az aktiválási függvény valamilyen eszközzel a bemeneti értékek összegét 1-re vagy 0-ra (vagy az 1 vagy 0-hoz nagyon közeli értékre) csökkenti, hogy az aktiválást vagy annak hiányát reprezentálja. Az egység egy másik formája, az úgynevezett előfeszítő egység mindig aktiválódik, jellemzően egy keményen kódolt 1-et küld minden olyan egységnek, amelyhez csatlakozik.
A perceptronok egyetlen réteg bemeneti egységet – beleértve egy előfeszítő egységet – és egyetlen kimeneti egységet tartalmaznak (lásd a 2. ábrát). Itt a torzító egységet szaggatott körrel, míg a többi egységet kék körrel ábrázoljuk. Az XOr két bináris bemeneti értékét két nem előfeszített bemeneti egység képviseli. Bármennyi bemeneti egység szerepelhet.
A perceptron egyfajta feed-forward hálózat, ami azt jelenti, hogy a kimenet létrehozásának folyamata – az úgynevezett forward propagation – egy irányban folyik a bemeneti rétegből a kimeneti rétegbe. A bemeneti réteg egységei között nincsenek kapcsolatok. Ehelyett a bemeneti réteg minden egysége közvetlenül a kimeneti egységhez kapcsolódik.
Az előrehaladási folyamat egyszerűsített magyarázata az, hogy az X1 és X2 bemeneti értékeket, valamint az 1 előfeszítési értéket megszorozzuk a megfelelő W0..W2 súlyokkal, és a kimeneti egységbe elemezzük. A kimeneti egység ezeknek az értékeknek az összegét veszi, és egy aktiválási függvényt – jellemzően a Heavside-féle lépésfüggvényt – alkalmaz, hogy a kapott értéket 0 vagy 1 értékké alakítsa, és így a bemeneti értékeket 0 vagy 1 értéknek minősítse.
A súlyváltozók beállítása az, ami a hálózat szerzőjének irányítást ad a bemeneti értékek kimeneti értékké alakításának folyamata felett. A súlyok határozzák meg, hogy hol húzódik az osztályozási vonal, az a vonal, amely az adatpontokat osztályozási csoportokba sorolja. Ha az osztályozási vonal egyik oldalán lévő összes adatpont 0 osztályba kerül, akkor az összes többi 1 osztályba kerül.
Ez az architektúra korlátja, hogy csak egyetlen vonallal képes az adatpontok szétválasztására. Ez azért nem szerencsés, mert az XOr bemenetek nem szeparálhatók lineárisan. Ez különösen akkor látható, ha az XOr bemeneti értékeket grafikonra rajzolja. Ahogy a 3. ábrán látható, az 1-es és a 0-s előrejelzéseket nem lehet egyetlen osztályozási vonallal elválasztani.