Konvolutsiooniline närvivõrk (Convolutional Neural Network)

Konvolutsioonilisi närvivõrke (Convolutional Neural Network - CNN) kasutatakse pildi klassifitseerimiseks (image classification - mis objekt on pildil millise tõenäosusega), objekti tuvastamiseks (object detection - tuvastatakse mitmed objektid pildilt), objekti segmenteerimiseks (object segmentation - milline piksel pildilt kuulub millist tüüpi objektile).

../../_images/localization_vs_detection.png

Klassifitseerimise ja tuvastamise vahe. Pildi allikas: https://analyticsindiamag.com/top-5-image-classification-research-papers-every-data-scientist-should-know/

CNN tööpõhimõte on saanud inspiratsiooni juba 1960ndatel aastatel läbiviidud teadusuuringust loomade nägemisest. Nad on oma uuringute tulemusena saanud ka Nobeli preemia 1981. aastal. Nad panid tähele, et kassi neuron aktiveerus kui nägemisalas teatud piirkonnas näidati valgust. Ehk siis üks neuron reageerib vaid teatud piirkonnale kogu nähtavast alast. Need erinevad piirkonnad on väikese ülekattega. Kokku katavad nad ära kogu nähtava ala. Sarnast loogikat kasutatakse ka CNN puhul.

../../_images/hubel-experiment.jpg

Hubel ja Wiesel eksperiment. Pildi allikas https://goodpsychology.wordpress.com/2013/03/13/235/

Põhjalikumalt CNN ajaloo kohta saab lugeda näiteks siit: https://www.esantus.com/blog/2019/1/31/convolutional-neural-networks-a-quick-guide-for-newbies

Närvivõrk koosneb erinevatest kihtidest. Kõige esimene kiht on sisendkiht, kuhu antakse sisendandmed. Kiht koosneb neuronitest, millest igaüks tähistab mingit väärtust sisendi kohta. Sisendile järgneb mitu peidetud kihti, mis samamoodi koosnevad neuronitest. Tavapäraselt liigub igast sisendneuronist infot igasse järgmise peidetud kihi neuronisse. Neuronite arv peidetud kihil võib olla erinev sisendkihil olevatest. Peidetud kihte võib olla mitu tükki. Igal kihil võib omakorda olla erinev hulk neuroneid. Peale viimast peidetud kihti liiguvad andmed väljundkihti, mis näiteks ütleb, millisesse klassi antud sisend kuulub. Väljundkihis võib ka mitu neuronit olla. Info liigub vasakult paremale. Peidetud kihi neuronid on justkui funktsioonid, mis arvutavad sissetulnud andmete pealt uue väärtuse, mis siis omakorda antakse edasi järgmisele kihile. Seda funktsiooni, mis arvutab sisendi pealt uue tulemuse nimetatakse aktivatsioonifunktsiooniks.

../../_images/neural_net2.jpeg

Närvivõrk, kus vasakul on sisendkiht (input layer), sellele järgnevad kaks peidetud kihti (hidden layer) ja kõige paremal on väljundi kiht (output layer). Info sisestatakse sisendkihti ja liigub seejärel vasakult paremale. Lõpuks on väljundiks näiteks info, kas pildil on kass või mitte. Pildi allikas: https://cs231n.github.io/convolutional-networks/

Iga ühendus järgmise kihiga omab kaalu. Neuron võtab kõik ühenduste kaudu tulevad väärtused, korrutab need ühenduste kaaludega ja summeerib kokku. Sedasi saadakse sisendi kaalutud summa, mis on sisendiks aktivatsioonifunktsioonile.

Konvolutsiooniline närvivõrk

Piltidega tegelemiseks kasutatakse konvolutsioonilisi närvivõrke. Tavalise närvivõrgu probleem on see, et kui sisendiks on pildi pikslid (nende väärtus näiteks värvi ja/või värvitugevusena), siis närvivõrgu jaoks on need andmed ühe pika vektorina ning pikslite asukohta ei võeta arvesse. Konvolutsioonilise närvivõrgu korral saadetakse järgmisesse kihti vaid lähestikku paiknevad neuronid. Ehk kui tavalise närvivõrgu puhul jõuavad sisendkihist esimese peidetud kihi neuronini iga sisendneuroni info, siis konvolutsioonilise närvivõrgu puhul vaid mingi väiksem alamhulk. Kui näiteks pildi mõõtmed on 1000 x 1000 pikslit, siis võib üks väike alamosa olla 10x10 pikslit (või isegi väiksem).

Lisalugemist