Neuvontaverkot - Yksinkertaistettu

Epävarma selitys voimakkaalle algoritmille, jota käytetään laajasti kuvan tunnistustehtävissä

Ota hetki tarkkailla ja katsoa ympäristöäsi. Vaikka istutkin tuolillasi tai makaat sängylläsi, aivosi yrittävät jatkuvasti analysoida ympäröivää dynaamista maailmaa. Ilman tietoista ponnisteluasi aivot tekevät jatkuvasti ennusteita ja käyttävät niitä.

Kuva: Adrienn, Lähde: https://www.pexels.com

Tutkittuaan vain lyhyen kuvan valokuvassasi huomasit, että kohtauksessa on ihmisiä ja esineitä. Tunnistit heti jotkut kohtauksen esineet viinilasiksi, lautaseksi, pöydäksi, valaisimiksi jne. Luulit todennäköisesti myös, että valokuvassa olevat naiset nauttivat ateriansa. Kuinka pystyit tekemään nuo ennusteet? Kuinka tunnistit kuvan lukuiset esineet?

Tämän merkittävän saavutuksen saavuttaminen vaati luonnon miljoonien vuosien kehitystä. Silmämme ja aivomme toimivat täydellisessä harmoniassa luodakseen niin kauniita visuaalisia kokemuksia. Järjestelmä, joka tekee tämän meille mahdolliseksi, on silmä, näköpolumme ja aivomme sisäinen visuaalinen aivokuori.

Ensisijainen visuaalinen polku, Lähde: http://mriquestions.com/visual.html

Silmämme vangitsevat verkkokalvon valot ja värit. Verkkokalvon reseptorit välittävät nämä signaalit näköhermoon, joka kuljettaa ne aivoihin näiden tietojen ymmärtämiseksi. Silmä ja visuaalinen aivokuori on erittäin monimutkainen ja hierarkkinen rakenne. Koko visuaalinen polku on tärkeä rooli ymmärtämisessä ja ymmärtämisessä ympäröimästämme. Juuri tämä järjestelmä sisällämme antaa meille mahdollisuuden ymmärtää yllä olevaa kuvaa, tämän artikkelin tekstiä ja kaikkia muita visuaalisen tunnistuksen tehtäviä, joita suoritamme päivittäin.

Olemme tehneet tätä lapsuudestamme lähtien. Meitä opetettiin tunnistamaan sateenvarjo, koira, kissa tai ihminen. Voimmeko opettaa tietokoneita tekemään niin? Voimmeko tehdä koneen, joka pystyy näkemään ja ymmärtämään yhtä hyvin kuin ihmiset?

Tietokoneet "näkevät" maailman eri tavalla kuin me. He voivat "nähdä" kaiken vain numeroiden muodossa

Jokainen oikealla oleva numero edustaa pikseliä

Tietojen opettaminen järkeväksi tästä hämmentävästä numeroryhmästä on haastava tehtävä. Tietokonetieteilijät ovat viettäneet vuosikymmeniä järjestelmien, algoritmien ja mallien rakentamiseksi, jotka ymmärtävät kuvia. Nykyään keinotekoisen älykkyyden ja koneoppimisen aikakaudella olemme onnistuneet saavuttamaan merkittävän menestyksen tunnistamalla kuvissa olevat esineet, tunnistamalla kuvan konteksti, tunnistamalla tunteet jne. Yksi nykyään tietokonevisioissa käytetyistä suosituimmista algoritmeista on konvoluutiohermoverkko. tai CNN.

Inspiraatio CNN: n takana

CNN on eräänlainen hermoverkko, joka vetää löysästi inspiraatiota aivojen ensisijaisen visuaalisen reitin toiminnasta ja hierarkkisesta rakenteesta.

Lähde: xkcd.com

1950- ja 1960-luvuilla David Hubel ja Torsten Wiesel tekivät kokeita nisäkkäiden aivoissa ja ehdottivat mallia, jolla nisäkkäät havaitsevat maailman visuaalisesti. He tallensivat neuronien toimintaa kissan visuaalisessa aivokuoressa, kun ne siirtyivät kirkkaalla viivalla verkkokalvon poikki. Äänitystensä aikana he huomasivat muutamia mielenkiintoisia asioita

  1. Neuronit ampuivat vain, kun linja oli tietyssä paikassa verkkokalvolla
  2. Näiden neuronien aktiivisuus muuttui linjan suunnasta riippuen
  3. Joskus neuronit ampuivat vain, kun linja liikkui tiettyyn suuntaan

Suurenna äänenvoimakkuuttasi ja katso kokeilun video täältä -

Paperissaan he kuvasivat aivojen kahta visuaalisten hermosolujen perustyyppiä, jotka kukin toimivat eri tavalla: yksinkertaiset solut (S-solut) ja monimutkaiset solut (C-solut), jotka on järjestetty hierarkkiseen rakenteeseen.

Yksinkertaiset solut aktivoituvat esimerkiksi silloin, kun ne tunnistavat perusmuodot viivoiksi kiinteällä alueella ja tietyllä kulmalla. Kompleksisoluissa on suurempia vastaanottokenttiä, ja niiden lähtö ei ole herkkä kentän tietylle sijainnille. Kompleksisolut reagoivat edelleen tiettyyn ärsykkeeseen, vaikka sen absoluuttinen sijainti verkkokalvossa muuttuisi. Olen käyttänyt täällä jotakin žargonia, yrittäkäämme ymmärtää mikä vastaanottava kenttä on.

Aistihermojen vastaanottokenttä

Yllä olevassa kuvassa kolmella primäärisneuronilla on oma vastaanottokenttä, mikä tarkoittaa, että sininen neuroni aktivoituu vain, jos sinisellä alueella on ärsyke, keltainen primaarihermosto aktivoituu, jos keltaisella alueella on ärsyke ja niin. päällä. Jos päällekkäisellä alueella on ärsyke, kaikki siihen alueeseen liittyvät neuronit aktivoituvat.

Yksinkertaisten ja monimutkaisten solujen lisäksi aivojen hierarkkisella rakenteella on tärkeä tehtävä tiedon tallentamisessa ja ymmärtämisessä. Kunihiko Fukushima ehdotti vuonna 1980 hierarkkista neuroverkkoa, nimeltään Neocognitron, joka sai inspiraation yksinkertaisesta ja monimutkaisesta solumallista. Uuskognitroni pystyi tunnistamaan kuviot oppimalla esineiden muodot.

Myöhemmin, vuonna 1998, Bengio, LeCun, Bottou ja Haffner esittelivät konvoluutiohermostoverkot. Heidän ensimmäinen konvoluutiohermosto nimettiin LeNet-5 ja pystyi luokittelemaan numerot käsin kirjoitetuista numeroista.

Se puhui CNN: n historiasta. Voit lukea lisää CNN: n historiasta ja kehityksestä kaikkialla Internetissä.

Lähde: xkcd.com

Neuvontaverkot

Jos sinulla on perusajatus monikerroksisista perceptron- ja hermoverkoista, ymmärrät jo pienen osan CNN: n koko rakenteesta.

CNN koostuu kahdesta pääosasta:

  1. Ominaisuuksien poiminta
  2. Luokittelu
Peruskomponentit CNN: ssä. Lähde: Researchgate

Älä ole huolissasi punaisten pisteviivojen sisällä olevista hämmentävistä neliöistä ja viivoista. Hajotamme sen myöhemmin. Vihreät ympyrät sinisen pisteviiva-alueen sisällä, nimeltään luokittelu, ovat hermoverkko tai monikerroksinen perceptroni, joka toimii luokittelijana. Tämän verkon tulot tulevat edellisestä osasta, jonka nimi on ominaisuuksien poisto.

1) Ominaisuuksien poiminta

Tämä on osa CNN-arkkitehtuuria, josta tämä verkko saa nimensä. Konvoluutio on matemaattinen toiminta, joka on keskeinen tämän algoritmin tehokkuudelle. Annetaan ymmärtää korkealla tasolla mitä tapahtuu punaisen suljetun alueen sisällä. Tulo punaiselle alueelle on kuva, jonka haluamme luokitella, ja lähtö on joukko ominaisuuksia. Ajattele piirteitä kuvan ominaisuuksina, esimerkiksi kissan kuvassa voi olla piirteitä, kuten viikset, kaksi korvaa, neljä jalkaa jne. Käsinkirjoitetulla numerokuvalla voi olla ominaisuuksia, kuten vaaka- ja pystysuorat viivat tai silmukat ja käyrät. Katsotaan kuinka voimme poimia tällaiset ominaisuudet kuvasta.

Ominaisuuksien erottaminen: Konvoluutio

Konvoluutio CNN: ssä suoritetaan tulokuvassa suodattimen tai ytimen avulla. Suodatuksen ja konvoluution ymmärtämiseksi tee pieni kurkkureikä etusormesi ja peukalon avulla kääntämällä niitä yhteen samoin kuin sinä tekisit nyrkin. Nyt tämän kuuntelevan reiän kautta voit katsoa näyttöäsi, joten voit katsoa hyvin pienen osan näytöstä peep-reiän läpi. Sinun on skannattava näyttö ylhäältä vasemmalta oikealle ja liikuttava hiukan alaspäin peittämällä näytön leveys ja toistamalla sama prosessi, kunnes olet skannaa koko näytön.

Kuvan konvoluutio ytimen kanssa toimii samalla tavalla. Ydin tai suodatin, joka on pieni arvojen matriisi, toimii oviaukona, joka suorittaa kuvan matemaattisen operaation skannaamalla kuvaa samalla tavalla. Esimerkiksi jos tulokuva ja suodatin näyttävät -

Suodatin (vihreä) liukuu tulokuvan (sininen) yli yhden pikselin kerrallaan vasemmasta yläkulmasta. Suodatin kertoo omat arvot kuvan päällekkäisillä arvoilla liu'uttamalla sitä yli ja lisää ne kaikki tulostettaen yhden arvon jokaiselle päällekkäisyydelle.

Lähde: Soveltava syväoppiminen

Yllä olevassa animaatiossa arvo 4 (vasen yläosa) lähtömatriisissa (punainen) vastaa suodattimen päällekkäisyyttä kuvan vasemmassa yläkulmassa, joka lasketaan muodossa -

Samoin laskemme lähtömatriisin muut arvot. Huomaa, että tulostusmatriisin vasen yläosa, joka on 4, riippuu vain alkuperäisen kuvan matriisin vasemmassa yläkulmassa olevista 9 arvosta (3x3). Se ei muutu, vaikka kuvan muut arvot muuttuisivat. Tämä on tämän lähtöarvon tai neuronin vastaanottava kenttä CNN: ssä. Jokainen arvo lähtömatriisissamme on herkkä vain tietylle alueelle alkuperäisessä kuvassa. Vieritä ylös nähdäksesi päällekkäiset hermosolujen vastaanottava kenttäkaavio, huomaatko samankaltaisuuden?
Jokaisella lähtömatriisin vierekkäisellä arvolla (neuroni) on päällekkäisiä vastaanottokenttiä, kuten aiemmin kuvan punaisella, sinisellä ja keltaisella neuronilla. Alla oleva animaatio antaa sinulle paremman käsityksen siitä, mitä tapahtuu konvoluutiossa.

OK, niin se on konvoluutio-operaation perusidea. Mitä tämän kuvan suorittaminen saavuttaa? Mikä on tulos, jos tämä?

Sanotaan, että meillä on käsinkirjoitettu numerokuva kuten alla. Haluamme poistaa kuvan vain vaakasuunat reunat tai viivat. Käytämme suodatinta tai ydintä, joka alkuperäisen kuvan kanssa kääntyessä himmentää kaikki ne alueet, joilla ei ole vaakareunoja.

Huomaa, kuinka tulostetussa kuvassa on vain vaakasuora valkoinen viiva ja loput kuva on himmennetty. Ydin on täällä kuin oviaukko, joka on vaakasuora rako. Samoin pystysuoran reunanpoistimessa suodatin on kuin pystysuuntainen viiltoaukko ja lähtö näyttäisi -

Ominaisuuksien poiminta: Epälineaarisuus

Jos palaat takaisin lukemaan hermostoverkosta, huomaat, että jokainen hermoverkon kerros on lineaarinen yhdistelmä tuloistaan. Epälineaarisuuden tai aktivointitoiminnon käyttöönotto antaa meille mahdollisuuden luokitella tietomme, vaikka ne eivät ole lineaarisesti erotettavissa.

Vasen: Lineaarisesti erotettavissa vs. Oikea: Ei lineaarisesti erotettavissa

Mikä johtaa meidät toiseen tärkeään operaatioon - epälineaarisuuteen tai aktivointiin. Kun olet liu'uttanut suodattimemme alkuperäisen kuvan päälle, saamme lähtö viedään toisen matemaattisen funktion läpi, jota kutsutaan aktivointitoiminnaksi. Aktivointitoiminto, jota useimmissa tapauksissa käytetään yleensä CNN-ominaisuuksien poiminnassa, on ReLU, joka tarkoittaa tasasuuntaista lineaarista yksikköä. Joka muuntaa kaikki negatiiviset arvot 0: ksi ja pitää positiiviset arvot samana.

Lähdön jälkeen ReLU-toimintojen läpi, ne näyttävät seuraavalta -

Joten yhdestä kuvasta kääntämällä se useilla suodattimilla, voimme saada useita tulosteita. Käsinkirjoitettua numeroa varten me sovelsimme vaakasuunan reunanpoistimen ja pystysuoran reunanpoistimen ja saimme kaksi tulostettua kuvaa. Voimme käyttää useita muita suodattimia generoidaksesi enemmän sellaisia ​​tulostekuvia, joita kutsutaan myös ominaisuuskarttoiksi.

Ominaisuuksien erottaminen: Yhdistäminen

Konvoluutiokerroksen jälkeen, kun olet saanut ominaisuuskartat, on yleistä lisätä yhdistävä tai alinäytteistävä kerros CNN-kerroksiin. Yhdistäminen vähentää mittasuhteita vähentääkseen parametrien määrää ja laskentaa verkossa. Tämä lyhentää harjoitusaikaa ja hallitsee liikaa istuvuutta.

Yleisin pooling-tyyppi on max pooling, joka ottaa maksimiarvon määritettyyn ikkunaan. Ikkunat ovat samanlaisia ​​kuin aikaisempi ytimen liukuva toiminta. Tämä pienentää ominaisuuskartan kokoa pitäen samalla tärkeät tiedot.

Suurin yhdistämislähde: CS231

2) Luokitus

Okei, joten nyt meillä on kaikki tarvittavat kappaleet CNN: n rakentamiseksi. Convolution, ReLU ja pooling. Maksimaalisen yhdistämisen tulos syötetään alun perin keskusteltuun luokittelulaitteeseen, joka on yleensä monikerroksinen perceptron a.k.a täysin kytketty kerros. Yleensä CNN: ssä näitä kerroksia käytetään useammin kuin kerran, ts. Convolution -> ReLU -> Max-Pool -> Convolution -> ReLU -> Max-Pool ja niin edelleen. Emme keskustele täysin kytketystä kerroksesta tässä artikkelissa. Voit lukea tämän artikkelin saadaksesi ymmärtää täysin kytkettyä tasoa intuitiivisesti.

Viimeiset huomautukset

CNN on erittäin tehokas algoritmi, jota käytetään laajalti kuvan luokittelussa ja objektien havaitsemisessa. Kuvan hierarkkinen rakenne ja tehokkaat ominaisuuksien poimintaominaisuudet tekevät CNN: stä erittäin vankan algoritmin erilaisiin kuvan ja objektin tunnistustehtäviin. Konvoluutiohermoverkoissa on lukuisia erilaisia ​​arkkitehtuureja, kuten LeNet, AlexNet, ZFNet, GoogleNet, VGGNet, ResNet jne. Mutta näiden arkkitehtuurien perusajatus on sama.

LeNet-arkkitehtuuri

Tässä artikkelissa en ole käsitellyt näiden verkkojen ja ytimien koulutusta. Näiden verkkojen kouluttaminen on samanlainen kuin monikerroksisen perceptronin kouluttaminen käyttämällä selkän etenemistä, mutta matematiikka osallistuu hieman enemmän konvoluutio-operaatioiden takia.

Olen käsitellyt CNN-arkkitehtuurin, sen rakennuspalikoiden ja sen inspiraatioiden perustaa. Toivottavasti se on hiukan demystifioinut ja helpottanut ymmärrystäsi CNN-arkkitehtuureista, kuten yllä. Tämän artikkelin tarkoituksena on herättää uteliaisuutta tutkia ja oppia edelleen, ei siksi, että pomosi olisi pyytänyt sinua oppimaan CNN: ää, koska oppiminen on hauskaa!

Lähde: xkcd.com

Suositukset ja viitteet

  • Jeff Hawkinsin tiedustelu
  • odotusbutti artikkeli neuralinkistä ja aivoista
  • Neuvontaverkot visuaaliseen tunnistamiseen
  • Hauska video katsottava 3D-simulaatiota hermoverkoista

X8: n tavoitteena on organisoida ja rakentaa AI: lle yhteisö, joka ei ole vain avoimen lähdekoodin, vaan tarkastelee myös sen eettisiä ja poliittisia näkökohtia. Julkaistaan ​​artikkeli sellaisista yksinkertaistetuista AI-käsitteistä joka perjantai. Kommentoi alla olevaa kommenttia, jos pidit tästä tai sinulla on palautetta tai jatkokysymyksiä.

Kiitos käsittelystä!