Van még hely az élet napos oldalán!

Van még hely az élet napos oldalán!

Néhány szót elöljáróban a mesterséges intelligenciáról, avagy hogyan ismerünk fel egy zsiráfot egy sima kockás füzet segítségével?

2018. január 16. - Fóti Marcell

Van egy jó hírem, meg egy rossz: most meg fogjátok érteni a neuronhálózatokat és a deep learninget.

Aki eddig is értette, azok kedvéért mondom, hogy ez egy bevezető, egy egyszerűsítés, és nem ér azon dühöngeni hogy mennyire leegyszerűsítettem. Le hát! Te, aki már túlvagy ezen, te is így kezdted, egyszerűen. Csak már nem emlékszel rá. 

(Többekkel megnézettem ezt a cikket publikálás előtt, és kaptam vagy egy tucat véleményt, ezekben mintegy kétszáz javaslatot, hogy mit kellene még beleírni. Kedves bírálóbizottság, végül nem írtam bele. Már így is egy kilométer hosszú. Amit tehetek, hogy cikksorozat formájában folytatom, és abba beleírom, amiket itt kihagytam.)

A mesterséges intelligencia, és főleg a neuronhálózatok ismerete azért fontos napjainkban, mert jelenleg olyan csodák korát éljük, amit negyven évig nem sikerült megvalóstani. Beszédfelismerés? De hiszen az lehetetlen! Önvezető autó? Csak azt ne!

Itt jegyzem meg, hogy George Lucas korában az embereknek foglamuk sem volt arról, mit nehéz leprogramozni, és mit könnyű. R2D2 ennek megfelelően nem tud beszélni, csak csipogni (mert ez nehéz probléma, és ő egy egyszerű kis robot :) ), de felismeri az élő szót (mert az könnyű feladat).

Nyugodtan kijelenthetjük, hogy 30-40 évnyi bénázás után tényleg meglepő, ahogy mondjuk egy Siri tud magyarul. Én például ezt máig nem hiszem el, pedig nap mint nap használom. Biztos van benne egy kis manó, aki legépeli, amit mondunk. De még meglepőbb, hogy amint egy ilyen probléma megoldódik, többé nem tekintünk rá intelligenciaként. Ja, az csak a Siri. Dehogy intelligens, buta, mint a tök. Ja, az csak a Deep Blue, aki 1997-ben megverte Kaszparovot. Neeeem, az nem intelligens, csak egy sakkozógép.

Manapság szinte az összes Artificial Intelligence (AI)-eszköz neuronhálózatokat használ a “gondolkodásra”. Jó bonyolult fogalom, de valójában (és végletesen leegyszerűsítve) ez egy kockásfüzet-módszer. Ennek megfelelően egy jól betanított neuronhálózat annyira intelligens, mint egy kockás füzet. A szó emberi értelémben. Nem is jutott egyről a kettőre az AI vagy negyven évig!

Valami megváltozott az elmúlt években, mert be kell látnunk, hogy az önvezetés, vagy számítógépes kétlábon járás elérhető közelségbe kerültek. Hogy képes erre egy spirálfüzet?

A változást deep learningnek hívják, és a cikk végén foglalkozom vele. Most elégedjünk meg annyival, hogy ha sok kockás füzetet halmozunk fel, minőségileg más AI-hoz jutunk. Ez az a ritka eset, amikor a mennyiség minőségbe csap át. Mintha összehordanál egy hatalmas kupac téglát, és az hirtelen katedrálissá állna össze. Magától. De erről majd később. 

Egy darab neuron

Régóta tudja az emberiség, hogy az idegsejtek, vagy neuronok igazából számológépek. Megszámolják, hogy rengeteg lábacskájuk mindegyikén mennyi impulzust kaptak, és ha ezek darabszáma és mintázata megegyezik egy bennük lévő “ismerettel”, akkor tüzelnek, és szólnak a következő neuronnak a hálózatban, hogy “juj!”.

Most képzeljünk el egy olyan neuront, amit arra hozott létre a ter(mészet/emtő), hogy zsiráfokat ismerjen fel. Csak ezt az egy funkciót látja el, de ezt teljesen egyedül, segítség nélkül teszi. Hogyan épülne fel egy ilyen “mesterséges intelligenica”? Ha ezt megértjük, mindent megértünk. És mivel a megértés a célunk, nem axonokkal és dendritekkel fogunk zsonglőrködni, hanem… Elő azzal a kockás füzettel!

Rajzoljunk bele egy általános iskolai koordinátarendszert, x és y tengellyel. Megvan? Jó. Az x-tengelyre írjuk rá, hogy “Nyak hossza”, az y-tengelyre pedig azt, hogy “lábak száma”. Most mérjük meg egy zsiráf nyakát, legyen mondjuk a nyak hossza 2,4 méter. Az x tengelyen lépegessünk el a 2,4-es beosztásig, ott forduljunk “északnak”, és lépegessünk fel négyet. Ez a pont jelenti a kétdimenziós koordináta rendszerünkben a zsiráf helyét. Rajzoljunk ide egy pontot. Ezzel a “neuronhálózatunk” megtanulta felismerni a zsiráfot. Ezt az egy darab zsiráfot.

Többkörös tanulás, tanulási minták

Ha valaki manapság gépi tanulással foglalkozik, mindig szüksége van egy csomó tanítóadatra, amivel növelni tudja a neuronhálózat asszociációs képességét, vagyis azt, hogy sokféle zsiráfot ismerjen fel. Ezt úgy tudjuk elérni, ha jó sok zsiráfhoz odamegyünk, és mindegyiknek megmérjük a nyakát - és megszámoljuk a lábait is.

Ezután megkérdezzük az egy darab neuronunkat, hogy a négylábú, 2,2 méteres nyakú állat vajon zsiráf-e, és - kezdetben - azt válaszolja, hogy nem. Jobban mondva csendben marad, nem tüzel. Elő a korbáccsal! Mostantól addig kell püfölnönk ezt az egy darab szerencsétlen neuront, amíg a tanítási mintánkban szereplő összes zsiráfot fel nem ismeri!

De mit tehetne ez az egyetlen pont a koordinátarendszerben, hogy okosabb legyen? Például alakot válthatna. Lehetne pont helyett mondjuk egy kör. Minden, ami a körön belül van, az zsiráf. Ehhez a neuronunknak rendelkeznie kell egy “sugár” paraméterrel, amit a tanulás során nyújtogat és rövidítget, amíg minden zsiráf a körön belülre kerül, és kiszorul a körön kívülre minden más állat.

Vagy lehetne négyzet. Vagy egy téglalap. Ehhez ugyebár két plusz paraméter kell, szélesség és hosszúság. Vagy egy amorf babszem. Az alakzat bonyolultságának csak a képzelet és a rendelkezésre álló memória szab határt.

Bármit is választunk, a hatás az lesz, hogy a kockásfüzet-neuronunk általánosításra, asszociációra lesz képes, vagyis “felismeri” a 2 méterestől a 3 méteres nyakhosszig a zsiráfokat, illetve a három és fél, valamint a négy és fél lábú zsiráfokkal is könnyedén megbirkózik. 

Két darab neuron

Az eddigi neuronhálózatunk “tökéletesen” felismeri a zsiráfot, de csak azt. Ha besétál az életünkbe egy okapi, azt pont annyira ismeri fel, mint a jelenlegi önvezető szoftverek a jobbról érkező babakocsit. Semennyire. Egy darab neuronnal ez nem is fog menni, mert ez az egy darab csak annyit tud kinyögni magából, hogy “zsiráf”, más szót nem mond. Ahhoz, hogy az okapi is felismerhető legyen, szükségünk lesz egy második neuronra.

aamaaqdgaagaaqaaaaaaaa6oaaaajgmxzdq5ymu2ltk1mzytndgwnc1hndfmlte0ytmzn2y0ywq1na.jpg

Lábak száma négy, nyak hossza 1 méter. Ha ezt a pontot megnézzük a kockás füzetünkben, jelenleg semmit sem találunk ott. Rajzoljunk oda is egy gombócot, egy okapi-gombócot! 

Ezután ha bárki megkérdezi a neuronhálózatunktól, hogy milyen állat az, amelyiknek négy lába van, és egy méteres a nyaka, azt a választ fogja kapni, hogy okapi.

És most belép a felismerendő objektumok körébe a varjú.

Három darab neuron

Lássuk a varjút. 

aamaaqdgaagaaqaaaaaaaapyaaaajgzhytk3ngjhlwuzntatngzioc1inwzkltdmmzlhyjyxn2nkzq.jpg

Lábak száma? 2. Nyak hossza? Irreleváns. 

Fel tudjuk-e készíteni a kockás füzetünket a varjak felismerésére? Igen, legalább kétféle módon. Vagy lapozunk egyet, és oda felveszünk egy új koordinátarendszert, amiben nincs nyakhossz, vagy a meglévő ábránkat egészítjük ki egy harmadik tengellyel, ami kimutat a lap síkjából, de ezt még le tudjuk rajzolni 2D-ben, mert a harmadik dimenzió lerajzolása még nem fáj senkinek. 

Szóval felveszünk egy új koordinátatengelyt, egy új propertit, amivel a varjakat tudjuk felismerni. Legyen ez egy bináris jellemző, például hogy tud-e repülni? A zsiráf és az okapi nem tud repülni, a két bogyó ottmarad, ahol eddig is volt, a harmadik tengelyen az értékük nulla. A varjú azonban tud, úgyhogy ő a harmadik tengelyen 1-et vesz fel. 

Ezt a harmadik neuront megpatkoljuk, hogy a “nyak hossza” bemenetet hagyja figyelmen kívül. (Elvágjuk a neuron egyik dendritjét.)

Ezután rázúdítunk a neuronhálózatra kétszáz ronda, fekete varjút (Hitchkok!), hogy a varjúgombóc helyesen fedje le a térből a varjakra jellemző térszeletet.

Jöhet az aranyhal!

aamaaqdgaagaaqaaaaaaaa8raaaajdhmzgvhmtq4lwnln2ytndq4yi1iotyyltviythknza4ndeyyg.jpg

Sokdimenziós ábrázolás

Amikor beúszik a képbe a halacska, újabb tulajdonságokra lesz szükségünk - és értelmét veszti a lábak száma, a nyak hossza és a repülési képesség. Bár ez utóbbi nem feltétlenül. Mindenesetre lesz vagy 5-6 tulajdonságunk. Hogyan ábrázoljuk ezeket kockás füzetben? Ugyanúgy, mint Excel-táblában. Sorokban és oszlopokban.

Ennek ábrázolásához bizony egy négydimenziós koordinátarendszerre lesz szükségünk! Az aranyhallal kiugrottunk a 3D-ből a 4D-be. És a dimenziók száma nem áll meg. Ahány properti, annyi dimenzió! De még mindig el tudunk boldogulni egy kockásfüzettel, csak már a koordinátarendszerbeli ábrázolás nem megy.

A természet végtelen változatossága

De van egy kis baj. A rendszerünk nem ismeri fel az eredetitől egy picit is eltérő zsiráfokat. Nemcsak a bébi-zsiráfot nem, 

aamaaqdgaagaaqaaaaaaaa0eaaaajgq1zgi4mjvkltnmowmtngflyy1im2fjltcwowy1mzc2ngm1ma.jpg

hanem a gumizsiráfot sem,

aamaaqdgaagaaqaaaaaaaa4xaaaajdflmzu5mgiwlwexymmtnguxys1hyzfklwiyztvhytzhm2m3oq.jpg

sem pedig a plüss zsiráfot

aamaaqdgaagaaqaaaaaaaa2raaaajgmxnmu0m2m2ltiyyzktndiync04zdixlwfjmjhkmti1ztfhna.jpg

A csecsemő-fogerősítő zsiráfról nem is beszélve!

aamaaqdgaagaaqaaaaaaaaptaaaajdnknzrmzddlltkxyjmtndjhzs05mtyzlwuyzjblm2jlytrlyw.jpg

És ez az a pont, ahol a hagyományos okoskodás csődöt mond. Egyszerűen nem lehet valamit meghatározni úgy, hogy listábavesszük a tulajdonságait. Nemcsak azért, mert ez a lista végtelen hosszú lesz, hanem azért is, mert mi magunk sem tudjuk, hogy milyen jellemzőket veszünk figyelembe egy gumizsiráf, egy zongora, vagy egy babakocsi felismerésénél. Persze mindenki kapásból fel tud sorolni egy-egy listát, hogy szerinte ettől és ettől zsiráf a zsiráf, és még metszete is lesz ezeknek a halmazoknak, de bizony több lesz az eltérés, mint a közös

Ha egy picit leszállunk a gumizsiráfról, jobban megértjük, hogy miért nem tudjuk, hogyan ismerjük fel őt. Légyszíves, mondd el, hogyan kell biciklizni. Fogalmad sincs, csak megy. Egyszercsak elkapod az egyensúlyt, és kész, onnantól megy. A zsiráfot is így ismered fel: automatikusan, erőlködés - és tudatosság nélkül! Valójában fogalmad sincs, hogyan csinálod. Nagyon szép kihívás olyasvalamit leprogramozni, aminek a működéséről csak találgatásaink vannak. 

30-40 évig ment azon a vergődés, hogy programozók próbálták előállítani a neuronok bemenetéhez szükséges kiválogatott, kimért, letisztított paramétereket. És amikor ez az egész megközelítés - a fenti érvelés értelmében - csődöt mondott, akkor valaki kitalálta, hogy magukat a paramétereket is állítsa elő magának a neuronhálózat, ahogy jónak látja. Ahogy a természetes agy is teszi. És lőn deep learning.

Deep learning

A “mélytanulás” egy olyan neuronhálózati megoldás, ahol nem emberek állítják elő kínkeserves munkával a hasraütéses módszertannal gondosan kiválogatott tanítóparamétereket, hanem a tanulás (korbácsolás) folyamán maga a neuronhálózat szelektálja ki azt, ami a felismeréshez fontos. 

Azt, amit ő “akar”. Egy zsiráf esetén a nyak hossza csak egy intuitív (hasraütéses) paraméter, amit mi emberek fontosnak gondolunk. De lehet, hogy egyáltalán nem fontos. Tudja a fene! Ha a deep learning algoritmus úgy “látja jónak”, lehet, hogy a nyak hosszát nem is veszi figyelembe sem a tanulásnál, sem a felismerésnél. Lehet, hogy a zsiráf szarvacskáján a bunkócskának a legömbölyödése a fontos. Az itt a lényeg, hogy “tudja a fene”.

Ehhez jó sok réteg neuronhálózat szükségeltetik. Az első réteg, amelyik csak valami absztrakt jellemzőket (pl. vonalak, sarkok, ívek, foltok) próbál előállítani a digitális káoszból, szintén többrétegű, a második összetett réteg ebből mondjuk térbeli testeket formáz (piros gömb, fekete térpacni, zöld sík), a harmadik pedig ezekből összeállítja a kép tartalmát: a fűben piros labdával játszó cica. A rétegek számát és szerepüket nem a programozó állítja be, hanem a tanítóadatok özöne és a korbács csattogtatása együttesen határozza meg, hogy milyen hálózat alakul ki. 

aamaaqdgaagaaqaaaaaaaawdaaaajda1y2mzmzg0lwexotatngqymy1iyzm0ltq5mziwotdhzdy3ng.png

Ennek a megközelítésnek két meglepő eredménye van:

  1. Működik
  2. Többé nem állapítható meg, emberi ésszel föl nem fogható, hogy miért történik a micsoda a hálózat mélyén.

Ha egy deep learning neuronhálózatban megvizsgálunk egyetlen neuront (egy gombócot egy kockásfüzet-lapon), hogy mit is csinál tulajdonképpen, akkor azt látjuk, hogy értelmetlennek tűnő bemeneti paraméterek alapján értelmetlen választ ad tovább a következő rétegnek. Összességében egy teljesen értelmetlen kockásfüzet-halmaz oldja meg az alábbi feladványt:

Itt tartunk most. Szerintetek ez a gép intelligens?

 

A bejegyzés trackback címe:

https://fotimarcell.blog.hu/api/trackback/id/tr2413580025

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása