Gépi tanulás
A gépi tanulás (Machine Learning) a mesterséges intelligencia (Artificial Intelligence, AI) egy részterülete. Az általános mesterséges intelligencia célja, hogy emberi gondolkodáshoz és cselekvéshez hasonló, vagy hasonló teljesítményű gépeket alkosson meg. Az intelligens viselkedés egy része a tanulás képessége. Erre fókuszál a gépi tanulás területe.

Az első gépi tanuló megoldások már az 1950-es években megjelentek, de a XX. században elsősorban kutatási téma volt. Az ezredforduló környékétől kezdve, és különösen a 2010-es években azonban a gépi tanulási megoldások széleskörűen elterjedtek, a képek elemzésétől a gazdasági előrejelzésekig, és mára egy iparág alakult ki körülötte. Ma már bárki számára elérhetőek szoftverkönyvtárak, amelyekkel a gyakorlatban is megvalósítható a gépi tanulás.
A kurzus célja, hogy a gépi tanulási megoldások gyakorlati alkalmazásának képességét tanulják meg a hallgatók. Ezen belül, számtalan valós életbeli problémára adunk gépi tanulási megoldást, amiből elsajátítható, hogy:
- Milyen jellegű problémáknál lehet és érdemes gépi tanulási megoldást alkalmazni.
- Hogyan fogalmazzunk meg üzleti igényből gépi tanulási feladatot.
- Mikor mondhatjuk, hogy egy gépi tanulási megoldás sikeres (hogyan mérjük a teljesítményt?).
- Hogyan hajtsunk végre gépi tanulási kísérleteket (python nyelvű példák).
Gépi tanulási alkalmazások
Gépi tanulásnak hívunk minden olyan megoldást, ahol a számítógépes rendszer teljesítménye javul tapasztalatok/megfigyelések gyűjtésével. Például amikor fotóalkalmazásunkban a felismert arcokhoz neveket rendelünk, adunk néhány tanító példát az alkalmazásnak, hogy ez és ez az arc "kishúgom" arca. A rendszer ebből a tapasztalatból megpróbálja megtanulni, hogy mely arcokhoz kell még ezt a címkét hozzárendelni és ez alapján javasol még a csoportba tartozó arcokat. Lehetőségünk van tovább tanítani rendszert ha hozzáadunk egy arcot egy névhez, amit automatikusan az nem ismert fel, vagy eltávolítunk egy arcot a névhez listázottak közül (tévesen sorolta be a rendszer).

Az önvezető autók is gépi tanuláson alapulnak. Az önvezető autók számtalan szenzorral (radar, lidar, kamera stb.) vannak felszerelve. A vezetési szabályokat - pl. ha ezt látod a lidaron és azt a kamerán akkor fékezz - lehetetlen ha-akkor szabályokként megfogalmazni és leprogramozni. Ehelyett, a szenzorokkal felszerelt autókat emberek vezetik. Az emberi vezetés során tapasztalatokat gyűjt a gép, mert minden másodpercben több százszor rögzíti a szenzorokból gyűjtött megfigyeléseket és azt, hogy az adott szituációban az emberi vezető, milyen akciót hajtott végre. Az első önvezető autók nagyon banális hibákat hajtottak végre (pl. nem merték kikerülni a járdán parkoló autót), de sok millió órányi tanítás után, ma már az átlagos vezető teljesítményét megközelítik jól kontrolált környzetben.

A gépi tanulás számtalan alkalmazása közül, még az ajánló rendszereket emelnénk ki (pl. egy webshop ajánlásai, vagy Google Seach személyre szabott találatai). Az ajánló rendszerek célja, hogy a felhasználók preferenciáit/érdeklődési körét megtanulják, így ajánlva olyan termékeket, amiket nagyobb valószínűséggel vásárolnak meg. Az ajánló rendszerek központi eleme tehát a gépi tanulás, hiszen minden információ a felhasználáról (pl hogy milyen termékek oldalát nézem meg) fontos megfigyelés/tapasztalat a felhasználó tulajdonságainak megtanulásához.

A Gépi tanulás területe
Ha adott egy konkrét \(T\) feladat és \(P\) teljesítménymetrika, akkor gépi tanulásról beszélünk, ha a rendszer egyre több \(E\) tapasztalat/megfigyelés begyűjtése esetén egyre jobban tudja megoldani a \(T\) feladatot a \(P\)-ben mérve. (Mitchell '97 definíciója)
Fontos, hogy mindig egy jól definiált \(T\) feladatra fókuszálunk. Ez különbözteti meg a gépi tanulást az erős mesterséges intelligenciától. A gépi tanulásnál nem célunk egy általános intelligencia kifejlesztése, csak az, hogy egy \(T\) feldatot, minél jobban, az emberi teljesítményhez minél közelebb meg tudjunk oldani. Ha a feladat jól definiált, akkor a teljesítmény is pontosan mérhető. A teljesítmény mérése az erős mesterséges intelligencában nagyon nehéz (pl. hogy mennyire intelligensen gondolkodik egy gép).
BigData és gépi tanulás
A gépi tanulás számára az \(E\) tapasztalat/megfigyelés adat formájában áll elő. A gépi tanulás azért terjedt el a XXI.
században, mert az Internet és okostelefonoknak köszönhetően, korábban elképzelhetetlen mennyiségű adat gyülemlik fel és
válik elérhetővé. Az órási méretű adatbázisok hatékony tárolását és feldolgozását nevezzük BigData-nak. Ma már minden
alkalmazás - fusson okoseszközön, interneten, vagy bármilyen eszközön - adatokat gyűjt a felhasználóiról és megpróbál ezekből az adatokból profitálni. Például úgy, hogy a felhasználói szokások elemzéséből
jobb vagy testreszabottabb alkalmazást fejleszt.
A nagy mennyiségű adat keletkezésével egyidőben a számítási kapacitások is megnőttek és gyakorlatban is megvalósíthatóvá
váltak az egyszerű leszámolásoknál bonyolultabb műveletek, mint például a nagy adatból való gépi tanulás. Tehát a
gépi tanulás térnyerése ("AI ipari forradalom") nem a terület új kutatási eredményeinek, sokkal inkább
a gyakorlati alkalmazásához szükséges adat és számítási kapacitás elérhetővé válásának köszönhető!
Data science és gépi tanulás
A gépi tanulás egyik legfontosabb alkalmazási területe a struktúrálatlan adatok (pl. szövegek, képek) elemzése, ugyanis pl. egy
magyar nyelvű szöveg témájának meghatározása nagyon bonyolult feladat, hiszen az emberi nyelvek annyira
gazdagok, hogy ugyanaz a szósorozat más környezetben mást jelent, és ugyanazt a dolgot százféle képpen ki tudjuk fejezni.
Ezért ahelyett, hogy ha/akkor szabályokat fogalmaznánk meg, inkább tanító példákat adunk a rendszernek és gépi tanuljuk azt.
Az ún. adattudomány (data science) területe is adatok elemzése, általában egy üzelti kérdésre keresi a választ különféle
adatforrások elemzésével. A data science felhasznál gépi tanulási megoldásokat, de általában, csak mint black-box eszköz.
Tehát a data science célja változatos üzleti problémák megválaszolása, statisztikai elemzésekkel, míg a gépi tanulásban egy
konkrét feladatot akarunk minél jobban megoldani.
Statisztika és gépi tanulás
A gépi tanuló rendszerek feladata, hogy a tapasztalatokból/tanító adatokból összefüggéseket, mintázatokat, szabályszerűségeket
fedezzenek fel, hogy ha a jövőben hasonló példával találkoznak akkor döntést tudjanak hozni arról. Mivel nagyobb mennyiségű adatból
kell összefüggéseket tanulnunk, ezért a gépi tanulási módszerek matematikai módszerekre vezetnek vissza, azon belül is legtöbbször
valószínűségszámítási/statisztikai módszerekre. Például a megfigyeléseink átlagát jósolni a jövőben, tekinthető tanulásnak, hiszen
minél több tanító példát látunk, annál jobb becslés lesz az adatok átlaga.
Általánosságban azonban a leíró statisztikának és a gépi tanulásnak eltérőek a céljaik. Mindkettő területen fontos a rendelkezésre
álló adatok elemzése, azonban a gépi tanulás célja, hogy a célfeladatot megoldjuk, amihez többek között általánosítási készségre
- azaz, hogy korábban nem látott példákra is értelmes predikciót adjunk - is szüksége van. De a gépi tanulási megoldások egyik
legfontosabb eszköztára a statisztikai módszerek.
Szakértői rendszerek vs gépi tanulás
Elméletben minden feladat, amire gépi tanulást alkalmazhatunk, megoldható szakértői rendszerekkel, azaz a szakterület szakértője
specifikálja magát a megoldási módot, ahogyan a rendszernek működnie kell. Példának tekintsünk egy orvosi szakértői rendszert. Egy páciens
tűneteinek és laboreredményeinek ismeretében egy orvos képes lehet diagnózis felállítására, és ezt a szabályrendszert le tudja írni ha/akkor
szabályokkal. A probléma az, hogy a szabályrendszer nagyon gyorsan kezelhetetlenül naggyá válik és a bizonytalanságot/valószínűségeket nehéz
beépíteni szabályrendszerekbe. Egy gépi tanulási megoldásban, a szakértő példákon keresztül tanítja a gépet, azaz a tűnetek és laborleletek mellé
csak a végső helyes diagnózist adja meg (egy tökéletes gépi tanuló rendszertől elvárt döntést). A gépnek kell megtanulni a szabályszerűségeket,
összefüggéseket és nem a szakértőnek kell azokat specifikálniuk.
A programozás minden területén egyre bonyolultabb feladatokat kell megoldanunk. Sok feladat esetben, már jobban megéri a megoldás specifikációja helyett
betanítani a gépeket a helyes működésre. Ezért a klasszikus "kódoló" programozók mellett egyre nagyobb igény van a gépi tanulási szakértelemmel
rendelkező munkavállalókra is!
Megjegyezzük, hogy a gépi tanulás nem veszi el a szakértők munkáját, csak átalakítja azt. A gépi tanulási mérnökök (amibe ez a kurzus bevezet) ahhoz értenek, hogy hogyan oldjunk meg egy jól definiált gépi tanulási feldatot. Az hogy a feldatot megfelelően definiáljuk, a szükséges tanító példákat/tapasztalatokat biztosítsuk vagy, hogy a rendszer teljesítményét hogyan mérjük az adott terület szakértőjének feladata továbbra is. Ne feledjük el, a gép azt fogja csinálni, amire betanítjuk! Az öntudattal rendelkező szuperintelligencia még évtizedekre van, a mi generációnk felelőssége, hogy mire tanítjuk addig is a gépeket!