Syvän hermoverkon käsitteet
Ennen kuin tutustumme siihen, miten voit harjoittaa syvän hermoverkon (DNN) koneoppimismallin, mietitään, mitä pyrimme saavuttamaan. Koneoppiminen liittyy -tunnisteen ennustamiseen perustuen joihinkin ominaisuuksiin, tietystä havainnosta. Koneoppimismalli on funktio, joka laskee y (selite) kohteesta x (ominaisuudet): f(x)=y.
Yksinkertainen luokitusesimerkki
Oletetaan esimerkiksi, että havaintosi koostuu joistakin pingviinin mittauksista.
Mittaukset ovat seuraavat:
- Pingviinin laskun pituus.
- Pingviinin laskun syvyys.
- Pingviinin räpylän pituus.
- Pingviinin paino.
Tässä tapauksessa ominaisuudet (x) ovat neljän arvon vektori, eli matemaattisesti x=[x1,x2,x3,x4].
Oletetaan, että otsikko, jota yritämme ennustaa (y) on pingviinin laji ja että on olemassa kolme mahdollista lajia, jotka se voisi olla:
- Adelie
- Gentoo
- Chinstrap -
Tämä on esimerkki luokittelun ongelmasta, jossa koneoppimismallin on ennustettava todennäköisin luokka, johon havainto kuuluu. Luokitusmalli toteuttaa tämän ennustamalla selitteen, joka koostuu kunkin luokan todennäköisyydestä. Toisin sanoen y on kolmen todennäköisyysarvon vektori; yksi kullekin mahdolliselle luokalle: y=[P(0),P(1),P(2)].
Koneoppimismallia opetetaan käyttämällä havaintoja, joiden tosi-otsikko on jo olemassa. Sinulla voi olla esimerkiksi seuraavat ominaisuuksien mittarit Adelie näytteelle:
x=[37,3, 16,8, 19,2, 30,0]
Tiedät jo, että tämä on esimerkki Adelie (luokka 0), joten täydellisen luokitusfunktion tuloksena tulee olla otsikko, joka ilmaisee 100% todennäköisyyden luokalle 0 ja 0% todennäköisyyden luokille 1 ja 2:
y=[1, 0, 0]
Syvä neuroverkkomalli
Miten siis käyttäisimme syväoppimista luodaksemme luokitusmallin pingviinin luokittelumallille? Tarkastellaan esimerkkiä:
Luokittelun tekijän syvä hermoverkkomalli koostuu useista keinotekoisten neuronien kerroksista. Tässä tapauksessa on neljä kerrosta:
- syöte kerros, jossa on neuroni kullekin odotetulle syötteelle (x) arvolle.
- Kaksi niin sanottua piilotettuja kerroksia, joista kummassakin on viisi neuronia.
- tuloste kolme neuronia sisältävän tason – yhden kullekin luokan todennäköisyydelle (y) mallin ennustettavaksi.
Verkon kerrostetun arkkitehtuurin vuoksi tällaista mallia kutsutaan joskus monikerroksiseksi perceptron-. Huomaa myös, että kaikki syötteen neuronit ja piilotetut tasot on yhdistetty kaikkiin neuroniin seuraavissa kerroksissa - tämä on esimerkki täysin yhdistetystä verkon.
Kun luot tämänkaltaisen mallin, sinun on määritettävä syötetaso, joka tukee mallisi käsittelemien ominaisuuksien määrää, ja tulostetaso, joka kuvastaa niiden tulosteiden määrää, jotka odotat sen tuottavan. Voit päättää, kuinka monta piilotettua kerrosta haluat sisällyttää ja kuinka monta neuronia kussakin on; Mutta et voi hallita näiden tasojen syöte- ja tulostearvoja – nämä määritetään mallin harjoitusprosessilla.
Syvän hermoverkon harjoittaminen
Syvän hermoverkon koulutusprosessi koostuu useista iteraatioista, joita kutsutaan aikakausiksi. Aloitat ensimmäiselle aikakaudelle määrittämällä satunnaiset alustusarvot painolle (w) ja puolueellisuus b -arvoille. Prosessi on sitten seuraava:
- Tietohavaintojen ominaisuudet, joilla on tunnetut otsikkoarvot, lähetetään syötekerrokseen. Yleensä nämä havainnot ryhmitetään eriksi (kutsutaan usein nimellä pienoiserät).
- Neuronit soveltavat sitten niiden funktiota, ja jos se on aktivoitu, siirtävät tuloksen seuraavalle kerrokselle, kunnes tuloskerros tuottaa ennusteen.
- Ennustetta verrataan todelliseen tunnettuun arvoon, ja ennustettujen ja todellisten arvojen välisen varianssin määrä (jota kutsumme tappio) lasketaan.
- Tulosten perusteella painoarvojen ja puolueellisuusarvojen korjatut arvot lasketaan menetyksen pienentämiseksi, ja nämä muutokset lisätään takaisin verkkotasojen neuroneihin.
- Seuraava aikakausi toistaa erän harjoitussyötön tarkistetuilla paino- ja puolueellisuusarvoilla, mikä toivottavasti parantaa mallin tarkkuutta (vähentämällä menetystä).
Muistiinpano
Harjoitusominaisuuksien käsitteleminen eränä parantaa harjoitusprosessin tehokkuutta käsittelemällä useita havaintoja samanaikaisesti ominaisuuksien matriisina, jossa on painoja ja painoja. Matriiseilla ja vektoreilla toimivat lineaariset algebraariset funktiot sisältyvät myös 3D-grafiikan prosessointiin, minkä vuoksi tietokoneet, joissa on graafisia käsittelyyksiköitä (GPU), tarjoavat merkittävästi paremman suorituskyvyn syväoppimismallin harjoittamiseen kuin vain keskuskäsittelyyksikkö (CPU) -tietokoneet.
Tarkempi katsaus tappiofunktioihin ja backpropagointiin
Syväoppimisen harjoitusprosessin edellisessä kuvauksessa mainittiin, että mallin menetys lasketaan ja sitä käytetään paino- ja puolueellisuusarvojen muokkaamiseen. Miten tämä tarkalleen toimii?
Tappion laskeminen
Oletetaan, että jokin koulutusprosessin kautta välitetyistä näytteistä sisältää Adelie näytteen ominaisuuksia (luokka 0). Oikea tulos verkosta olisi [1, 0, 0]. Oletetaan nyt, että verkon tuottama tulos on [0.4, 0.3, 0.3]. Näitä verrattaessa voimme laskea kunkin elementin absoluuttisen varianssin (toisin sanoen sen, kuinka kaukana kukin ennustettu arvo on siitä, mitä sen tulisi olla) muodossa [0.6, 0.3, 0.3].
Todellisuudessa, koska käsittelemme useita havaintoja, yleensä koostamme varianssin – esimerkiksi yksinkertaistamalla yksittäiset varianssiarvot ja laskemalla keskiarvon, joten meillä on yksi keskimääräinen tappioarvo, kuten 0,18.
Optimizers
Tässä on näppärä osa. Tappio lasketaan käyttämällä funktiota, joka toimii verkon viimeisen tason tuloksissa. Se on myös funktio. Verkon lopullinen kerros toimii edellisten tasojen tuotoksissa, jotka ovat myös funktioita. Itse asiassa koko malli syötekerroksesta suoraan menetyksen laskentaan on vain yksi suuri sisäkkäinen funktio. Funktioilla on joitakin todella hyödyllisiä ominaisuuksia, kuten:
- Voit konseptualisoida funktion kaavioviivaksi vertaamalla sen tulosta kunkin muuttujan kanssa.
- Voit laskea funktion johdannaislaskimen avulla milloin tahansa muuttujiensa suhteen.
Otetaan ensimmäiset näistä toiminnoista. Voimme piirtää funktion rivin näyttääksemme, miten yksilöllinen painoarvo vertautuu menetykseen, ja merkitä kyseiselle riville pisteen, jossa nykyinen painoarvo vastaa nykyistä tappioarvoa.
Käytetään nyt funktion toista ominaisuutta. Tietyn pisteen funktion johdettu johdettu ominaisuus ilmaisee, onko funktiotuloksen (tässä tapauksessa tappio) kaltevuus (tai liukuväri) kasvava tai vähenee suhteessa funktion muuttujaan (tässä tapauksessa painoarvoon). Positiivinen johdannaisen ilmaisee funktion lisääntyvän, ja negatiivinen johdannaisen mukaan se vähenee. Tässä tapauksessa funktiolla on alaspäin suuntautuva liukuväri nykyisen painoarvon kaaviopisteessä. Toisin sanoen painon nostaminen vähentää menetystä.
Käytämme optimointitoimintoa, jolla sovellamme tätä samaa temppua mallin kaikkiin paino- ja puolueellisuusmuuttujiin ja määritämme, mihin suuntaan niitä on mukautettava (ylös tai alas) vähentääksemme kokonaishävikin määrää mallissa. On olemassa useita yleisesti käytettyjä optimointialgoritmeja, kuten stochastic gradient descent (SGD), adaptive learning rate (ADADELTA), adaptive momentum estimation (Adam), ja muut; kaikki näistä on suunniteltu selvittämään, miten painoja ja puolueellisuutta säädetään menetyksen minimoimiseksi.
Oppimisaste
Seuraavaksi on selvää, kuinka paljon optimoijan pitäisi säätää paino- ja puolueellisuusarvoja? Jos tarkastelet painoarvomme kaaviota, huomaat, että painon nostaminen pienellä summalla seuraa funktion riviä alaspäin (vähentää menetystä), mutta jos suurennamme sitä liikaa, funktiorivi alkaa jälleen kasvaa, joten voimme itse asiassa suurentaa menetystä; Ja seuraavan aikakauden jälkeen voimme huomata, että meidän on vähennettävä painoa.
Muutoksen kokoa hallitaan koulutukselle määrittämälläsi parametrilla, jota kutsutaan oppimisnopeudeksi . Alhainen oppimisaste tuottaa pieniä muutoksia (joten menetyksen minimointi voi kestää enemmän aikakausia), kun taas korkea oppimisaste aiheuttaa suuria muutoksia (joten minimi saattaa jäädä kokonaan huomiotta).