Mi az az MI?

Az MI a Mesterséges intelligencia rövidítése. Ma a legtöbb dolgot, terméket MI jelzővel látnak el, mert akkor könnyebb eladni. Mesterséges intelligencia egyelőre nem létezik, sőt abban sem tudunk konkrétan állást foglalni, hogy mi az intelligencia. 

Az elmúlt 70 évben sok mindenre mondták már, hogy mesterséges intelligencia. Ha ezt vagy azt a feladatot a számítógép megoldja, ahhoz mindenképpen rendelkeznie kell intelligenciával – és hasonló kijelentések. Néhány ilyen közhely az elmúlt évtizedből: A sakk az egy olyan komplex játék, amiben az ember mindig is jobb lesz a gépekkel szemben. Kivéve, ha a gép rendelkezik mesterséges intelligenciával.

A 90-es évek végén az IBM cél-szuperszámítógépe, hatalmas számítási teljesítménnyel és a lehetséges következő lépések nagyszámú analizálásával legyőzte az aktuális világbajnokot Garry Kasparovot. Aztán be kellett látni hogy a Deep Blue, egy ügyes cél-hardware sakkra, ami semmi másra nem jó – így nyilván nem is intelligens.

 2016-ban amikor a GO aktuális világbajnokát győzte le egy számítógép, megint beindult sokaknak a fantáziája, hogy ez már biztosan MI. A DeepMind által készített rendszer, bár valóban történelmet írt, és továbbra is mutatja az utat az MI felé, a valóság az, hogy az a rendszer sem tud mást, mint GO-t játszani. Még a később megjelent változatok, mint az (Alpha GO, Alpha GO zero, Alpha zero) sem tudnak mást, csak amit megtanítottak nekik. És természetesen nem maguktól tanulták, hanem egy másik intelligencia forrástól, az embertől kaptak instrukciókat, hogy hogyan kell azt a játékot játszani, ügyesen fabrikált „reward” függvényekkel. 

Tehát mi az az MI? Egy brand, egy álom, egy húzónév egy jó marketing fogás...

Neurális háló

Az 1950 – es évektől kezdve az agy működésének mintájára leegyszerűsített neuron hálózatokkal próbálkoztak. Ami tulajdonképpen egy gráf, aminek a kezdő csomópontjain vannak a bemenetek és a további csomópontokat pedig súlyokkal kötjük össze. Vesszük ezek lineáris kombinációit és alkalmazunk rá egy függvényt. És a kapott eredmény lesz az inputja a következő rétegnek. Ez így leírva biztosan nem érthető, de nem is hagytam ki sok mindent, ez valójában a neurális háló.

Valami olyan izé, amiben nagyon sok paramétert tudunk eltárolni, mint egy hatalmas táblázat. Csak a praktikus felépítésnek köszönhetően ezek a hálózatok taníthatóak.

Gépi tanulás

Nem volt még olyan régen, amikor egy karakterfelismeréshez rengeteg kódot kellett írni. Képzeljük csak el, ha azt a feladatot kapnánk, hogy írjunk egy programot, ami kézzel írt 7-eseket ismer fel. Megpróbálnák algoritmizálni, hogy van egy függőleges egyenes, amihez egy másik egyenes csatlakozik 90 foknál kisebb szögben lehetőleg lefelé. Ráadásul a nem függőleges vonalat még egy másik vonal is metszi. A függőleges vonal sokszor nem is egyenes, sőt hullámos a középső vízszintes vonal meg néha hiányzik. Hasonlóan az összes karaktert algoritmizáljuk. Sok-sok iteráció után megérkeztek a neurális hálók (Az elmúlt 10 évben szinte teljesen dominálnak a neurális háló alapú rendszerek) és többé nem kell algoritmusokat írni. Majd a gép megtanulja mi az a 7-es!

OK, de hogyan? Veszünk egy neurális hálót, egyszerűsítés képpen egy jó nagy táblázatot – és mutatunk a számítógépnek egy képet ami egy 7-est ábrázol, amit persze átalakítunk a számítógép nyelvére, azaz a képet számsorokká alakítjuk (A bemeneti képeket pl. szürkeárnyalatossá tesszük és minden egyes pixeléhez 0..255 közötti értéket rendelünk hozzá, attól függően, hogy mennyire világos vagy sötét, ezt egy nagy vektorba tesszük, ez lesz a bemenet) 

 A számítógépnek mutatunk egy számot, nem mondjuk meg mi az. Ő a táblázata alapján tippel. Mi meg megmondjuk neki "mennyit" tévedett. Ő ez alapján a táblázatot javítja, olyan értékeket ír bele, ami alapján ha megint megmutatjuk neki azt a számot már kevésbé téved.

(A bemeneti vektort végig számolja a gráfon – veszi az input és a súlyok lineáris kombinációját (és egy aktiváló függvényt, pl. ReLU-t) és a végén megállapít egy valószínűséget, hogy az szerinte 7-es e vagy valami más. Tudja hogy 7-est kell kapnia így ha nem ez az érték a legvalószínűbb, vissza megy a gráfba és módosít a súlyokon, hogy ha legközelebb ezt az inputot látja, akkor már a  7-est találja a legvalószínűbbnek.)

 Adunk neki sok hetest meg más számokat is, amíg megbízhatóan a 7-re 7-est mond, a 6-osra 6-ost stb.

 Ha ez meg van akkor mutathatunk neki olyan 7-est amit még sohasem látott és valószínűleg meg fogja mondani, hogy az bizony egy 7-es.

 Ha kutyát és macskát szeretnénk megkülönböztetni, akkor nem kézzel írt számokat adunk neki, hanem kutyát és macskát ábrázoló képeket.

 Az így elkészült táblázat (neurális háló, megfelelő súlyokkal) alkalmas lesz az adott dolgok megkülönböztetésésre. Ezt „classification” vagy osztályozó feladatnak hívjuk.

Ami érdekes, hogy már nem algoritmusokat írunk, hanem adatokat adunk a gépnek, felcímkézve és ebből elő áll egy neurális háló (billió paraméterek halmaza), ami alkalmas az adott dolgok megkülönböztetésésre. Persze ha kutyára és macskára tanítottuk be, elefántot nem fog felismerni... Max azt mondja rá hogy macska... vagy éppen kutya...

deepnetworks

Azokat a neurális hálókat, amik több rétegből állnak – mély hálózatoknak, vagy deepnetworks-nek hívjuk.

deeplearning

Az az eljárás gyűjtőneve, amivel több rétegű, azaz mély neurális hálókat tudunk tanítani.