Yhdistävät neuroverkot

Valmis

Vaikka voitkin käyttää syväoppimismalleja mihin tahansa koneoppimiseen, ne ovat erityisen hyödyllisiä käsiteltäessä tietoja, jotka koostuvat suurista numeerisista arvoista , kuten kuvista. Koneoppimismallit, jotka toimivat kuvien kanssa, ovat pohjana alueen tekoälylle, jota kutsutaan tietokonenäköä, ja syväoppimistekniikat ovat viime vuosina vastuussa hämmästyttävästä edistyksestä tällä alueella.

Syväoppimisen menestyksen ytimessä tällä alueella on malli nimeltä konvolutionaalinen hermoverkko, tai CNN. CNN toimii yleensä poimimalla ominaisuuksia kuvista ja syöttämällä sitten nämä ominaisuudet täysin yhdistettyyn hermoverkkoon ennusteen luomiseksi. Verkon ominaisuuksien poimintatasot vähentävät mahdollisesti valtavan yksittäisten kuvapistearvojen valikoiman ominaisuuksien määrää pienempään ominaisuusjoukkoon, joka tukee otsikon ennustetta.

Kerrokset CNN:ssä

CNN koostuu useista kerroksista, joista jokainen suorittaa tietyn tehtävän ominaisuuksien poimimisessa tai otsikoiden ennustamisessa.

Yhdistämiskerrokset

Yksi pääkerrostyypeistä on konvolutionaalinen taso, joka poimii kuvista tärkeitä ominaisuuksia. Yhdistävä kerros toimii käyttämällä suodatinta kuvissa. Suodattimen määrittää ydin, joka koostuu painoarvojen matriisista.

Esimerkiksi 3x3-suodatin voidaan määrittää näin:

 1  -1   1
-1   0  -1
 1  -1   1

Kuva on myös vain kuvapistearvojen matriisi. Voit käyttää suodatinta niin, että lisäät sen kuvaan ja lasket painotetun summan vastaavia kuvapistearvoja suodattimen ytimen alla. Tämän jälkeen tulos määritetään vastaavan 3x3-korjaustiedoston keskisoluun uudessa samankokoisissa arvomatriiseissa, jotka ovat saman kokoisia kuin kuva. Oletetaan esimerkiksi, että 6 x 6 -kuvassa on seuraavat kuvapistearvot:

255 255 255 255 255 255 
255 255 100 255 255 255
255 100 100 100 255 255
100 100 100 100 100 255
255 255 255 255 255 255
255 255 255 255 255 255

Suodattimen käyttäminen kuvan vasemmassa yläkulmassa 3x3-korjaustiedostossa toimisi seuraavasti:

255 255 255      1  -1   1    (255 x 1)+(255 x -1)+(255 x 1) +
255 255 100  x  -1   0  -1  = (255 x -1)+(255 x 0)+(100 x -1) +   = 155
255 100 100      1  -1   1    (255 x1 )+(100 x -1)+(100 x 1)

Tulos määritetään vastaavalle kuvapistearvolle uudessa matriisissa seuraavasti:

 ?   ?   ?   ?   ?   ?  
 ?  155  ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?

Nyt suodatinta siirretään eteenpäin (samaan tahtiin), käytetään yleensä vaihetta, kokoa 1 (joten siirrytään yhden kuvapisteen verran oikealle) ja seuraavan kuvapisteen arvo lasketaan.

255 255 255      1  -1   1    (255 x 1)+(255 x -1)+(255 x 1) +
255 100 255  x  -1   0  -1  = (255 x -1)+(100 x 0)+(255 x -1) +   = -155
100 100 100      1  -1   1    (100 x1 )+(100 x -1)+(100 x 1)

Nyt voimme siis täyttää uuden matriisin seuraavan arvon.

 ?   ?   ?   ?   ?   ?  
 ?  155 -155 ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?
 ?   ?   ?   ?   ?   ?

Prosessi toistuu, kunnes olemme ottaneet suodattimen käyttöön kaikissa kuvan 3x3-korjaustiedostoissa ja luoneet uuden arvomatriisin, kuten:

?   ?   ?    ?    ?   ?
?  155 -155 155 -155  ?
? -155 310 -155  155  ?
?  310 155  310   0   ?
? -155 -155 -155  0   ?
?   ?   ?    ?    ?   ?

Suodattimen ytimen koon vuoksi emme voi laskea reunan pikselien arvoja. Joten käytämme yleensä vain täytön arvoa (usein 0):

0   0   0    0    0   0
0  155 -155 155 -155  0
0 -155 310 -155  155  0
0  310 155  310   0   0
0 -155 -155 -155  0   0
0   0   0    0    0   0

Yhdistämisen tulos siirretään yleensä aktivointifunktioon, joka on usein Korjattu lineaarinen yksikkö (ReLU) -funktio, joka varmistaa, että negatiivisille arvoille on määritetty 0:

0   0   0    0    0   0
0  155  0   155   0   0
0   0  310   0   155  0
0  310 155  310   0   0
0   0   0    0    0   0
0   0   0    0    0   0

Tuloksena saatava matriisi on ominaisuuskartta ominaisuusarvoista, joita voidaan käyttää koneoppimismallin kouluttamiseen.

Huomautus: Ominaisuuskartan arvot voivat olla suurempia kuin pikselin enimmäisarvo (255), joten jos haluat visualisoida ominaisuuskartan kuvana, sinun on normalisoitava ominaisuusarvot välillä 0–255.

Yhdistämisprosessi näkyy alla olevassa animaatiossa.

Suodattimen ydin on yhdistetty kolmion kuvan yli. Se poimii ominaisuuksia, jotka korostavat kolmea reunaa ja kulmaa

  1. Kuva välitetään yhdistämiskerrokseen. Tässä tapauksessa kuva on yksinkertainen geometrinen muoto.
  2. Kuva koostuu kuvapistematriiseista, joiden arvot ovat 0–255 (värikuville tämä on yleensä kolmiulotteinen matriisi, jossa on arvoja punaisille, vihreille ja sinisille kanaville).
  3. Suodattimen ydin valmistellaan yleensä satunnaispainoilla (tässä esimerkissä olemme valinneet arvot korostamaan vaikutusta, joka suodattimella voi olla kuvapistearvoihin. Oikealla CNN:llä alkupainot yleensä luodaan satunnaisesta Gaussian jakaumasta). Tämän suodattimen avulla poimitaan ominaisuuskartta kuvatiedoista.
  4. Suodatin on yhdistetty kuvaan ja laskee ominaisuusarvoja käyttämällä painojen summaa kerrottuna niiden vastaavilla kuvapistearvoilla kussakin sijainnissa. Korjattu lineaarisen yksikön (ReLU) aktivointifunktiota käytetään sen varmistamiseksi, että negatiivisten arvojen arvoksi on asetettu 0.
  5. Yhdistämisen jälkeen ominaisuuskartta sisältää poimitut ominaisuusarvot, jotka usein korostavat kuvan visuaalisia ominaisuuksia. Tässä tapauksessa ominaisuuskartta korostaa kolmion reunat ja kulmat kuvassa.

Yleensä yhdistävä kerros käyttää useita suodatinytimiä. Jokainen suodatin tuottaa erilaisen ominaisuuskartan, ja kaikki ominaisuuskartat välitetään verkon seuraavalle kerrokselle.

Tasojen yhdistäminen

Kun ominaisuusarvot on poimittu kuvista, (tai mallinnuksen) kerroksia käytetään ominaisuuksien arvojen määrän vähentämiseen säilyttäen samalla poimitut tärkeimmät erotusominaisuudet.

Yksi yleisimpiä ryhmittelytyyppejä on varannon enimmäismäärä jossa suodatinta käytetään kuvaan, ja vain suodatinalueen suurin pikseliarvo säilytetään. Jos esimerkiksi otat 2x2-poolausytimen käyttöön seuraavassa kuvan korjaustiedostossa, tuloksena on 155.

0   0
0  155

Huomaa, että 2x2-ryhmittelysuodattimen vaikutus on vähentää arvojen määrää arvosta 4:stä 1:een.

Samoin kuin yhdistävien tasojen kohdalla, tasojen yhdistäminen toimii käyttämällä suodatinta koko ominaisuuskartassa. Alla olevassa animaatiossa näkyy esimerkki kuvakartan enimmäisvarannosta.

Suodattimen ydin on yhdistetty kolmion kuvan yli. Se poimii ominaisuuksia, jotka korostavat kolmea reunaa ja kulmaa sekä kuvakartan enimmäisvarantoa.

  1. Yhdistävässä kerroksessa olevan suodattimen poimima ominaisuuskartta sisältää ominaisuusarvojen matriisin.
  2. Ominaisuuksien arvojen määrää vähennetään yhdistämisytimen avulla. Tässä tapauksessa ytimen koko on 2x2, joten se tuottaa matriisin, jossa on ominaisuuksien arvojen määrä vuosineljänneksellä.
  3. Yhdistävä ydin on yhdistetty ominaisuuskartan kautta säilyttäen vain suurimman kuvapistearvon kussakin sijainnissa.

Tasojen pudottaminen

Yksi CNN:n vaikeimmista haasteista on välttää ylikuormitus, jossa tuloksena oleva malli toimii hyvin harjoitustietojen kanssa, mutta ei yleistä hyvin uusiin tietoihin, joissa sitä ei harjoitettu. Yksi tapa ylitäyttelyn lieventämiseksi on sisällyttää kerroksia, joiden avulla harjoitusprosessi poistaa (tai jättää pois) ominaisuuskartat. Tämä saattaa vaikuttaa olevan intuitiivista, mutta se on tehokas tapa varmistaa, että malli ei opi olemaan yliriippuvainen harjoituskuvista.

Muita tekniikoita, joiden avulla voit lieventää ylitäyttelyä, ovat esimerkiksi satunnaisen kääntämisen, peilaamisen tai harjoituskuvien skeventäminen, jotta voit luoda tietoja, jotka vaihtelevat harjoittamisen aikakausien välillä.

Tasojen tasoittaminen

Kun olet käyttänyt yhdistäviä ja ryhmittelykerroksia kuvien suolaisten ominaisuuksien poimimiseen, tuloksena saatavat ominaisuuskartat ovat moniulotteisia kuvapistearvojen matriiseja. Tasoittamiskerroksen avulla ominaisuus tasoitetaan arvovektoriksi, jota voidaan käyttää syötteenä täysin yhdistettyyn kerrokseen.

Täysin yhdistetyt kerrokset

Yleensä CNN päättyy täysin yhdistettyyn verkkoon, jossa ominaisuusarvot siirretään syötekerrokseen yhden tai useamman piilotetun tason kautta, ja luo ennustettuja arvoja tuloskerroksessa.

CNN-perusarkkitehtuuri saattaa näyttää tältä:

CNN, joka koostuu yhdistävästä kerroksesta, yhdistämiskerroksesta, pudotuskerroksesta, tasoittavasta kerroksesta ja täysin yhdistetystä kerroksesta

  1. Kuvat syötetään yhdistäväksi kerrokseksi. Tässä tapauksessa käytössä on kaksi suodatinta, joten jokainen kuva tuottaa kaksi ominaisuuskarttaa.
  2. Ominaisuuskartat siirretään yhdistämiskerrokseen, jossa 2x2-ryhmittelyytimen avulla pienennetään ominaisuuskarttojen kokoa.
  3. Putoava kerros pudottaa satunnaisesti joitakin ominaisuuskarttoja ylikuormituksen estämiseksi.
  4. Tasoittamiskerros ottaa jäljellä olevat ominaisuuskarttamatriisit ja tasoittaa ne vektoriksi.
  5. Vektorielementit syötetään täysin yhdistettyyn verkkoon, joka luo ennusteet. Tässä tapauksessa verkko on luokitusmalli, joka ennustaa todennäköisyydet kolmelle mahdolliselle kuvaluokalle (kolmio, neliö ja ympyrä).

CNN-mallin harjoittaminen

Kuten minkä tahansa syvän hermoverkon kanssa, CNN on harjoitettu välittämällä harjoitustietoja useiden aikakausien läpi, säätämällä painoja ja puolueellisuusarvoja kullekin aikakaudelle lasketun menetyksen perusteella. CNN:n tapauksessa säädettyjen painojen takaisinpropagointi sisältää suodatinytimen painot, joita käytetään konvolutionaalisissa kerroksissa, sekä painot, joita käytetään täysin yhdistetyissä kerroksissa.