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.

neuron

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).

nevek arcokhoz

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.

önvezető autók

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.

Netflix ajánló rendszer
A Netflix ajánló rendszerei.

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.

AI/ML/DS
Mesterséges Intelligencia, gépi tanulás, BigData és Data science kapcsolata.

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!

Ellenörző kérdések

  1. Mondj olyan mesterséges intelligencia területet, ami nem gépi tanulási probléma!
  2. Hogyan fogalmazható meg gépi tanulási feladat egy ügyfélszolgálatra érkező panaszlevelek automatikus témabesorolására?
  3. Tfh rendelkezésre áll nagy mennyiségű adat. Mire van még szükség, hogy gépi tanuló megoldást építhessünk erre?

Kurzushoz ajánlott könyvek

  • Stuart Russell, Peter Norvig: Mesterséges intelligencia modern megközelítésben. (2. kiadás), V. és VI. részek. Panem Kiadó Kft., 2005.
    A könyv az SZTE hálózatán belülről elektronikusan is elérhető, ingyenesen, teljes tartalommal, a következő linken: elektronikus elérés.
  • Alpaydin Ethem: Introduction to Machine Learning. MIT Press. 2014.
  • R. Duda, P. Hart, D. Stork: Pattern Classification. Wiley. 2000