< eelmine | 2. OSA sisukord | järgmine > |
2.5 Tehisnärvivõrgud autor: Ardi Tampuu
Viimase 5 aasta jooksul on sügavõpe (ingl deep learning) ehk sügavate tehisnärvivõrkude (ingl deep neural networks) rakendamine saanud erinevates valdkondades aina asendamatumaks. Enne, kui seletame, kuidas need võrgud ennustusi teevad ja kuidas andmetest õpivad, seletame lühidalt, miks just see masinõppe algoritm on nii edukaks osutunud.
Miks just tehisnärvivõrgud?
Sügavatel tehisnärvivõrkudel on üsna haruldane võime õppida kujutama keerulisi, väga paljude tunnustega andmeid (teksti, helisid ja kõne, pilte, videoid) vähemate tunnustega, aga kasulikul kujul. Piltide kujutamist arvutis vaatame lähemalt järgmisel nädalal, masinnägemise loengus. Siinkohal loodame, et lugeja usub, kui ütleme, et iga pilt arvutis koosneb miljonitest arvudest, mis defineerivad, mis värvi on iga piksel (täpike pildil). Näiteks foto inimese näost koosneb miljonitest piksliväärtustest. Peatükis 2.1 tunnustest rääkides mainisime, et liiga palju tunnuseid võib tekitada probleeme. Mudelite õppimine muutub arvutuslikult kulukamaks. Lisaks on mudeli oht ülesobituda suurem. Seetõttu oleks hea, kui leiaksime viisi piltidel olev info vähema arvu tunnuste kaudu kokku võtta. Miljonite tunnuste puhul on inimestel endil, näiteks andmeteadlasel, aga keeruline leida viise, kuidas tunnuste arvu märgatavalt vähendada ilma, et oluline info kaotsi läheks.
Tehisnärvivõrgud on võimelised andmete põhjal ise õppima, kuidas oleks efektiivne tunnuseid kombineerida (Joonis 35). Tehisnärvivõrk võib õppida, kuidas miljon piksliväärtust kokku kombineerida ja esitada pildil sisalduv info tuhandeid kordi väiksema arvu arvuliste tunnuste abil. Seejuures ei lähe kaotsi info, mis võimaldab näiteks fotolt inimest tuvastada. Just seda kasulike ja efektiivsete tunnuste õppimise võimet peetakse tehisnärvivõrkude edu saladuseks. See eristab neid paljudest teistest masinõppe algoritmidest, mis ootavad juba sisendina vähe tunnuseid, mis on kõik informatiivsed. Kogemus on näidanud, et ka kogenud andmeteadlasel on raske ise välja mõelda, mis on need informatiivsed tunnused, mis võtaksid kokku pildis sisalduva info (on need näiteks joonte asukohad? Tekstuur erinevates pildiosades?). Seega tehisnärvivõrgud, mis suudavad ise õppida, kuidas sisendit kompaktselt (väiksema hulga arvude abil) kujutada, on näiteks piltide mõistmisel efektiivsemad kui need teised algoritmid.
Mis on tehisnärvivõrgud?
Tehisnärvivõrgud on üks masinõppe mudelite tüüp, see tähendab, et ka nemad koosnevad lihtsalt arvutuslikest sammudest, mida tuleb üksteise järel teha. Need tehisvõrgud on inspiratsiooni saanud päris ajurakkude ehk neuronite võrgustikest ajus ning koosnevad samuti neuronitest. Tehisneuronid (ingl artificial neurons) püüavad imiteerida seda, kuidas päris neuronid infot töötlevad, ehk kuidas neuronid üksteiselt signaale vastu võtavad ja neile reageerivad. Nagu ka päris neuronid, saavad tehisneuronid signaale teistelt neuronitelt ja reageerivad neile signaalidele teatud viisil. Päris neuronite hulgas on suur variatiivsus ja iga neuron või neuronitüüp võib olla erinev. Seevastu tehisneuronite puhul on valemiga väga täpselt ja üheselt defineeritud, kuidas neuron käitub ja kõik neuronid käituvad samal viisil.
Iga tehisneuron võtab teistelt neuronitelt vastu sisendeid - igalt talle sisendit andvalt neuronilt üks reaalarv. Iga sisend korrutatakse läbi erineva ühendustugevuse ehk kaaluga (ingl weight), kaalud on samuti reaalarvud. Kaalude ja sisendite korrutised liidetakse ja saadud summale rakendatakse teatud funktsioon (aktivatsioonifunktsioon). Lõpptulemusena saadud arv, selle neuroni väljund, edastatakse järgmistele neuronitele sisendiks. Ühe neuroni tehtavad arvutused on illustreeritud Joonisel 36.
Tehisnärvivõrgud koosnevad paljudest tehisneuronitest, mis on organiseeritud kihtidesse (ingl layer) ja mis on omavahel ühendatud. Kihi all võib mõista lihtsalt teatud gruppi neuroneid. Kihid on asetatud teatud järjekorda, nii et iga järgneva kihi sisendiks on eelneva kihi väljundid. Seega liigub info (signaal neuronites) esimesest kihist viimase kihi suunas. Kõiki keskmisi kihte, mis pole esimene ega viimane kiht kutsutakse peidetud kihtideks (ingl hidden layers). Võrgu sügavus, millest tulenevad mõisted sügavõpe ja sügavad tehisnärvivõrgud, vastabki kihtide arvule võrgus.
Kogu võrk toimib nagu kirjeldatud Joonisel 37. Esmalt sisestatakse sisendid (tunnuste väärtused, näiteks pildi pikslite väärtused) võrku, pannes esimese, nn. sisendkihi (ingl input layer), väljundid vastama neile väärtustele. Igale tunnusele vastab üks neuron. Seega sisendkihis arvutusi ei toimugi, lihtsalt sisestatakse väärtused. Seejärel sooritatakse arvutused tehisneuronites kiht kihi haaval, kasutades iga kihi väljundite arvutamiseks eelmise kihi väljundeid, kaale ning aktivatsioonifunktsiooni. Lõpptulemuseks saame igast viimase kihi neuronist väljundina mingi reaalarvu. Need väljundid ongi selle võrgu vastus või ennustus antud sisendtunnuste puhul. Seega kutsutakse viimast kihti väljundkihiks (ingl output layer). Juhendatud õppes on meil teada ka õige, oodatud vastus. Seega saame arvutada, kui suure vea tegi meie võrk.
Õppimine
Teades seda, milline on viga, ja seda, kuidas meie võrk sisendist kaalude põhjal vastuse arvutas, saame me küsida iga kaalu kohta:
Tehisnärvivõrgu optimeerimine (paremaks tegemine; treenimine) ongi selline iteratiivne protsess, kus algselt antakse kaaludele juhuslikud väärtused ja siis hakatakse neid kaale järk-järgult paremaks tegema (Joonis 38). Iga kord küsime iga ühendustugevuse kohta: “Mis suunas peaks see kaal muutuma, et viga väiksem ja mudel parem oleks?”. Ning muudamegi kaale selles suunas. Korrates sellist optimeerimissammu (õpisammu) - muutes kaale suunas, mis teeb vea väiksemaks - saamegi lõpuks mudeli, mis annab õigeid vastuseid (treeningnäidete puhul, siinkohal me ülesobitamisest uuesti eraldi ei räägi).
Joonisel 38 on seletatud, kuidas võiks toimuda üks õpisamm väga väikeses võrgus, mis koosneb ainult kolmeneuronilisest sisendkihist, ühest kaheneuronilisest peidetud kihist ja ühest väljundkihi neuronist. Kui rakendame tehisnärvivõrke päriselt, siis on võrgud tuhandeid kordi suuremad. Meil võib olla miljoneid sisendneuroneid ja lausa sadu peidetud kihte, milles igaühes on tuhandeid neuroneid. Arvutuskäigu loogika sisenditest väljundite saamiseks jääb samaks - kiht kihi haaval arvutatakse neuronite väljundeid. Lihtsalt arvutusi on suurtes võrkudes meeletult palju. Ka ühendustugevusi (kaale) on miljoneid ja on olemas õppimisalgoritmid, mis võimaldavad efektiivselt arvutada, millises suunas ja kui palju iga kaalu muuta. (NB! Näites muutsime me kõiki kaale 0.1 võrra, aga tegelikult võib ka muutmise hulka varieerida). Need algoritmid baseeruvad gradientlaskumise algoritmil (ingl gradient descent) ja kasutavad efektiivseteks arvutusteks vea tagasilevi meetodit. Neid tehnilisi termineid te meelde jätma ei pea, lihtsalt teadke, et tehisnärvivõrgud on tegelikkuses tohutult suured, aga eksisteerivad meetodid, mis võimaldavad neid efektiivselt näidete põhjal õpetada.
Nende miljonitest neuronitest koosnevate võrkude kasutamist ja nende igasuguste erivormide ja trikkide välja mõtlemisest on saanud tohutu suur teadusharu. Neid rakendatakse nii ärilistes kui teaduslikes valdkondades, piltide, tekstide, kõne, keemiliste ühendite omaduste, genoomi, finantsturgude ja paljude muude andmeallikate töötlemiseks, mõistmiseks ning nende põhjal ennustuste tegemiseks. Neid võrke saab ka adapteerida kasutamiseks juhendamata masinõppe eesmärkidel. Juhendamata tehisnärvivõrkudel rajanevad ka meie eelmise peatüki näited kasutajate käitumismustrite mõistmisest Netflixi voogedastusplatvormil ja Amazoni ning eBay veebipoodides.
Järgnevatel nädalatel näeme mitmeid tehisnärvivõrkude rakendamise valdkondi lähemalt. Järgmisel nädalal keskendume masinnägemisele. Seejärel vaatame isejuhtivaid tehnoloogiaid ja keeletöötlust. Loodame, et nende spetsiifiliste näidete abiga saab lugejale veelgi selgemaks, mis on tehisnärvivõrgud ja kuidas neid kasutada saab.
Kursuse loengud koostasid Tartu Ülikooli teadlased erinevatest uurimisrühmadest, kes on oma valdkonna eksperdid. Tutvu kursuse korraldajatega siin.
Kui Teil on soov süveneda lemmikusse tehisintellektiga seotud teemasse, tutvuge arvutiteaduse instituudi ning teiste instituutide poolt pakutavate kursustega siin.
< eelmine | 2. OSA sisukord | järgmine > |