Képzeljünk el egy tapasztalt adattudóst, aki éppen a legújabb projektjén dolgozott: egy neurális hálózatot tanított be arra, hogy felismerje a problémás eseteket. A tanítási adatokon a rendszer fantasztikus eredményeket produkált. A tudós elégedetten dőlt hátra a székében, majd elindította a teszteket valós adatokon. Az eredmény katasztrofális volt: a rendszer szinte semmit sem ismert fel helyesen. Mi történt?
Ez a történet tökéletesen illusztrálja az egyik legnagyobb problémáját a gépi tanulásnak: a túltanulást. Ez olyan, mint egy diák, aki szó szerint bemagol egy tankönyvet, és képes hibátlanul visszaadni minden sort, de ha megváltoztatjuk a kérdés megfogalmazását, teljesen elveszik.
A neurális hálózatok esetében ez még árnyaltabb probléma. A hálózat megtanulja a tanítási minta minden apró részletét, minden véletlen összefüggést, még azokat is, amelyek valójában csak zajok. Mintha valaki azt tanulná meg, hogy minden kedden jó idő van, csak azért, mert a tanítási adatokban véletlenül a keddek többnyire naposak voltak.
Az adatok osztása: a bölcs szabályozás
Ennek ellensúlyozására született meg az a módszer, amit ma már alapvetőnek tekintenek: az adatbázis három részre bontása. Olyan ez, mint amikor egy tanárt tanítunk. Van a tankönyv, amivel tanul, van egy vizsga, amin teszteljük, és van egy olyan feladat is, amit sosem látott korábban.
A tanítási adatbázis az, amin a hálózat valóban tanul. Itt fejleszti ki a belső szabályait, itt állítja be a súlyokat. Ideális esetben a betanítás során azt várjuk, hogy a hálózat felfedezze a bemenetek és kimenetek közötti kapcsolatokat, mintázatokat, hogy a későbbiekben ezeket a szabályokat használva képes legyen válaszolni a jövőbeli kérdésekre is.
A validációs adatbázis a vizsga. Itt ellenőrizzük, hogy a tanulás jó irányba halad-e. A validációs adatbázis célja a hálózat hiperparamétereinek beállítása. Ha a tanítási adatokon egyre jobb a hálózat, de a validációs adatokon romlik, az a túltanulás jele.
A teszt adatbázis a valódi próba. Ezeket az adatokat a hálózat soha nem látta, és ezt használjuk a végső teljesítmény mérésére. Mivel a teszt adatbázis független a tanítási mintától, ezért az így kapott eredmény már egy valóban hatékony becslésnek tekinthető abban a tekintetben, hogy a módszer milyen jól fog teljesíteni számára ismeretlen minták esetében.
A csalók nyomában: amikor a statisztika becsap
Térjünk vissz egy konkrét példához: a hitelkártya-csalások felismerése. A gépi tanulás folyamatában számos olyan osztályozási feladattal lehet találkozni, ahol a tanító minták eloszlása nem egyenletes. Ez lehet egy kisebb, természetes különbség, de lehet akár egészen extrém is - hitelkártya csalásokat vizsgáló adatbázisban a valódi hiteles tranzakciók száma valószínűleg nagyságrendekkel több, mint a visszaéléseket jelentő tranzakcióké.
A gyakorlatban a tanítás menetét ez a kiegyenlítetlenség jelentősen befolyásolhatja negatív irányba. Lehetséges, hogy van egy nagy adatbázisunk, és ezek közül csak néhányhoz tudjuk hozzárendelni a csalás címkét, minden más adat normálisnak tekinthető. Ez viszont könnyen olyan eredménnyel járhat, hogy a neurális hálózat egyszerűen validnak fog tekinteni minden tranzakciót.
A kiegyensúlyozás művészete
Ezért született meg az adatok kiegyensúlyozásának igénye. Két fő stratégia létezik, mindkettő a saját problémáival.
Az alulmintavételezés során egyszerűen elhagyunk adatokat a többségi osztályból. Úgy próbáljuk meg kiegyenlíteni a kategóriákban lévő elemek darabszámát, hogy elhagyunk a legnagyobb kategóriákból elemeket. Ezt addig folytatjuk, amíg minden kategóriában ugyanannyi fog maradni. A módszer hátránya az, hogy ha a legkisebb kategóriába túl kevés elem van, akkor a teljes adatbázis mérete is drasztikusan lecsökken.
A túlmintavételezés az ellenkező utat járja. Itt megtartunk minden adatot, és a kevesebb elemet tartalmazó osztályokat próbáljuk meg úgy bővíteni, hogy azok elemszáma is elérje a legnagyobbét. A SMOTE módszer úgy próbál meg új adatokat generálni, hogy a meglévő adatbázisban található elemeket veszi alapul, és ezek kisebb módosításaival próbál újakat létrehozni.
A kifinomultabb módszerek már nem véletlenszerűen törlik vagy bővítik az adatokat. Az alapelemek kiválasztásánál célszerű lehet először valamilyen klaszterezési algoritmust futtatni az adatokon. Ennek eredményeképpen kapunk különböző klasztereket, amelyekben az egymáshoz hasonló adatokat fogjuk megkapni. Hogy ne torzítsuk el a bemeneti adatok arányait, ezért ezekből a klaszterekből felváltva érdemes kivenni egy-egy elemet.
Az ENN módszer: a zaj vadászata
A túlmintavételezés azonban saját problémákat hoz. A SMOTE tipikusan zajos kimenetet produkálhat, amennyiben összeköt klasztereken belüli elemeket, illetve azokon kívül eső kívülállókat. Emiatt érdemes lehet használni az ENN módszert a zaj csökkentésére. Ennek alapelve, hogy a klaszterezési műveletet követően újra át kell vizsgálni a klaszter minden elemét, és ha arra nem igazak a klaszter többi elemére vonatkozó alapvető jellemzők, akkor azt az elemet töröljük.
A valóság tükre: eredmények értékelése
Amikor végre kész a rendszer, jön a legfontosabb kérdés: mennyire jó? Itt már nem elég az egyszerű pontosság. A szakma kidolgozott egy egész eszköztárat a teljesítmény mérésére.
Az igazság mátrix egy egyszerű, de zseniális eszköz. Amennyiben egyszerű bináris klasszifikációról beszélünk, akkor belátható, hogy az összehasonlításnak négy kimenete lehet:
Valós pozitív (TP): pozitív választ vártunk, és a rendszer is ezt adta
Valós negatív (TN): negatív választ vártunk, és a rendszer is ezt adta
Álpozitív (FP): negatív választ vártunk, a rendszer azonban pozitívat adott
Álnegatív (FN): pozitív választ vártunk, a rendszer azonban negatívat adott
Az F1 pontszám: a bölcs kompromisszum
A precizitás és a szenzitivitás között gyakran kompromisszumot kell kötni. Önmagában azonban egyik sem értékelhető túl, mindegyiknél tudunk egyszerű példát adni arra, hogy ez mindig tökéletes eredményt mutasson.
Az F1 pontszám ezek harmonikus átlaga - egy szám, amely egyensúlyt teremt a kettő között:
F1 = 2 * (pontosság * szenzitivitás) / (pontosság + szenzitivitás)
Az F1 érték tehát a harmonikus átlaga a pontosságnak és a szenzitivitásnak. Tökéletes esetben ennek értéke 1, rossz esetben pedig 0-hoz közeli. A gyakorlatban ez az érték már jól használható a betanítás jóságának ellenőrzésére, illetve betanítás során is a művelet irányítására.
A specifitás szerepe
Van még egy mérőszám, amely gyakran háttérbe szorul: a specifitás. Nagyon hasonló a szenzitivitáshoz, csak itt a negatív eredményeket vizsgáljuk. Tehát a rendszer az összes negatív adat közül hányat jelzett valóban negatívként?
specifitás = TN / (TN + FP)
A gyakorlati tapasztalatok
A megoldás több lépcsős folyamat. Először ki kell egyensúlyozni az adatokat, aztán szigorúan szét kell választani a tanítási, validációs és teszt adatokat. Végül folyamatosan monitorozni kell mind a három halmazon a teljesítményt.
Érdekes eset, amikor a tanítási mintán jók az eredmények, a teszt adatbázisban azonban ez már nem igaz. Ez a tipikus túltanulás esete, erre az esetre is megvannak a szükséges lépések (hálózat csökkentése, egyéb célzott technikák).
A tanulságok
Mi a tanulság ebből? Talán az, hogy a gépi tanulásban nincs ingyen ebéd. Minden egyes javítás, minden egyes optimalizálás árnyékot vet. A túl jó eredmények gyakran gyanúsak - ha valami túl szépnek tűnik ahhoz, hogy igaz legyen, valószínűleg az is.
A másik tanulság az emberi szakértelem fontossága. A tapasztalt adattudós érzékeli, amikor valami nincs rendben, még akkor is, ha a számok jónak tűnnek.
És talán ez a jövő: nem vak bizalom a számokban, hanem azok okos értelmezése, emberi tapasztalattal és intuícióval fűszerezve.
DLM Consulting Kft és Óbudai Egyetem Neuamnn János Informatikai Kar