Programtervező informatikus
Témavezető: Szántó Zsolt
Szegedi Tudományegyetem
Természettudományi és Informatikai Kar
Számítógépes Algoritmusok és Mesterséges Intelligencia Tanszék
Szeged, 2024
Dolgozatom témája a különböző gépi tanulási módszerek és modellek hatékonysága a szöveg alapú Out-Of-Domain Detection feladatra nézve. A célom az volt, hogy minél jobb megoldást találjak a problémára és az eredmények összehasonlítása.
A feladat megoldása során összehasonlítottam a felügyelt és felügyelet nélküli modellek teljesítményét a felhasznált adatbázis három verziója segítségével. A forráskódot Python-ban írtam meg, és a megoldás során dolgoztam Google Colab Notebook és Jupyter Notebook környezetben is.
A rendelkezésre álló adatbázist elemeztem, aztán kipróbáltam a különböző modelleket az adathalmazokon, majd készítettem egy összefoglalást, ahol összehasonlítom a modellek teljesítményét egymással.
Kulcsszavak: gépi tanulás, természetes nyelvfeldolgozás, Out-of-Domain Detection
Tematikus chatbotok esetén a témához nem kapcsolódó (out-of-domain) üzenetek kiszűrése egy elengedhetetlen feladat. A hallgató feladata out-of-domain algoritmusok megismerése és empirikus tesztelése szöveges adatok felett.
A gépi tanulási algoritmusok és az emberek tapasztalat alapú döntéshozatala között erős párhuzam fedezhető fel [1]. A mindennapi életünkben sokszor – ha nem is tudatosan – a korábbi tapasztalatainkra hagyatkozunk, ami felfogható egy belső adatbázisként is. Tudjuk például, hogy a színére, méretére és az állagára is fontos figyelni egy gyümölcs kiválasztásánál, vagy meg tudjuk jósolni a forgalmat egy adott úton a hét napja és az időjárás alapján. Hasonló predikciókat a számítógépek is képesek elvégezni, ezt nevezzük gépi tanulásnak.
1. ábra: A gépi tanulás a mesterséges intelligencia egy részterülete, amelynek szintén vannak további speciális részhalmazai, mint például a mélytanulás [2].
Definíció szerint a gépi tanulás a mesterséges intelligencia azon részterülete, amely képes tapasztalatok által fejlődni egy részére kijelölt feladatban. Formálisabb megfogalmazással egy számítógépes algoritmus akkor minősül gépi tanulásnak, ha E tapasztalatok alapján T feladatot P teljesítménymetrikában mérve egyre pontosabban látja el az E tapasztalatok számának növelésével [3]. Fontos, hogy a T feladat pontosan meghatározott legyen, ezáltal a teljesítmény is pontosan mérhető lesz.
| Task T | recognizing and classifying handwritten words within images |
| Performance measure P | percent of words correctly classified |
| Training experience E | a database of handwritten words with given classifications |
1. táblázat: A handwriting recognition learning problem, példa egy gépi tanulási feladat definiálására [3].
A gépi tanulásnak három főbb típusa van, amiket legfőképpen a tanulás módja és a modell számára elérhető tapasztalat típusa különböztet meg egymástól. Ezek a felügyelt, a felügyelet nélküli és a megerősítéses tanulás.
Ahhoz, hogy a gyakorlatban létrehozzunk egy gépi tanulási modellt, szükségünk van egy adathalmazra, ami tartalmazza az elvárt eredményeket is. A kiindulási adatbázist érdemes három részre bontani: tanító, validációs és teszt adatokra, azonban kevés rendelkezésre álló tapasztalat esetén a validációs halmaz elhagyható. A tanító adatokat szigorúan csak a modell tanítására alkalmazzuk, hiszen a cél az, hogy minél jobb általánosító képességet érjünk el, ennek objektív méréséhez egy független adathalmazon kell végezni a kiértékelést. A tanító adatbázis a tanítás módjától függően nem feltétlen tartalmaz címkézett adatokat. A validációs adatokon kísérletezhetünk a különböző paraméterek finomhangolásával, majd a teszt halmazon pedig csak a végső kiértékelést hajtjuk végre.
Mind a felügyelt, mind a felügyelet nélküli tanítás adatbázisokkal dolgozik. A felügyelt tanulás címkézett adatokat használ a tanításhoz, ezáltal a modellnek van egy határozott alapja arra vonatkozóan, hogy mik az elvárt eredmények. Ezzel ellentétben a felügyelet nélküli tanulás címkézetlen adatokkal dolgozik, és elsődleges célja, hogy felfedezzen az adatok között eddig nem ismert összefüggéseket és mintázatokat [4].
A megerősítéses tanulás főbb alkotóelemei az agent és az environment, amivel az agent interaktál [5]. Az interakció minden lépésében az agent az általa látott információk alapján kiválasztja az általa legoptimálisabbnak ítélt lépést, majd végrehajtja azt. Ebben az esetben a tapasztalat nem egy tanító adatbázis formájában érkezik a modell számára, hanem egy reward érték határozza meg, amit a környezet biztosít. Az agent célja a reward maximalizálása.
A gépi tanulás gyakorlati alkalmazásához nagyon fontos megérteni a No Free Lunch tételt. Ez a tétel kimondja, hogy nem létezik egyetlen olyan optimalizálási módszer vagy gépi tanulási algoritmus, ami minden problémára jobban működik, mint bármilyen más módszer [6]. A legjobb eredményeket mindig akkor tudjuk elérni, ha megértjük a feladatot és ahhoz megfelelő specifikus eszközöket alkalmazunk. Ez teszi a gépi tanulási algoritmusok fejlesztését különösen izgalmas kihívássá.
A Natural Language Processing, azaz NLP, a természetes nyelv gépi feldolgozásával, értelmezésével és generálásával foglalkozik. Napjainkban a Natural Language Processing a mesterséges intelligencia egyik legfelkapottabb területe, köszönhetően a széles körben elterjedt chatbotoknak és AI asszisztenseknek is. Ezek az eszközök képesek teljes, koherens szövegeket alkotni, valamint képesek feldolgozni a felhasználó természetes nyelvű kéréseit [7]. Ezek a funkciók mind az NLP felhasználásával valósulhattak meg.
Az NLP, mint kutatási terület már az 1950-es években megjelent. Az új területet az informatika és a nyelvészet keverékeként írták le. Elsőként a szabályalapú rendszerek születtek meg, majd a statisztikai programok és a gépi tanulás megjelenése az 1980-as és 90-es években jelentős innovációt jelentett és megreformálta a területet. Napjainkban a mélytanulási algoritmusok fejlődésének köszönhetően még fejlettebb modellek jöhettek létre, mint például a GPT-3 és a BERT [8].
Fontos lépés a szövegek előfeldolgozása, ami nagyban elősegítheti az NLP algoritmusok minél nagyobb hatékonyságát. Az előfeldolgozási lépések segítenek megtisztítani és leegyszerűsíteni az inputot, ezzel alkalmasabbá téve a gépi tanulások részére [8]. Előfeldolgozási módszerek széles köre áll rendelkezésre, érdemes az adott feladat alapján kiválasztani a legfontosabbakat.
Többek között az teszi népszerűvé a természetes nyelvfeldolgozást a cégek körében, hogy rendkívül széleskörűen felhasználható. Az NLP segítségével egyszerűen javíthatják a felhasználói élményt alkalmazásaikban és weboldalaikon. Létrehozhatnak például okos keresőeszközöket és AI alapú chatbotokat is. Azonban nem csak a felhasználó érdekeire tudják felhasználni, fontos eszköz lehet például a cég marketing stratégiája felépítése során is, hiszen az NLP segítségével feldolgozva hihetetlen mennyiségű közösségi oldalon fellelhető adat, email vagy vélemény változtatható statisztikai adattá. Ezen kívül az NLP megfelelő felhasználásával trendeket is fel lehet ismerni, ami szintén remek alapul szolgálhat egy reklám elkészítéséhez.
Az NLP alapú módszerek nem csak cégek körében használatosak. Egyre elterjedtebbek a generatív AI alapú chatbotok, amik segítenek a felhasználónak az internetes böngészésben, kérdések megválaszolásában és akár különféle tartalmak generálásában is. Ilyen például a ChatGPT (2. ábra) vagy a Google Gemini is [9][10]. Ezek a weboldalak nagy népszerűségnek örvendenek az átlagos felhasználók körében is, hiszen gyors és innovatív megoldást kínálnak a problémák széles körére. Azonban fontos megjegyezni, hogy ahogyan egyik AI sem tévedhetetlen, így ezek az alkalmazások sem azok.
2. ábra: A ChatGPT képes válaszolni a természetes nyelven feltett kérdésekre, valamint egyszerű instrukciókat is megért a válaszadással kapcsolatban [9].
Az Out-Of-Domain (OOD) detektálás egy kritikus feladat a gépi tanulásban. Célja azonosítani, hogy egy adott bemeneti adatpont kívül esik-e azon az adateloszláson, amelyen a modellt tanították. Az OOD detektálás a gépi tanult modelleket használó alkalmazások esetében biztonság szempontjából kulcsfontosságú. Azáltal, hogy a modellek képesek felismerni azokat a bemeneteket, amelyeket nem láttak korábban, elkerülhetjük a potenciális ellenséges támadásokat, ahol a rosszindulatú bemenetek a modellt tévesztésre késztethetnék [11].
Egyszerűbb gépi tanulási modellekre jellemző, hogy a világot zártnak tekintik (closed world assumption), tehát a számukra rendelkezésre álló adathalmazt teljesnek tartják. Ennek következtében nem tanított input esetén is azt feltételezik, hogy minden szükséges adat rendelkezésre áll [12]. Emiatt a zártság miatt olyan inputokat is besorolnak a számukra ismert kategóriákba, amelyik egyikbe sem illik bele, így a helyes feltételezés az lenne, hogy az adott adat out-of-domain. Ezt nevezzük csendes hibának (silent failure), hiszen a modell nem jelzett hibát, hanem csupán hozott egy döntést a szokásos módon. Bizonyos esetekben ez a megközelítés is jól működhet, amikor tudjuk, hogy a modell által látott adatokat teljes mértékben irányítjuk, azonban például felhasználókkal is interaktáló rendszerek esetében jobb feltételezni, hogy nem minden információ áll a modell rendelkezésére.
Az out-of-domain detection lényege, hogy a modell tisztában legyen azzal, hogy nem minden adat áll a rendelkezésére (open world assumption), és felismerje azokat a helyzeteket, amikor nem tud megfelelő döntést hozni [12].
A különböző gépi tanulási kísérletek során a clinc_oos adatbázis verzióit használtam [13]. Ez az adatbázis 150 szándékot tartalmaz, 10 különböző témakörben. A clinc_oos egy olyan adathalmaz, amelyben megtalálhatóak kérések, amelyek kívül esnek a rendszer által támogatott szándékokon. Ez új kihívást jelent, mivel a modellek nem feltételezhetik, hogy minden lekérdezés a rendszer által támogatott szándékosztályba tartozik.
Az adatbázisnak három verziója készült el, ezek a small, imbalanced és plus neveket kapták. A clinc_oos_small adatbázis a nevéhez híven a legkisebb, ez tartalmazza a legkevesebb adatsort, emiatt ezzel lehet a leggyorsabban betanítani a modelleket. Ezzel ellentétben a clinc_oos_plus tartalmazza a legtöbb adatot, elősegítve ezzel a kifinomultabb modellek létrehozását. Az imbalanced verzióban a különböző szándékosztályok nem egyenletesen oszlanak el, ezzel növelve a feladat nehézségét. A következő két ábrán (3. és 4. ábra) szemléltettem az adatok eloszlásának jellegét.
3. ábra: adatok eloszlása az adatbázisokban
Megfigyelhető, hogy az összes adatbázisban kevés példa található meg az outlierekre a teljes forráshoz viszonyítva, azonban a plus adatbázisban kétszer annyi OOS adat található, mint a többi verzióban.
4. ábra: az out-of-scope adatok százalékos aránya
A rendszer által támogatott 150 intent rendkívül változatos, egyaránt tartalmaz üzeneteket a felhasználók banki ügyeinek intézésével kapcsolatban, és szerepelnek utazással, éttermek értékelésével, időjárással és egészséges életmóddal kapcsolatos kérdések is. Mindezek mellett úgy tűnik, hogy ez a fiktív rendszer ellát még okos otthonnal kapcsolatos funkciókat, válaszol a saját magáról feltett kérdésekre, valamint még a felhasználót is szórakoztatja egyszerű játékokkal. Ez a sokszínű adathalmaz nehézséget jelenthet a továbbiakban a támogatott adatok elkülönítésében.
| szándék | példa |
|---|---|
| book_restaurant | Book a table for two at The Italian place. |
| get_weather | What's the weather like in London? |
| play_music | Play some rock music. |
| rate_book | Rate the book "The Lord of the Rings" 5 stars. |
| get_calendar_events | What are my appointments today? |
| play_game | Let's play a game of chess. |
| search_real_estate | Find a house for sale in my area. |
| search_flight | Find a flight to New York. |
| set_timer | Set a timer for 10 minutes. |
| add_to_playlist | Add this song to my workout playlist. |
| search_news | What's the latest news about technology? |
| search_events | Find concerts in my city. |
| greeting | Hello |
| goodbye | Goodbye |
2. táblázat: Példák a támogatott adatokra és azok típusaira
Az adatbázis mélyebb megértése érdekében vizsgálatot végeztem az OOS adatok típusainak azonosítására, azaz, hogy milyen jellegű adatokat tartalmaz az out-of-scope osztály. Ehhez először összegyűjtöttem az összes OOS adatot egy másik adatbázisba. A szövegeket tokenekre bontottam és eltávolítottam az angol nyelvben leggyakrabban előforduló szavakat (stop words), ezzel előfeldolgozva a stringeket.
További szemléltetés céljából a legkisebb adatbázison klaszterezést hajtottam végre, hogy megfigyelhető legyen az OOS adatok elkülönülése a többitől (5. ábra). A szövegeket Sentence Transformers segítségével vektorokká alakítottam, ez a magas dimenziójú adat adta a klaszterezés alapját. A klaszterezést t-SNE segítségével végeztem el, ami egy statisztikai vizualizációs eszköz. A t-SNE, vagyis t-Distributed Stochastic Neighbor Embedding lényege, hogy a magas dimenziójú adatokat két- vagy háromdimenzióssá alakítja át, megőrizve az egymáshoz viszonyított hasonlóságukat [14].
5. ábra: Klaszterek
Az ábrán piros színnel kiemelve jelennek meg az OOS adatok pontjai, valamint az is leolvasható, hogy a teszt adatbázis tartalmazza a legtöbb ilyen adatot. Ez a kísérlet is tovább erősítette azt a feltevést, hogy az OOS adatok elkülönítésére kifinomultabb eszközöket kell alkalmazni, hiszen azok rendkívül változatosak és különböző egyéb osztályok elemeire hasonlíthatnak. A többi osztály elemei megfelelő diszkrét elhatárolódást mutatnak ezzel a klaszterezési módszerrel.
Klaszterezés alapján létrehoztam egy szófelhőt 20 témához, amin az egyes témák legjellemzőbb szavait jelenítettem meg (6. ábra). Az ábráról következtethető, hogy az OOS osztály elemeiben többek között előfordulnak történelmi kérdések, hírességek iránti érdeklődés, vásárláshoz való tanácskérés és háziállatok gondozásában való segítségkérés is. Amellett, hogy a nem megengedett kérések is hasonlóan sokszínűek, mint a rendszer által támogatott kérések, a két elkülönítendő kategória szókincse között nagy az átfedés. Az adatokat tanulmányozva azt is megfigyeltem, hogy a kérések hangvétele sem jellegzetes egyik csoportban sem. Az adatok diverzitása és a szókincs átfedése az osztályok között növeli a feladat komplexitását.
6. ábra: OOS klaszterek
Összefoglalva elmondható, hogy az adatbázis elemzése rávilágított az out-of-scope (OOS) adatok felismerésének nehézségeire. Ennek fő oka, hogy ezek az adatok rendkívül változatosak és szókincsükben jelentős átfedést mutatnak a támogatott szándékokkal. Az adatbázis három különböző verziója eltérő méretükkel és eloszlásukkal különböző nehézségi szinteket kínál a modellek tesztelésére és fejlesztésére. Az előfeldolgozás és vizualizáció, például a t-SNE alapú klaszterezés, megerősítette, hogy az OOS adatok elkülönítése kifinomultabb megoldási megközelítéseket igényel. Az eredmények azt mutatják, hogy a feladat megoldásához szükség lesz mélytanulási modellek alkalmazására, valamint erős előfeldolgozásra.
A természetes nyelv feldolgozása során rendkívül fontos a megfelelő előfeldolgozási lépések megtétele. Ez a lépés segít a bemenet megtisztításában, az a zaj csökkentésében és a könnyebb feldolgozhatóságot biztosít annak. Modellünk teljesítménye jelentősen javítható a megfelelő előfeldolgozási módszerek segítségével. Számos különböző technika létezik a szövegek előfeldolgozására, ezek közül használtam fel néhányat a feladat megoldása során.
A tokenizálás az egyik legelső és legfontosabb lépés az NLP-folyamatban. Ez a művelet a szöveg kisebb egységekre, úgynevezett tokenekre bontását jelenti, amelyek lehetnek szavak, mondatok vagy akár karakterek. Az algoritmusok számára az emberi nyelv szöveges formában túl összetett, ezért a tokenekre bontás segít az adat strukturálásában. Például egy mondat szavakra történő bontása lehetővé teszi az egyes szavak külön-külön történő elemzését, ami számos további lépés alapja. A tokenizálás pontos végrehajtása kulcsfontosságú, egy jól elvégzett tokenizálás lehetővé teszi, hogy az algoritmus a szöveg logikai egységeit azonosítsa, ezáltal javítva az eredmények pontosságát.
A lemmatizálás célja, hogy a szavakat szótári alak alakjukra redukálja. Ez a folyamat különösen hasznos az NLP-ben, mivel a szavak ragjai, toldalékjai és különböző szóalakjai zavarhatják az elemzést. A lemmatizálás például az "eszik", "ettem" és "evés" szavakat mind az "enni" formára egyszerűsíti. Ez segít csökkenteni az adathalmaz redundanciáját, és biztosítja, hogy az algoritmus a szavak jelentésére összpontosítson, nem pedig a különböző változatokra.
A lemmatizálás különbözik a stemmingtől, amely szintén a szavak redukálására szolgál, de egyszerűbb és kevésbé precíz módszer. A lemmatizálás a nyelvtani elemzést is figyelembe veszi, például megkülönbözteti a szavak főnévi és igei alakját. Ez a pontosabb megközelítés jobb eredményeket biztosít az NLP-alkalmazásokban, például keresési rendszerekben vagy szövegelemzésben [15].
A tokenizálás és a lemmatizálás is alapvető szerepet játszanak az NLP-folyamatban. Ezek a technikák segítenek az emberi nyelv komplexitásának csökkentésében, strukturáltabbá téve az adatokat az algoritmusok számára. Az ilyen előfeldolgozási lépések nélkül az NLP-algoritmusok kevésbé lennének pontosak, hatékonyak és értelmezhetők. Ezért ezek a módszerek kulcsfontosságúak bármely sikeres nyelvfeldolgozási projekt megvalósításában.
Kísérleteim során kipróbáltam az outlier detection feladatra mind felügyelt, mint felügyelet nélküli modelleket. A felügyelt tanítás során a modell lát példákat az anomáliákra is, nem csak a normál osztályok elemeire, így megtanulhatja az outlierek mintázatait és szabályszerűségeit is. Ez a lényeges különbség a két módszer között jelentősen megkönnyíti a felügyelt tanulást alkalmazó modellek dolgát. Ebben a szekcióban összehasonlítom a tanulmányozott felügyelt tanulást alkalmazó modellek tulajdonságait és eredményeit.
Egy adott osztályra vonatkozó predikciók pontosságát illetően négy esetet különböztetünk meg (7. ábra). Ebből két eset helyes predikcióra utal, ezek a True Positive (TP) és a True Negative (TN). True Positive esetén a modell helyesen adta meg az osztály címkéjét, True Negative esetén pedig helyesen másik osztályt adott meg predikcióként. A hibás esetek ezek ellentétei, False Positive-nak (FP) nevezzük amikor az adott osztálycímke tévesztésből eredően lett az adatsorhoz rendelve, False Negatívnak (FN) pedig, amikor a modell nem ismerte fel az osztály egyik elemét [16].
7. ábra: A predikált és a valós értékek viszonya [16]
A gépi tanulási modellek értékeléséhez számos különböző metrikát használunk, amelyek segítenek meghatározni, hogy a modell mennyire jól teljesít egy adott problémán. Ezek a metrikák az előbb említett értékeket használják fel a képleteikben. Az egyik legegyszerűbb és leggyakrabban használt mérőszám az accuracy, amely azt mutatja meg, hogy a modell hány esetben adott helyes előrejelzést az összes előrejelzéshez viszonyítva. Bár az accuracy értékes mutató lehet, nem minden esetben tükrözi a modell valódi teljesítményét, ezért érdemes más metrikákat is felhasználni, ha átfogó képet szeretnénk kapni a modellünk eredményességéről.
Accuracy =
A precision kifejezetten azokat az eseteket vizsgálja, amikor a modell egy adott kategóriára pozitív predikciót tett. Ez a mutató azt méri, hogy a pozitívként besorolt elemek közül hány volt valóban helyes. A precision különösen fontos olyan alkalmazásokban, ahol a téves pozitív eredmények következményei jelentősek.
Precision =
A recall azt mutatja meg, hogy a valóban pozitív esetek hány százalékát ismerte fel a modell. Ez a mutató kiemelten fontos, ha a téves negatív osztályozás elkerülése a cél, például, ha kritikus eseteket nem hagyhatunk figyelmen kívül, mint bűncselekmények észlelésénél.
Recall =
A F1-score a precision és a recall egyensúlyára helyezi a hangsúlyt, mivel azok harmonikus átlagát számolja ki. Ez különösen akkor hasznos, ha egy modell esetében mind a precision, mind a recall egyformán fontos, és megfelelő kompromisszumot kell találni köztük.
F1-score =
Fontos, hogy a feladatnak legjobban megfelelő metrikára helyezzük a hangsúlyt. Ez outlier detection esetében a recall, hiszen a téves pozitív eseteket szeretnénk a leginkább elkerülni. Ennek ellenére érdemes az F-score metrikát is figyelembe venni, hiszen ennek segítségével megfelelő egyensúlyt alakíthatunk ki a metrikák között.
Ahhoz, hogy létrehozzunk egy olyan modellt, ami jól teljesít az adott feladatunkra, először is tudnunk kell, hogy pontosan mi is számít jó teljesítménynek. Nincs értelme egy bonyolult és sok számítást igénylő modellt alkalmazni, ha az nem hoz jobb eredményeket, mint egy random döntés vagy egy egyszerű modell. Ezért szokás mindig a modelleket egy baseline modellhez hasonlítani, ami segít objektív képet alkotni a modellek hatékonyságát illetően. Osztályozás esetében használhatunk olyan egyszerű módszereket a baseline meghatározásához, mint hogy mindig a leggyakoribb osztály mellett döntünk (majority class classifier) vagy egy már ismert egyszerű modell.
A baseline megalkotásához a scikit-learn SGD (Stochastic Gradient Descent) Classifier-t alkalmaztam, mert az SGD alapú lineáris modellek hatékonyan tudják kezelni a nagy méretű adathalmazokat [17]. A 3. táblázatban részletezem a baseline eredményeit mind a teljes adatbázison, mind az outlier osztályon:
| Precision | Recall | F-score | |
|---|---|---|---|
| Small (macro average) | 0.87 | 0.86 | 0.86 |
| Small (outlier class) | 0.63 | 0.24 | 0.35 |
| Plus (macro average) | 0.88 | 0.88 | 0.87 |
| Plus (outlier class) | 0.61 | 0.37 | 0.46 |
| Imbalanced (macro average) | 0.86 | 0.86 | 0.85 |
| Imbalanced (outlier class) | 0.62 | 0.20 | 0.30 |
3. táblázat: Az SGD classifier baseline eredményei
| Accuracy | |
|---|---|
| Small | 0.86 |
| Plus | 0.87 |
| Imbalanced | 0.85 |
4. táblázat: Az SGD classifier accuracy értékei
Az eredmények alapján tisztán látszik, hogy a teljes adatbázisokra mért eredmények sokkal jobbak, mint az outlier osztályokra vonatkozóak. Ez jól tükrözi, hogy az outlier detection lényegesen nehezebb feladat, mint az egyszerű osztályozás. Az SGD Classifier hatékonysága az in-domain adatok esetében stabil és megbízható, amit az F-score 0.85–0.87 közötti értékei is mutatnak. Ezek az eredmények azt jelzik, hogy a modell jól kezeli a különböző adathalmazokat, függetlenül azok méretétől vagy osztályainak arányaitól.
Az outlier osztályokra mért eredmények azonban jelentősen gyengébbek, különösen a recall mutató esetében. Ez azt jelenti, hogy a modell gyakran nem ismeri fel az outliereket (azaz sok valódi outlier rejtve marad), miközben az in-domain adatok közül kevesebbet kategorizál tévesen outlierként. Ez a trend különösen a Small és az Imbalanced adathalmazok esetén szembetűnő, ahol a recall értékek 0.20–0.37 között mozognak, ennek oka a kevesebb tanítópélda lehet. Ezzel szemben a precision értékek általában jobbak, ami arra utal, hogy a modell által azonosított outlierek nagyobb arányban helyesek, de nem fedi le az összes létező outliert. Ez azért problémás, mert az outlier detection esetében a legfontosabb az outlierek kiszűrése.
Megfigyelhető továbbá az is, hogy osztályozás esetén valóban nem elég csak a modell általános pontossága alapján megítélni a teljesítményét, hiszen magas accuracy érték esetén is előfordulhat, hogy az outlierek kiszűrésében nem nyújt megfelelő teljesítményt.
Ez a baseline megoldás hasznos alapot nyújt a további fejlesztésekhez, például az adatok előfeldolgozásának finomításához, más modellek teszteléséhez vagy a hiperparaméterek optimalizálásához. Az alapmodell kiindulási pontként szolgál majd a további kutatás és fejlesztés során, hogy javítani lehessen az outlier osztályok felismerésének pontosságát és a modell általános teljesítményét.
A CNN (Convolutional Neural Network) egy mély gépi tanulási algoritmus, amit leginkább vizuális adatok feldolgozásához használnak, de felhasználható más feladatokra is, akár természetes nyelvfeldolgozásra is [18].
A CNN természeténél fogva jó választás olyan esetekben, amikor a szavak közvetlen kontextusa hasznos információval bírhat, hiszen a modell szöveges adatok esetén egyszerre egy pár szavas részletet vizsgál, és ebből próbálja megtalálni a mintázatokat. Emiatt a CNN képes lokális minták és szókapcsolatok hatékony felismerésére. A modell ezen tulajdonsága hasznos lehet a kitűzött feladatra is, mert az adatbázis elemzése során megfigyelhető volt, hogy az outlierek gyakran nagyon közel állnak a többi adathoz szókincs tekintetében. Ahhoz, hogy ezt a nehézséget áthidaljuk, segítségünkre lehet egy kontextusra érzékenyebb modell.
A CNN-ek központi eleme a konvolúciós művelet, amely során egy filter egy adott méretű ablakot képez az adatban, és ezen belül elemzi a mintázatokat [19]. A filtert az adatból kiszámolt mátrixon csúsztatják (stride), és minden pozícióban egy elemi műveletek sorozatával kiszámítják az adott részlet reprezentációját. Ez lehetővé teszi, hogy a modell felismerje a különböző mintázatokat az adatok különböző részein, például képeken a vonalakat, sarkokat, szövegeken pedig az összefüggő szókapcsolatokat.
Minden konvolúciós réteg után aktivációs függvényeket alkalmazunk, például a ReLU (Rectified Linear Unit) függvényt vagy a Sigmoid függvényt, amely a negatív értékeket nullára cseréli, ezzel bevezetve a nemlinearitást [19]. Ez lehetővé teszi a modell számára, hogy komplexebb kapcsolatokat tanuljon meg, mivel a lineáris műveletek önmagukban nem elegendőek a bonyolult mintázatok felismerésére.
A következő réteg, a pooling réteg a dimenziócsökkentést szolgálja. Ez a réteg az adatokból kivonja a lényeges információkat, miközben csökkenti az adatok méretét. Az egyik elterjedt pooling módszer, a max pooling például egy adott ablak legnagyobb értékét emeli ki [19].
Végül pedig egy vagy több fully connected réteg található a modell végén, amelyek az előző rétegek által kinyert jellemzőket felhasználva végeznek osztályozást vagy regressziót. Ezek a rétegek biztosítják a kimeneti értékeket.
A CNN-ek tanulási folyamata gradiens alapú optimalizáláson és visszaterjesztésen (backpropagation) alapul [19]. A modell minden egyes rétege visszajelzést kap arról, hogyan kell módosítani a filterek súlyait annak érdekében, hogy az előrejelzések pontosabbak legyenek. Ezáltal a CNN képes automatikusan tanulni a releváns mintázatokat, anélkül hogy előre meghatározott szabályokat kellene követnie. Ez a működési elv tette őket nélkülözhetetlenné számos gépi tanulási alkalmazásban.
Az adatok előfeldolgozására külön figyelmet fordítottam: először olyan formátumba rendezem őket, amely megkönnyíti a konvolúciós műveletek alkalmazását, GloVe vektorok használatával. A GloVe (Global Vectors for Word Representation) egy olyan felügyelet nélküli algoritmus, amelyet szövegek vektoros reprezentációinak kialakítására használnak. Az algoritmus lényege, hogy a korpuszban előforduló szavak közötti globális együtt-előfordulási statisztikákon alapulva határozza meg a szavak közötti kapcsolatok matematikai jellemzőit. Ez azt jelenti, hogy a GloVe nem csak azt veszi figyelembe, hogy egy adott szó milyen más szavakkal fordul elő közvetlenül, hanem azt is, hogy ezek a kapcsolatok a teljes szövegkörnyezetben hogyan alakulnak [20].
A GloVe által létrehozott szóvektorok érdekessége, hogy a szóvektorok közötti különbségek szemantikailag értelmezhetők. Például a szavak GloVe vektorait behelyettesítve a king – man + woman művelet eredményeként egy olyan vektor keletkezik, amely közel áll a queen szó GloVe vektorához [21]. Ezek az összefüggések azért alakulnak ki, mert a GloVe modell a szóközi kapcsolatok mintázatait az egész korpuszból származó statisztikák alapján próbálja megérteni és kinyerni. Ahelyett, hogy csak a közvetlen szomszédos szavakat nézné, a GloVe a szavak közötti globális kapcsolatokat vizsgálja, vagyis azt, hogy a szavak hogyan kapcsolódnak egymáshoz az egész szövegben, így képes felfedezni a szavak közötti rejtett, szélesebb körű mintázatokat is.
Az előfeldolgozás során a GloVe előre betanított vektorkészleteit használtam, mivel ezek széles körben elérhetők és jól általánosítanak különböző nyelvi kontextusokra. Az előre betanított vektorokkal minden egyes szót a megfelelő vektorral helyettesítettem, így a modell közvetlenül képes volt a szavak numerikus reprezentációival dolgozni.
A GloVe alkalmazása tehát biztosította, hogy az előfeldolgozott adatok informatívak legyenek, és a modell számára optimális bemenetként szolgáljanak. Ez különösen fontos volt az osztályozási feladathoz, mivel ezek a magas szintű reprezentációk lehetővé tették a konvolúciós háló számára, hogy gyorsan és hatékonyan tanulja meg az adat mögötti mintázatokat.
A konvolúció során a modell speciális szűrőket használ, amelyek transzformálják a bemeneteket, és ezeket az értékeket nemlineáris aktivációs függvényekkel alakítják át. Az így létrejövő jellemzőket max pooling művelettel sűrítettem, amely a legfontosabb információkat tartja meg, miközben csökkenti az adatmennyiséget.
A modell tanítása során a bemenetekhez tartozó predikciókat a valós címkékkel vetettem össze, és az eltérést egy veszteségfüggvénnyel mértem. Ez az érték irányítja a paraméterek frissítését, hogy a modell egyre pontosabb predikciókat adjon. A tanítási folyamat során folyamatosan mértem a hálózat teljesítményét egy pontossági mutatóval, hogy nyomon követhessem, mennyire képes helyesen osztályozni az adatokat.
A tesztelési szakaszban a modell képességeit a validációs adatokkal értékeltem ki, amelyeket korábban nem látott. Ez a lépés fontos, mert megmutatja, mennyire általánosítható a hálózat teljesítménye a valós környezetben.
A modell tanítását és kiértékelését elvégeztem a felhasznált adatbázis mindegyik verziója segítségével. Az alábbi táblázatban (5. táblázat) láthatóak a modell által elért eredmények a teszt adathalmazokon kiértékelve.
| Precision | Recall | F-score | |
|---|---|---|---|
| Small (macro average) | 0.73 | 0.79 | 0.75 |
| Small (outlier class) | 0.83 | 0.30 | 0.45 |
| Plus (macro average) | 0.76 | 0.83 | 0.78 |
| Plus (outlier class) | 0.87 | 0.35 | 0.50 |
| Imbalanced (macro average) | 0.73 | 0.80 | 0.75 |
| Imbalanced (outlier class) | 0.81 | 0.24 | 0.37 |
5. táblázat: A CNN modell eredményei a különböző adatbázisokon és külön mérve azok outlier osztályain
A Small adathalmaz esetében a modell viszonylag jól teljesített, mivel a precision 0.73, a recall 0.79, és az F-score 0.75 értékeket ért el az összes osztályra mért teljesítmény átlagát figyelembe véve. Ez arra utal, hogy a modell képes volt viszonylag jól felismerni rendszer által támogatott elemeket, miközben a téves pozitív predikciók előfordulása sem volt túl magas. A Small adathalmaz outlier osztályában a precision és a recall közötti különbség magasabb volt az átlagosnál. A precision itt magasabb (0.83), de a recall alacsonyabb (0.30), így a F-score értéke (0.45) is kevesebb lett az átlaghoz képest. Ez arra utal, hogy bár a modell pontosabban ismerte fel az outliereket az átlagos adatoknál, viszont az anomáliák egy jelentős részét nem fedezte fel.
A Plus adatbázis esetében a tanítópéldák számának növelésével sikerült javulást elérni mind az átlagot, mind az anomáliák felismerését tekintve. Bármelyik metrikát a megfelelő párjával összehasonlítva növekedést fedezhetünk fel a Small adatbázishoz képest. A macro átlagot figyelembe véve a modell precision értéke 0.76, a recall 0.83, és az F-score 0.78 lett. Ez azt jelzi, hogy a modell sikeresen képes volt a releváns osztályok elemeinek nagy részét felismerni, miközben az F-score érték magas szinten maradt. Az outlier osztályban hasonló trendeket fedezhetünk fel, a modell precízen azonosította az anomáliákat, de nem fedezte fel az összeset.
Az Imbalanced adatbázis átlagos teljesítménye a Small adatbáziséhoz áll közelebb, a több tanítópélda ellenére. Ez azt mutatja meg, hogy az adatok eloszlásának egyenetlensége megzavarta a modellt. A legnagyobb teljesítménycsökkenés azonban az Imbalanced adatbázis outlier osztályának eredményein figyelhető meg. Ezek az eredmények még a Small adatbázis eredményeinél is rosszabbak lettek, amiből az következtethető, hogy ennél a modellnél nem érdemes kiegyensúlyozatlan adatokat alkalmazni a tanításhoz.
A kísérlet eredményei azt mutatják, hogy a modell teljesítménye jelentősen függ az adatbázis típusától és a tanítópéldák számától. A Small adatbázis esetében a modell jól felismerte az általános osztályokat, de az outlier osztályokban nem volt képes az összes anomáliát felismerni, míg a Plus adatbázisban a több tanítópélda javította a teljesítményt, különösen az átlagos osztályok felismerésében. Az Imbalanced adatbázisban az adatok eloszlásának kiegyensúlyozatlansága rontotta a modell teljesítményét, különösen az outlier osztályban, ahol a precision és recall értékek is alacsonyak maradtak. A kísérlet arra utal, hogy a modell hatékonyságának javítása érdekében fontos lehet figyelembe venni az adatbázisok eloszlását és az osztályok közötti egyensúlyt.
A BERT (Bidirectional Encoder Representations from Transformers) egy új nyelvi reprezentációs modell, amely mély, kétirányú reprezentációkat tanít be úgy, hogy minden rétegben a bal és jobb kontextusra is figyel. A korábbi modellekkel, például az ELMo-val és az OpenAI GPT-vel ellentétben, amelyek egyirányúak, a BERT ezt a korlátozást a Masked Language Model, MLM célfüggvénnyel oldja meg. Ez véletlenszerűen maszkol bizonyos tokeneket a bemenetből, és a modell feladata, hogy a környezeti kontextus alapján előrejelezze azok eredeti értékét [22].
A BERT-et finomhangolásra tervezték, minimális feladatspecifikus módosításokkal képes a természetes nyelvfeldolgozási feladatok széles körében csúcsteljesítményt elérni.
A megadott hiperparaméterek (8. ábra) fontos szerepet játszanak a mélytanulási modellek, például a BERT tanítása során, és mindegyik kulcsfontosságú a modell teljesítménye szempontjából.
| learning_rate | 2e-5 |
| per_device_train_batch_size | 16 |
| num_train_epochs | 8 |
| weight_decay | 0.01 |
8. ábra: A BERT modell tanításához használt paraméterek
A tanulási ráta a modell súlyai frissítésének mértékét határozza meg az optimalizálási lépések során. Ez egy kritikus paraméter, amely közvetlenül befolyásolja a tanulási folyamat hatékonyságát és stabilitását. Az alacsony érték, például a 2e-5, lehetővé teszi a lassú, stabil konvergenciát, amely különösen fontos a már előre betanított modellek, például a BERT finomhangolása során. A túl magas tanulási ráta gyors, de instabil tanuláshoz vezethet, ami akár azt is eredményezheti, hogy a modell nem képes a globális optimum elérésére, míg a túl alacsony érték a tanulás rendkívüli lassulását okozhatja.
A batch mérete szintén fontos szerepet játszik a tanulási folyamatban. Egy batch az egyszerre feldolgozott minták halmaza, amely befolyásolja a modell frissítési gyakoriságát és a memóriahasználatot. A 16-os batch méret egy gyakorlati kompromisszum, amely egyensúlyt teremt a memóriaigény és a számítási hatékonyság között. Kis batch méret esetén a modell frissítései zajosabbak lehetnek, ami jobb általánosítást eredményezhet, de nagyobb számítási erőforrások esetén a nagyobb batch méretek gyorsabb konvergenciát és stabilabb tanulási folyamatot biztosíthatnak.
Az epochok száma azt határozza meg, hogy a tanító adathalmazt hányszor dolgozza fel a modell a tanítás során. Az epochok számának megválasztása kulcsfontosságú, mivel túl kevés epoch esetén a modell alultanult maradhat, és nem tanulja meg a mintázatokat, míg túl sok epoch túltanuláshoz vezethet, ami rontja az általánosítási képességet. A megfelelő epoch-szám meghatározása általában kísérletezést igényel, és a tanító adathalmaz méretétől, valamint a modell komplexitásától függ. Az általam használt 8 epoch lehetőséget biztosított arra, hogy a modell többször lássa az adatokat, ugyanakkor korlátozta a túlzott tanulást, így egyensúlyban tartva a teljesítményt és az erőforrás-felhasználást.
A weight decay egy regularizációs technika, amely csökkenti a modell súlyait az optimalizálási lépések során. Ez segít megelőzni a túltanulást, mivel a modell kevésbé lesz hajlamos az adathalmazhoz való túlzott alkalmazkodásra. A 0.01-es weight decay érték egy mérsékelt szabályozást jelent, amely elegendő ahhoz, hogy általánosabb modellt kapjunk, miközben minimalizálja a veszteség értékét. A weight decay különösen hasznos nagy kapacitású modelleknél, mint a BERT, mivel ezek hajlamosak túltanulni a tanító adatokhoz, ha nincs megfelelő regularizáció.
A tanulási folyamat során a fent említett paraméterek meghatározása és finomhangolása jelentős hatással van a modell teljesítményére. A BERT modell esetében a finomhangolás rendkívül erőforrás-igényes, mivel a modell előzetesen betanított állapota és nagy mérete miatt az egyes iterációk számítása jelentős számítási kapacitást igényel. Erőforrás-korlátozások miatt 8 epochra korlátoztam a tanulás hosszát, amely elegendőnek bizonyult ahhoz, hogy a modell megfelelően általánosítson, és jó eredményeket érjen el.
Összességében a paraméterek helyes kiválasztása és finomhangolása elengedhetetlen a BERT modell sikeres alkalmazásához. A tanulási ráta, a batch méret, az epochok száma és a weight decay mind-mind olyan tényezők, amelyek jelentősen befolyásolják a modell teljesítményét, és fontos szerepet játszanak abban, hogy a modell képes legyen általánosítani a tanító adathalmaz mintázatait az új adatokra is.
9. ábra: A BERT modell Training Loss függvényei a különböző adatbázisokon. A képek a balról jobbra: a small, az imbalanced és a plus adatbázis tanulását ábrázolják.
A Small eset a legkisebb adathalmazt reprezentálja a három közül, amely gyors veszteségcsökkenést mutat, de a modell tanulási képessége korlátozott lehet a kisebb adatmennyiség miatt (9. ábra).
A Plus eset a legoptimálisabb mindhárom közül, mivel a nagyobb adathalmaz elősegíti a veszteség hatékony csökkenését, miközben a modell stabilizálódása az epoch-ok végére kiegyensúlyozott tanulási folyamatot jelez (9. ábra). A Plus eset a legstabilabb eredményeket érheti el a három közül.
| Accuracy | |
|---|---|
| Small | 0.85 |
| Plus | 0.89 |
| Imbalanced | 0.85 |
6. táblázat: Accuracy értékek a BERT modell esetében
Elsőként az accuracy mérőszámot értékeltem ki (6. táblázat), ami gyorsan és egyszerűen összefoglalja a modell teljesítményét a különböző adatbázisok esetében. Megfigyelhető, hogy a sok adatnak köszönhetően a plus adatbázison teljesített a legjobban a modell. Az eredmények alapján elmondható, hogy az adatok kiegyensúlyozatlansága nem befolyásolta az accuracy értékét a BERT esetében.
| Precision | Recall | F-score | |
|---|---|---|---|
| Small (macro average) | 0.85 | 0.94 | 0.89 |
| Small (outlier class) | 0.97 | 0.43 | 0.59 |
| Plus (macro average) | 0.89 | 0.95 | 0.92 |
| Plus (outlier class) | 0.97 | 0.60 | 0.74 |
| Imbalanced (macro average) | 0.86 | 0.94 | 0.89 |
| Imbalanced (outlier class) | 0.97 | 0.45 | 0.61 |
7. táblázat: BERT modell eredményei
A 7. táblázatban szemléltetett eredmények alapján a modell jól teljesít a Small adatbázis esetén, a magas recall érték (0.94) azt jelzi, hogy a modell képes jól azonosítani a pozitív példákat, míg a precision érték 0.85 mutatja, hogy a pozitív előrejelzések megbízhatósága is elég magas. Az F-score 0.89, amely a kettő közötti jó egyensúlyt jelzi. Az outlier osztály esetében a precision rendkívül magas (0.97), ami azt jelenti, hogy amikor a modell a Small (outlier class) osztályt jósolja, az szinte mindig helyes. Azonban a recall alacsony (0.43), ami azt jelzi, hogy sok esetben nem ismeri fel az összes valódi outlier-t. Ez a kiegyensúlyozatlanság az F-score-ban is tükröződik, amely 0.59-re csökkent.
A Plus adatbázis használata mellett a modell nagyon jól teljesít, a precision és recall értékek magasak, ami azt jelenti, hogy a pozitív osztály előrejelzései nagyon pontosak és széleskörűen fedezik a valódi pozitív példákat is. Az F-score érték 0.92, amely szintén azt mutatja, hogy a két metrika között jó az egyensúly. A Plus (outlier class) osztály esetében is magas a precision (0.97), de a recall a több tanítópélda ellenére is csak 0.60, ami arra utal, hogy bár a modell képes a pozitív esetek felismerésére, még mindig nem azonosítja az összes valós outlier-t. Az F-score érték itt jelentős javulást mutat (0.74).
Az Imbalanced adatbázis esetében a modell általánosságban jó teljesítményt mutat a precision, recall és F-score terén is, amely arra utal, hogy az osztályok közötti egyensúlytalanság nem okoz problémát a modellnek. Az outlier osztály esetében a modell szintén magas precision-t mutat (0.97), de a recall alacsony (0.45), ami azt jelzi, hogy bár a modell képes azonosítani a valódi pozitív esetek egy részét, sok pozitív mintát nem képes felismerni.
Az outlier detection egyik legnagyobb kihívása, hogy az algoritmusokat jellemzően címkézetlen adatokon kell tanítani, így a felügyelet nélküli tanulási megközelítések jöhetnek csak szóba [23]. A megfelelő kiindulási adatbázis létrehozása azért jelent problémát, mert az anomáliák azonosítása és címkézése egy adathalmazon belül rendkívül időigényes és munkaigényes folyamat, amely jelentős szakértelmet és erőforrásokat igényel. Ennek következtében ritkán állnak rendelkezésre nagy, tiszta és pontosan címkézett adathalmazok, amelyek megkönnyítenék a felügyelet alapú módszerek alkalmazását. Emiatt a kutatók és fejlesztők gyakran kényszerülnek az adatokban rejlő mintázatok önálló felfedezésére és az anomáliák automatikus detektálására alkalmas algoritmusok kidolgozására.
Ezen kihívások leküzdésére születtek meg olyan speciális felügyelet nélküli algoritmusok, mint például a One Class SVM, amelyek kifejezetten az outlier detection problémájának megoldását célozzák meg [24]. Ezek a modellek úgy működnek, hogy a címkézetlen adathalmazban rejlő mintázatok felfedezésére és elemzésére összpontosítanak, anélkül hogy címkézett adatokat igényelnének. A One Class SVM például a normál osztály jellemzőinek tanulására összpontosít, azzal a céllal, hogy minden olyan adatpontot, amely eltér ezektől a mintázatoktól, anomáliaként ismerjen fel.
A címkézett adatok hiánya miatt ez a feladat lényegesen nehezebb, mint a felügyelt tanítás melletti osztályozási feladatok, ezt általában az eredmények is tükrözik. A nehézségek ellenére azért fontos ezzel foglalkozni, hogy reális képet kapjunk a valóságban általában elérhető erőforrások használatáról.
A One Class SVM modell bemenetként vektorokat vár, ezért a stringek vektorizálására két különböző módszert is leteszteltem. Az első, a CountVectorizer egy viszonylag egyszerű, de hatékony módszer a szövegek vektorizálására, amely a Bag of Words (BoW) algoritmus egyik megvalósítása. A CountVectorizer célja, hogy a szövegeket vektorokká alakítsa, melyek az egyes szavak előfordulási gyakoriságát tükrözik.
Az algoritmus első lépésként a bemeneti szövegek teljes korpuszából létrehoz egy szókincset. Ez a szókincs tartalmazza az összes egyedi szót, amely valaha előfordult az adathalmaz szövegeiben, és ez képezi a BoW reprezentáció alapját. Ezután az egyes szövegekhez olyan vektort rendel, amelynek elemei a szókincs szavainak előfordulási számát reprezentálják az adott szövegben.
A BoW megközelítés lényege, hogy figyelmen kívül hagyja a szavak sorrendjét, és csupán az előfordulási gyakoriságot veszi figyelembe. Ez egy egyszerű, de hatékony módja annak, hogy a szövegeket numerikus formába alakítsuk, amely gépi tanulási algoritmusokkal tovább feldolgozható.
A CountVectorizer tehát egy gyors és egyszerű megközelítés, azonban az olyan feladatok esetében, mint az outlier detection, ahol finomabb nyelvi mintázatok felismerésére van szükség, előfordulhat, hogy nem elegendő. Ezért teszteltem egy fejlettebb módszert is, a SentenceTransformer-t, amely képes figyelembe venni a szövegek mélyebb kontextusát és szemantikáját.
A Sentence Transformers egy fejlett nyelvi modellcsalád, amelyet kifejezetten a mondatok és szövegrészek mélyebb és kontextuálisabb reprezentációjának létrehozására terveztek. Az alapjukat a transformer architektúrák, például a BERT vagy a RoBERTa modellek adják, amelyeket továbbfejlesztettek, hogy a mondat- és dokumentumszintű szemantikai reprezentációkat hatékonyan kezeljék [25]. Ezek a modellek különösen hasznosak olyan feladatokban, ahol a szövegek közötti hasonlóság vagy reláció az elemzés alapja, mint ahogyan az anomáliák detektálásánál is.
A Sentence Transformers a bemeneti szövegeket mély neurális hálózatokon keresztül dolgozza fel, hogy előállítsa azok dense embedding reprezentációját [25]. Ez azt jelenti, hogy a szövegeket egy rögzített méretű numerikus vektorrá alakítják, amely a szöveg szemantikai jelentését és kontextusát tükrözi. Ezek a vektorok a gépi tanulási modellek – például a One Class SVM – bemeneteként szolgálnak.
Ahhoz, hogy optimalizáljam a One Class SVM modell paramétereit, a lehetséges paramétereket teszteltem a validációs adathalmazon. A következő paraméterek használata mellett kaptam a legjobb eredményeket: nu=0.1, gamma='scale', kernel='poly'.
Ezekkel a paraméterekkel futtattam a mind a Count Vectorizer-t, mind a Sentence Transformer-t használó verziót is a legkisebb adatbázison.
10.ábra: Tévesztési mátrix a small adatbázis esetén, Count Vectorizer alkalmazása mellett
A modelleket kiértékeltem, és létrehoztam mindkettőhöz egy tévesztési mátrixot is (10. és 11. ábra), amin látszanak a helyesen és helytelenül jósolt adatok számai. Az ábrákon az outliereket a Class -1 reprezentálja, a Class 1 pedig az támogatott adatokat jelöli. Megfigyelhető, hogy SentenceTransformer használatával javultak az eredmények, a modell több outliert fedezett fel és kevesebbet jósolt hibásan outliernek, emiatt ezt használtam fel a többi adatbázis előfeldolgozása során.
11. ábra: Tévesztési mátrix a small adatbázis eredményei alapján Sentence Transformer használatával
| Precision | Recall | F-score | |
|---|---|---|---|
| Small (1) | 0.87 | 0.85 | 0.86 |
| Small (-1) | 0.39 | 0.42 | 0.40 |
| Plus (1) | 0.87 | 0.87 | 0.87 |
| Plus (-1) | 0.41 | 0.40 | 0.40 |
| Imbalanced (1) | 0.87 | 0.87 | 0.87 |
| Imbalanced (-1) | 0.41 | 0.41 | 0.41 |
8. táblázat: Eredmények a OneClassSVM modell felhasználásával
Miután meghatároztam az optimális paramétereket és előfeldolgozási lépéseket, a modellt lefuttattam mindhárom adatbázissal, hogy összehasonlítsam az eredményeket (8.táblázat). Az eredmények alapján jól látható, hogy az algoritmus a Small, Plus, és Imbalanced adatbázisokon a normál osztályra vonatkozóan konzisztensen magas teljesítményt nyújtott. A Precision, Recall, és F-score értékek mindhárom esetben 0.87 körül alakultak, ami azt jelzi, hogy a modell megbízhatóan képes azonosítani a normál adatokat.
Az outlier class esetében azonban a teljesítmény jelentősen alacsonyabb volt. Mindhárom adatbázisnál a Precision, Recall, és F-score értékek 0.40 körül mozogtak. Ez arra utal, hogy az anomáliák felismerése és pontos azonosítása továbbra is kihívást jelent a modell számára, még a paraméterek optimalizálása után is.
Az egyes adatbázisok között minimális különbségeket figyelhetünk meg. A Small, Plus, és Imbalanced adatbázisokon az eredmények közel azonosak, ami arra utal, hogy az előfeldolgozási lépések és a modell paraméterbeállításai általánosan alkalmazhatók.
Az eredmények elemzésekor fontos figyelembe venni, hogy a feladatot címkézetlen adatokon végeztük el, ami jelentősen megnehezítette az anomáliák pontos azonosítását. Mivel nem álltak rendelkezésre előre címkézett adatok, a modell kizárólag a normál adatpontok mintázatainak tanulására támaszkodhatott, és ennek alapján kellett azonosítania az outliereket.
Ez a felügyelet nélküli megközelítés természeténél fogva kevésbé hatékony az anomáliák osztályozásában, mivel a nem állt a modell rendelkezésére példa az outlier osztályból.
Az alacsonyabb F-score az outlier osztály esetében jól tükrözi ezt a kihívást. A címkézetlen adatok miatt a modell gyakrabban tévedett, akár normál adatokat sorolt az anomáliák közé, akár fordítva, mivel nem volt elegendő információja a tényleges anomáliák egyértelmű felismeréséhez. Ez a korlátozás különösen azokban az esetekben jelentkezik, amikor az anomáliák viszonylag ritkák és hasonlóak a normál adatokhoz.
Az Isolation Forest egy döntési fákon alapuló struktúra, ami az anomáliák hatékony elkülönítését teszi lehetővé. Az Isolation Forest algoritmus különlegessége abban rejlik, hogy az outlierek izolációjára összpontosít, nem pedig a sűrűség vagy távolság alapján vizsgálja az adatokat, mint sok hagyományos algoritmus. Az alapgondolat az, hogy az anomáliák, a különbségeik miatt, közelebb kerülnek a fa gyökeréhez, míg a normál adatpontok mélyebben helyezkednek el a fában [26].
Az Isolation Forest a One Class SVM-hez hasonlóan egy felügyelet nélküli modell, ami címkézetlen adatokkal dolgozik.
A paramétereket (12. ábra) a validációs adathalmazon optimalizáltam, hogy minél pontosabb modellt hozhassak létre.
| random_state | 42 |
| contamination | 0.2 |
| max_features | 1 |
| max_samples | 300 |
| n_estimators | 100 |
12. ábra: Az Isolation Forest modell optimalizálása során kapott paraméterek
A random_state paraméter biztosítja az eredmények reprodukálhatóságát. Egy adott fix szám megadásával az algoritmus minden futáskor ugyanazokat a véletlenszerű döntéseket hozza, így lehetővé válik az eredmények összehasonlíthatósága.
A contamination paraméter az adathalmazban várható anomáliák arányát adja meg. Az értéke 0.2, tehát a modell azt feltételezi, hogy az adatpontok 20%-a anomália. Ez a paraméter kulcsfontosságú az anomáliák osztályozásához, mivel ennek alapján állítja be az anomália küszöbértékét. Azért választottam ezt az értéket, mert a teszt adatbázisok körülbelül ilyen arányban tartalmaznak outliereket. Teszteltem a modell egy olyan verzióját is, ahol pontosan kiszámoltam az outlierek arányát és ezt az értéket adtam meg a contamination paraméterként, viszont ez csökkentette a felismert outlierek számát.
A max_features paraméter azt határozza meg, hogy a rendelkezésre álló jellemzők mekkora hányadát használja fel a modell. Az értéke 1,0 azt jelenti, hogy minden jellemző figyelembevételre kerül, ami növeli a modell pontosságát, bár számítási szempontból költségesebb lehet.
A max_samples paraméter az egyes döntési fák építéséhez használt minták maximális számát szabja meg. Az érték 300, tehát minden fa építésekor legfeljebb 300 adatpontot választ ki. Ez lehetővé teszi az algoritmus gyorsabb működését, különösen nagy adathalmazok esetén.
A n_estimators paraméter határozza meg a döntési fák számát. A 100 fa használata egyensúlyt teremt a modell stabilitása és a számítási idő között, mivel több fa általában pontosabb és megbízhatóbb eredményeket eredményez.
Ezek a paraméterek együttműködve szabályozzák az Isolation Forest algoritmus teljesítményét. A contamination az anomáliák arányának pontosabb felismerését segíti, míg a max_features és a max_samples a számítási költségeket optimalizálják. A random_state paraméter az eredmények stabilitására van hatással.
Az eredmények alapján (9. táblázat) megfigyelhető, hogy a normál osztályt mindegyik adatbázis esetén nagyobb pontossággal ismerte fel a modell. Ez várható volt, mert a modell felügyelet nélkül tanult, így nem látott példákat az outlierekre, csak a normál adatok mintázatait próbálta megtanulni. A több tanító adat az Isolation Forest esetében is javította az eredményeket, de az Imbalanced adatbázissal tanítva a modell a Small adathalmazhoz hasonló eredményeket ért el több adat ellenére. Ez azt jelenti, hogy a modell érzékeny az adatok kiegyensúlyozatlanságára.
Az outlierek körében a recall értéke magasabb, mint a precision értéke, tehát a modell jobban koncentrál az outlierek minél nagyobb arányú megtalálására, mint a predikciók pontosságára.
| Precision | Recall | F-score | |
|---|---|---|---|
| Small (1) | 0.84 | 0.78 | 0.81 |
| Small (-1) | 0.26 | 0.35 | 0.30 |
| Plus (1) | 0.85 | 0.79 | 0.82 |
| Plus (-1) | 0.28 | 0.37 | 0.32 |
| Imbalanced (1) | 0.84 | 0.81 | 0.83 |
| Imbalanced (-1) | 0.28 | 0.33 | 0.30 |
9. táblázat: Eredmények az Isolation Forest modell felhasználásával, F-score metrikára optimalizálva
Az Isolation Forest modell volt az egyetlen a kipróbált modellek közül, ahol az outlierek körében a recall értéke rendre magasabb lett, mint a precisioné, ezért megpróbáltam az F-score mellett a recall metrikára is optimalizálni, hogy milyen magas értéket sikerül elérni.
A contamination paraméter nagyobb értékre (maximum 0.5 lehetséges) állításával lehetséges a modellt a lehető legtöbb outlier megtalálására (magasabb recall érték) késztetni, mert ezzel a beállítással a lehető legkisebbre állítjuk a küszöbértéket, ami az outlier predikció megszületéséhez szükséges. Ahhoz, hogy ezt a paramétert megfelelően állítsuk be, azt is figyelembe kell venni, hogy a modellnek milyen felhasználása lesz a gyakorlatban. Ha az outlierek felfedezése kritikus fontosságú, akkor érdemes a contamination értékét magasabbra állítani, mint az adatbázisban megtalálható outlierek valódi aránya.
| Precision | Recall | F-score | |
|---|---|---|---|
| Small (1) | 0.88 | 0.50 | 0.64 |
| Small (-1) | 0.24 | 0.70 | 0.35 |
| Plus (1) | 0.90 | 0.51 | 0.65 |
| Plus (-1) | 0.25 | 0.74 | 0.37 |
| Imbalanced (1) | 0.88 | 0.53 | 0.66 |
| Imbalanced (-1) | 0.24 | 0.68 | 0.36 |
10. táblázat: Eredmények az Isolation Forest modell felhasználásával, Recall metrikára optimalizálva
Recall metrikára optimalizálva az outlierek akár 74%-át meg tudta találni a modell (a Plus adatbázison tanítva), míg az F-score metrikát fókuszba helyezve a felfedezett outlierek aránya ugyanezen az adatbázison csak 37% volt. Az eredmények hasonlóan viszonyultak egymáshoz, mint az első kísérletnél, a nagyobb adathalmaz érte el a legjobb eredményeket, az Imbalanced adatbázis pedig összezavarta a modellt. A magas outlier recall értékhez viszont magas ár is tartozott, a normál osztályok recall értékei drasztikusan csökkentek az előző paraméterezéshez képest.
Azt, hogy melyik az optimálisabb paraméterezés, a konkrét felhasználás határozza meg. Ha például egy chatbotot fejlesztünk, aminek az a dolga, hogy a felhasználók kérdéseire válaszoljon, érdemesebb lehet az F-score metrikára optimalizálni, hiszen felhasználói szempontból nem szívesen beszélgetnénk egy olyan chatbottal, ami a kérdéseink nagy részére nem hajlandó válaszolni. Azonban olyan esetekben, ahol az outlierek felfedezése a fő célunk, hasznos lehet a recall metrikát előtérbe helyezni.
Létrehoztam két ábrát (13. és 14. ábra), amin összehasonlítottam a felhasznált modellek teljesítményét. A modelleket aszerint csoportosítottam, hogy címkézett vagy címkézetlen adatokon tanítottam őket. Ezt a két csoportot külön-külön összegeztem, mert a felügyelet nélküli modellek lényegesen nehezebb feladatot oldanak meg, mint a felügyelt tanítással tanított modellek. Az eredmények alapján jól látszik, hogy a felügyelt modellek általában jobb teljesítményt nyújtottak, mivel a címkézett adatok közvetlenül irányítják a tanulási folyamatot, így esetükben az F-score értékek magasabbak lettek. Ezzel szemben a felügyelet nélküli modellek esetében az eredmények vegyesek, hiszen ezek a modellek saját maguk próbálják felfedezni az adatok közötti mintázatokat.
Az összehasonlítás alapjaként az F-score metrikát választottam, mert ez az érték egyensúlyt jelent a recall és a precision metrikák között.
13. ábra: A felügyelt tanítással tanított modellek eredményeinek összehasonlítása
Az SGD modell hatékonyan ismerte fel a normál adatpontokat, azonban az anomáliák megtalálása már jelentősen nagyobb kihívásnak bizonyult a modell számára. Ugyan a tanító adatbázis méretének növelésével javulás volt tapasztalható, de outlierek terén még így is az SGD modell teljesített a legrosszabbul a három modell közül. A modell érzékeny volt a kiegyensúlyozatlan adatokra, hiszen az Imbalanced adatbázis nagyobb mérete ellenére rosszabb teljesítményt ért el rajta, mint a Small adatbázis kevesebb, de kiegyensúlyozott adatán. Megfigyelhető, hogy ez az érzékenység sokkal drasztikusabban van jelen az outlierek körében, mint az átlagos teljesítmény esetében.
A CNN modell esetében az outlierek terén jobb teljesítmény figyelhető meg, mint az SGD modell használata mellett, viszont a modell átlagos teljesítménye elmarad az SGD modell átlagos teljesítményétől. A tanítóadatok számának növelése itt is javulást hozott, kiváltképp az outlier osztály esetén. Az SGD modellhez hasonlóan a CNN modell is kevésbé hatékonyan detektálta az outliereket kiegyensúlyozott tanítóadatok mellett.
A BERT minden szempontból felülmúlta a másik két modellt, javított az átlagos teljesítményen és az outliereket is hatékonyabban ismerte fel. A másik két modellel ellentétben a BERT hatékonysága nem csökkent kiegyensúlyozatlan adatok mellett, sőt némelyik osztályban (például az outlier osztályban is) javulás volt megfigyelhető a Small adatbázishoz képest. Ez valószínűleg annak köszönhető, hogy az Imbalanced adatbázis nagyobb mennyiségű tanítóadattal rendelkezik, mint a Small, még ha azok kiegyensúlyozatlanok is.
14. ábra: A felügyelet nélküli tanulással tanított modellek eredményeinek összehasonlítása
A felügyelet nélkül tanított modellek eredményei összességében elmaradnak a címkézett adatokon tanított modellek teljesítményétől, mivel ezek az algoritmusok nem kapnak explicit útmutatást az osztályok elkülönítésére. Ennek ellenére gyakorlati szempontból rendkívül hasznosak, különösen olyan helyzetekben, ahol az outlierekre elegendő címkézett példa nem áll rendelkezésre. Az outlierek azonosítása már önmagában is egy rendkívül komplex feladat, hiszen ezek az anomáliák gyakran rendkívül változatosak, és nehéz teljes körű példákkal lefedni őket. Az ilyen modelleket ezért úgy fejlesztették ki, hogy a kevés tanítóadatot hatékonyan használják fel, és a normál adatok mintázatait tanulják meg, ami lehetővé teszi az anomáliák azonosítását a tanításhoz nem használt minták között is.
Az Isolation Forest modell két különböző verzióját vizsgáltam: az egyik az átlagos F-score metrikára volt optimalizálva, míg a másik az outlier osztály Recall értékére. Az átlagos F-score metrikára optimalizált modell magasabb általános teljesítményt ért el, mivel egyensúlyt tartott a normál és az outlier osztályok között. Ugyanakkor az outlier osztály Recall metrikájára fókuszáló verzió kifejezetten az anomáliák felismerésében mutatott jobb eredményeket, ami bizonyos alkalmazásokban kiemelten fontos lehet, például biztonsági rendszerekben vagy egészségügyi diagnosztikában, ahol az anomáliák észlelése prioritást élvez. Az Isolation Forest modellek mindkét verziójánál megfigyelhető, hogy a tanítóadatok mennyiségének növelése jobb teljesítményt eredményezett, miközben a kiegyensúlyozatlan adatok sem zavarták meg a modellt. Ez a robusztusság különösen értékes olyan alkalmazásokban, ahol az adatok előkészítése nem biztosítja az osztályok egyenletes eloszlását.
A One Class SVM modell kiemelkedő eredményeket ért el a felügyelet nélküli algoritmusok között, és mind a normál, mind az outlier osztály F-score értéke a legmagasabb volt az általam vizsgált modellek közül. Ez a modell nem mutatott jelentős javulást nagyobb adatmennyiséggel, ami azt jelenti, hogy kisebb mennyiségű tanítóadat esetén is képes kimagasló eredmények elérésére. Ez előnyt jelent olyan helyzetekben, ahol az adatgyűjtés vagy előkészítés korlátozott, illetve időigényes. A One Class SVM ilyen szempontból költséghatékonyabb és gyorsabb alternatívát kínál, miközben a pontossága sem csökken.
Az Isolation Forest és a One Class SVM modellek egyaránt jól teljesítettek kiegyensúlyozatlan adatokkal, ami azt jelzi, hogy nem érzékenyek az osztályok eloszlásának torzítására. Ez rendkívül fontos olyan helyzetekben, ahol nem áll rendelkezésre tökéletesen kiegyensúlyozott adatbázis, például valós idejű alkalmazásokban vagy nehezen hozzáférhető adatok esetén. Továbbá mindkét modell az anomália detektálás szempontjából hasznosnak bizonyult, mivel hatékonyan tanulták meg a normál adatok mintázatait, és azonosították az ezektől eltérő mintákat.
A CNN modell vegyes teljesítményt mutat: az általa elért recall értékek közepes szinten mozognak a többi modellhez képest. Leolvasható az ábráról az is, hogy a CNN-hez képest a One Class SVM többször azonosította az outliereket, annak ellenére, hogy az egy felügyelet nélküli megoldás.
A felügyelt tanulási modellek közül az SGD modell a leggyengébb, különösen az outlierek azonosítása terén. Ez a modell érzékenyebb az adatok kiegyensúlyozatlanságára, amit a grafikonon látható szűkebb és alacsonyabb eloszlás is megerősít.
A felügyelet nélküli tanítású modellek közül a One Class SVM teljesít a legjobban, recall értékei meghaladják az átlagos F-score értékre optimalizált Isolation Forest modell értékeit. Ez a módszer különösen hasznosnak bizonyul azokban az esetekben, amikor kevés adat áll rendelkezésre, és az osztályok közötti egyensúly nem biztosított. A One Class SVM esetében látható a legkisebb eltérés a recall értékek között, ez is a modell megbízhatóságát mutatja a különböző adatbázisok esetében.
Az Isolation Forest modell F-score verziójának recall értékei közepes szinten helyezkednek el, míg az outlier osztályra fókuszáló verzió érte el az összes modell közül a legmagasabb recall értéket. Ez a modell még a BERT-et is megelőzte recall terén. A magas recall érték elérése azonban a többi metrikán erősen meglátszik, így a legtöbb gyakorlati esetben még mindig a BERT modell felhasználása lenne optimális.
A grafikon jól szemlélteti, hogy a felügyelet nélkül tanított modellek recall értékei általában elmaradnak a felügyelt tanulási modellek teljesítményétől. Ez nem meglepő, hiszen a címkézett adatokkal dolgozó modellek könnyebben képesek azonosítani az osztályokat. Ugyanakkor a felügyelet nélküli modellek, különösen a One Class SVM, még így is értékes eszközök lehetnek olyan helyzetekben, ahol a tanítóadatok korlátozottak. A grafikon azt is megmutatja, hogy a nagyobb adatmennyiség jelentős hatással lehet a recall értékekre, különösen az outlierek felismerése esetében.
15. ábra: Az összes modell recall értékei az outlier osztályra nézve a különböző adatbázisokat alkalmazva
A következő grafikon, amit elkészítettem a modellek által elért recall értékek összehasonlítását mutatja (15. ábra). A recall metrika az outlier detection során az egyik legfontosabb metrika, amely azt jelzi, hogy az adott modell milyen hatékonysággal képes felismerni az anomáliákat. A grafikonon a modellek Recall értékei violin diagram formájában jelennek meg, ami lehetővé teszi az eloszlás és a különböző értékek közötti eltérések szemléltetését.
A felügyelt tanítású modellek közül a BERT modell tűnik ki, amely messze a legjobb recall értékkel rendelkezik. Ez azt mutatja, hogy a BERT nemcsak az általános teljesítményben, hanem az outlierek azonosításában is az egyik leghatékonyabb. A grafikonon látható, hogy a BERT modell recall értékei a legszélesebb tartományt ölelik fel, ami azért van, mert a BERT modell teljesítménye erősen nőtt a több tanítóadat felhasználásával.
Az eredmények összegzéseként elmondható, hogy bár a felügyelet nélkül tanított modellek teljesítménye alacsonyabb a felügyelt modellekhez képest, a kevés tanítóadatra és a kiegyensúlyozatlan adatokra való érzéketlenségük kiemelkedően hasznossá teszi őket a gyakorlatban. Az Isolation Forest rugalmassága az optimalizáció terén lehetővé teszi a különböző alkalmazásokhoz való igazítást, míg a One Class SVM gyors és hatékony megoldást kínál kisebb adathalmazokkal is, így mindkét modell erőteljes eszköz az outlier detektálásban.
Mindhárom felügyelt modellnél megfigyelhető, hogy a tanítóadatok számának növelése javítja a teljesítményt, különösen az outlierek felismerésében. Az SGD és a CNN modellek is jobban teljesítettek, amikor több adatot használtak, és az outlier osztályok felismerése is javult. Ugyanakkor ez a két modell érzékenyebbnek bizonyult a kiegyensúlyozatlan adatokra, mint a BERT modell.
Összességében a legjobb teljesítményt a BERT modell nyújtotta, de a valódi felhasználások esetén nem mindig áll rendelkezésünkre megfelelő mennyiségű adat egy ilyen nagy modell tanításához. Ilyenkor érdemes lehet egy felügyelet nélkül tanított modellt felhasználni.