From f00e1b265ed083166be5301133b8ccb1011ac815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Pokr=C3=BDvka?= Date: Fri, 6 Dec 2019 16:33:35 +0000 Subject: [PATCH 1/5] =?UTF-8?q?P=C5=99idat=20'pages/students/2016/lp832ut/?= =?UTF-8?q?timovy=5Fprojekt/README.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2016/lp832ut/timovy_projekt/README.md | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 pages/students/2016/lp832ut/timovy_projekt/README.md diff --git a/pages/students/2016/lp832ut/timovy_projekt/README.md b/pages/students/2016/lp832ut/timovy_projekt/README.md new file mode 100644 index 000000000..f293b7229 --- /dev/null +++ b/pages/students/2016/lp832ut/timovy_projekt/README.md @@ -0,0 +1,95 @@ +**Paralelné spracovanie** + +Systémy na spracovanie prirodzeného jazyka (_z angl. Natural Language Processing_ – ďalej už len NLP), boli ešte v nedávnej minulosti založené na sériových algoritmoch, ktoré simulovali spôsob, ktorým ľudia čítajú text – slovo za slovom, riadok po riadku [1]. Keďže týmto štýlom boli prezentované všetky gramatické teórie, programátori ich týmto štýlom aj implementovali. + +Žijeme v dobe, kedy jedno-jadrový výkon v dostupnom hardwari nemusí stačiť. Táto technológia má viacero nedostatkov, od rýchlosti prenosu dát, až po zvyšovanie nákladov, s cieľom zvýšiť rýchlosť jedno-jadrových procesorov[2]. Distribuované systémy a multi-jadrové architektúry nám dokazujú, že paralelizmus je budúcnosť výpočtovej techniky. + +Paralelné spracovanie umožňuje riešiť väčšie problémy za kratší čas, čo však prináša nové problémy – správne načasovanie a spustenie programov medzi zdieľanými počítačmi a ich následná synchronizácia. Jedna z oblastí, ktorá potrebuje veľký výpočtový výkon, je NLP. Dôvod, prečo NLP vyžaduje veľký výpočtový výkon, je práca s veľkými balíkmi dát. + +Poznáme dve populárne metódy, ktorými sa dá dosiahnuť vysoký výkon pre NLP. Prvou možnosťou je pridať viac grafických kariet do servera, ktorý je zodpovedný za spracovávanie, alebo prepojiť viacero serverov a tým pádom využiť dostupnosť viacerých procesorov [3]. Grafické karty sú navrhnuté paralelne spracovávať veľký počet úloh a pristupovať k veľkému objemu pamäti. Na druhej strane, čo sa týka dizajnu procesora, ktorý je jadrom každého počítača, ten bol navrhnutý tak, aby úlohy riešil sekvenčne a vysokou rýchlosťou. Kvôli tomuto dokáže pristupovať iba k obmedzenému množstvu pamäti. + +Trénovaním modelov hlbokého učenia sa zistilo, že viacero operácií dokáže ťažiť z paralelného spracovania. Medzi tieto operácie patrí napríklad násobenie matíc [3]. Podobne ako grafické animácie, ktoré boli hlavným cieľom pre trh s grafickými kartami, trénovanie modelov hlbokého učenia je významne urýchlený paralelizovaním násobenia matíc. + + ![](data:image/*;base64,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) + +_Obr._ _1. Násobenie matíc_ _[3]._ + +Jednotlivé jadrá grafickej karty sú v porovnaní s jadrami procesora pomalé, ale každé jadro dokáže vypočítať príslušný vektorový komponent. Keby tento výpočet prebiehal na procesore, každý riadok násobenia by sa vykonával sekvenčne. Ak by počet riadkov matice bol _n_, procesor by na výpočet rovnakej úlohy potreboval _n_-krát viacej času. Ak by sme dokázali zredukovať čas potrebný na spracovanie modelu na napríklad na jednu desatinu, v praxi by to znamenalo, že dokážeme vyskúšať desať rôznych prístupov a dosiahnuť oveľa vyššiu presnosť. + +**Word embedding** + +Word embedding je názov pre skupinu techník, slúžiacich na jazykové modelovanie v NLP. V tomto procese sú slová a frázy zo slovníka mapované do vektorov, ktoré majú podobu reálnych čísel. Táto technika zahŕňa premenu priestoru s viacerými dimenziami na spojitý vektorový priestor s nižším počtom dimenzií. Použitím vnorených slov a fráz ako základnou reprezentáciou vstupu bol zaznamenaný zvýšený výkon pri úlohách, ako syntaktická analýza a analýza sentimentov [4]. + +Word embedding je často využívaný v NLP práve pre jeho schopnosť zachytiť z vektorovej reprezentácie slov ich sémantické vlastnosti a lingvistické vzťahy medzi slovami použitím hlbokého učenia [5]. Tým pádom dokáže dať väčšiemu objemu surového textu nejaký kontext. Tým, že z textu získame kontext, sa nám otvárajú dvere pre extrakciu informácií, možnosť odpovedať na rôzne otázky, alebo textová sumarizácia. Na internete sú verejne dostupné rôzne predtrénované vnorené slová, ako napríklad Google News, alebo GloVe. + +**GloVe** + +Tento model kombinuje výhody dvoch najväčších rodín modelov v literatúre – maticová faktorizácia a metódy lokálneho kontextu [6]. Efektívnosť tohto modelu je dosiahnutá hlavne trénovaním iba na nenulových elementoch v maticiach, ktoré reprezentujú spoločný výskyt dvoch slov. Výstupom tohto modelu je významový vektorový priestor. Ďalšou jeho výhodou je vyšší výkon v porovnaní s modelmi založenými na podobnej technológii a to konkrétne v úlohách zameraných na podobnosť a rozpoznávanie vlastných mien. + +| Pravdepodobnosť a pomer | k = pevné | k = plyn | k = voda | k = móda | +| --- | --- | --- | --- | --- | +| P(k|ľad) | 1.9 x 10^-4 | 6.6 x 10^-5 | 3.0 x 10^-3 | 1.7 x 10^-5 | +| P(k|para) | 2.2 x 10^-5 | 7.8 x 10^-4 | 2.2 x 10^-3 | 1.8 x 10^-5 | +| P(k|ľad)/P(k|para) | 8.9 | 8.5 x 10^-2 | 1.36 | 0.96 | + +_Tab. 1. Pravdepodobnosti z testovacieho súboru dát_ _[7]._ + +Hlavná myšlienka tohto modelu vyplýva z obyčajného sledovania pomeru spoločného výskytu dvoch slov. Z toho sa usudzuje, že je z týchto slov neskôr možné vyvodiť ich význam. V tabuľke číslo jeden sa uvažuje výskyt pravdepodobností dvoch slov, ľad a para, s testovacími slovami zo slovníka. Testovací súbor dát má približne šesť miliárd slov. + +Podľa očakávaní, ľad sa vyskytuje častejšie so slovom pevný (myslené skupenstvo), ako so slovom plyn. Naopak, para sa vyskytuje častejšie práve so slovom plyn, ako so slovom pevný. So slovom voda sa tieto dva slová vyskytujú približne rovnako a so slovom móda sa ich výskyt rapídne znižuje. Vďaka týmto pravdepodobnostiam vieme zhruba odhadnúť, že v testovacom súbore mali tieto slová spoločný význam viac v zmysle termodynamiky, ako v móde. + +**Word2vec** + +Word2vec je skupina relačných modelov, ktorá má za úlohu vytvárať word embedding. Tieto modely sú trénované na rekonštrukciu lingvistického kontextu slov. Word2vec používa veľký súbor dát ako svoj vstup a následne produkuje vektorový priestor, zvyčajne o veľkosti niekoľkých stoviek dimenzií. Každému slovu, ktoré je unikátne, je priradený prislúchajúci vektor v priestore. Ich pozícia vyplýva z ich významu, takže slová, ktoré zdieľajú podobný význam, sú uložené bližšie pri sebe. + +Hlavnou výhodou tohto modelu je teda jeho schopnosť vytvárať a niesť sémantický význam, čo je veľmi užitočné pre rôzne NLP projekty [8]. Dve hlavné techniky používané v tomto modely sú _skip-gram_ a _continuous bag-of-words(CBOW)_ [9]. Tieto dva modely vytvárajú odlišne nezávislosť slov a takisto inak vnímajú podmienenosť a predpoklady. Ich spoločnou črtou je rušenie postupnosti slov, ktorá tvorí kontext vety. Sémantickú informáciu teda čerpajú z _n_-tíc slov a Word2vec zostáva naďalej populárnou voľbou z dôvodu jeho efektivity a jednoduchosti. + +Hlavný rozdiel medzi syntaxou s sémantikou je, že dôležitá informácia pre syntax je rozloženie slov vo vete, kdežto sémantika vníma hlavne problém, ktoré slová patria k sebe. Keďže v modely, v ktorom je postupnosť slov zrušená, väčšina syntaktických vzťahov nedokáže byť správne interpretovaná [9]. Model CBOW je využívaný hlavne v úlohách, kedy má syntax prioritu. + +**FastText** + +FastText je voľne dostupná, odľahčená knižnica, určená pre word embedding a klasifikáciu textu. Bola vytvorená v laboratóriách umelej inteligencie spoločnosti Facebook. V súčasnosti obsahuje pred-trénované modely pre vyše 160 rôznych jazykov, vrátane slovenčiny [10]. + +Klasifikácia textu je dôležitou súčasťou NLP a to hlavne v úlohách, ako je webové vyhľadávanie, získavanie informácií, rebríčky, spam filter, alebo klasifikácia dokumentov [11]. V súčasnosti sa dostali do popredia modely na báze neurónových sietí. Napriek tomu, že tieto modely dosahujú nadpriemerné výsledky pri výkone v praktických úlohách, majú tendenciu spomaľovať pri trénovaní a testovaní. To ich limituje pri ich použití na väčších dátových súboroch. Ich hlavnou výhodou sú kompaktné veľkosti trénovacích modelov, čo je dôležité hlavne pre aplikácie, ktoré musia pracovať na zariadeniach s obmedzenou pamäťou, ako napríklad smartfóny [12]. + +Textové klasifikátory ako fastText zjednodušujú vývojárom vývoj rôznych nástrojov s potrebou základnej analýzy jazyka. Práve identifikovanie rôznych odkazov ako potenciálne nechcené, alebo filtrovanie spamu si vyžadujú základný jazykový model, ktorý dokáže tento jazyk správne interpretovať a kategorizovať. + +V porovnaní s Word2vec bol pridaný nový algoritmus. Tento algoritmus berie do úvahy a predpovedá okolitých n-charakterov, kdežto Word2vec spracováva len okolité slová [3]. Pre slovo auto by to boli napríklad dvojice a trojice: au, aut, ut, uto, to. FastText následne vytvára vektorovú reprezentáciu pre každú takúto dvojicu, alebo trojicu. To zahŕňa aj zle napísané slová a časti slov. Výhodou tohto prístupu je, že fastText lepšie zvláda prácu so slovami s menej častým výskytom. Predtrénované modely poskytované Facebookom boli trénované iba na dostupných súboroch dát Wikipedie. To znamená, že slovník a presnosť modelov sa môžu líšiť v závislosti od jazyka. + + + + + + + + + + + + + +**Zoznam použitej literatúry** + +[1]. Moghrabi, C. - Moussa, S. E. - Eid, M. S. Natural language processing complexity and parallelism. IEEE: Proceedings - International Symposium on High Performance Computing Systems and Applications, 2002. 277 str. ISBN 0-7695-1626-2. + +[2]. Jos, Alexandre. Paraleliza¸c˜ao de Algoritmos de Processamento de L´ıngua Natural em Ambientes Distribu´ıdos. [Online] Instituto Superior Técnico, Universidade Técnica de Lisboa, október 2008 [cit. 08.11.2019] Dostupné na internete: \<[http://www.inesc-id.pt/publications/4052/pdf](http://www.inesc-id.pt/publications/4052/pdf)\> + +[3]. Lane H. – Howard C. – Hapke H. M. Natural Language Processing: In Action. New York: Manning Publications Co., 2019. ISBN 9781617294631. + +[4]. Socher R. – Bauer J. – Manning C. et al. Parsing With Compositional Vector Grammars. Stanford: Computer Science Department, Stanford University, 2013. ISBN 9781937284503. + +[5]. Wang Y. – Liu S. – Afzal N. et al. A Comparison of Word Embeddings for the Biomedical Natural Language Processing. Rochester: Department of health Sciences Research, Mayo Clinic, 2018. ISSN 15320464. + +[6]. Pennington J. – Socher R. – Manning C. GloVe: Global Vectors for Word Representation. Stanford: Computer Science Department, Stanford University, 2014. ISSN 00047554. + +[7]. GloVe: Global Vectors for Word Representation. [Online]. Dostupné na internete: \<[https://nlp.stanford.edu/projects/glove/](https://nlp.stanford.edu/projects/glove/)\> + +[8]. Rong Xin. Word2vec Parameter Learning Explained. [Online]. 2016 [cit. 10.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1411.2738.pdf](https://arxiv.org/pdf/1411.2738.pdf)\> + +[9]. Ling W. – Dyer C. – Black A. et al. Two/Too Simple Adaptations of Word2Vec for Syntax Problems. [online]. Lisbon: Instituto Superior Tecnico, Lisbon, Portugal, 2015 [cit. 10.11.2019] Dostupné na internete: \<[https://www.aclweb.org/anthology/N15-1142.pdf](https://www.aclweb.org/anthology/N15-1142.pdf)\> + +[10]. fastText: Library for efficient text classification and representation learning. [Online]. Dostupné na internete: \<[https://fasttext.cc/](https://fasttext.cc/)\> + +[11]. Joulin A. – Grave E. – Bojanowski P. et al. Bag of Tricks for Efficient Text Classification. [Online]. 15th Conference of the European Chapter of the Association for Computational Linguistic, EACL 2017 [cit. 11.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1607.01759.pdf](https://arxiv.org/pdf/1607.01759.pdf)\> + +[12]. Joulin A. – Grave E. – Bojanowski P. et al. FastText.zip: Compressing Text Classification Models. [Online]. ICLR, 2017. [cit. 11.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1612.03651.pdf](https://arxiv.org/pdf/1612.03651.pdf)\> \ No newline at end of file From 6e583e2817127df551b554cc858de588497f6e43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Pokr=C3=BDvka?= Date: Fri, 6 Dec 2019 16:35:40 +0000 Subject: [PATCH 2/5] =?UTF-8?q?Nahr=C3=A1t=20soubory=20do=20'pages/student?= =?UTF-8?q?s/2016/lp832ut/timovy=5Fprojekt'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2016/lp832ut/timovy_projekt/matice.png | Bin 0 -> 25711 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 pages/students/2016/lp832ut/timovy_projekt/matice.png diff --git a/pages/students/2016/lp832ut/timovy_projekt/matice.png b/pages/students/2016/lp832ut/timovy_projekt/matice.png new file mode 100644 index 0000000000000000000000000000000000000000..e364838633f948b3ea3347d2bb8007751130a350 GIT binary patch literal 25711 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 F{y)U?w~qh- literal 0 HcmV?d00001 From a4dcf5e0d7796cb0817c199eecc5908fb8ac1bda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Pokr=C3=BDvka?= Date: Fri, 6 Dec 2019 16:36:36 +0000 Subject: [PATCH 3/5] Aktualizovat "pages/students/2016/lp832ut/timovy_projekt/README.md --- pages/students/2016/lp832ut/timovy_projekt/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pages/students/2016/lp832ut/timovy_projekt/README.md b/pages/students/2016/lp832ut/timovy_projekt/README.md index f293b7229..9e4272f4f 100644 --- a/pages/students/2016/lp832ut/timovy_projekt/README.md +++ b/pages/students/2016/lp832ut/timovy_projekt/README.md @@ -10,8 +10,7 @@ Poznáme dve populárne metódy, ktorými sa dá dosiahnuť vysoký výkon pre N Trénovaním modelov hlbokého učenia sa zistilo, že viacero operácií dokáže ťažiť z paralelného spracovania. Medzi tieto operácie patrí napríklad násobenie matíc [3]. Podobne ako grafické animácie, ktoré boli hlavným cieľom pre trh s grafickými kartami, trénovanie modelov hlbokého učenia je významne urýchlený paralelizovaním násobenia matíc. - ![](data:image/*;base64,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) - + ![Násobenie matíc](./matice.png) _Obr._ _1. Násobenie matíc_ _[3]._ Jednotlivé jadrá grafickej karty sú v porovnaní s jadrami procesora pomalé, ale každé jadro dokáže vypočítať príslušný vektorový komponent. Keby tento výpočet prebiehal na procesore, každý riadok násobenia by sa vykonával sekvenčne. Ak by počet riadkov matice bol _n_, procesor by na výpočet rovnakej úlohy potreboval _n_-krát viacej času. Ak by sme dokázali zredukovať čas potrebný na spracovanie modelu na napríklad na jednu desatinu, v praxi by to znamenalo, že dokážeme vyskúšať desať rôznych prístupov a dosiahnuť oveľa vyššiu presnosť. From d3f78abfd09de42d71592492713f8ac3c9fd5ee4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Pokr=C3=BDvka?= Date: Fri, 6 Dec 2019 16:38:32 +0000 Subject: [PATCH 4/5] Smazat 'pages/students/2016/lp832ut/timovy_projekt/README.md' --- .../2016/lp832ut/timovy_projekt/README.md | 94 ------------------- 1 file changed, 94 deletions(-) delete mode 100644 pages/students/2016/lp832ut/timovy_projekt/README.md diff --git a/pages/students/2016/lp832ut/timovy_projekt/README.md b/pages/students/2016/lp832ut/timovy_projekt/README.md deleted file mode 100644 index 9e4272f4f..000000000 --- a/pages/students/2016/lp832ut/timovy_projekt/README.md +++ /dev/null @@ -1,94 +0,0 @@ -**Paralelné spracovanie** - -Systémy na spracovanie prirodzeného jazyka (_z angl. Natural Language Processing_ – ďalej už len NLP), boli ešte v nedávnej minulosti založené na sériových algoritmoch, ktoré simulovali spôsob, ktorým ľudia čítajú text – slovo za slovom, riadok po riadku [1]. Keďže týmto štýlom boli prezentované všetky gramatické teórie, programátori ich týmto štýlom aj implementovali. - -Žijeme v dobe, kedy jedno-jadrový výkon v dostupnom hardwari nemusí stačiť. Táto technológia má viacero nedostatkov, od rýchlosti prenosu dát, až po zvyšovanie nákladov, s cieľom zvýšiť rýchlosť jedno-jadrových procesorov[2]. Distribuované systémy a multi-jadrové architektúry nám dokazujú, že paralelizmus je budúcnosť výpočtovej techniky. - -Paralelné spracovanie umožňuje riešiť väčšie problémy za kratší čas, čo však prináša nové problémy – správne načasovanie a spustenie programov medzi zdieľanými počítačmi a ich následná synchronizácia. Jedna z oblastí, ktorá potrebuje veľký výpočtový výkon, je NLP. Dôvod, prečo NLP vyžaduje veľký výpočtový výkon, je práca s veľkými balíkmi dát. - -Poznáme dve populárne metódy, ktorými sa dá dosiahnuť vysoký výkon pre NLP. Prvou možnosťou je pridať viac grafických kariet do servera, ktorý je zodpovedný za spracovávanie, alebo prepojiť viacero serverov a tým pádom využiť dostupnosť viacerých procesorov [3]. Grafické karty sú navrhnuté paralelne spracovávať veľký počet úloh a pristupovať k veľkému objemu pamäti. Na druhej strane, čo sa týka dizajnu procesora, ktorý je jadrom každého počítača, ten bol navrhnutý tak, aby úlohy riešil sekvenčne a vysokou rýchlosťou. Kvôli tomuto dokáže pristupovať iba k obmedzenému množstvu pamäti. - -Trénovaním modelov hlbokého učenia sa zistilo, že viacero operácií dokáže ťažiť z paralelného spracovania. Medzi tieto operácie patrí napríklad násobenie matíc [3]. Podobne ako grafické animácie, ktoré boli hlavným cieľom pre trh s grafickými kartami, trénovanie modelov hlbokého učenia je významne urýchlený paralelizovaním násobenia matíc. - - ![Násobenie matíc](./matice.png) -_Obr._ _1. Násobenie matíc_ _[3]._ - -Jednotlivé jadrá grafickej karty sú v porovnaní s jadrami procesora pomalé, ale každé jadro dokáže vypočítať príslušný vektorový komponent. Keby tento výpočet prebiehal na procesore, každý riadok násobenia by sa vykonával sekvenčne. Ak by počet riadkov matice bol _n_, procesor by na výpočet rovnakej úlohy potreboval _n_-krát viacej času. Ak by sme dokázali zredukovať čas potrebný na spracovanie modelu na napríklad na jednu desatinu, v praxi by to znamenalo, že dokážeme vyskúšať desať rôznych prístupov a dosiahnuť oveľa vyššiu presnosť. - -**Word embedding** - -Word embedding je názov pre skupinu techník, slúžiacich na jazykové modelovanie v NLP. V tomto procese sú slová a frázy zo slovníka mapované do vektorov, ktoré majú podobu reálnych čísel. Táto technika zahŕňa premenu priestoru s viacerými dimenziami na spojitý vektorový priestor s nižším počtom dimenzií. Použitím vnorených slov a fráz ako základnou reprezentáciou vstupu bol zaznamenaný zvýšený výkon pri úlohách, ako syntaktická analýza a analýza sentimentov [4]. - -Word embedding je často využívaný v NLP práve pre jeho schopnosť zachytiť z vektorovej reprezentácie slov ich sémantické vlastnosti a lingvistické vzťahy medzi slovami použitím hlbokého učenia [5]. Tým pádom dokáže dať väčšiemu objemu surového textu nejaký kontext. Tým, že z textu získame kontext, sa nám otvárajú dvere pre extrakciu informácií, možnosť odpovedať na rôzne otázky, alebo textová sumarizácia. Na internete sú verejne dostupné rôzne predtrénované vnorené slová, ako napríklad Google News, alebo GloVe. - -**GloVe** - -Tento model kombinuje výhody dvoch najväčších rodín modelov v literatúre – maticová faktorizácia a metódy lokálneho kontextu [6]. Efektívnosť tohto modelu je dosiahnutá hlavne trénovaním iba na nenulových elementoch v maticiach, ktoré reprezentujú spoločný výskyt dvoch slov. Výstupom tohto modelu je významový vektorový priestor. Ďalšou jeho výhodou je vyšší výkon v porovnaní s modelmi založenými na podobnej technológii a to konkrétne v úlohách zameraných na podobnosť a rozpoznávanie vlastných mien. - -| Pravdepodobnosť a pomer | k = pevné | k = plyn | k = voda | k = móda | -| --- | --- | --- | --- | --- | -| P(k|ľad) | 1.9 x 10^-4 | 6.6 x 10^-5 | 3.0 x 10^-3 | 1.7 x 10^-5 | -| P(k|para) | 2.2 x 10^-5 | 7.8 x 10^-4 | 2.2 x 10^-3 | 1.8 x 10^-5 | -| P(k|ľad)/P(k|para) | 8.9 | 8.5 x 10^-2 | 1.36 | 0.96 | - -_Tab. 1. Pravdepodobnosti z testovacieho súboru dát_ _[7]._ - -Hlavná myšlienka tohto modelu vyplýva z obyčajného sledovania pomeru spoločného výskytu dvoch slov. Z toho sa usudzuje, že je z týchto slov neskôr možné vyvodiť ich význam. V tabuľke číslo jeden sa uvažuje výskyt pravdepodobností dvoch slov, ľad a para, s testovacími slovami zo slovníka. Testovací súbor dát má približne šesť miliárd slov. - -Podľa očakávaní, ľad sa vyskytuje častejšie so slovom pevný (myslené skupenstvo), ako so slovom plyn. Naopak, para sa vyskytuje častejšie práve so slovom plyn, ako so slovom pevný. So slovom voda sa tieto dva slová vyskytujú približne rovnako a so slovom móda sa ich výskyt rapídne znižuje. Vďaka týmto pravdepodobnostiam vieme zhruba odhadnúť, že v testovacom súbore mali tieto slová spoločný význam viac v zmysle termodynamiky, ako v móde. - -**Word2vec** - -Word2vec je skupina relačných modelov, ktorá má za úlohu vytvárať word embedding. Tieto modely sú trénované na rekonštrukciu lingvistického kontextu slov. Word2vec používa veľký súbor dát ako svoj vstup a následne produkuje vektorový priestor, zvyčajne o veľkosti niekoľkých stoviek dimenzií. Každému slovu, ktoré je unikátne, je priradený prislúchajúci vektor v priestore. Ich pozícia vyplýva z ich významu, takže slová, ktoré zdieľajú podobný význam, sú uložené bližšie pri sebe. - -Hlavnou výhodou tohto modelu je teda jeho schopnosť vytvárať a niesť sémantický význam, čo je veľmi užitočné pre rôzne NLP projekty [8]. Dve hlavné techniky používané v tomto modely sú _skip-gram_ a _continuous bag-of-words(CBOW)_ [9]. Tieto dva modely vytvárajú odlišne nezávislosť slov a takisto inak vnímajú podmienenosť a predpoklady. Ich spoločnou črtou je rušenie postupnosti slov, ktorá tvorí kontext vety. Sémantickú informáciu teda čerpajú z _n_-tíc slov a Word2vec zostáva naďalej populárnou voľbou z dôvodu jeho efektivity a jednoduchosti. - -Hlavný rozdiel medzi syntaxou s sémantikou je, že dôležitá informácia pre syntax je rozloženie slov vo vete, kdežto sémantika vníma hlavne problém, ktoré slová patria k sebe. Keďže v modely, v ktorom je postupnosť slov zrušená, väčšina syntaktických vzťahov nedokáže byť správne interpretovaná [9]. Model CBOW je využívaný hlavne v úlohách, kedy má syntax prioritu. - -**FastText** - -FastText je voľne dostupná, odľahčená knižnica, určená pre word embedding a klasifikáciu textu. Bola vytvorená v laboratóriách umelej inteligencie spoločnosti Facebook. V súčasnosti obsahuje pred-trénované modely pre vyše 160 rôznych jazykov, vrátane slovenčiny [10]. - -Klasifikácia textu je dôležitou súčasťou NLP a to hlavne v úlohách, ako je webové vyhľadávanie, získavanie informácií, rebríčky, spam filter, alebo klasifikácia dokumentov [11]. V súčasnosti sa dostali do popredia modely na báze neurónových sietí. Napriek tomu, že tieto modely dosahujú nadpriemerné výsledky pri výkone v praktických úlohách, majú tendenciu spomaľovať pri trénovaní a testovaní. To ich limituje pri ich použití na väčších dátových súboroch. Ich hlavnou výhodou sú kompaktné veľkosti trénovacích modelov, čo je dôležité hlavne pre aplikácie, ktoré musia pracovať na zariadeniach s obmedzenou pamäťou, ako napríklad smartfóny [12]. - -Textové klasifikátory ako fastText zjednodušujú vývojárom vývoj rôznych nástrojov s potrebou základnej analýzy jazyka. Práve identifikovanie rôznych odkazov ako potenciálne nechcené, alebo filtrovanie spamu si vyžadujú základný jazykový model, ktorý dokáže tento jazyk správne interpretovať a kategorizovať. - -V porovnaní s Word2vec bol pridaný nový algoritmus. Tento algoritmus berie do úvahy a predpovedá okolitých n-charakterov, kdežto Word2vec spracováva len okolité slová [3]. Pre slovo auto by to boli napríklad dvojice a trojice: au, aut, ut, uto, to. FastText následne vytvára vektorovú reprezentáciu pre každú takúto dvojicu, alebo trojicu. To zahŕňa aj zle napísané slová a časti slov. Výhodou tohto prístupu je, že fastText lepšie zvláda prácu so slovami s menej častým výskytom. Predtrénované modely poskytované Facebookom boli trénované iba na dostupných súboroch dát Wikipedie. To znamená, že slovník a presnosť modelov sa môžu líšiť v závislosti od jazyka. - - - - - - - - - - - - - -**Zoznam použitej literatúry** - -[1]. Moghrabi, C. - Moussa, S. E. - Eid, M. S. Natural language processing complexity and parallelism. IEEE: Proceedings - International Symposium on High Performance Computing Systems and Applications, 2002. 277 str. ISBN 0-7695-1626-2. - -[2]. Jos, Alexandre. Paraleliza¸c˜ao de Algoritmos de Processamento de L´ıngua Natural em Ambientes Distribu´ıdos. [Online] Instituto Superior Técnico, Universidade Técnica de Lisboa, október 2008 [cit. 08.11.2019] Dostupné na internete: \<[http://www.inesc-id.pt/publications/4052/pdf](http://www.inesc-id.pt/publications/4052/pdf)\> - -[3]. Lane H. – Howard C. – Hapke H. M. Natural Language Processing: In Action. New York: Manning Publications Co., 2019. ISBN 9781617294631. - -[4]. Socher R. – Bauer J. – Manning C. et al. Parsing With Compositional Vector Grammars. Stanford: Computer Science Department, Stanford University, 2013. ISBN 9781937284503. - -[5]. Wang Y. – Liu S. – Afzal N. et al. A Comparison of Word Embeddings for the Biomedical Natural Language Processing. Rochester: Department of health Sciences Research, Mayo Clinic, 2018. ISSN 15320464. - -[6]. Pennington J. – Socher R. – Manning C. GloVe: Global Vectors for Word Representation. Stanford: Computer Science Department, Stanford University, 2014. ISSN 00047554. - -[7]. GloVe: Global Vectors for Word Representation. [Online]. Dostupné na internete: \<[https://nlp.stanford.edu/projects/glove/](https://nlp.stanford.edu/projects/glove/)\> - -[8]. Rong Xin. Word2vec Parameter Learning Explained. [Online]. 2016 [cit. 10.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1411.2738.pdf](https://arxiv.org/pdf/1411.2738.pdf)\> - -[9]. Ling W. – Dyer C. – Black A. et al. Two/Too Simple Adaptations of Word2Vec for Syntax Problems. [online]. Lisbon: Instituto Superior Tecnico, Lisbon, Portugal, 2015 [cit. 10.11.2019] Dostupné na internete: \<[https://www.aclweb.org/anthology/N15-1142.pdf](https://www.aclweb.org/anthology/N15-1142.pdf)\> - -[10]. fastText: Library for efficient text classification and representation learning. [Online]. Dostupné na internete: \<[https://fasttext.cc/](https://fasttext.cc/)\> - -[11]. Joulin A. – Grave E. – Bojanowski P. et al. Bag of Tricks for Efficient Text Classification. [Online]. 15th Conference of the European Chapter of the Association for Computational Linguistic, EACL 2017 [cit. 11.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1607.01759.pdf](https://arxiv.org/pdf/1607.01759.pdf)\> - -[12]. Joulin A. – Grave E. – Bojanowski P. et al. FastText.zip: Compressing Text Classification Models. [Online]. ICLR, 2017. [cit. 11.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1612.03651.pdf](https://arxiv.org/pdf/1612.03651.pdf)\> \ No newline at end of file From 8242ea47bd5c4913b4bdcf053db1e0633c0c4bf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Pokr=C3=BDvka?= Date: Fri, 6 Dec 2019 16:39:41 +0000 Subject: [PATCH 5/5] timovy projekt --- .../2016/lp832ut/timovy_projekt/README.md | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 pages/students/2016/lp832ut/timovy_projekt/README.md diff --git a/pages/students/2016/lp832ut/timovy_projekt/README.md b/pages/students/2016/lp832ut/timovy_projekt/README.md new file mode 100644 index 000000000..9e4272f4f --- /dev/null +++ b/pages/students/2016/lp832ut/timovy_projekt/README.md @@ -0,0 +1,94 @@ +**Paralelné spracovanie** + +Systémy na spracovanie prirodzeného jazyka (_z angl. Natural Language Processing_ – ďalej už len NLP), boli ešte v nedávnej minulosti založené na sériových algoritmoch, ktoré simulovali spôsob, ktorým ľudia čítajú text – slovo za slovom, riadok po riadku [1]. Keďže týmto štýlom boli prezentované všetky gramatické teórie, programátori ich týmto štýlom aj implementovali. + +Žijeme v dobe, kedy jedno-jadrový výkon v dostupnom hardwari nemusí stačiť. Táto technológia má viacero nedostatkov, od rýchlosti prenosu dát, až po zvyšovanie nákladov, s cieľom zvýšiť rýchlosť jedno-jadrových procesorov[2]. Distribuované systémy a multi-jadrové architektúry nám dokazujú, že paralelizmus je budúcnosť výpočtovej techniky. + +Paralelné spracovanie umožňuje riešiť väčšie problémy za kratší čas, čo však prináša nové problémy – správne načasovanie a spustenie programov medzi zdieľanými počítačmi a ich následná synchronizácia. Jedna z oblastí, ktorá potrebuje veľký výpočtový výkon, je NLP. Dôvod, prečo NLP vyžaduje veľký výpočtový výkon, je práca s veľkými balíkmi dát. + +Poznáme dve populárne metódy, ktorými sa dá dosiahnuť vysoký výkon pre NLP. Prvou možnosťou je pridať viac grafických kariet do servera, ktorý je zodpovedný za spracovávanie, alebo prepojiť viacero serverov a tým pádom využiť dostupnosť viacerých procesorov [3]. Grafické karty sú navrhnuté paralelne spracovávať veľký počet úloh a pristupovať k veľkému objemu pamäti. Na druhej strane, čo sa týka dizajnu procesora, ktorý je jadrom každého počítača, ten bol navrhnutý tak, aby úlohy riešil sekvenčne a vysokou rýchlosťou. Kvôli tomuto dokáže pristupovať iba k obmedzenému množstvu pamäti. + +Trénovaním modelov hlbokého učenia sa zistilo, že viacero operácií dokáže ťažiť z paralelného spracovania. Medzi tieto operácie patrí napríklad násobenie matíc [3]. Podobne ako grafické animácie, ktoré boli hlavným cieľom pre trh s grafickými kartami, trénovanie modelov hlbokého učenia je významne urýchlený paralelizovaním násobenia matíc. + + ![Násobenie matíc](./matice.png) +_Obr._ _1. Násobenie matíc_ _[3]._ + +Jednotlivé jadrá grafickej karty sú v porovnaní s jadrami procesora pomalé, ale každé jadro dokáže vypočítať príslušný vektorový komponent. Keby tento výpočet prebiehal na procesore, každý riadok násobenia by sa vykonával sekvenčne. Ak by počet riadkov matice bol _n_, procesor by na výpočet rovnakej úlohy potreboval _n_-krát viacej času. Ak by sme dokázali zredukovať čas potrebný na spracovanie modelu na napríklad na jednu desatinu, v praxi by to znamenalo, že dokážeme vyskúšať desať rôznych prístupov a dosiahnuť oveľa vyššiu presnosť. + +**Word embedding** + +Word embedding je názov pre skupinu techník, slúžiacich na jazykové modelovanie v NLP. V tomto procese sú slová a frázy zo slovníka mapované do vektorov, ktoré majú podobu reálnych čísel. Táto technika zahŕňa premenu priestoru s viacerými dimenziami na spojitý vektorový priestor s nižším počtom dimenzií. Použitím vnorených slov a fráz ako základnou reprezentáciou vstupu bol zaznamenaný zvýšený výkon pri úlohách, ako syntaktická analýza a analýza sentimentov [4]. + +Word embedding je často využívaný v NLP práve pre jeho schopnosť zachytiť z vektorovej reprezentácie slov ich sémantické vlastnosti a lingvistické vzťahy medzi slovami použitím hlbokého učenia [5]. Tým pádom dokáže dať väčšiemu objemu surového textu nejaký kontext. Tým, že z textu získame kontext, sa nám otvárajú dvere pre extrakciu informácií, možnosť odpovedať na rôzne otázky, alebo textová sumarizácia. Na internete sú verejne dostupné rôzne predtrénované vnorené slová, ako napríklad Google News, alebo GloVe. + +**GloVe** + +Tento model kombinuje výhody dvoch najväčších rodín modelov v literatúre – maticová faktorizácia a metódy lokálneho kontextu [6]. Efektívnosť tohto modelu je dosiahnutá hlavne trénovaním iba na nenulových elementoch v maticiach, ktoré reprezentujú spoločný výskyt dvoch slov. Výstupom tohto modelu je významový vektorový priestor. Ďalšou jeho výhodou je vyšší výkon v porovnaní s modelmi založenými na podobnej technológii a to konkrétne v úlohách zameraných na podobnosť a rozpoznávanie vlastných mien. + +| Pravdepodobnosť a pomer | k = pevné | k = plyn | k = voda | k = móda | +| --- | --- | --- | --- | --- | +| P(k|ľad) | 1.9 x 10^-4 | 6.6 x 10^-5 | 3.0 x 10^-3 | 1.7 x 10^-5 | +| P(k|para) | 2.2 x 10^-5 | 7.8 x 10^-4 | 2.2 x 10^-3 | 1.8 x 10^-5 | +| P(k|ľad)/P(k|para) | 8.9 | 8.5 x 10^-2 | 1.36 | 0.96 | + +_Tab. 1. Pravdepodobnosti z testovacieho súboru dát_ _[7]._ + +Hlavná myšlienka tohto modelu vyplýva z obyčajného sledovania pomeru spoločného výskytu dvoch slov. Z toho sa usudzuje, že je z týchto slov neskôr možné vyvodiť ich význam. V tabuľke číslo jeden sa uvažuje výskyt pravdepodobností dvoch slov, ľad a para, s testovacími slovami zo slovníka. Testovací súbor dát má približne šesť miliárd slov. + +Podľa očakávaní, ľad sa vyskytuje častejšie so slovom pevný (myslené skupenstvo), ako so slovom plyn. Naopak, para sa vyskytuje častejšie práve so slovom plyn, ako so slovom pevný. So slovom voda sa tieto dva slová vyskytujú približne rovnako a so slovom móda sa ich výskyt rapídne znižuje. Vďaka týmto pravdepodobnostiam vieme zhruba odhadnúť, že v testovacom súbore mali tieto slová spoločný význam viac v zmysle termodynamiky, ako v móde. + +**Word2vec** + +Word2vec je skupina relačných modelov, ktorá má za úlohu vytvárať word embedding. Tieto modely sú trénované na rekonštrukciu lingvistického kontextu slov. Word2vec používa veľký súbor dát ako svoj vstup a následne produkuje vektorový priestor, zvyčajne o veľkosti niekoľkých stoviek dimenzií. Každému slovu, ktoré je unikátne, je priradený prislúchajúci vektor v priestore. Ich pozícia vyplýva z ich významu, takže slová, ktoré zdieľajú podobný význam, sú uložené bližšie pri sebe. + +Hlavnou výhodou tohto modelu je teda jeho schopnosť vytvárať a niesť sémantický význam, čo je veľmi užitočné pre rôzne NLP projekty [8]. Dve hlavné techniky používané v tomto modely sú _skip-gram_ a _continuous bag-of-words(CBOW)_ [9]. Tieto dva modely vytvárajú odlišne nezávislosť slov a takisto inak vnímajú podmienenosť a predpoklady. Ich spoločnou črtou je rušenie postupnosti slov, ktorá tvorí kontext vety. Sémantickú informáciu teda čerpajú z _n_-tíc slov a Word2vec zostáva naďalej populárnou voľbou z dôvodu jeho efektivity a jednoduchosti. + +Hlavný rozdiel medzi syntaxou s sémantikou je, že dôležitá informácia pre syntax je rozloženie slov vo vete, kdežto sémantika vníma hlavne problém, ktoré slová patria k sebe. Keďže v modely, v ktorom je postupnosť slov zrušená, väčšina syntaktických vzťahov nedokáže byť správne interpretovaná [9]. Model CBOW je využívaný hlavne v úlohách, kedy má syntax prioritu. + +**FastText** + +FastText je voľne dostupná, odľahčená knižnica, určená pre word embedding a klasifikáciu textu. Bola vytvorená v laboratóriách umelej inteligencie spoločnosti Facebook. V súčasnosti obsahuje pred-trénované modely pre vyše 160 rôznych jazykov, vrátane slovenčiny [10]. + +Klasifikácia textu je dôležitou súčasťou NLP a to hlavne v úlohách, ako je webové vyhľadávanie, získavanie informácií, rebríčky, spam filter, alebo klasifikácia dokumentov [11]. V súčasnosti sa dostali do popredia modely na báze neurónových sietí. Napriek tomu, že tieto modely dosahujú nadpriemerné výsledky pri výkone v praktických úlohách, majú tendenciu spomaľovať pri trénovaní a testovaní. To ich limituje pri ich použití na väčších dátových súboroch. Ich hlavnou výhodou sú kompaktné veľkosti trénovacích modelov, čo je dôležité hlavne pre aplikácie, ktoré musia pracovať na zariadeniach s obmedzenou pamäťou, ako napríklad smartfóny [12]. + +Textové klasifikátory ako fastText zjednodušujú vývojárom vývoj rôznych nástrojov s potrebou základnej analýzy jazyka. Práve identifikovanie rôznych odkazov ako potenciálne nechcené, alebo filtrovanie spamu si vyžadujú základný jazykový model, ktorý dokáže tento jazyk správne interpretovať a kategorizovať. + +V porovnaní s Word2vec bol pridaný nový algoritmus. Tento algoritmus berie do úvahy a predpovedá okolitých n-charakterov, kdežto Word2vec spracováva len okolité slová [3]. Pre slovo auto by to boli napríklad dvojice a trojice: au, aut, ut, uto, to. FastText následne vytvára vektorovú reprezentáciu pre každú takúto dvojicu, alebo trojicu. To zahŕňa aj zle napísané slová a časti slov. Výhodou tohto prístupu je, že fastText lepšie zvláda prácu so slovami s menej častým výskytom. Predtrénované modely poskytované Facebookom boli trénované iba na dostupných súboroch dát Wikipedie. To znamená, že slovník a presnosť modelov sa môžu líšiť v závislosti od jazyka. + + + + + + + + + + + + + +**Zoznam použitej literatúry** + +[1]. Moghrabi, C. - Moussa, S. E. - Eid, M. S. Natural language processing complexity and parallelism. IEEE: Proceedings - International Symposium on High Performance Computing Systems and Applications, 2002. 277 str. ISBN 0-7695-1626-2. + +[2]. Jos, Alexandre. Paraleliza¸c˜ao de Algoritmos de Processamento de L´ıngua Natural em Ambientes Distribu´ıdos. [Online] Instituto Superior Técnico, Universidade Técnica de Lisboa, október 2008 [cit. 08.11.2019] Dostupné na internete: \<[http://www.inesc-id.pt/publications/4052/pdf](http://www.inesc-id.pt/publications/4052/pdf)\> + +[3]. Lane H. – Howard C. – Hapke H. M. Natural Language Processing: In Action. New York: Manning Publications Co., 2019. ISBN 9781617294631. + +[4]. Socher R. – Bauer J. – Manning C. et al. Parsing With Compositional Vector Grammars. Stanford: Computer Science Department, Stanford University, 2013. ISBN 9781937284503. + +[5]. Wang Y. – Liu S. – Afzal N. et al. A Comparison of Word Embeddings for the Biomedical Natural Language Processing. Rochester: Department of health Sciences Research, Mayo Clinic, 2018. ISSN 15320464. + +[6]. Pennington J. – Socher R. – Manning C. GloVe: Global Vectors for Word Representation. Stanford: Computer Science Department, Stanford University, 2014. ISSN 00047554. + +[7]. GloVe: Global Vectors for Word Representation. [Online]. Dostupné na internete: \<[https://nlp.stanford.edu/projects/glove/](https://nlp.stanford.edu/projects/glove/)\> + +[8]. Rong Xin. Word2vec Parameter Learning Explained. [Online]. 2016 [cit. 10.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1411.2738.pdf](https://arxiv.org/pdf/1411.2738.pdf)\> + +[9]. Ling W. – Dyer C. – Black A. et al. Two/Too Simple Adaptations of Word2Vec for Syntax Problems. [online]. Lisbon: Instituto Superior Tecnico, Lisbon, Portugal, 2015 [cit. 10.11.2019] Dostupné na internete: \<[https://www.aclweb.org/anthology/N15-1142.pdf](https://www.aclweb.org/anthology/N15-1142.pdf)\> + +[10]. fastText: Library for efficient text classification and representation learning. [Online]. Dostupné na internete: \<[https://fasttext.cc/](https://fasttext.cc/)\> + +[11]. Joulin A. – Grave E. – Bojanowski P. et al. Bag of Tricks for Efficient Text Classification. [Online]. 15th Conference of the European Chapter of the Association for Computational Linguistic, EACL 2017 [cit. 11.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1607.01759.pdf](https://arxiv.org/pdf/1607.01759.pdf)\> + +[12]. Joulin A. – Grave E. – Bojanowski P. et al. FastText.zip: Compressing Text Classification Models. [Online]. ICLR, 2017. [cit. 11.11.2019] Dostupné na internete: \<[https://arxiv.org/pdf/1612.03651.pdf](https://arxiv.org/pdf/1612.03651.pdf)\> \ No newline at end of file