Fakulta informačních technologií VUT Brno Předmět: Projekt: SRE Srovnání klasifikátorů Autor : Jakub Mahdal Login: xmahda03 Datum: 9.12.2006 Zadání Vyberte si jakékoliv 2 klasifikátory, např. GMM vs. neuronová síť, a srovnejte je na Vámi vybrané úloze. Vypracovany projekt se sklada z pisemne zpravy v rozsahu jednotek stran A4, a z presentace (cca 10 min) na posledni prednasce. Zpravu je nutne odevzdat do konce semestru. Popis klasifikátorů Co je to klasifikátor? Pokud bych mohl odpovědět jednoduše dvěma slovy, jedná se třídič informací. Řečeno více formálně: Klasifikační metody jsou metody na třídění vstupních dat do konečného počtu tříd pomocí určitých algoritmů. Tyto algoritmy mohou být jednoduché - třídit na základě jednoduchých třídících pravidel až po složité funkce, které využívají mechanismů strojového učení např. na bázi neuronových sítí nebo rozhodovacích stromů. V nejobecnějším pohledu bychom mohli klasifikátory roztřídit na pevné a učenlivé. Použití klasifikátorů Klasifikátory mají velmi široké pole využití nejen ve výpočetní technice. Používají se při dolování dat z databází, rozpoznávání jazyka, obrazů, videa, ve zpracování signálů případně v korekcí chyb. Z neinformatických oblastí vhodné jmenovat např. předpovědi chování finančních trhů. Teoretický popis testovaných klasifikátorů SVM (Support Vector Machines) SVM je typický algoritmus strojového učení, hledající nadrovinu, která v prostoru příznaků optimálně rozděluje trénovací data. Jedná se tedy o hledání maximalizace vzdálenosti rozdělující nadroviny klasifikátoru k bodům z trénovací množiny - tato vzdálenost se nazývá margin. Pro vysvětlenou prakticky:
Ilustrace: Podpůrné vektory Cílem metody SVM je rozdělení vzorků do tříd na základě lineární funkce. Ne vždy se však povede vstupní vzorky oddělit tak jednodduše, jako v ilustraci 1. Uvažujme tedy příklad z 3. ilustrace vstupních dat. Síla metody SVM tkví v možnosti převést vstupní data do vyšší dimenze a oddělit je lineárně v naddimenzi (pro náš případ oddělit body v kruhu plochou vedenou mezi body sdruženými v kruh a body tvořícím mezikruží). SVM podle názvu pracuje se sadou tzv. podpůrných vektorů (support vector), což jsou vstupní vektory, jejichž funkcí je podpora oddělovací nadroviny, která na nich spočívá. Jak je uvedeno v ilustraci, podpůrné vektory jsou zakroužkovány. GMM / EM Pro klasifikaci se často používá statistické rozpoznávání vzorů, vycházející z předpokladu, že modely stejných tříd mohou mít některé podobné statistické vlastnosti. Takovou techniku využívá také GMM, který modeluje hledané třídy pomocí směsí gaussovských funkcí. Ilustrace: GMM EM (Expectation maximization) je obecný iterativnıí algoritmus pro nalezení Maximum likelihood odhadu parametrů pravděpodobnostních modelů, přičemž model závisí na tzv. skrytách proměnných. Tato technika je hojně využívaná právě při rozpoznávání řeči.
Perceptron (lineární) Princip funkce neuronů je velmi podobný úloze o klasifikaci. Skutečný neuron živých organismů se skládá z těla, dendritů, které plní funkci vstupů do neuronu a axomu, který je výstupem z neuronu. Model neuronu používaný pro neuronové sítě bývá navržen tak, aby byl co nejjednodušší. Pro naše potřeby lineární klasifikace je potřeba najít pomocí perceptronu diskriminační funkci, která odděluje vstupní vektory. Ilustrace: Model perceptronu Ilustrace: Klasifikace Postup získávání výsledné hraniční přímky je iterativní a sleduje nejlepší výsledek, ke kterému se snaží konvergovat. V praxi existuje několik způsobů učení. Často vycházejí z hodnoty chybové funkce, která zobrazuje vzdálenost mezi aktuální a cílovou hodnotou výstupu (tzv. hammingova metrika). Postup práce Původně jsem se po bližší konzultaci s cvičícími rozhodl srovnávat klasifikátory GMM (gaussian mixture model) a SVM (Support vector machines) na příkladu trénování rozpoznávání řečníka. Sehnal jsem proto knihovnu HTK ze zdroje: http://htk.eng.cam.ac.uk/ a LibSVM www.csie.ntu.edu.tw/~cjlin/libsvm. Ing. Matějka mi ochotně poskytnul databázi vzorků, ze kterých jsem vybral 100 hlasů, které jsem se rozhodl zkoušet. Soubory jsem nakopíroval do stejného adresáře a spustil parametrizaci pomocí HCopy a vytvořil MFC soubory.
Záhy jsem se však ocitnul v pasti a v HTKBook jsem nebyl schopen najít potřebné informace pro zdárné vypracování úlohy a s nástroji HTK vytvořit potřebný výsledný model. Toto nakonec vyústilo po několika dnech intenzivního hledání informací a postupů v upuštění od nástroje HTK a této úlohy a začal přemýšlet nad nástrojem jiným, se kterým bych byl schopen obecné zadání efektivněji splnit. Hledal jsem tedy již na vlastní pěst komplexnější nástroj, se kterým bych vhodné klasifikátory na jednotném příkladu klasifikaci provedl. Hledání netrvalo dlouho a zvolil jsem ověřený systém Matlab, se kterým jsem již v rámci dřívějších školních projektů pracoval. Stáhnul jsem si ještě nadějný toolkit Stprtool od kolegů z ČVUT, který klasifikaci podporoval. Toto mi nakonec celkovou úlohu velmi zjednodušovalo, proto jsem se rozhodl pro srovnání více než 2 klasifikátorů, abych přinesl více vlastní přidané hodnoty a na příkladech čtenáři ukázal a vysvětlil konkrétní výhody či nevýhody a vhodnost praktického použití jednotlivých klasifikačních metod. Vstupní data Vytvořil jsem 3 příkladné množiny vstupních dat, které budu pomocí algoritmů později klasifikovat. Ilustrace 1.množina dat
Ilustrace 2.množina dat Ilustrace 3. množina dat Výsledky SVM lineární vs. RBF Klasifikátor SVM jsem zvolil především proto, že nachází veliké uplatnění v rozpoznávání řeči. Ne vždy však data vycházejí oddělitelně dobře. V souvslosti s tímto faktem bude vhodné zmínit existenci tzv. jádrové funkce. S lineárně neoddělitelnými daty si SVM poradí použitím tzv. jádrových funkcí, v našem případě RBF (Radial Basis Function). Případnou neoddělitelnost dat řeší zavedením tzv. relaxačních proměnných, které jsou nulové pro správně klasifikované vzory, nenulové pro špatně klasifikované. Tento způsob se osvědčil hlavně v úloze č. 3, který obsahoval vstupní data sdružená do kruhu, což žádná lineární klasifikace nebyla schopna dobře roztřídit.
1. úloha SVM Lineární (ERR: 3.23%) 1. úloha SVM RBF (ERR: 0.0%) 2. úloha SVM - RBF(ERR: 5.9%)
2. úloha SVM Lineární (ERR: 10.6%) 3. úloha SVM Lineární (ERR: 23.6%) 3. úloha SVM RBF (ERR: 0.0%) Použitím jádrové funkce RBF můžeme tedy získat mnohem lepší klasifikaci s lepším roztříděním. Jak je patrno a ilustrací, a výsledku chyby - pro naše zvolené příklady byla
chyba mnohem menší v případě použití jádra RBF. Pochopitelně je to dáno lineární separovatelností vstupních množin. GMM (EM) Gaussian mixture model s Expentation - Maximization. Pro ilustraci jsem zvolil druhý příklad z předchozí úlohy k porovnání a jeden příklad nový. 2. úloha GMM 3 componenty 4. úloha GMM 3 componenty Lineární perceptron Vzhledem k faktu, že se jedná o lineární klasifikátor, byly výsledky klasifikace srovnatelné s klasickým SVM.
1. úloha Perceptron 2. úloha Perceptron 3. úloha Perceptron Pro některé úlohy byla metoda dostačující, pro jiné lineárně neseparovatelné množiny - musíme použít jinou metodu klasifikace.
Závěr Mrzelo mě, že jsem nakonec upustil od původně plánované úlohy rozpoznání řečníka s použitím knihoven HTK a LibSVM o to víc, protože jsem z různých nezávislých zdrojů nabyl dojmu, že se jedná o velmi používané nástroje předními výzkumnými pracovníky nejenom v oblasti rozpoznávání řeči. Pevně věřím, že jsem tímto krokem nevybočil z rámcového zadání projektu, a že jsem aspoň na vhodně zvolených příkladech srovnal a ukázal několik klasifikáčních metod, užívaných nejenom v oblasti rozpoznávání řeči. Zároveň se tímto čtenáři omlouvám, že jsem vybočil z rámce délky jednotek A4 ačkoli jsem se snažil psát zprávu stručně a věcně a především proložit a úlohu osvěžit obrázky z řešené úlohy z prostředí Matlab. Přesto hodnotím tento projekt jako přínosný, protože jsem získal nové poznatky nejenom z oblasti rozpoznávání řeči, ale hlavně z praktického použití klasifikátorů obecně. Externí odkazy [1] http://cmp.felk.cvut.cz/cmp/software/stprtool/ - Matlab knihovna Stprtool [2] http://htk.eng.cam.ac.uk/ - HTK [3] http://neuron.felk.cvut.cz/courseware/data/chapter/36nan028/s04.html - modely perceptronu [4] http://en.wikipedia.org/wiki/perceptron - informace o perceptronu [5] http://www.autonlab.org/tutorials/gmm.html [6] Přednášky SRE - 09_SVM.pdf