--- tags: Specializace --- # ML 6. Strojové učení *Logika a strojové učení (multirelační učení). Metalearning a automatizované strojové učení (AutoML). Pokročilé metody analýzy anomálií. Kategorizace textu. Desambiguace metodami strojového učení. Extrakce informace z textu. (PV056, PA164)* další materiály: - https://hackmd.io/8yrWVC1JROmTD-wZs7eW8w?view TODO: - Refine multirelační učení - Add metalearning and ml - pokročilé anomaly analysis ## Logika a strojové učení (multirelační učení) Článek referovaný na PV056: https://homes.cs.washington.edu/~pedrod/papers/ske03.pdf ### Multirelační učení - proces získávání znalostí z více relací (vstupní data mají strukturu – např. grafy, sekvence; využití např. v biologii: vstupem jsou grafy zachycující strukturu molekul) - přístupy: ILP, Statistical Relational Learning, Graph Mining - Inductive Logic Programming - induktivní inference: k programu (BG knowledge) P a pozitivních/negativních tréninkových případů hledáme program H, takový, aby z P a H vyplývaly (skoro všechny) pozitivní případy a (skoro žádné) negativní případy - jak: DFS – začneme nejobecnější hypotézou, operátor specializace (např. přidání klauzule na pravou stranu predikátu) - příklad: najdi cestu v orientovaném grafu ![](https://i.imgur.com/3X8SYoC.png) ![](https://i.imgur.com/GZc04E7.png) > IPL pokračování > ![](https://i.imgur.com/Ks4jVvi.png =500x) > > ![](https://i.imgur.com/0tFvq4L.png =500x) > > ![](https://i.imgur.com/wSDd70T.png =500x) Předchůdcem: Inductive Logic Programming (ILP) jejímž největším problémem je škálovatelonst. Multirelační učení vzniklo zkloubením ILP a pravděpodobnostních metod jako Bayesian networks. Pokrývá algoritmy: * probabilistic relational models (PRMs), * stochastic logic programs, * Bayesian logic programs, * relational Markov models, * first-order Bayesian classifiers, * ... #### Využití Aplikuje se na grafy. Boj s terorizmem, virální marketing, analýza sociálních sítí, výpočetní biologie, extrakce informací (text minig), ... ### ILP ve zkratce video z oxfordu: https://www.youtube.com/watch?v=7ocgy8VjfJA - **Multirelační učení** souvisí s **induktivní logickým programováním (ILP)**. - Cílem ILP je **odvodit hypotézu (logický program)** na **základě báze znalostí** (fakta), **pozitivních příkladů** a **negativních příkladů**, která bude umět **popsat dané příklady** (budou z ní logicky vyplývat všechny pozitivní příklady a žádné negativní příklady). *Pozitivní příklady + negativní příklady + báze znalostií => hypotéza* - **Příklad z [wiki](https://en.wikipedia.org/wiki/Inductive_logic_programming) na rodinné vztahy.** - Máme **bázi znalostí**: `parent(Ned, Sansa) ∧ parent(Catelyn, Sansa) ∧ female(Sansa) ∧ female(Catelyn) ∧ ...` **pozitivní příklady** `daughter(Sansa, Catelyn) ∧ daughter(Sansa, Ned)` **negativní příklady nemáme** - Chceme najít hypotézu, která nám popisuje data tj. **jak vypadá hypotéza (pravidlo)** `daughter(X, Y) :- ...`? Tedy chceme najít správnou hypotézu, která by mohla vypadat takto `daughter(X, Y) :- parent(Y, X), female(X), <baze_znalosti>.` - Na wiki to dělají pomocí anti-unifikace. - Hypotéza se hledá za pomocí technik jako jsou inverzní rezoluce, inverzní vyplívání, anti-unifikace, ... - Implementace: Alpeh, PROGOL ![](https://i.imgur.com/4bhbslp.png) ### Multirelační učení na grafech ![](https://i.imgur.com/EB7k2Hl.png) ## Metalearning a automatizovane strojove uceni (Auto ML) - meta learning https://lilianweng.github.io/lil-log/2018/11/30/meta-learning.html - https://is.muni.cz/auth/el/fi/jaro2019/PV056/um/62776009/l9_metalearning/ - https://is.muni.cz/auth/el/fi/jaro2019/PV056/um/62776009/l9_metalearning/1Metalearning_AlgSelection_16Jan18.pdf - Máme k dispozici velké množství různých machine learningových metod. **Jak ale poznáme, že se nějaký model hodí na konkrétní data a jaké parametry modelu nám dají nejlepší výsledky**? Kromě znalostí zkušeného člověka bychom chtěli k problému výběru modelu přistupovat systematicky => **metalearning (učení o učení)**. - Jak to udělat? - Klasický přístup: Dopředu si vybudujeme nějaká metadata o modelech (**metamodel**) na různých datasetech a různých algoritmech, které využijeme k výběru modelu a parametrů. (Fáze 1 je vybudování metamodelu, fáze 2 je aplikování metamodelu na cílovým datasetu). - Iterativní přístup: Kombinuje fáze 1 a fáze 2 do jednoho (zkouší dataset na různých algoritmech v malém množství dat a výsledky použije na hledání lepšího algoritmu/lepších parametrů). - Metadata: - Založené na pořadí performance (average ranking). - Podobnosti datasetů na základě statistických charakteristik. - ... - Jak se konkrétně implementuje metamodel? - *k-nearest neigbour, neuronové sítě, ...* - Produktem může být AutoML - automatizace celé machine learning pipeliny. Tj. od surových dat po produkční model. - *Auto-sklearn, AutoWeka, AutoML Google, ...* Bonus: Meta learning je jeden z pokusných přístupů jak vytvořit AGI (Projekt SingularityNET). ## Pokročilé metody analýzy anomálií - **IsolationForest** - Máme les rozhodovacích stromů, které jsme vybudovali tak, že jsme **náhodně vybírali** dělící atribut a náhodný threshold pro dělení (takže jsme nevybírali ten nejlepší jako pro klasifikační strom). Tímto způsobem vybudujeme les. Hlavní myšlenkou algoritmu je, že anomálie dokážeme "izolovat" dříve. To znamená, že uzel ve stromě, ze kterého nám "vypadne" anomálie bude nejspíše blíže ke kořeni stromu, protože se anomálie často liší o extrémní hodnoty. Pro body tak změříme outlier score, které vypočítáme jako průměrnou cestu ke kořeni od uzlu, který daný bod izoloval. - **Local Outlier Factor (LOF)** - Hlavní myšlenkou je vypočítat si LOF skóre, které reprezentuje jak moc se bod liší od sousedních bodů v okolí na základě hustoty bodů v okolí. Jde tedy o poměr průměrné lokální hustoty k-sousedů a vlastní lokální hustoty. - **Autoencoders** - ![](https://i.imgur.com/0FCp87F.png) - Autoencodery se učí zrekonstruovat vstup po zkomprimování. Výstup by měl být ideálně totožný se vstupem. Tuto myšlenku můžeme použít pro detekci anomálii. Pokud naučíme autoencoder na dostatečném množství dat, pak pro většinu dat vrátí kvalitní rekonstrukci. Ovšem pokud do modelu dáme nějakou anomálii, pak rekonstrukce bude nekvalitní a tedy budeme ji podezírat, že je anomálie. Kvalitu měříme klasicky podle nějaké loss funkce. - Další - One-class SVM - Pomocí GAN (GANomaly) - ... ## Kategorizace textu [ZDROJ](https://reader.elsevier.com/reader/sd/pii/S095741741830215X?token=CCC1684C938326911BE22FE91F9506853F9712981604D837E72AF118C63FCF9FCCB5FF9540431DEC338CD0E5B96936FB ) [State-of-the-art](https://paperswithcode.com/task/text-classification) ![](https://i.imgur.com/GyHgywM.png) Textová kategorizace (text classification) je problém třídění textů do předdefinovaných skupin. (Npř. spam, hledání trollů, třídění článků, ...) Řeší se převážně těchto 5 elementů kategorizace: 1. Preprocessing 2. Reprezentace textu 3. Selekce nebo projekce atributů 4. ML model ### 1. Preprocessing * Tokenizace, * text do slov nebo vět - rozdělíme slova * Povídám vám, peníze na zemi! => 'Povídám','vám',',','peníze','na','zemi','!' * stop-slova, * odstranění stop words, které asi nebudou užitečné pro učení * Can listening be exhausting? -> Listening, Exhausting * stemming, * podobné slova na stejný stem * 'frightening', 'frightened', 'frightens' -> 'frighten', 'frighten', 'frighten' * lematizace. * převod na lemma * better -> good * walking -> walk ### 2. Reprezentace ![](https://i.imgur.com/Cx80MIH.png) Jsou hlavní dva způsoby reprezentace textu: * vector space representation -- dokument je reprezentován jako vektor atributů * graph representation -- dokument je graf; např. slova jsou uzly a hrany jsou vztahy mezi slovy #### Vector space reprezentace - příklady * bag-of-words * John likes to watch movies. Mary likes movies too. * BoW1 = {"John":1,"likes":2,"to":1,"watch":1,"movies":2,"Mary":1,"too":1}; * bigramy, trigramy * frekvence spojení 2 nebo 3 slov která se vyskytují po sobě * ![](https://i.imgur.com/1mbJI22.png =200x) * Part Of Speech (POS) tags -- slovní druhy * můžeme slovům přiřadit tagy * sloví druhy, podmět předmět... * stylistické atributy (průměrné délky slov, počty chyb, ...) #### Graph reprezentace - příklady * syntaktické struktury (stromy) * word-embeddings (word2vec) ### 3. Selekce/projekce Obecně se více využívá selekce než projekce. #### Výběr atributů * Document frequency (df) -- počet výskytů slova v doc * Information gain * $\chi^2$ statistic * Gini index * Mutual information * Odds ratio * Term-frequency variance #### Projekce atributů * Singular Value Decomposition (SVD) ### 4. ML Model * Näive Bayes [StatQuest spam filter](https://www.youtube.com/watch?v=O2L2Uv9pdDA) * Rocchio's algorithm -- [více](https://en.wikipedia.org/wiki/Rocchio_algorithm) * K-nearest neighbours (KNN) * Decision trees * Support Vector Machine (SVM) * Neural Nets (NN) * ... ### 5. TODO nějake metriky? ## Desambiguace pomocí strojového učení EN: Word Sense Disambiguation (WSD) > Ambiguity - nejednoznačnost. [ZDROJ](https://www.lsi.upc.edu/~escudero/wsd/06-tesi.pdf) (popelovy slidy mají hodnotu -1000): [Stanford](https://web.stanford.edu/~jurafsky/slp3/slides/Chapter18.wsd.pdf) Lepší přehledný zdroj celkem ### Co to je? Desambiguace je proces **zjednoznačnění** slova ve větě. Je to AI-complete problém -- tedy na jeho plné vyřešení je potřeba vyřešit obecnou umělou inteligenci. Příklad: Nákladní auto dovezlo kola. (Jaká kola? Jízdní?) ### Z čeho se skládá WSD typicky řeší dva podproblémy: 1. Odvození všech možných významů (senses) všech slov. 2. Otagování slov dle vhodného významu (sense) s velkou accuracy a efficiency. Přičemž co jsou senses je otevřený problém. Jedna z reprezentací je *WordNet*. ### Přístupy 1. Knowledge-based přístup: Využivají strojově čitelné slovníky, Thesauri a WordNet (zaměřené na vztahy slov [synonyma, antonyma,...]). 2. Corpus-based přístup: Učení z korpusu supervised/unsupervised. Nyní velkej boom díky transformers neuronových sítí. 3. Mix obou Jedním z problémů supervised Corpus-based přístupu je výběr učících dat. Na to se používají zejména: 1) Automatic acquisition of training examples -- využívá k identifikaci dat data z např. WordNetu; 2) Active learning -- identifikuje ty co neví a dá je člověku k olabelování; 3) Learning from labeled and unlabeled examples -- některé metody se umí učit supervised i unsupervised (bootstraping methods); ### State-of-the-art algoritmus BERT [ZDROJ](https://www.searchenginejournal.com/bert-explained-what-you-need-to-know-about-googles-new-algorithm/337247/#close) *Bidirectional Encoder Representations from Transformers (BERT)* je machine learning technika založená na transformerech. Dnes se využívá ve všech NLP problémech jako předtrénovaný základ. *Bidirectional* znamená to, že oproti předchůdcům může pohybovat okno oběma směry (ne jen dopředu). Což je základ k *attention* mechanismu. Model si pak může vybrat na co se má soustředit. Využívá se k oběma problémům (senses search a senses tag). ## Extrakce informace z textu [ZDROJ](https://is.muni.cz/th/p9jec/Diplomova_prace.pdf) <- našel jsem nějakou diplomku kterou vedl popel. Extrakce informací (Knowledge distillation) je činnost spadající pod množinu činností zvaných souborně dolování v textech (text mining). Úkolem extrakce předem definovaného typu informací je ve vstupních dokumentech (tvořených ve většině případů nestrukturovaným textem v přirozeném jazyce) vyextrahovat požadované informace (jména, hodnoty, vztahy), které jsou následně uloženy do databáze nebo šablon, kde jsou přístupné pro další zpracování. [zdroj obr.:](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.132.6973&rep=rep1&type=pdf) ![](https://i.imgur.com/k0vrKEx.png) ### Extrakce informací Extrakce se skládá z následujících prvků: #### Lexikální analýza V této části je vstupní text rozdělen do vět a ty jsou dále rozděleny do tokenů. Každému jednotlivému tokenu je podle slovníku přidělen slovní druh. #### Rozeznávání jmen Tato fáze má za úkol rozeznat vlastní jména, data nebo měnové výrazy. Jména se vyskytují v mnoha typech textů a jsou často jedním z vyžadovaných polí. Jména jsou identifikována pomocí množiny vzorů, které jsou stanoveny pomocí větných členů, syntaktických a ortografických rysů (např. zápis velkými písmeny). Osobní jména mohou být nalezena například pomocí titulů (Mr., Mrs., atd.), běžných křestních jmen, přípon, prostřední iniciály, aj. Pod identifikaci jmén často spadá i předzpracování nutné pro identifikaci zájmen. #### Částečná syntaktická analýza Identifikace některých syntaktických rysů může usnadnit následující fáze zpracování. Důvodem je, že vyextrahované hodnoty jsou obvykle skupiny podstatného jména (podstatné jméno + jeho levé modifikátory). Vztahy jsou často reprezentovány pomocí gramatických relací (sloveso a jeho okolí). Obě tyto struktury mohou být vytvořeny pouze s použitím lokální syntaktické informace. #### Porovnávání vzorů pro danou doménu Vše, co bylo až doposud vykonáno v předcházejících krocích, byla příprava na porovnávání vzorů, což je vlastní vyhledávání zajímavých informací. Rolí vzorů je extrahovat údaje a vztahy relevatní pro danou oblast zájmu. Výsledkem tohoto kroku je převážně označkovaný text vymezující zajímavá pole. Tato pole jsou následně z textu vyjmuta a připravena pro poslední krok. #### Hledání koreferencí Úkolem této části procesu je vyřešit koreference dané zájmeny a nalézt odpovídající podstatná jména, která zastupují. #### Odvozování a spojování událostí V mnoha situacích může být informace rozdělena do více vět. Z tohoto důvodu je nutné nejdříve ji pospojovat, než může být vložena do generované tabulky. Jindy mohou být informace v textu pouze implicitní a je nutné odvodit jejich explicitní podobu. ### Metody * <b>Metoda nejbližších sousedů (KNN)</b> -- klasifikátor určí výslednou třídu výsledku podle tříd nejbližších sousedů (v závislosti na vahách a celkovém nastavení algoritmu). * <b>Metoda ILP (induktivní logické programování)</b> -- při tomto přístupu k extrakci informací je program tvořen množinou Hornových klauzulí, které slouží k posuzování a kontrole vzorů v klasifikovaných případech. * <b>Support vector machine (SVM)</b> * ... ### TODO extrakce klíčových slov? *Asi z otázek vyřazeno (2022).* TFIDF atp