diff --git a/pages/students/2019/michal_stromko/vp2023/Dokumentacia.md b/pages/students/2019/michal_stromko/vp2023/Dokumentacia.md index cfe649240f..04c9a412d5 100644 --- a/pages/students/2019/michal_stromko/vp2023/Dokumentacia.md +++ b/pages/students/2019/michal_stromko/vp2023/Dokumentacia.md @@ -20,18 +20,18 @@ # Úvod -Cieľom tejto práce je zoznámenie sa s možnosťami hodnotenia modelov. Natrénovaný model dokážeme vyhodnocovať viacerými technikami s použitím rôzdnych open source riešení. Každé z riešení nám ponúkne iné výsledky. V tejto práci bližšie opíšem základné pojmy, ktoré je potrebné poznať pri hodnotení. Opíšem základné informácie o technikách hodnotenia od základných pojmov ako napríklad Vektorové vyhľadávania, DPR, Sentence Transformers, BM-25, Faiss a mnoho ďalších. +Cieľom tejto práce je zoznámenie s možnosťami hodnotenia modelov. Natrénovaný model dokážeme vyhodnotiť viacerými technickými metódami s použitím rôzdnych open source riešení. Každé z riešení nám ponúkne iné výsledky. V tejto práci bližšie opíšem základné pojmy, ktoré je potrebné poznať pri hodnotení. Opíšem základné informácie o technikách hodnotenia od základných pojmov ako napríklad Vektorové vyhľadávania, DPR, Sentence Transformers, BM-25, Faiss a mnoho ďalších. # Základné znalosti -Na začiatok je potrebné povedať, že pri spracovaní prirodzeného jazyka dokážeme používať rôzne metódy prístupu hodnotenia modelu, poprípade aj vyhľadávanie v modeli. V poslených rokoch sa v praxi stretávame s vyhľadávaním na základe vypočítania vektorov. Následne na takto vypočítané vektory dokážeme pomocou kosínusovej vzdialenosti nájsť vektory, inak povedané dve čísla, ktoré sú k sebe najblyžšie. Jedno z čísel je z množiny vektorov, ktoré patria hľadanému výrazu, druhé číslo patrí slovu alebo vete, ktorá sa nacháza v indexe. +Na začiatok je potrebné povedať, že pri spracovaní prirodzeného jazyka dokážeme používať rôzne metódy prístupu hodnotenia modelu, poprípade aj vyhľadávanie v modeli. V poslených rokoch sa v praxi stretávame s vyhľadávaním na základe vypočítania vektorov. Následne na takto vypočítané vektory dokážeme pomocou kosínusovej vzdialenosti nájsť vektory, inak povedané dve čísla, ktoré sú k sebe najbližšie. Jedno z čísel je z množiny vektorov, ktoré patria hľadanému výrazu, druhé číslo patrí slovu alebo vete, ktorá sa nacháza v indexe. Vyhodnotenie vyhľadávania je v modeli dôležité z hľadiska budúceho použitia modelu do produkcie. Pokiaľ sa do produkcie dostane model, ktorý bude mať nízke ohodnotenie bude sa stávať, že vyhľadávanie bude nepresné čo znamená, že výsledky nebudú relevantné k tomu čo sme vyhľadávali. ## Zameranie práce -V tejto práci som realizoval viaceré experimenty, v ktorých som hodnotil vyhľadávanie pomocou modelov, do ktorých bol zaembedovaný text. Každý text obsahuje ďalšie atribúty, ako otázky a odpovede. Otázky sa následne pošlú na vyhľadanie a čaká sa na výsledok vyhľadávania. Výsledky, ktoré prídu sa následne porovnajú s očakávanými odpoveďami. Najdôležitejšie je nájsť v jednej odpovedi čo najviac správnych výsledkov. Následne je potrebné spočítať počet správnych výsledkov a použiť správne vzpočítanú presnosť a návratnosť vyhľadávania. V tomto prípade presnosť a návratnosť počítame pre hodnotenie všetkých otázok. Čím sú hodnoty vyššie, tak konštatujeme, že vyhľadávanie pomocou danej metódy je presné a dokážeme ho používať v produkcii. +V tejto práci som realizoval viaceré experimenty, v ktorých som hodnotil vyhľadávanie pomocou modelov, do ktorých bol zaembedovaný text. Každý text obsahuje ďalšie atribúty, ako otázky a odpovede. Otázky sa následne pošlú na vyhľadanie a čaká sa na výsledok vyhľadávania. Výsledky, ktoré prídu sa následne porovnajú s očakávanými odpoveďami. Najdôležitejšie je nájsť v jednej odpovedi čo najviac správnych výsledkov. Následne je potrebné spočítať počet správnych výsledkov a použiť správne vypočítanú presnosť a návratnosť vyhľadávania. V tomto prípade presnosť a návratnosť počítame pre hodnotenie všetkých otázok. Čím sú hodnoty vyššie, tak môžeme konštatovať, že vyhľadávanie pomocou danej metódy je presné a dokážeme ho používať v produkcii. Dôležtým atribútom, s ktorým sme vykonávali testovanie bolo menenie parametra **top_k**. Tento parameter znamená počet najlepších odpovedí na výstupe vyhľadávania. Čím je tento paramter väčší, tým môžeme očakávať, že sa v ňom bude nachádzať väčšie množstvo správnych odpovedí. V konečnom dôledku to vôbec nemusí byť pravda, pretože ak máme kvalitne natrénovaný model a dobre zaembedované dokumenty dokážeme mať správne výsledky na prvých miestach čo nám ukazuje, že parameter *top_k* može mať menšiu hodnotu. @@ -44,9 +44,9 @@ Použil som vyhľadávanie pomocou: - Faiss - BM25 - LaBSE - - sts-slovakbert-stst + - sts-slovakbert-stsb -Každá jedna metóda pracuje s úplne iným modelom. Modely LaBSE a sts-slovakbert-stst používali rovnakú knižnicu na vytvorenie vektorov aj vyhľadávanie. +Každá jedna metóda pracuje s úplne iným modelom. Modely LaBSE a sts-slovakbert-stsb používali rovnakú knižnicu na vytvorenie vektorov aj vyhľadávanie. #### Faiss @@ -54,18 +54,18 @@ Faiss používal knižnicu spacy, do ktorej parameter model_name vstupoval model #### BM25 -BM25 je jeden z najstarších možností vyhľadávania v neuónových sieťach, napriek tomu je stále stabilná a relatívne presná aj v dnešnej dobe. +BM25 je jeden z najstarších možností vyhľadávania v neuónových sieťach, napriek tomu je stále stabilný a relatívne presní aj v dnešnej dobe. -Pri vyhľadávaní informácii v BM25, ktorý je označný ako Okapi a funguje na vyhľadávaní najlepšej zhode. Vyhľadávanie funguje na nájdení najlepších dokumentov, ktoré sú zoradené podľa relevantnosti k vyhľadanej požiadavke. Je založený na zoradení na pravdepodobnostnom rámci. BM 25 bol v priebehu rokov modifikovaný a vylepšovaný. +Pri vyhľadávaní informácii v BM25, označený Okapi je navrhnutý tak, že vyhľadáva na základe najlepšej zhody. Vyhľadávanie funguje na nájdení najlepších dokumentov, ktoré sú zoradené podľa relevantnosti k vyhľadanej požiadavke. Je založený na zoradení na pravdepodobnostnom rámci. BM 25 bol v priebehu rokov modifikovaný a vylepšovaný. Pre vypočítanie skóra používa Inverse documents frequency (IDF). Vypočíta sa ako N a značí celkový počet dokumentov. Pri výpočte sa používa maximálna hodnota zo všetkých indexov, ktorá pochádza z najväčšieho indexu disku. Pre lepšie pochopenie IDF vypočítava uzol obsahu a index, treba však rátať s tým, že sa môžu vyskytovať mierne odchylky. Jedným z dôležitých atribútov je či sa konenčný výsledný dokument vyskytne viackrát v relevantých odpovediach. Čím viackrát sa opakuje jeden dokument, tým je väčšia pravdepodobnoť, že bude označený za jeden z najlepších výsledkov vyhľadávania. -Evaluovanie pomocou modelu LaBSE a sts-slovakbert-stst som realizoval použítím knižnice **Sentence tranformers**. Práca s touto knižnicou je veľmi jednoduchá, pretože v dokumentácii, ktorú obsahuje, vieme veľmi jednodochu zaembedovať dokumenty a zároveň aj vyhľadávať. +Evaluovanie pomocou modelu LaBSE a sts-slovakbert-stsb som realizoval použítím knižnice **Sentence tranformers**. Práca s touto knižnicou je veľmi jednoduchá, pretože v dokumentácii, ktorú obsahuje, vieme veľmi jednoducho zaembedovať dokumenty a zároveň aj vyhľadávať. -Ako môžete vidieť v práci som použil model LaBSE aj keď som mal k dispozícii priamo natrénovaný model pre slovenčinu. Bolo to z dôvodu zistiť ako sa bude správať model LaBSE oproti modelu, ktorý bol natrénovaný pre Sloveský jazyk. Model LaBSE nebol vybratý len tak náhodou. Je to špecifický model, ktorý bol natrénovaný tak, aby podporoval vyhľadávanie, klasifikáciu textu a ďalšie aplikácie vo viacerých jazykoch. Vo všeobecnosti je označovaný ako multilangual embedding model. Je to model, ktorý je prispôsobený rôznym jazykom nielen pri indexovaní, ale aj vyľadávaní. Nájväčšou výhodou modelu je, že môžeme mať dokument, v ktorom sa nachádzajú vety vo vicacerých jazykoch. Pre niektoré modeli je to veľké obmedzenie, s ktorým si neporadím, avšak LaBSE je stavaný na takéto situácie, a tak si ľahko poradí a zaindexuje tento dokument. +Ako môžete vidieť v práci som použil model LaBSE aj keď som mal k dispozícii priamo natrénovaný model pre slovenčinu. Bolo to z dôvodu zistiť ako sa bude správať model LaBSE oproti modelu, ktorý bol natrénovaný pre Sloveský jazyk. Model LaBSE nebol vybratý len tak náhodou. Je to špecifický model, ktorý bol natrénovaný tak, aby podporoval vyhľadávanie, klasifikáciu textu a ďalšie aplikácie vo viacerých jazykoch. Vo všeobecnosti je označovaný ako multilangual embedding model. Je to model, ktorý je prispôsobený rôznym jazykom nielen pri indexovaní, ale aj vyľadávaní. Nájväčšou výhodou modelu je, že môžeme mať dokument, v ktorom sa nachádzajú vety vo vicacerých jazykoch. Pre niektoré modeli je to veľké obmedzenie, s ktorým si neporadia, avšak LaBSE je stavaný na takéto situácie, a tak si ľahko poradí a zaindexuje tento dokument. #### slovakbert-sts-stsb Môžeme ho označiť ako sentence similarity model založený na SlovakBERT. Model bol dotrénovaný na STSbenchmark a preložený do slovenčniny pomocou M2M100. Model používa univerzálny sentence enkóder pre slovenské vety. Autory článku, ktorý trénovali SlovakBERT uvádzajú, že model je založený na large-scale transformers-based a používa 19,35 GB dát získaných z crawlovania webov so slovenským textom. Autori nakoniec vyhodnotili a prirovnali tento model ku ostatným veľkým jayzykovým modelom, ako napríklad XLM-R-Large. @@ -74,7 +74,7 @@ Je to síce prvý model, ktorý dosahuje najlepšie výsledky oproti ostatným j Hodnotenie modelu prebiehalo hlavne pomocou metriky F1. F1 bola priemerovaná zo súborov údajov. Autori modelu uvádzajú, že pri použití nízkych hodnôť hyperparametrov sa váhy moc nemenia, čo znamená lepšie výsledky hodnotenia. -Ďalšou nevýhodou tohto jazykového modelu je, že mal nedostatok hodnotiacich benchmarkov. Ďalej vznikal problém s korpusom textov, tento model bol natrénovaný na dátach, ktoré boli vytvorené strojovým prekladom. Práve kvôli tomu vznikali chyby ako *noisy datasets (v prípade analýzy sentimentu)*. +Nevýhodou tohto jazykového modelu je nedostatok hodnotiacich benchmarkov. Ďalej vznikal problém s korpusom textov, tento model bol natrénovaný na dátach, ktoré boli vytvorené strojovým prekladom. Práve kvôli tomu vznikali chyby ako *noisy datasets (v prípade analýzy sentimentu)*. @@ -133,7 +133,7 @@ Metóda BM25 počas všetkých experimentov vykazovala najlepšie výsledky, nie ![BM25](img/bm25.png) -- Metódou sentence transformers s použitím slovakbert-sts-sts +- Metódou sentence transformers s použitím slovakbert-sts-stsb Model slovakbert, ktorý bol zverejnený na konci minulého roka, dosiahol pri poskytnutom datasete perfektné výsledky. Dovoľujem si to tvrdiť z toho dôvodu, že nebol trénovaný na datasete, ktorým bol hodnotený. V budúnosti by mohlo byť zaujímavé dotrénovať tento model pomocou použitého datasetu a následne takýto model ohodnotiť. Predpokladám, že tento model by mohol lepšie vyhľadávať aj pri menšom množstve najlepších výsledkov z vyhľadávania.