Sivusto sisältää parhaat vinkit, temput ja ratkaisut ongelmiin, joita saatat kohdata. Salaisuuksia, elämän hakkerointia, tarinoita ja kaikkea elämään ja ihmissuhteisiin liittyvää.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

11

Mikä on hermoverkko?

Kuten tiedätte, aivomme ovat monimutkainen asia. Sen työn koordinointi tapahtuu hermosolujen kautta – hermosolut, joiden oksat ulottuvat niistä. Toisiinsa kietoutuneet neuronit muodostavat hermoverkon – monimutkaisen mekanismin, joka määrittää ihmisen psyyken kaiken monimuotoisuuden. Tämä on itsetuntemuksemme juuremme, tunteen meistä yksilöinä, sisäisten halumme ja toiveidemme ohjaamana.

Jos neuronien toiminnassa tapahtuu toimintahäiriö, henkilö muuttuu tuntemattomaksi. Vamman vakavuudesta riippuen muutokset vaihtelevat lievistä poikkeavan käyttäytymisen oireista kehon normaalin toiminnan lopettamiseen. Aivovaurio on usein kohtalokas.

Mutta tänään emme puhu biologiasta, koska paitsi aivojemme järjestelmää kutsutaan neuroverkoiksi, myös monimutkainen tietokoneohjelma, jolla on samanlaiset toimintaperiaatteet. Kuten harmaa aine, se on fraktaali, eli se koostuu monista yksinkertaisemmista ohjelmista, jotka muodostavat eräänlaisen symbioosin.

Toiminnan aikana hermoverkko oppii, saa kokemusta ja muuttuu täydellisemmäksi. Siksi on kyse todellisesta digitaalisesta organismista, jonka ennustetaan jonain päivänä ylittävän sen luojan.

Kuinka hermoverkot ilmestyivät

Keinotekoisten hermoverkkojen käsitteen syntyminen juontaa juurensa edellisen vuosisadan 40-luvulle. Erityisesti se liittyy tutkijoihin McCulloch ja Pitts, jotka yrittivät simuloida aivojen prosesseja. He ehdottivat myös ajatusta luoda itseoppiva järjestelmä, joka on suunniteltu suorittamaan erilaisia ​​loogisia toimintoja. Ongelmana oli, että tuolloin tekniikat olivat kaukana nykypäivän tekniikoista, ja keksijät eivät onnistuneet toteuttamaan ideoitaan täysin.

(Warren McCulloch ja Walter Pitts)

Heidän työtään jatkoi kanadalainen fysiologi Donald Hebb, ja vuonna 1949 esiteltiin maailmalle ensimmäinen algoritmi ANN: n laskemiseksi. Seuraavat 10 vuotta se toimi pohjana muiden tutkijoiden kehitykselle, kunnes lopulta vuonna 1958 Frank Rosenblatt loi parceptronin, tekniikan, joka jäljittelee aivojemme työtä. Aikaansa tämä uutuus oli uskomatonta. Neuvostoliiton ja amerikkalaiset tutkijat liittyivät työhön, jotka myös myötävaikuttivat merkittävästi tutkimukseen.

XX-luvun lopulla – XXI-luvun alkupuolella tekniikka teki jyrkän harppauksen, joka toimi hyvänä kannustimena intensiivisempään tieteelliseen toimintaan, ja vuonna 2007 tietojenkäsittelytieteen tutkija Jeffrey Hinton keksi syvällisen oppimisalgoritmin hermoverkoille, jota käytetään nyt laajalti itse ajavissa autoissa.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

(Geoffrey Hinton)

Hieman historiaa

Ensimmäistä kertaa keinotekoisten hermoverkkojen (ANN) käsite syntyi, kun yritettiin simuloida aivojen prosesseja. Ensimmäisenä merkittävänä läpimurrona tällä alueella voidaan pitää McCulloch-Pittsin hermoverkkomallin luomista vuonna 1943. Tutkijat kehittivät ensin keinotekoisen neuronin mallin. He ehdottivat myös näiden elementtien verkon rakentamista loogisten toimintojen suorittamiseksi. Mutta mikä tärkeintä, tutkijat ovat todistaneet, että tällainen verkosto pystyy oppimaan.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Seuraava tärkeä vaihe oli Donald Hebbin kehittämä ensimmäinen algoritmi ANN: n laskemiseksi vuonna 1949, josta tuli perustavanlaatuinen seuraavien vuosikymmenien ajan. Vuonna 1958 Frank Rosenblatt kehitti parceptronin, järjestelmän, joka jäljittelee aivojen prosesseja. Kerran tekniikalla ei ollut analogeja, ja se on edelleen perustavanlaatuinen hermoverkoissa. Vuonna 1986 amerikkalaiset ja Neuvostoliiton tutkijat paransivat melkein samanaikaisesti toisistaan ​​riippumatta merkittävästi monikerroksisen perceptronin opetusmenetelmää. Vuonna 2007 hermoverkot uudistettiin. Brittiläinen tietotekniikan tutkija Jeffrey Hinton kehitti ensin monikerroksisten hermoverkkojen syvällisen oppimisalgoritmin, jota nyt käytetään esimerkiksi miehittämättömien ajoneuvojen käyttämiseen.

Lyhyesti pääasiasta

Sanan yleisessä mielessä hermoverkot ovat matemaattisia malleja, jotka toimivat eläimen organismin hermosolujen verkkojen periaatteella. ANN voidaan toteuttaa sekä ohjelmoitavissa että laitteistoratkaisuissa. Havaitsemisen helpottamiseksi neuroni voidaan kuvitella eräänlaiseksi soluksi, jolla on monia syöttöreikiä ja yksi lähtö. Kuinka monta saapuvaa signaalia muodostetaan lähtevään signaaliin, määrittää laskenta-algoritmin. Efektiiviset arvot syötetään kuhunkin hermosyöttöön, jotka levitetään sitten neuroneuraalisten yhteyksien varrella (synopsis). Synapseilla on yksi parametri – paino, minkä vuoksi tulotiedot muuttuvat siirryttäessä neuronista toiseen. Helpoin tapa kuvitella hermoverkkojen toimintaa voidaan esittää esimerkillä värien sekoittamisesta. Sinisillä, vihreillä ja punaisilla hermosoluilla on erilainen paino.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Itse hermoverkko on monien tällaisten hermosolujen (prosessoreiden) järjestelmä. Nämä prosessorit ovat erikseen melko yksinkertaisia ​​(paljon yksinkertaisempia kuin henkilökohtainen tietokone -prosessori), mutta kun ne on kytketty suureen järjestelmään, neuronit pystyvät suorittamaan hyvin monimutkaisia ​​tehtäviä.

Käyttöalueesta riippuen hermoverkko voidaan tulkita eri tavoin, esimerkiksi koneoppimisen näkökulmasta ANN on mallintunnistusmenetelmä. Matemaattiselta kannalta tämä on moniparametrinen ongelma. Kybernetiikan kannalta se on robotiikan adaptiivisen ohjauksen malli. Tekoälyn kannalta ANN on olennainen osa luonnollisen älykkyyden mallintamista laskennallisten algoritmien avulla.

Neuroverkkojen tärkein etu tavanomaisiin laskenta-algoritmeihin nähden on niiden kyky oppia. Sanan yleisessä merkityksessä oppiminen koostuu oikean kytkentäkertoimen löytämisestä hermosolujen välillä sekä datan yleistämisestä ja tulo- ja lähtösignaalien välisten monimutkaisten suhteiden tunnistamisesta. Itse asiassa neuroverkon onnistunut koulutus tarkoittaa, että järjestelmä pystyy tunnistamaan oikean tuloksen tietojen perusteella, joita ei ole koulutusjoukossa.

Neuroverkkojen käyttö

Neuroverkkojen käyttöalue on uskomattoman laaja ja sitä rajoittaa vain mielikuvitus. Luetellaan joitain niistä:

  • Automaattiset kuljetuksenohjausjärjestelmät. Autopilotit.
  • Internet. Ääni-avustajat, älykkäät selaimet, käännösohjelmat.
  • Talous ja liike. Valuuttakurssien ennustaminen, nykyaikaiset kirjanpito-ohjelmat, kaupankäynnin robotit, riskinarviointiohjelmat, tuotantokoneiden hallinta, laadunvalvonta jne.
  • Lääke. Nykyaikaiset diagnoosimenetelmät, hoidon tehokkuuden analysointi, lääketieteellisten kuvien käsittely.
  • Robotiikka. Reitin suunnittelu, puheen ja eleiden tunnistaminen.
  • Turvallisuus. Videovalvontajärjestelmien ja hälytysten hallinta.
  • Tietokonepelit ja viihde. Älykkäät botit, analyyttiset ohjelmat shakille ja muille peleille.
  • Taide. Maalausten, kirjojen ja muiden kulttuuriesineiden luominen.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Tämän päivän tilanne

Riippumatta siitä, kuinka lupaavaa tämä tekniikka olisi, toistaiseksi ANN ovat edelleen hyvin kaukana ihmisen aivojen ja ajattelun kyvyistä. Neuroverkkoja käytetään kuitenkin jo monilla ihmisen toiminnan alueilla. Toistaiseksi he eivät pysty tekemään erittäin älyllisiä päätöksiä, mutta pystyvät korvaamaan henkilön siellä, missä häntä aiemmin tarvittiin. ANN-sovelluksen lukuisista alueista voidaan mainita: tuotantoprosessien itseoppimisen järjestelmien, miehittämättömien ajoneuvojen, kuvantunnistusjärjestelmien, älykkäiden turvajärjestelmien, robotiikan, laadunvalvontajärjestelmien, puhevuorovaikutusrajapintojen, analysointijärjestelmien ja paljon muuta luominen. Tämä hermoverkkojen laaja käyttö johtuu muun muassa erilaisista tavoista ilmoittaa ANN: n oppimista.

Nykyään hermoverkkojen markkinat ovat valtavat – ne ovat miljardeja ja miljardeja dollareita. Kuten käytäntö osoittaa, suurin osa hermoverkkojen tekniikoista ympäri maailmaa eroavat toisistaan ​​vähän. Neuroverkkojen käyttö on kuitenkin erittäin kallis yritys, joka useimmissa tapauksissa on varaa vain suurille yrityksille. Neuroverkkojen kehittämiseen, koulutukseen ja testaamiseen tarvitaan suurta laskentatehoa, on selvää, että suurilla IT-markkinoiden toimijoilla on tarpeeksi tätä. Tärkeimpiä tällä alalla kehitystä johtavia yrityksiä ovat Googlen DeepMind-divisioona, Microsoft Research -divisioona, IBM, Facebook ja Baidu.

Kaikki tämä on tietysti hyvää: hermoverkot kehittyvät, markkinat kasvavat, mutta toistaiseksi päätehtävää ei ole ratkaistu. Ihmiskunta ei ole onnistunut luomaan tekniikkaa, joka olisi jopa lähellä kykyjään ihmisen aivoihin. Katsotaanpa tärkeimpiä eroja ihmisen aivojen ja keinotekoisten hermoverkkojen välillä.

Miksi hermoverkot ovat edelleen kaukana ihmisen aivoista?

Tärkein ero, joka muuttaa olennaisesti järjestelmän periaatetta ja tehokkuutta, on erilainen signaalin siirto keinotekoisissa hermoverkoissa ja hermosolujen biologisessa verkossa. Tosiasia on, että ANN: ssa neuronit välittävät arvoja, jotka ovat todellisia arvoja, toisin sanoen numeroita. Ihmisen aivoissa impulssit, joilla on kiinteä amplitudi, välittyvät, ja nämä impulssit ovat melkein hetkellisiä. Siksi ihmisen neuroniverkostolla on useita etuja.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Ensinnäkin, aivojen viestintälinjat ovat paljon tehokkaampia ja taloudellisempia kuin ANNsissa. Toiseksi impulssipiiri takaa tekniikan toteutuksen yksinkertaisuuden: riittää, että käytetään analogisia piirejä monimutkaisten laskennallisten mekanismien sijaan. Loppujen lopuksi impulssiverkot on suojattu akustisilta häiriöiltä. Tehokkaat luvut ovat melun alaisia, mikä lisää virheiden todennäköisyyttä.

Hermoverkkojen näkymät

Luddite-liike alkoi 1800-luvun alussa. Tätä sanaa käytettiin kuvaamaan ihmisiä, jotka osallistuvat kaupungistumisen vastaisiin mielenosoituksiin. Yhteiskunnan teollistumisen myötä, kun työstökoneet alkoivat vähitellen korvata työntekijöitä, monet ihmiset jäivät pois työstä ja olivat erittäin tyytymättömiä tilanteeseensa. Kuvittele vain, kuinka suuren shokin he olisivat kokeneet, jos he oppisivat, että parin sadan vuoden kuluttua koneet pystyvät puhumaan ja jopa liikkumaan itsenäisesti!

Samaan aikaan nämä ajat ovat tulleet, ja nykyään on myös retrogadeja, jotka pelkäävät, että robotiikka ja tekniikan kehitys yleensä voivat pelata julmaa vitsi ihmisten kanssa. Loppujen lopuksi, jos koneet pystyvät jo suorittamaan niin monia tehtäviä tänään, ne tulevaisuudessa vievät kaikki työpaikat, mikä tekee ihmisistä tarpeettomia. Ja tämän kannan vahvistavat vain asiantuntijoiden arviot, jotka ennustavat silloin tällöin tietyn ammatin välittömän katoamisen.

Tällä kannalla on oikeus olemassaoloon, mutta se ei ole täysin oikea, koska ajan myötä vanhojen ammattien lisäksi katoaa myös uusia. Kyllä, paimenia ja metsästäjiä on luokkaa vähemmän kuin aikaisemmin, mutta ohjelmoijia ja markkinoijia on esiintynyt. Historiallisessa käännekohdassa talous suuntautuu uudelleen, kitkemällä tarpeettomat ja antamalla runsaasti kysynnän.

Keinotekoisten hermoverkkojen lisääntyvä vaikutus on ilmeinen, ja on todennäköistä, että ne ovat pian kirjaimellisesti kaikkialla, mutta pelätä tätä tarkoittaa itse ihmisen luonteen hylkäämistä, joka koostuu halusta löytää ja saavuttaa.

Neuraalilohkojen luominen

Ensin on päätettävä, mitkä ovat hermoverkon peruskomponentit – neuronit. Neuroni ottaa syötetiedot, suorittaa tietyt matemaattiset operaatiot sen kanssa ja antaa sitten tuloksen. Neuroni, jolla on kaksi tuloa, näyttää tältä:

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Kolme asiaa tapahtuu täällä. Ensin kukin syöttö kerrotaan sen painolla (näkyy punaisella kaaviossa ):

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Sitten kaikki painotetut panokset lisätään yhdessä offsetin kanssa b(merkitty kaaviossa vihreällä ):

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Lopuksi määrä siirretään aktivointitoiminnon kautta (merkitty kaaviossa keltaisella ):

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Aktivointitoimintoa käytetään liittämään etuyhteydettömät tulot lähtöön, jolla on yksinkertainen ja ennustettava muoto. Sigmoidifunktio otetaan pääsääntöisesti käytetyksi aktivointitoiminnoksi :

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Sigmoidifunktio tuottaa vain alueen numeroita (0, 1). Voit ajatella sitä pakkaamalla alkaen (−∞, +∞)ja (0, 1). Suurista negatiivisista luvuista tulee ~0ja suurista positiivisista luvuista tulee ~1.

Yksinkertainen esimerkki työskentelystä neuronien kanssa Pythonissa

Oletetaan, että meillä on neuroni, jossa on kaksi tuloa ja joka käyttää sigmoidiaktivointitoimintoa ja jolla on seuraavat parametrit:

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

w = [0,1]On vain yksi tapa kirjoittaa w1 = 0, w2 = 1vektorimuodossa. Määritetään neuronille arvo, jolla on arvo x = [2, 3]. Pienemmän esityksen saamiseksi käytetään pistetuotetta.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Ottaen huomioon, että panos oli x = [2, 3], tuotos on sama 0.999. Siinä kaikki. Tätä syötetietojen välittämisprosessia ulostulon vastaanottamiseksi kutsutaan eteenpäin.

Neuronin rakentaminen tyhjästä Pythonissa

Aloitetaan neuronin toteuttaminen. Tämä edellyttää NumPyn käyttöä. Se on tehokas laskennallinen Python-kirjasto, joka käyttää matemaattisia operaatioita:

yksi

2

3

neljä

viisi

6

7

kahdeksan

yhdeksän

10

yksitoista

12

13

neljätoista

viisitoista

kuusitoista

17

kahdeksantoista

yhdeksäntoista

kaksikymmentä

21

22

23

24

25

26

27

tuo numerotunnus nimellä np

def sigmoidi ( x ) :

# Aktivointitoimintomme: f (x) = 1 / (1 + e ^ (- x))

palauta 1 / ( 1 + np . exp ( x ) )

luokka Neuron :

def __init__ ( itse , painot , puolueellisuus ) :

itse . painot = painot

itse . ennakkoluulo = puolueellisuus

def feedforward ( itse , tulot ) :

# Syötä painotiedot, lisää offset

# ja aktivointitoiminnon myöhempi käyttö

yhteensä = np . piste ( itse . painot , panokset ) + itse . puolueellisuus

paluu sigmoidi ( yhteensä )

painot = np . taulukko ( [ 0 , 1 ] ) # w1 = 0, w2 = 1

bias = 4 # b = 4

n = Neuroni ( painot , esijännitys )

x = np . taulukko ( [ 2 , 3 ] ) # x1 = 2, x2 = 3

tulosta ( n . feedforward ( x ) ) # +0,9990889488055994

Tunnistatko numerot? Tämä on sama esimerkki, josta keskusteltiin aiemmin. Myös tällä kertaa saatu vastaus on sama 0.999.

Esimerkki neuronien keräämisestä hermoverkossa

Neuroverkko on olennaisesti toisiinsa yhteydessä olevien neuronien ryhmä. Yksinkertainen hermoverkko näyttää tältä:

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Verkon johdantokerroksessa on kaksi sisäänkäyntiä – x1ja x2. Piilotetussa kerroksessa on kaksi neutronia – h1ja h2. Lähtökerroksessa on yksi neuroni – о1. Huomaa, että panoksia о1ovat lopputulokset h1ja h2. Tämä on se, miten neuroverkko rakennetaan.

Piilotettu kerros on mikä tahansa tulokerroksen ja lähtökerroksen välinen kerros, jotka ovat vastaavasti ensimmäinen ja viimeinen kerros. Piilotettuja kerroksia voi olla useita.

Neuroverkkokoulutus

Yksinkertaisen kaksikerroksisen hermoverkon ulostulo ŷ :

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Edellä olevassa yhtälössä painot W ja esijännitteet b ovat ainoat muuttujat, jotka vaikuttavat lähtöön ŷ.

Luonnollisesti oikeat arvot painoille ja esijännityksille määräävät ennusteiden tarkkuuden. Tulotietojen painojen ja puolueiden hienosäätöprosessi tunnetaan hermoverkkokoulutuksena.

Jokainen harjoitusprosessi koostuu seuraavista vaiheista

  • lasketaan ennustettu lähtö ŷ kutsutaan eteenpäin etenemistä
  • päivittämisen painojen ja ennakkoluulojen päivittäminen

Alla oleva peräkkäinen kaavio kuvaa prosessia:

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Suora jakelu

Kuten näimme yllä olevasta kaaviosta, eteenpäin eteneminen on vain yksinkertainen laskenta, ja perus-kaksikerroksiselle hermoverkolle hermoverkon ulostulo saadaan:

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Lisätään tämä eteenpäin Python-koodissamme. Huomaa, että yksinkertaisuuden vuoksi olemme olettaneet, että siirtymät ovat 0.

Tarvitsemme kuitenkin tavan arvioida ennusteidemme “hyvyys”, toisin sanoen ennusteidemme pituutta. Menetystoiminnon avulla voimme tehdä juuri sen.

Menetystoiminto

On olemassa monia menetystoimintoja, ja ongelmamme luonteen pitäisi sanella häviötoiminnon valinta. Tässä artikkelissa käytämme virheiden neliöiden summaa tappio-funktiona.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Neliövirheiden summa on kunkin ennustetun arvon ja todellisen arvon erotuksen keskiarvo.

Harjoittelun tavoitteena on löytää joukko painoja ja ennakkoja, jotka minimoivat menetystoiminnon.

Selän eteneminen

Nyt kun olemme mitanneet ennustevirheemme (tappiot), meidän on löydettävä tapa levittää virhe takaisin ja päivittää painot ja ennakkoarvot.

Jotta löydettäisiin sopiva määrä painojen ja esijännitysten korjaamiseksi, meidän on tiedettävä häviöfunktion derivaatti painojen ja esijännitysten suhteen.

Palautetaan analyysistä, että funktion derivaatti on funktion kaltevuuden tangentti.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Jos meillä on johdannainen, voimme yksinkertaisesti päivittää painot ja esijännitykset lisäämällä / vähentämällä niitä (katso yllä oleva kaavio). Tätä kutsutaan kaltevuuslaskuksi.

Emme kuitenkaan voi suoraan laskea häviöfunktion derivaattia painojen ja esijännitysten suhteen, koska häviöfunktion yhtälö ei sisällä painoja ja esijännitteitä. Siksi tarvitsemme ketjusäännön, joka auttaa laskennassa.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Fuh! Se oli hankalaa, mutta se antoi meille mahdollisuuden saada mitä tarvitsemme – häviöfunktion derivaatti (kaltevuus) painojen suhteen. Voimme nyt säätää painoja vastaavasti.

Lisätään backpropagation-toiminto Python-koodiin:

Osittaiset johdannaiset

Osittaiset johdannaiset voidaan laskea, joten tiedetään, mikä vaikutti virheeseen kullekin painolle. Johdannaisten tarve on ilmeinen. Kuvittele hermoverkko, joka yrittää löytää optimaalisen nopeuden autonomiselle ajoneuvolle. Jos auto havaitsee, että se kulkee vaadittua nopeutta nopeammin tai hitaammin, hermoverkko muuttaa nopeutta kiihdyttämällä tai hidastamalla autoa. Mitä kiihdyttää / hidastaa tässä tapauksessa? Nopeusjohdannaiset.

Tarkastellaan osittaisten johdannaisten tarvetta esimerkin avulla.

Oletetaan, että lapsia pyydetään heittämään tikanheitto kohteeseen, joka tähtää keskukseen. Tässä ovat tulokset:

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Jos löydämme nyt yleisen virheen ja yksinkertaisesti vähennämme sen kaikista painoista, tiivistämme kunkin tekemät virheet. Joten sanotaan, että lapsi osui liian matalalle, mutta pyydämme kaikkia lapsia pyrkimään osumaan kohteeseen, niin tämä johtaa seuraavaan kuvaan:

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Useiden lasten virhe voi laskea, mutta kokonaisvirhe kasvaa edelleen.

Löydettyämme osittaiset johdannaiset, löydämme virheet, jotka vastaavat kutakin painoa erikseen. Jos korjaat painot valikoivasti, saat seuraavat:

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Hyperparametrit

Neuraaliverkkoa käytetään ominaisuuden valinnan automatisointiin, mutta jotkut parametrit määritetään manuaalisesti.

Oppimisnopeus

Oppimisnopeus on erittäin tärkeä hyperparametri. Jos oppimisnopeus on liian alhainen, jopa hermoverkon pitkäaikaisen harjoittelun jälkeen se ei ole kaukana optimaalisista tuloksista. Tulokset näyttävät tältä:

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Toisaalta, jos oppimisnopeus on liian korkea, verkko reagoi hyvin nopeasti. Tulos on seuraava:

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Syvät hermoverkot

Syväoppiminen on koneoppimisalgoritmien luokka, joka oppii ymmärtämään dataa syvemmin (abstraktimmin). Suosittuja algoritmeja syvälle oppiville hermoverkoille on esitetty alla olevassa kaaviossa.

Yksinkertaisilla sanoilla kompleksista: mitä ovat hermoverkot? Syötettävän hermoverkon kirjoittaminen tyhjästä.

Suositut hermoverkon algoritmit (http://www.asimovinstitute.org/neural-network-zoo )

Muodollisemmin syvälliseen oppimiseen:

  • Monien prosessointikerrosten (epälineaarinen) kaskadia (putki, peräkkäin lähetettynä virtana) käytetään ominaisuuksien purkamiseen ja muuntamiseen;
  • Perustuu tietojen ominaisuuksien tutkimukseen (tiedon esittäminen) ilman valvottua oppimista. Ylemmän tason toiminnot (jotka ovat viimeisissä kerroksissa) saadaan alemman tason toiminnoista (jotka ovat alkukerrosten kerroksissa);
  • Tutki kerrostettuja näkymiä, jotka vastaavat eri abstraktiotasoja; tasot muodostavat esityshierarkian.

Harjoittele hermoverkkoa XOR-toimintojen avulla

Miksi XOR-toiminto on niin mielenkiintoinen? Yksinkertaisesti siksi, että sitä ei voida saada yhdellä neuronilla: 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0. Se saadaan kuitenkin helposti lisäämällä neuronien määrää. Yritämme kouluttaa verkkoa, jossa on 3 hermosolua piilotetussa kerroksessa ja yksi lähtö (koska meillä on vain yksi lähtö). Tätä varten meidän on luotava joukko X- ja Y-vektoreita harjoitustiedoilla ja itse hermoverkolla:

// массив входных обучающих векторов Vector[] X = { new Vector(0, 0), new Vector(0, 1), new Vector(1, 0), new Vector(1, 1) }; // массив выходных обучающих векторов Vector[] Y = { new Vector(0.0), // 0 ^ 0 = 0 new Vector(1.0), // 0 ^ 1 = 1 new Vector(1.0), // 1 ^ 0 = 1 new Vector(0.0) // 1 ^ 1 = 0 }; Network network = new Network(new int[]{2, 3, 1}); // создаём сеть с двумя входами, тремя нейронами в скрытом слое и одним выходом 

Sitten aloitamme harjoittelun seuraavilla parametreilla: oppimisnopeus – 0,5, aikakausien määrä – 100000, virhearvo – 1e-7:

network.Train(X, Y, 0.5, 1e-7, 100000); // запускаем обучение сети 

Harjoituksen jälkeen katsotaan tuloksia suorittamalla suora syöttö kaikille elementeille:

for (int i = 0; i 

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja