Deep learning

From wikibase-docker
Jump to navigation Jump to search
Az annotált verzió megtekinthető itt.[1]

A deep learning a gépi tanulás egyik ágazata, a mesterséges intelligencia megteremtésére való jelenlegi törekvések egyik meghatározó területe. Olyan gépi tanulási technikák gyűjtőfogalma, amelyek a biológiailag inspirált neurális hálók rendszerében alkalmazhatóak. Leginkább képfelismerésben, beszédfelismerésben, a természetes nyelvek feldolgozásában, hangfelismerésben, bioinformatikában, szociális hálók területén és különböző táblajátékokban lehet emberi teljesítményt megközelítő vagy azt felülmúló eredményeket elérni a jelenlegi alkalmazásokkal. Az egyik eklatáns különbség a hagyományos gépi tanulás és a deep learning között a vizsgált adatból való jellemző tulajdonságok, úgynevezett feateur-ök kinyerésében található. A hagyományos gépi tanulás során a feature-öket manuálisan, előre kiválasztva és jelölve határozzák meg, míg a deep learning esetében a gép automatikusan nyeri ki a releváns tulajdonságokat, amelyek által a bemeneti adathalmaz bizonyos részei (mondjuk képen az objektumok) kategóriákba rendeződnek.

Korábbi időszakokban, mielőtt a neurális hálózatok használhatóak lettek volna, a mesterséges intelligenciával azokat a feladatokat lehetett könnyedén megoldani, amelyek az ember számára intellektuális kihívást jelentettek, és a formálisan jól leírható, matematikai problémák körébe tartoztak. Ilyen feladatokat, az imént körbeírt szabályalapú megközelítéssel továbbra is hatékonyabban lehet kezelni, de ezeknek a rendszereknek akadályt jelentett, és jelent a mai napig, az emberek szemszögéből könnyű problémák kivitelezése, amelyeket viszont formálisan nehéz megragadni. A deep learning az említett szabályalapú redszerek számára nehezen kezelhető problémák megoldásában jeleskedik igazán. Lehetővé teszi a gép számára, hogy tapasztalatból tanuljon, és a feladatokat a fogalmak hierarchiáján keresztül lássa, melynek minden egyes fogalmát egyszerűbb fogalmakkal való kapcsolata határozza meg.

Ahhoz, hogy a mélytanulásos szisztémák hatékonyak legyenek és felülmúlják a hagyományos gépi tanulásos rendszereket, elengedhetetlen volt, hogy rendelkezésre álljanak kellően gyors processzorok és ezzel párhuzamosan nagy mennyiségű adat is könnyen elérhető kell, hogy legyen. A deep learning fontos jellemzője, hogy ellenben a többi gépi tanulóval, minnél több adatot szolgáltatunk neki és minnél több rétegből áll, magyarán minnél szofisztikáltabb a felépítése, annál pontosabb predikciókat kapunk kimeneti eredményül klasszifikáció során. Megkülönböztetünk felügyelt (supervised), felügyelet nélküli (unsupervised) és félig felügyelt (semi-supervised) mély neurális hálókat. A felügyelt tanulás során cimkézett adatok alapján történik az automatikus feature kinyerés. E módszerrel a neuronokat kétféle feladatra lehet megtanítani. Klasszifikációra, mely során pl. képeket csoportosíthatunk: ha a sokféle bemeneti kép között macskás képeket szeretnénk, hogy az algoritmus felismerjen, akkor a tanuló fázisban a macskás képeket kell megjelölni, pont úgy, ahogy Andrew Ng tette 2012-ben a Google-nél, áttörést érve el a képek feldozgozásában. Megtaníthatjuk regresszióra is, mely során valószínű értékeket határozhatunk meg a bemeneti képeken: például egy ház lehetséges értékére vagy egy tárgy valószínű súlyárra tekintettel. A felügyeletlen tanulás során a bemeneti adathalmaz nincsen felcimkézve, az automatikus feature kinyerés enélkül történik, a meglévő strukrurális tulajdonságok mentén csoportosítva őket: például ha inputként a gép sok 1-1 macskát ábrázoló képet kap, amelyeken 3 különböző macska szerepel és ezeket a képeket kéne csoportosítani macskák szerint felcimkézetlenül, akkor azt unsupervised metódusnak lehetne nevezni.

A félig felügyelt tanítási módszer a fent leírt két metódus egyvelege. Sok esetben a tanítás során kisebb számú címkézett adatot több cimkézettlen adattal kiegészíve javítani lehet a kimenetelek minőségén, jobb eredményeket lehet kapni, mintha kizárólag vagy az egyik, vagy a másik metódus lenne alkalmazva.

A neurális hálók működéséhez talán közelebb lehet kerülni, ha egy példán keresztül szemléltetve egy adott kép feldologzását vesszük gorcső alá: a rendszer több sorbor áll, ahol a sort neuronok alkotják. Egy-egy sor neuronjai értékeket tárolnak, és mindegyik sor az előbbi rétegnél már egy komplexebb információ hordozója. Míg az első sor neuronjai a pixellek árnyalatainak értékét írja le, addig a következő a képeken látható éleket definiálja. Ezt a pixellekből kiindulva teszi. Összehasonlítva az adott pixel és környező pixellek világosságát azonosítani tudja az éleket. A harmadik a tárgyak széleit és körvonalait keresi, amelyeket könnyedén megtalál az előző réteg éleket leíró neutonjaiból kiindulva, mivel a szélek és körvonalak leírhatóak élek csoporosulásaiként. A negyedik réteg az előző sor definiálta szélek és körvonalak alapján egy-egy objektum részeit érzékeli a szélek és kontúrok csoportjait keresve. Így az utolsó, az output réteg számára lehetővé válik, hogy a tárgyak részeiből felismerje a képen található objektmokat.

Ilyen módon elkerülhetővé válik, hogy aprólékosan specifikálni kelljen a feladat megoldását, és lehetőség van arra, hogy a gép tapasztalati úton javítsa saját ítélőképességét. A fogalmak hierarchiája révén képes bonyolultabb fogalmakat megtanulni egyszerűbb rétegekre építkezve. Ha megnéznénk, hogyan épülnek egymásra a fogalmak, látnánk, hogy többrétegű, mély szerkezetet alkotnak, ezért hívják a mesterséges inteligencia ezen ágát deep learningnek.