Mesterséges neurális hálózat

A neurális hálózat (más néven ANN vagy mesterséges neurális hálózat) egyfajta számítógépes szoftver, amelyet a biológiai neuronok ihlettek. A biológiai agyak képesek nehéz problémák megoldására, de minden egyes neuron csak a probléma egy nagyon kis részének megoldásáért felelős. Hasonlóképpen, egy neurális hálózat is sejtekből áll, amelyek együttműködnek a kívánt eredmény elérése érdekében, bár minden egyes sejt csak a probléma egy kis részének megoldásáért felelős. Ez az egyik módszer a mesterségesen intelligens programok létrehozására.

A neurális hálózatok a gépi tanulás egyik példája, ahol a program képes változni, ahogyan megtanul egy problémát megoldani. Egy neurális hálózat minden egyes példával betanítható és fejleszthető, de minél nagyobb a neurális hálózat, annál több példára van szüksége ahhoz, hogy jól teljesítsen - a mélytanulás esetében gyakran több millió vagy milliárd példára van szükség.

Áttekintés

A neurális hálózatra kétféleképpen gondolhatunk. Az első olyan, mint az emberi agy. A második, mint egy matematikai egyenlet.

Egy hálózat egy bemenettel kezdődik, hasonlóan egy érzékszervhez. Az információ ezután neuronrétegeken keresztül áramlik, ahol minden egyes neuron sok más neuronhoz kapcsolódik. Ha egy adott neuron elég ingerületet kap, akkor az axonján keresztül üzenetet küld bármely más neuronhoz, amelyhez kapcsolódik. Hasonlóképpen, egy mesterséges neurális hálózatnak van egy bemeneti adatrétege, egy vagy több rejtett osztályozó réteg és egy kimeneti réteg. Az egyes rejtett rétegek minden egyes csomópontja a következő réteg egy csomópontjához kapcsolódik. Amikor egy csomópont információt kap, annak egy részét továbbküldi azoknak a csomópontoknak, amelyekhez kapcsolódik. A mennyiséget egy matematikai függvény határozza meg, amelyet aktiválási függvénynek nevezünk, például sigmoid vagy tanh.

Ha úgy gondolunk egy neurális hálózatra, mint egy matematikai egyenletre, akkor a neurális hálózat egyszerűen egy bemenetre alkalmazandó matematikai műveletek listája. Az egyes műveletek bemenete és kimenete egy tenzor (pontosabban egy vektor vagy mátrix). Minden rétegpár a súlyok listájával van összekötve. Minden rétegben több tenzor van tárolva. Egy rétegben lévő egyedi tenzort csomópontnak nevezzük. Minden egyes csomópont a következő réteg néhány vagy összes csomópontjához súlyokkal kapcsolódik. Minden csomópont rendelkezik egy értékek listájával is, amelyet előítéleteknek nevezünk. Az egyes rétegek értéke tehát az aktuális réteg értékeinek (X-nek nevezett) aktiválási függvényéből és a súlyok szorzatából adódik.

A k t i v a t i ó n ( W ( e i g h t s ) ∗ X + b ( i a s ) ) {\displaystyle Activation(W(eights)*X+b(ias))} } {\displaystyle Activation(W(eights)*X+b(ias))}

A hálózathoz költségfüggvényt határozunk meg. A veszteségfüggvény azt próbálja megbecsülni, hogy a neurális hálózat mennyire jól teljesíti a kijelölt feladatot. Végül egy optimalizálási technikát alkalmazunk a költségfüggvény kimenetének minimalizálására a hálózat súlyainak és torzításainak megváltoztatásával. Ezt a folyamatot nevezzük képzésnek. A képzés kis lépésekben történik. Több ezer lépés után a hálózat jellemzően már elég jól elvégzi a kijelölt feladatát.

Példa

Vegyünk egy olyan programot, amely ellenőrzi, hogy egy személy él-e. Két dolgot ellenőriz: a pulzust és a légzést.Ha a személynek van pulzusa vagy lélegzik, akkor a program azt adja ki, hogy "él", ellenkező esetben azt, hogy "halott". Egy olyan programban, amely nem tanul az idő múlásával, ezt a következőképpen írnánk le:

function isAlive(pulzus, légzés) { if(pulzus || légzés) { return true; } else { return false; } }

Egy nagyon egyszerű, egyetlen neuronból álló neurális hálózat, amely ugyanazt a problémát oldja meg, így néz ki:

Single neuron which takes the values of pulse (true/false) and breathing (true/false), and outputs value of alive (true/false).

A pulzus, a légzés és az élet értéke 0 vagy 1 lesz, ami a hamis és az igaz értéket jelenti. Ha tehát ez a neuron a (0,1), (1,0) vagy (1,1) értékeket kapja, akkor 1-et kell adnia, ha pedig (0,0) értéket kap, akkor 0-t. A neuron ezt egy egyszerű matematikai művelet alkalmazásával éri el: összeadja a kapott értékeket, majd hozzáadja a saját rejtett értékét, amelyet "torzításnak" nevezünk. Kezdetben ez a rejtett érték véletlenszerű, és idővel módosítjuk, ha a neuron nem a kívánt kimenetet adja.

Ha olyan értékeket adunk össze, mint (1,1), akkor 1-nél nagyobb számokat kaphatunk, de mi azt akarjuk, hogy a kimenetünk 0 és 1 között legyen! Ennek megoldására alkalmazhatunk egy olyan függvényt, amely a tényleges kimenetünket 0-ra vagy 1-re korlátozza, még akkor is, ha a neuron matematikai eredménye nem a tartományon belül volt. Bonyolultabb neurális hálózatokban egy függvényt (például szigmoidot) alkalmazunk a neuronra, hogy annak értéke 0 vagy 1 között legyen (például 0,66), majd ezt az értéket továbbadjuk a következő neuronra egészen addig, amíg szükségünk nem lesz a kimenetünkre.

Tanulási módszerek

Egy neurális hálózat háromféleképpen tanulhat: felügyelt tanulás, felügyelet nélküli tanulás és megerősítéses tanulás. Ezek a módszerek mind egy költségfüggvény minimalizálásával vagy maximalizálásával működnek, de mindegyik jobb bizonyos feladatokban.

Nemrégiben az Egyesült Királyságban található Hertfordshire-i Egyetem kutatócsoportja megerősített tanulást alkalmazott arra, hogy az iCub humanoid robot megtanuljon egyszerű szavakat kimondani gügyögéssel.

Kérdések és válaszok

K: Mi az a neurális hálózat?


V: A neurális hálózat (más néven ANN vagy mesterséges neurális hálózat) egyfajta számítógépes szoftver, amelyet a biológiai neuronok ihlettek. Olyan sejtekből áll, amelyek együtt dolgoznak a kívánt eredmény elérése érdekében, bár minden egyes sejt csak a probléma egy kis részének megoldásáért felelős.

K: Hogyan hasonlítható egy neurális hálózat a biológiai agyakhoz?


V: A biológiai agyak képesek nehéz problémák megoldására, de minden egyes neuron csak a probléma egy nagyon kis részének megoldásáért felelős. Hasonlóképpen, egy neurális hálózat is sejtekből áll, amelyek együtt dolgoznak a kívánt eredmény elérése érdekében, bár minden egyes sejt csak a probléma egy kis részének megoldásáért felelős.

K: Milyen típusú program képes mesterségesen intelligens programokat létrehozni?


V: A neurális hálózatok a gépi tanulás egyik példája, ahol a program képes változni, ahogy megtanulja megoldani a problémát.

K: Hogyan lehet edzeni és minden egyes példával javítani a mélytanulás alkalmazásához?


V: Egy neurális hálózatot minden egyes példával lehet képezni és javítani, de minél nagyobb a neurális hálózat, annál több példára van szüksége ahhoz, hogy jól teljesítsen - a mélytanulás esetében gyakran több millió vagy milliárd példára van szükség.

K: Mire van szükség ahhoz, hogy a mélytanulás sikeres legyen?


V: Ahhoz, hogy a mélytanulás sikeres legyen, több millió vagy több milliárd példára van szükség, attól függően, hogy mekkora a neurális hálózat.

K: Hogyan kapcsolódik a gépi tanulás a mesterségesen intelligens programok létrehozásához?



V: A gépi tanulás azért kapcsolódik a mesterségesen intelligens programok létrehozásához, mert lehetővé teszi, hogy a programok változzanak, ahogy megtanulják, hogyan oldjanak meg problémákat.

AlegsaOnline.com - 2020 / 2023 - License CC3