Konvoluutiohermoverkko ( CNN ) on Jan LeCunin vuonna 1988 [1] ehdottama erityinen keinotekoisten hermoverkkojen arkkitehtuuri, jonka tavoitteena on tehokas kuviontunnistus [2] . Se on osa syväoppimisteknologiaa ( deep learning ). Käyttää joitain visuaalisen aivokuoren ominaisuuksia [3] , joissa on löydetty ns. yksinkertaisia soluja, jotka reagoivat eri kulmissa oleviin suoriin linjoihin, ja kompleksisia soluja, joiden reaktio liittyy tietyn yksinkertaisten solujen joukon aktivoitumiseen . Näin ollen konvoluutiohermoverkkojen ideana on lomittaa konvoluutiokerrokset ( eng. convolution layers ) ja alinäytteenottokerrokset ( eng. subsampling layers tai eng. pooling layers , subsample layers). Verkon rakenne on yksisuuntainen (ilman palautetta), pohjimmiltaan monikerroksinen. Koulutuksessa käytetään vakiomenetelmiä, useimmiten backpropagation menetelmää . Neuronien aktivointitoiminto (siirtofunktio) on mikä tahansa, tutkijan valinnan mukaan.
Verkkoarkkitehtuurin nimi johtui konvoluutiooperaation olemassaolosta , jonka ydin on, että jokainen kuvafragmentti kerrotaan konvoluutiomatriisilla (ytimen) elementti kerrallaan ja tulos summataan ja kirjoitetaan samanlaiseen kohtaan ulostulokuva.
Konvoluutiohermoverkon toiminta tulkitaan yleensä siirtymiseksi kuvan erityispiirteistä abstraktimpiin yksityiskohtiin ja edelleen abstraktimpiin yksityiskohtiin korkean tason käsitteiden poimimiseen asti. Samalla verkko säätää ja kehittää itse tarvittavan abstraktien piirteiden hierarkian (ominaisuuskarttojen sekvenssit) suodattaen merkityksettömiä yksityiskohtia ja korostaen olennaisen.
Tällainen tulkinta on melko metaforinen tai havainnollistava. Itse asiassa monimutkaisen verkon tuottamat "ominaisuudet" ovat niin hämäriä ja vaikeasti tulkittavia, että käytännössä ne eivät edes yritä ymmärtää näiden ominaisuuksien olemusta, vielä vähemmän "oikeita", vaan parantavat tunnistustuloksia. ne muuttavat verkon rakennetta ja arkkitehtuuria. Siten joidenkin merkittävien ilmiöiden huomioimatta jättäminen järjestelmän toimesta voi viitata siihen, että dataa ei ole tarpeeksi koulutusta varten tai verkkorakenteessa on puutteita, eikä järjestelmä pysty kehittämään tehokkaita ominaisuuksia näihin ilmiöihin.
Tavallisessa perceptronissa , joka on täysin yhdistetty hermoverkko, jokainen neuroni on yhteydessä kaikkiin edellisen kerroksen hermosoluihin, ja jokaisella yhteydellä on oma henkilökohtainen painokerroinnsa. Konvoluutiohermoverkossa konvoluutiooperaatio käyttää vain pienikokoista rajoitettua painomatriisia, joka "siirretään" koko prosessoidun kerroksen yli (alkuvaiheessa suoraan sisääntulokuvan yli) muodostaen jokaisen siirron jälkeen aktivointisignaalin. seuraavan kerroksen neuronille, jolla on samanlainen sijainti. Eli samaa painomatriisia käytetään lähtökerroksen eri neuroneille, jota kutsutaan myös konvoluutioytimeksi . Se tulkitaan jonkin ominaisuuden graafiseksi koodaukseksi, esimerkiksi vinon viivan esiintyminen tietyssä kulmassa. Sitten seuraava kerros, joka syntyy konvoluutiooperaatiosta tällaisella painomatriisilla, näyttää tämän piirteen läsnäolon käsitellyssä kerroksessa ja sen koordinaatit muodostaen ns. piirrekartan . Luonnollisesti konvoluutiohermoverkossa ei ole yhtä painosarjaa, vaan koko skaala, joka koodaa kuvaelementtejä (esim. viivoja ja kaaria eri kulmissa). Samanaikaisesti tutkija ei määritä tällaisia konvoluutioytimiä etukäteen, vaan ne muodostetaan itsenäisesti kouluttamalla verkkoa klassisen virheen takaisinpropagoinnin menetelmällä . Kunkin painotusjoukon välittäminen luo oman piirrekartan ilmentymän, mikä tekee hermoverkosta monikanavaisen (useita itsenäisiä piirrekarttoja yhdellä kerroksella). On myös huomattava, että kun iteroidaan kerroksen yli painomatriisilla, sitä ei yleensä siirretä koko askeleen (tämän matriisin koko), vaan pienen matkan verran. Joten esimerkiksi kun painomatriisin mitta on 5 × 5, sitä siirretään yhdellä tai kahdella neuronilla (pikselillä) viiden sijasta, jotta ei "astuisi" halutun ominaisuuden yli.
Alinäytteistys ( eng. subsampling , eng. pooling , käännettynä myös "alinäytteenottotoiminnoksi" tai poolausoperaatioksi) pienentää luotujen piirrekarttojen ulottuvuutta. Tässä verkkoarkkitehtuurissa katsotaan, että tieto halutun ominaisuuden olemassaolosta on tärkeämpää kuin sen koordinaattien tarkka tieto, joten useista piirrekartan viereisistä neuroneista valitaan maksimi ja otetaan yksi hermosolu pienemmän ulottuvuuden tiivistetystä piirrekartasta. Tämän toiminnon ansiosta, lisälaskentojen nopeuttamisen lisäksi, verkko muuttuu muuttumattomammaksi tulokuvan mittakaavaan nähden.
Tarkastellaan tarkemmin konvoluutiohermoverkon tyypillistä rakennetta. Verkko koostuu suuresta määrästä kerroksia. Alkukerroksen (tulokuvan) jälkeen signaali kulkee sarjan konvoluutiokerrosten läpi, joissa konvoluutio itse ja alinäytteenotto (pooling) vuorottelevat. Vuorottelevat tasot mahdollistavat "ominaisuuskarttojen" tekemisen karttakohdekartoista, jokaisessa seuraavassa kerroksessa kartan koko pienenee, mutta kanavien määrä kasvaa. Käytännössä tämä tarkoittaa kykyä tunnistaa monimutkaiset ominaisuushierarkiat. Useiden kerrosten läpi kulkemisen jälkeen piirrekartta yleensä muuttuu vektoriksi tai jopa skalaariksi, mutta tällaisia piirrekarttoja on satoja. Verkon konvoluutiokerrosten lähtöön asennetaan lisäksi useita kerroksia täysin kytkettyä hermoverkkoa (perceptronia), joiden sisäänmenoon syötetään päätepiirrekartat.
Konvoluutiokerros on konvoluutiohermoverkon päälohko . Konvoluutiokerros sisältää kullekin kanavalle oman suodattimen, jonka konvoluutioydin käsittelee edellisen kerroksen fragmentti kerrallaan (summaamalla kunkin fragmentin elementtikohtaisen tuotteen tulokset). Konvoluutioytimen (pienen matriisin) painot ovat tuntemattomia ja ne asetetaan harjoituksen aikana.
Konvoluutiokerroksen ominaisuus on suhteellisen pieni määrä parametreja, jotka asetetaan harjoituksen aikana. Joten esimerkiksi jos alkuperäisen kuvan mitat ovat 100x100 pikseliä kolmessa kanavassa (mikä tarkoittaa 30 000 syötehermosolua) ja konvoluutiokerros käyttää suodattimia, joissa on 3x3 pikselin ydin, jonka lähtö on 6 kanavaa, vain 9 ytimen painoa määritetään. oppimisprosessissa kuitenkin kaikille kanavayhdistelmille, eli 9×3×6=162, tässä tapauksessa tämä kerros vaatii vain 162 parametrin löytämisen, mikä on huomattavasti vähemmän kuin täysin kytketyn kanavan vaadittujen parametrien määrä. hermoverkko.
Jokaisen konvoluution skalaaritulos osuu aktivointifunktioon , joka on eräänlainen epälineaarinen funktio. Aktivointikerros yhdistetään yleensä loogisesti konvoluutiokerrokseen (aktivointifunktion katsotaan olevan sisäänrakennettu konvoluutiokerrokseen). Epälineaarisuusfunktio voi olla mikä tahansa tutkijan valinnan mukaan, tähän on perinteisesti käytetty funktioita kuten hyperbolinen tangentti ( , ) tai sigmoidi ( ). Kuitenkin 2000-luvulla ehdotettiin [4] ja tutkittiin [5] uutta aktivointitoimintoa - ReLU (lyhenne sanoista rectified linear unit ), joka mahdollisti merkittävästi nopeuttamaan oppimisprosessia ja samalla yksinkertaistamaan laskelmia (johtuen itse funktion yksinkertaisuus) [6] , mikä tarkoittaa lineaarisen tasasuuntauksen lohkoa, joka laskee funktion . Eli pohjimmiltaan tämä on toimenpide, jolla leikataan pois skalaariarvon negatiivinen osa. Vuodesta 2017 lähtien tämä toiminto ja sen muunnelmat (Noisy ReLU, Leaky ReLU ja muut) ovat yleisimmin käytettyjä aktivointitoimintoja syvissa hermoverkoissa, erityisesti konvoluutioverkoissa. On olemassa menetelmä lineaaristen tasasuuntauslohkojen optimaalisen lukumäärän määrittämiseksi [7] .
Poolauskerros (muuten alinäytteenotto, osanäyte) on piirrekartan epälineaarinen tiivistys, kun taas ryhmä pikseleitä (yleensä kooltaan 2 × 2) on tiivistetty yhdeksi pikseliksi, jossa suoritetaan epälineaarinen muunnos. Tässä tapauksessa käytetään yleisimmin maksimitoimintoa. Muunnokset vaikuttavat päällekkäin oleviin suorakulmioihin tai neliöihin, joista jokainen pakataan yhdeksi pikseliksi ja valitaan pikseli, jonka arvo on suurin. Poolitustoiminto voi vähentää merkittävästi kuvan tilavuutta. Poolaus tulkitaan seuraavasti: jos jotkin piirteet tunnistettiin jo edellisen konvoluutiooperaation aikana, niin yksityiskohtaista kuvaa ei enää tarvita jatkokäsittelyyn, vaan se tiivistetään vähemmän yksityiskohtaiseksi. Lisäksi tarpeettomien yksityiskohtien suodattaminen pois auttaa olemaan kouluttautumatta uudelleen . Poolauskerros asetetaan yleensä konvoluutiokerroksen jälkeen ennen seuraavaa konvoluutiokerrosta.
Maksimifunktiolla yhdistämisen lisäksi voidaan käyttää muita toimintoja - esimerkiksi keskiarvoa tai L2-normalisointia . Käytäntö on kuitenkin osoittanut tyypillisiin järjestelmiin sisältyvän maksimitoiminnon yhdistämisen edut.
Jotta tuloksena olevien esitysten kokoa voitaisiin pienentää aggressiivisemmin, ajatukset pienempien suodattimien [8] käytöstä tai poolauskerrosten täydellisestä eliminoimisesta ovat yhä suositumpia . [9]
Usean kuvan konvoluution ja yhdistämisen jälkeen järjestelmä rakennetaan uudelleen tietystä korkearesoluutioisesta pikseliruudukosta abstraktimpiin piirrekarttoihin, yleensä jokaisessa seuraavassa kerroksessa kanavien määrä kasvaa ja kuvan ulottuvuus kussakin kanavassa pienenee. . Loppujen lopuksi jäljelle jää suuri joukko kanavia, jotka tallentavat pienen määrän dataa (jopa yksittäinen parametri), jotka tulkitaan alkuperäisestä kuvasta paljastuneimmiksi käsitteiksi.
Nämä tiedot yhdistetään ja lähetetään tavanomaiseen täysin yhdistettyyn neuroverkkoon, joka voi myös koostua useista kerroksista. Samanaikaisesti täysin yhdistetyt kerrokset menettävät jo pikselien spatiaalisen rakenteen ja ovat suhteellisen pieniä (suhteessa alkuperäisen kuvan pikselien määrään).
Yksinkertaisin ja suosituin tapa oppia on oppimismenetelmä opettajan kanssa (merkityillä tiedoilla) - menetelmä, jolla virhe ja sen modifikaatiot levitetään takaisin . Mutta konvoluutioverkostossa on myös useita valvomattomia oppimistekniikoita. Esimerkiksi konvoluutiotoimintosuodattimia voidaan opettaa erikseen ja itsenäisesti syöttämällä niille satunnaisesti leikattuja kappaleita harjoitusnäytteen alkuperäisistä kuvista ja soveltamalla niihin mitä tahansa tunnettua valvomatonta oppimisalgoritmia (esim. auto -assosiaattoria tai jopa k-means- menetelmää ) - tämä tekniikka tunnetaan nimellä patch-based training . Vastaavasti verkkokonvoluution seuraava kerros opetetaan osille jo koulutetusta verkon ensimmäisestä kerroksesta. On myös mahdollista yhdistää konvoluutiohermoverkko muihin syväoppimistekniikoihin . Esimerkiksi tehdäkseen konvoluutioauto-assosiaattorin [10] , konvoluutioversion kaskadirajoitetuista Boltzmann-koneista , jotka oppivat käyttämällä todennäköisyyspohjaista matemaattista laitetta [11] , konvoluutioversiota harvasta koodauksesta ( eng. sparse coding ), jota kutsutaan dekonvoluutioverkkoiksi ( "käyttöön ottavat" verkot) [12 ] .
Verkon suorituskyvyn parantamiseksi, sen vakauden lisäämiseksi ja ylisovituksen estämiseksi käytetään myös poikkeusta (dropout) - aliverkon koulutusmenetelmää, jossa poistetaan satunnaisia yksittäisiä hermosoluja.
Keinotekoisten neuroverkkojen tyypit | |
---|---|
|
Koneoppiminen ja tiedon louhinta | |
---|---|
Tehtävät | |
Opettajan kanssa oppimista | |
ryhmäanalyysi | |
Mittasuhteiden vähentäminen | |
Rakenteellinen ennustaminen | |
Anomalian havaitseminen | |
Piirrä todennäköisyysmallit | |
Neuroverkot | |
Vahvistusoppiminen |
|
Teoria | |
Lehdet ja konferenssit |
|