maanantai 7. lokakuuta 2019

Konvoluutioneuroverkot

Kirjoittaja: Helinä Heino



Konvoluutiolla irrotetaan piirteitä. Yksinkertaisimmillaan piirteet voivat olla esimerkiksi reunoja, ja monimutkaisemmat piirteet voivat muistuttaa esimerkiksi silmän rakennetta. Piirteitä yhdistelemällä voidaan lopulta tunnistaa vaikkapa kasvot tai syöpäkasvain. Kuva Pixabayn kuvapankista.


Konvoluutioneuroverkkoja (convolutional neural networks, CNN) käytetän yleensä kuvien luokitteluun ja tunnistamiseen. Alunperin nämä verkot on kehitetty ikään kuin matkimaan eläinten näköhermoston toimintaa.
  
Kuvantunnistus perinteisellä ohjelmoinnilla on ollut ongelmallista, sillä pelkästään valaistuksen muutos, kuvausväline, erilaiset taustat, liikkeen aiheuttamat vääristymät ja erilaiset kuvakulmat luovat kuvantunnistusmenetelmien kannalta haasteellista vaihtelua. Siispä yksikäsitteistä matemaattista mallia, joka ottaisi huomioon nämä kaikki seikat, lienee mahdotonta luoda.

Jos haluttaisiin varmasti tunnistaa esimerkiksi tietyn henkilön kasvot kuvista perinteisin keinoin, niin periaatteessa hänestä pitäisi ensin ottaa kuvia kaikista mahdollisista kulmista, kaikilla mahdollisilla valaistuksilla, varjostuksilla ja erilaisilla ilmeillä (esim. irvistys vs levollinen ilme muuttavat kasvoja melkoisesti), sekä näiden yhdistelmillä. Lisäksi olisi hyvä olla tiedossa käytetyn kuvausvälineen ominaisuudet jotta osattaisiin käsitellä mahdollisia tyypillisiä kuvausvirheitä.

Arvioitavaa tai luokiteltavaa uutta kuvaa verrattaisiin edellä kuvattuun massiiviseen aineistoon, jotta saataisiin osuma pitäsi tietokannasta löytyä jotakuinkin samanlainen kuva (ideaalitapauksessa samanlainen kuva kasvoista) valitulla tarkkuudella. Tätä varten laskettaisiin virhe analysoitavan kuvan ja kuvapankissa olevien kuvien välille. Jos virhe olisi kasvojen kaikissa kohdissa riittävän pieni, voitaisiin henkilö tunnistaa kuvasta.

Tärkeiden piirteiden valinnalla (olennaiset yksilölliset piirteet/mittasuhteet) edellä kuvattua työsarkaa voitaisiin helpottaa mutta siltikin jäljelle jäisi valtava määrä erilaisia huomioon otettavia asioita.

Lääketieteellisten kuvien luokittelussa (esim. terve vai sairas) tilanne menisi vieläkin hankalammaksi, sillä nyt pitäisi ottaa huomioon edellisten lisäksi mm. ympäröivien kudosten rakenne, mahdolliset muut sairaudet ja fysiologiset anomaliat, sekä potilaan ikä ja sukupuoli. Kudokset rappeutuvat vanhetessa, ja toisaalta täysin terveelläkin ihmisellä voi olla kuvissa näkyviä poikkeavuuksia. Ei siis ole olemassa suoranaista vertailukohtaa, jonka perusteella voisi sanoa, että tutkittava kudos on kauttaaltaan terve tai selkeästi sairas.

Edellä kuvaillusta informaatiotulvasta pitäisi kyetä erottelemaan tutkittavan sairauden kannalta olennaiset piirteet ja sivuuttamaan tarpeeton informaatio.  Erilaisia piirteitä, niiden yhdistelmiä ja muuta huomioon otettavaa informaatiota on yksinkertaisesti niin paljon että ihmismieli ei kykene käsittelemään kaikkea saatavilla olevaa dataa. Tietokone käsittelee kuvia numeroita sisältävinä kokonaisuuksina (matriiseina) ja se pystyy havainnoimaan yksittäisiäkin pikseliarvoja. Ihmisen havainnointikyky ei riitä tällaiseen pikselitason kuva-analyysiin. AIDMEI-projektissa tutkitaan esimerkiksi, pystyisikö tekoälyalgoritmi  löytämään kuvadatasta syövän esiasteita, mahdollisesti tällaisina ihmissilmälle näkymättöminä minimaalisina pikselikokoluokan esiintyminä tai rakenteina.     



Konvoluutioneuroverkkojen perusteet

Konvoluutioneuroverkko perustuu piirteiden poimimiseen/irrottamiseen kuvista ja niiden analysointiin tilastotieteen keinoin. Koulutusvaiheessa verkko oppii opetusdatasta näitä piirteitä ja pyrkii luokittelemaan automaattisesti uutta dataa oikeisiin luokkiin näiden piirteiden perusteella (eli lääketieteellisten kuvien tapauksessa antamaan diagnoosin kudoksen terveydentilasta). Jos verkko on onnistuttu kouluttamaan hyvin, sitä voidaan käyttää uusien kuvien luokitteluun. Uutta dataa ei siis verrata opetusdatan kuviin, vaan niiden tuottamaan matemaattiseen malliin, joka poimii datasta olennaiset piirteet joiden perusteella verkko antaa luokituksensa tai ennusteensa.

Piirteiden poimiminen tapahtuu kerroksittain ns. konvoluutio-operaation avulla (tästä lisää myöhemmin). Piirteet voivat olla alussa nurkkia, reunoja tai muita yksinkertaisia muotoja. Syvemmissä kerroksissa näitä alkeellisia piirteitä yhdistelemällä voidaan havaita monimutkaisempia piirteitä, kuten silmiä, kissoja, yms. Lopulta voidaan tunnistaa vaikkapa kasvoja tai syöpäkasvaimia.

Tällä hetkellä syvien konvoluutioneuroverkkojen soveltaminen terveydenhuollon diagnostiikassa on tuottanut lupaavia tuloksia. Verkkoja on koulutettu mm. tunnistamaan rintasyövän etäpesäkkeitä kudosnäytteistä (https://www.mtvuutiset.fi/artikkeli/tekoaly-voi-tunnistaa-rintasyovan-etapesakkeet-yhta-hyvin-tai-paremmin-kuin-patologi/6695036).  Tässä etäpesäkekokeessa verkon suorituskyky oli kokeneen patologin tasolla. Luonnollisestikin nyt kehitteillä oleviin tekoälysovelluksiin tarvitaan vielä lisää tutkimuksia, mutta tulokset antavat jo nyt viitteitä tehokkaasta tavasta lisätä diagnostiikan tarkkuutta ja sujuvuutta.



Konvoluutio 

Konvoluutio-operaatio on keskeisessä osassa konvoluutioneuroverkossa. Kuvankäsittelyn matematiikassa konvoluutiota varten määritetään ns. maski tai ydin, jolla kuva käydään pikseli kerrallaan läpi. Käsiteltävälle pikselille lasketaan uusi arvo perustuen sen nykyiseen arvoon, sen naapuripikselien arvoon ja konvoluutiomaskin sisältämiin painokertoimiin. Maski siis ikään kuin asetetaan käsiteltävän pikselin ja sen naapuruston päälle, kerrotaan maskin ja pikseleiden arvot alkioittain keskenään, ja lopuksi summataan saadut luvut yhteen. Maskia liikutetaan koko kuvan yli ja tuloksena saadaan uusi kuva, joka sisältää maskin löytämiä piirteitä, ja joka voidaan puolestaan syöttää taas uudelle maskille. Alla on esitetty yksinkertainen esimerkki konvoluutiosta pystysuoria reunoja etsivää maskia käyttäen.

Kuvassa esitetään konvoluution periaate. Kuvan yksittäisten pikselien arvoja operoidaan maskin avulla, joka ottaa huomioon käsiteltävän pikselin ja sen naapuripikseleiden arvot. Maskin alle jäävät pikseliarvot kerrotaan maskin sisältämillä painokertoimilla ja summataan yhteen uudeksi pikseliarvoksi.



Esimerkiksi yllä olevassa kuvassa esitetyn lopputuloksen vihreällä neliöllä reunustettu arvo -8 saadaan käsittelemällä alkuperäisen kuvan sinisellä neliöllä reunustettua arvoa 3. Suoritetaan yhdeksän kertolaskua maskin sisältämillä kertoimilla ja summataan ne yhteen: 0 x 1 + 0 x 0 + 0 x -1 + 0 x 1 + 3 x 0 + 7 x -1 + 0 x 1 + 4 x 0 + 1 x -1 = -8, pikseliarvo 3 päivitetään siis arvoon -8. Seuraavaksi siirrytään kuvassa oikealle yksi askel ja päivitetään pikseliarvo 7 jne. Kun ensimmäinen rivi on käsitelty niin siirrytään yksi askel alaspäin ja käsitellän vastaavalla tavalla tämä seuraava rivi. Konvoluution perusperiaate on siis varsin yksinkertainen. 



Verkot muodostuvat kerroksista

Neuroverkkojen ensimmäistä kerrosta, jossa verkkoon tuodaan käsiteltävä data (eli konvoluutioverkon tapauksessa kuva), kutsutaan syötekerrokseksi.

Seuraavaksi dataa käsitellään konvoluutiomaskeilla. Maskeja luodaan useita, jotta datasta saadaan erilaisia piirteitä esiin. Konvoluutioiden jälkeen saadut tulokset syötetään aktivointifunktiolle, jonka tarkoitus on ikään kuin selvittää onko saatu tulos/piirre tarpeeksi merkittävä jatkamaan kulkuaan verkon läpi. Näitä rinnakkaisia konvoluutio-aktivaatio-operaatioita kutsutaan konvoluutiokerrokseksi, ja näitä kerroksia voidaan asettaa peräkkäin siten, että uusi kerros ottaa syötteekseen aina edellisen kerroksen tuloksen.

Konvoluutioverkoissa käytetään usein myös alinäytteistyskerroksia. Näiden kerrosten tarkoitus on tiivistää seuraavalle kerrokselle syötetyn informaation määrää. Usein käytetään ns. maksimioperaatiota, jossa kuva jaetaan osiin ja jokaiselta alueelta valitaan suurin pikseliarvo (tämä operaatio pienentää käsiteltävän kuvan kokoa). Syvemmälle verkkoon mentäessä kuvien kokoa halutaan pienentää, jotta voitaisiin suurten kuvien käsittelyn sijaan käyttää laskennalliset resurssit yhä useampien konvoluutio-operaatioiden suorittamiseen.

Luokitteluongelmissa konvoluutio- ja alinäytteistyskerrosten läpi kulkenut data päätyy lopuksi täysin kytkettyihin kerroksiin joissa varsinainen luokittelu (esimerkiksi sairaaseen tai terveeseen) tapahtuu. Tässä vaiheessa ei siis enää käsitellä kuvia tai piirteitä, vaan lukuja, jotka ennustavat lopullisen luokan. 


Yksinkertaistettu esimerkki mahdollisesta syvästä konvoluutioneuroverkosta:
 
Data sisään ->  Konvoluutio ->  Alinäytteistys ->  Konvoluutio ->  Alinäytteistys ->  Konvoluutio -> Alinäytteistys  ->  Täysin-kytketty ->  Ulostulo, luokitus


Esimerkiksi rintasyöpäkasvaimien luokittelun opetuksessa konvoluutioneuroverkolle voitaisiin syöttää mammogrammeja sekä niitä vastaava aineisto, johon radiologi on merkinnyt kasvaimien paikat. Verkon tehtävänä olisi oppia tuottamaan vastaava tulos. Kun verkko on koulutettu kattavan opetusdatan avulla hyvin (ks. postaukset Mikä sesemmoinen tekoäly sitten on? sekä Syvät neuroverkot ja kuvien käsittely), sen läpi voitaisiin syöttää ennennäkemätön mammogrammi ja lopputuloksena olisi oikein luokiteltu kuva, johon olisi merkattu löydettyjen kasvamien paikat.




Ei kommentteja:

Lähetä kommentti