Dr. Jelasity Márk Mesterséges Intelligencia I. (I602, IB602) kurzus kilencedik előadásának jegyzete (2008. november 3.) Tanulás (Learning) Készítette: Szabó Péter EHA: SZPNAAT.SZE Szeged, 2008. december 9.
Tanulás (learning): Tapasztalati adatok (tények) felhasználása az ágens teljesítményének növelésére. Tulajdonképpen az ágens különböző komponenseit optimalizálni akarjuk (pl. játék kiértékelő függvény). Ez is keresési feladat. Racionális ágens (rational agent): Egy racionális ágens úgy cselekszik, hogy maimalizálja a teljesítménymérték várható értékét az addigi észlelési sorozat alapján. Durva felbontásban a tanulást két csoportra oszthatjuk: 1) Felügyelt tanulás (supervised learning): A tanítási példák és ezek eredményei is megvannak. Egy f : A B függvényt kell találni példák alapján, amelyek a 1, b 1,..., a n, b n adottak. alakban Például: a) A: emailek halmaza (összes lehetséges email), B: {spam, spam} (függvény, amit meg akarunk tanulni). b) A tanító példák kézzel osztályozott emailek (spam szűrő tanítása) A: részvényinde idősorai, B: {emelkedik, esik}. Tőzsdéző program, stb... 2) Felügyelet nélküli tanulás (unsupervised learning): Csak a példák vannak meg, vagyis csak az A halmaz adott. A példák csak a 1,...,a n alakúak és nem függvényt kell illeszteni, hanem mintázatot keresni, pl. klasztereket. Számos finomabb felosztás lehet, pl. van "B" (függvényt kell illeszteni) de a tanuló példák csak késleltetve értékelődnek ki (megerősítéses tanulás reinforcement learning) vagy pl. a példák előre adottak vagy csak fokozatosan gyűlnek. O O * * O O O * * Felügyelt Felügyelet nélküli 2
Reprezentáció: A függvényt adott alakban keressük, polinom, ítéletkalkulus (Boole függvények), stb. Kereshetnénk Turing gépet, de: 1.) lehet hatékonyan, 2.) Túl általános! Ideálisan a reprezentáció se nem túl egyszerű, se nem túl bonyolult. A priori ismeretek fontossága: A "tabula rasa" tanulás lehetetlen! (Ha a tanulás megkezdése előtt semmit nem tudunk, csak a példákat, akkor nem tudunk tanulni.) Pl.: a reprezentáció is a priori ismeret, stb. (később látjuk) Felügyelt tanulás (induktív tanulás inductive learning): Egyszerű függvényillesztéstől a fizika tudományáig sok mindent lefed. Adott egy ismeretlen f : A B függvény és 1, f 1,..., n, f n példák. Keresünk egy h : A B függvényt, ami fet közelíti. A h függvény a H hipotézistér eleme, H lehet pl. maimum k fokú polinomok, vagy bármi más. K = 1 K = 7 a) ábra b) ábra K = 6 sin c) ábra d) ábra 3
Az a) esetben (K = 1, az elsőfokú polinomok tere) egyenest akarunk illeszteni, a b) esetben pedig (K = 7, hetedfokú polinomok tere) nyolc pontot is tökéletesen tudunk illeszteni, vagyis be tudjuk magolni a nyolc pontot, de láthatóan nem feltétlenül jobb a nagyobb hipotézistér. Sőt! Kis hipotézistérhez előzetes tudás kell, ezért nehezebb konstruálni. A d) ábrát tekintve, ha van benne szinusz, jó lesz az eredmény, viszont ha nincs, akkor nagyon rossz. Észrevételek: a) és b) : Az általánosabb H nem mindig jobb. c) és d) : mindegy, hogy mi a H. Indukció problémája: Az f jó közelítése olyan h, amely ismeretlen re is jól becsüli példákra), azaz jól általánosít. (Ez nehéz! Filozófiai kérdés) f et (nem csak az adott Pl.: Ha h = f, ha ismert példa 0, egyébként akkor h egyáltalán nem általánosít, de a tanító példákat tökéletesen tudja: magolás! 1) Törekszünk tömörebb reprezentációra, mint az adatok (Ockham borotvája: a lehető legtömörebb leírás, ami még elég.) Ockham borotvája (Ockham's razor): Ez az elv tehát egy lehetséges válasz arra a kérdésre, hogy hogyan válasszunk több konzisztens valamennyi adatra illeszkedő hipotézis közül? Részesítsük előnyben a legegyszerűbb olyan hipotézist, amely konzisztens az adatokkal. Ez józan intuíciónak tűnik, mivel azok a hipotézisek, melyek nem egyszerűbbek, mint maguk az adatok, nem nyernek ki semmilyen mintázatot az adatokból. Ha van struktúra, elég jól tömöríthető, viszont van, amikor nem lehet tömöríteni: véletlen adatok, Kolmogorovkompleitás (Kolmogorovcompleity). Kolmogorovkompleitás (algoritmikus kompleitás): Formális definíciót próbál adni az Ockham borotvája elvben használt egyszerűségnek. Hogy valahogy kimeneküljenek abból a csapdából, hogy az egyszerűség függ az információ reprezentációjának módjától, azt javasolták, hogy az egyszerűséget annak a legrövidebb programnak a hosszával mérjék, amely egy általános Turing gépen helyesen adja vissza a megfigyelt adatokat. De ez is csak "ökölszabály", bizonyítani nem lehet és nem is mindig működik. 2) Törekszünk egyszerű reprezentációra a hatékonyság miatt is, mivel egyszerűbb reprezentációban könnyebb keresni. Az induktív tanulás alapfogalmait a következő területen szemléltetjük: 4
Döntési fák (decision tree): Bemenetként egy attribútumokkal leírt objektumot vagy szituációt kap, és egy döntést ad vissza eredményként a bemenetre adott válasz jósolt értékét. Mind a bemeneti attribútumok, mind pedig a kimeneti érték lehet diszkrét vagy folytonos. Feltesszük, hogy A diszkrét változók értékeinek vektora, és f B diszkrét változó egy értéke (pl. B = {igen, nem}) Ha a függvény értékkészlete, f : diszkrét, a függvény tanulását osztályozás (classification) tanulásnak, folytonos, a függvény tanulását regressziónak (regression) nevezzük. Példa: Egy döntési fa annak eldöntésére, hogy várjunke asztalra az étteremben? B = {, } A = Alternatíva: vane a közelben megfelelő alternatívaként kínálkozó étterem. Bár: vane az étteremnek kényelmes bár része, ahol várakozhatunk. Péntek/Szombat: igaz értéket vesz fel pénteken és szombaton. Éhes: éhesek vagyunke. Vendégek: hány ember van az étteremben (Senki / Néhány / Tele). Drága: az étterem mennyire drága. Konyha: az étterem típusa (francia, olasz, thai vagy burger). Becsült várakozás: pincér becsülte várakozási idő (010, 1030, 3060, >60 perc). Eső: esike odakint az eső. Foglalás: foglaltunke asztalt. Vendégek? Senki Néhány Tele BecsültVárakozás? >60 010 3060 1030 Alternatíva? Éhes? Foglalás? Péntek/Szombat? Alternatíva? Bár? Eső? 5
A döntési fa élei a változók lehetséges értékei. Vegyük észre, hogy a fa nem használja a Konyha és a Drága attribútumokat, valójában irrelevánsnak tekinti azokat. Döntési fák kifejezőereje: Várakozás A 1... A m B 1... B n... A formulában a diszjunkciós tagok mindegyike azon tesztek konjukciójának felel meg, amelyeket a gyökértől egy pozitív kimenetet jelentő levélig megtett út során végeztünk. Ez éppen egy ítéletkalkulusbeli kifejezés, mivel csak egyetlen változót tartalmaz és minden predikátum unáris. 1.) Ítéletek, pl.: Vendégek = Senki, Vendégek = Néhány, stb. 2.) Az egy modell. 3.) A döntési fa pedig logikai formula, f a formula kiértékelése. Visszafelé is igaz: Az ítéletlogikai nyelvek területén a döntési fák teljes kifejezőképességgel bírnak, ami azt jelenti, hogy tetszőleges logikai (Boole) függvény felírható döntési faként. Pl.: a függvény igazságtáblájában minden igaz sorhoz egy utat adunk. (Ennél tömörebben is lehet.) Milyen tömör lehet? Láttuk, hogy ha véletlen, nem tömöríthető. De nem tömöríthető a paritásfüggvény (akkor és csak akkor ad 1et, ha páros számú bemenet 1 értékű), ekkor egy eponenciálisan nagy döntési fára lesz szükség. Vagy a többségfüggvény (akkor ad 1et, ha a bemeneteinek több, mint a fele 1 értékű). Az összes változót tudni kell illetve O(n) et. Döntési fa építése: Útvonalak igen levélbe, A i, B i pedig az elágazások. Egy logikai döntési fa által kezelhető példa a bemeneti attribútumok X vektorából és egyetlen logikai kimeneti értékből, yból áll. Pozitív példa: a példa pozitív, ha a VárjunkE értéke igaz. Negatív példa: a példa negatív, ha a VárjunkE értéke hamis. Pl.: Vendégek =Tele, Várakozás = 1030, [összes attribútum]; VárjunkE = igen. Vendégek = Senki, Várakozás = 010, [összes attribútum]; VárjunkE = nem. 6
Pl.: 100 példa adott: 1,, 100. Bemagolhatnánk (minden pozitív példához egy út), de láttuk, hogy ez nem jó => tömöríteni kell. Heurisztika: A lehető legjobban szétválogatjuk a pozitív és negatív példákat. Ötlet: Gyökérbe az az attribútum, amely a legjobban szeparál. (rekurzív algoritmus) 1.) Válasszuk ki a gyökeret és szeparáljuk a példákat, 2.) Minden ágon a maradék attribútumokra és az oda eső példákra rekurzívan ugyanez. Tanítási adathalmaz i i h i h i h i A h i i h i h i h i B h h h h i i i i i h i h i h i Az esetek, amiket vizsgálni kell a rekurzióban: Ideális eset 1.) Pozitív és negatív példa is van: szeparáljuk őket a legjobban egy attribútumot választva. 2.) Csak pozitív vagy csak negatív példa van: leáll, ez az ág kész. 3.) Nincs példa, de attribútum még van: default érték, heurisztikát alkalmaz, pl. többség a szülőben. 4.) Ha pozitív és negatív példa is van, de nincs több attribútum: hiba (zaj) a példákban. Ekkor heurisztikát alkalmaz, pl. többségi szavazat (ha több volt a pozitív, akkor pozitív lesz.) A legjobban szeparáló attribútum: Ötlet: Adott változó ismerete mennyivel növeli az információt arról, hogy egy példa igen vagy nem. Információ információelmélet A p valószínűségű esemény információtartalma: log p. Ha log 2 t használunk, mértékegysége a bit. Véletlen változó átlagos információtartalma (entrópia): p i log 2 p i i ( p 1,..., p n, valamint az eloszlás: 1= p i ) 7
Döntési fa egy csomópontjának információtartalma: Legyen p a csomópont alatti pozitív, n pedig a negatív példák száma, a csomópont A. Információnyereség Aban: I A = p p n log 2 p p n n p n log 2 n p n A gyerek csúcsainak az átlagos információtartalma azt fejezi ki, hogy Aszerint felbontva mennyi bizonytalanság marad. Legyenek B 1,..., B v A gyerek csúcsai. (Anak v értéke van, ami v részhalmazra osztja a példákat.) Legyenek E 1,..., E v a megfelelő példa részhalmazok, ahol E i =n i p i. Nyereség (A) = v I A i=1 p i n i p n I B i => A maimális nyereségű attribútumot választjuk. Induktív tanuló algoritmusok kiértékelése: Hogyan buktatjuk le a magolókat? A példákat két részre osztjuk: 1.) Tanító halmaz (training set) 2.) Teszt halmaz (test set) nem használjuk fel a tanítás során. A tanító halmazon építjük a modellt (pl. döntési fát), a teszt halmazon értékeljük ki. De: precision, recall, stb: % nem mindig kielégítő mérték, pl. ha sokkal kevesebb a pozitív példa. Kukucskálás (peeking): Ha a teszteredmények alapján finomhangoljuk az algoritmus paramétereit. => A modell függ a teszttől. (A teszthalmazra is optimalizálva lett a modell. Ez nem jó!) Túlillesztés (overfitting): Maradék (Reminder) Megjegyzés: a magolás egy általánosabb formája a túlillesztés, amikor túl messzemenő következtetéseket vonunk le kevés adatból. Kisszámú példák miatt nem igazi minták alakulhatnak ki. 8
Pl.: Ha az egyik paraméter a dobókocka színe, pl. ilyen téves minta alakulhat ki: csak piros dobókockával jöhet ki hatos. Kevés adatnál tehát nem kell nagyon komolyan venni a mintákat. Keresztvalidáció (crossvalidation): A tanító / teszt felosztás általánosítása, ez a módszer alaposabban szeparál. 1.) Osszuk fel a példákat K egyenlő részre. 2.) Építsünk K modellt a következőképpen: vegyük valamely részhalmazt, mint teszt halmazt és a többi K1 et tanítsuk. 3.) Értékeljük ki a K modellt a megfelelő teszthalmazon és vegyük a K értékelés átlagát => ez lesz az értékelés. Alkalmazás: Megbízhatóbb kiértékelés, hiszen az összes elemet felhasználtuk tesztadatnak. Ha van m darab algoritmusunk, mindet kiértékeljük keresztvalidációval, és a legjobb algoritmus segítségével építünk modellt az egész példahalmazon. Ez lesz a végeredmény. Döntési fa specifikus technika: (keresztvalidációs algoritmus független) Azért, hogy az irreleváns attribútumokat (pl. teljesen véletlen kockadobásoknál KockaSzíne, DobásIdeje, stb.) ne építse be az algoritmusba. Pl. statisztika alkalmazásával. => Valamit tanulni fog, de az biztos tévedés lesz! Vajon detektáljunk irreleváns attribútumokat? Pl.: Statisztika Egy mintában az információnyereség zérus. Kis mintában ritkán zérus, de megnézhetjük, hogy szignifikánsan nem nullae? Például: χ 2 próba: Legyen a KockaSzíne szerinti felbontáshoz tartozó minták száma p 1, n 1, p 2, n 2, stb. p i = p és n i =n. Ekkor a nullhipotézis az, hogy p i várható értéke p i : p i = p p i n i p n és n i =n p i n i p n. 9
azaz 0 a nyereség, mert ugyanolyan arányú a p i, mint a p. D= p i p i 2 p i n i n i 2 n i, D χ 2 eloszlást követ, táblázatból ellenőrizhető D valószínűsége. Ez az algoritmus a χ 2 metszés. Gyakorlati kérdések (vázlatosan): Hiányzó adatok, pl. attribútum értékek: pl. felvenni példákat minden lehetséges értékkel (de súlyozva, n példa esetén 1/n súllyal.) Sokértékű attribútumok: nagy a nyereség egyszerűen azért, mert sok az attribútum: nem jó! Vegyük figyelembe magának az attribútumnak az információtartalmát is: normalizáljunk vele. Folytonos változók : a gain számolásakor megkeressük azt a felosztó pontot, ami maimális nyereséget eredményez. (költséges) Folytonos kimenet: minden levélen egy függvény, nem pedig pl. igen/nem érték. Fontos: A döntési fa gyakran nem a legjobb algoritmus, de értelmezhető (olvasható, visszafejthető) és ez gyakran követelmény. Hipotézisegyüttesek (ensemble): Sokszor jó ötlet egy modell (hipotézis) helyett többet gyártani, esetleg más algoritmusokkal, és pl. többségi szavazást alkalmazni. Miért lehet jó? 1.) Modellek hibái nem pont ugyanazok (ideálisan: függetlenek) => statisztikailag (nagy számok törvénye) megbízhatóbb. 2.) Kombinálhatunk is egyszerűbb modelleket. + + + Turbózás (boosting): Gyenge algoritmusok együttesét állítja elő, amelyek így a tanuló halmazt helyesen osztályozzák. Gyenge algoritmus (weak algorithm): Amely jobb, mint a találgatás, azaz 50 % nál több példát képes helyesen osztályozni a legyártott modell. Jelöljük a gyenge algoritmust Llel. 10
Súlyozott példák: Az i, y i példához w i súlyt rendelünk, Lnek kezelni kell tudni ezt. Pl.: a döntési fák könnyen kezelik.( p i és n i számításánál súllyal vesszük a példákat) Ada Boost algoritmus: AdaBoost (példák, L, M) // példák: N darab példa, i, y i, i=1,...,n // L : tanuló algoritmus (gyenge) // M: hipotézisek száma az együttesben // w i : i, y i súlya, 1/ N kezdetben // h i : iedik hipotézis ( i=1,..., M ) // z i : iedik hipotézis súlya for m = 1 to M h m L(példák, w) error 0 for j = 1 to N if h m ( j ) y j then error error + w j for j = 1 to N if h m ( j ) = y j then w j w j * error / (1 error) w Normalizál(w) z m log[(1 error) / error] return SúlyozottTöbbség(h, z) A nehéz (nem egyértelmű) példák és a jó osztályozók nagyobb súlyt kapnak. Pl.: L lehet döntési tönk (egyváltozós döntési fa, e változó alapján döntünk). Érdekes: túlillesztés nem jelentkezik, ha M nagyon nagy, sőt, ellenkezőleg => nem világos miért és mikor. Sok elméleti eredmény tartozik ide, ezeket nem tárgyaljuk, csak az intuitív megértésre támaszkodunk. 11