Neuroverkot

Wikipediasta
Siirry navigaatioon Siirry hakuun
Eteenpäin kytketty 2x5 monikerrosverkko

Neuroverkot ovat informaation käsittelyn, matematiikan tai laskennan malleja, jotka perustuvat yhdistävään laskentaan. Aivotutkijat Warren McCulloch ja Walter Pitts esittivät ensimmäisen ihmisaivojen toimintaa ja matemaattista logiikkaa yhdistelevän laskenntamallin vuonna 1943.

Neuroverkkojen perusajatus perustuu luonnollisiin hermoverkkoihin, mutta tarkkaan luonnollisten hermoverkkojen jäljittelyyn ei nykyisin yleensä pyritä, vaan neuroverkkotekniikoiden kehittäminen perustuu enemmän esimerkiksi tilastotieteeseen ja signaalinkäsittelyn teoriaan.

Siinä kun tavallisissa asiantuntijajärjestelmissä käytetään "jos-niin"-sääntöpareja (esim. jos raidat, niin seepra; jos pitkät korvat, niin aasi), neuroverkkoa opetetaan esimerkkien avulla (nämä ovat eri-ikäisiä seeproja, nämä aaseja). Pyritään siihen että neuroverkko oppii muuttujien epälineaariset riippuvuussuhteet suoraan havaintoaineistosta (em. esimerkissä neuroverkko oppii tarkastelemaan korvia ja värin kuvioita, ei esim. jalkojen pituutta). Muilta osin neuraalilaskenta muistuttaa tilastotieteessä käytettyjä yleistettyjä lineaarisia malleja (GLM).

Neuroni ja neuroverkon kerrokset[muokkaa | muokkaa wikitekstiä]

Neuroverkot koostuvat joukosta (keinotekoisia) neuroneita. Neuronit ovat yksinkertaisia, toisiinsa kytkettyjä tiedonkäsittely-yksiköitä. Keinotekoinen neuroni muistuttaa karkeasti biologista neuronia, ja koostuu seuraavista osista:

  • synapseista
  • summaajasta
  • aktivaatiofunktiosta

Synapsi on kahden neuronin välinen kytkentä, jolle on määritelty kytkentäkohtainen paino. Summaajan tehtävä on laskea kaikilta syötesynapseilta tulleiden signaalien summa. Lopulta neuroni tuottaa tämän summan perusteella aktivaation.

Keinotekoiset neuroverkot järjestetään lähes aina kerroksiksi, joissa on tietty joukko vektoriksi järjestettyjä neuroneja. Niistä lähteviä synapseja, summajia ja aktivaatioita voidaan mallintaa yhdistetyllä funktiolla, joka koostuu lineaarikuvauksesta, vakiotermistä ja aktivaatiofunktiosta. Yhden kerroksen aktivaatio on seuraavan kerrokseen sisään tuleva signaali.

Lineaarikuvaus ja vakiotermi[muokkaa | muokkaa wikitekstiä]

Neuronin summaaja laskee syöttösynapseilta tulleiden signaalien summan

jossa ovat syötesignaaleita ja on vakiotermi (bias). Tämä esitetään usein matriisimuodossa

notaation ja derivaattojen laskennan selkeyttämiseksi.

Aktivaatiofunktio[muokkaa | muokkaa wikitekstiä]

Aktivaatiofunktio laskee summasta epälineaarisen kuvauksen

jossa on ulostulosignaali. Aktivaatiofunktio lasketaan yleensä jokaiselle kerroksen neuronille erikseen.

Epälineaarisuus mahdollistaa mielivaltaisen funktion approksimoimisen. Epälineaarinen aktivaatiofunktio voi olla esimerkiksi askelfunktio

tai logistinen (sigmoidi) funktio

Nykyisin yleisin aktivaatiofunktio on ReLU (engl. Rectified linear unit)

muun muassa sen helpon derivoituvuuden vuoksi. Se ei myöskään kärsi häviävien gradienttien ongelmasta toisin kuin sigmoidiset funktiot.

Neuroverkkorakenteet[muokkaa | muokkaa wikitekstiä]

Avattu takaisinkytketty neuroverkko

Neuroverkkokerroksia yhdistelemällä voidaan rakentaa erilaisia neuroverkkoja. Yleisin neuroverkkorakenne on eteenpäinsyöttävä verkko, jossa kaikki edellisen kerroksen neuronit on kytketty kaikkiin seuraavan kerroksen neuroneihin. Eri tarkoituksiin on kehitetty lisäksi monia erilaisia neuroverkkorakenteita.

Opetus[muokkaa | muokkaa wikitekstiä]

Neuroverkkojen opettamisessa kytkentöjen synaptiset painot optimoidaan siten, että opetusnäytteiden vasteiden ja haluttujen vasteiden ero minimoituu.

Opetusnopeutta voidaan parantaa nolla-keskiarvoistamalla opetusdata ja vähentämällä opetusnäytteen piirteiden keskinäistä riippuvuutta esimerkiksi pääkomponenttianalyysillä.

Hukkafunktio, gradientti ja vastavirta-algoritmi[muokkaa | muokkaa wikitekstiä]

Jotta neuroverkkoa voidaan opettaa, sille on määriteltävä hukkafunktio (engl. loss function). Hukkafunktio antaa numeerisen arvon sille, kuinka hyvin neuroverkon ennustukset vastaavat havaittua dataa. Regressiotehtävissä käytetään usein virheiden neliösummaa

jossa on neuroverkon ennuste datapisteen perusteella, ja luokittelutehtävissä ristientropiaa (engl. categorical cross-entropy)

jossa on datapisteen oikea luokka.

Kun hukkafunktio on määritelty, käytetään gradienttimenetelmää (engl. gradient descent) sen minimoimiseksi. Siinä virhefunktion gradientti lasketaan painokertoimien suhteen, ja siirrytään askel askeleelta vastakkaiseen suuntaan gradienttiin nähden. Askeleen pituus voi olla osa gradientin pituudesta, esimerkiksi 0.02, tai se voidaan määrittää . Usein gradientin laskemiseksi ei käytetä koko datasettiä joka askelmalla, vaan gradientti lasketaan satunnaistetusta alijoukosta dataa (engl. Mini-batch gradient descent).

Monikerroksisten neuroverkkojen opetuksessa käytetään vastavirta-algoritmia (engl. backpropagation), [1] joka nopeuttaa gradientin laskemista. Vastavirta-algoritmi aloittaa gradientin laskemisen verkon viimeisestä kerroksesta. Se laskee gradientin aina yhdelle kerrokselle kerrallaan, ja käyttää tätä gradienttia edellisen laskemiseen.

Oppimisparadigmat[muokkaa | muokkaa wikitekstiä]

Ohjatussa oppimisessa (engl. supervised learning) neuroverkolle syötetään ennalta luokiteltuja näytteitä. Neuroverkon tuottamien arvojen ja näytteen luokittelun perusteella neuronien painoarvoja muutetaan siten, että neuroverkko tuottaisi syötteen luokittelun mukaisen tuloksen. [2][3][4]

Ohjaamattomassa oppimisessa (engl. unsupervised learning) syväoppimisen -malli (engl. deeplearning model) yrittää automaattisesti luokitella syötettä, ilman että sitä ohjataan millään tavalla.[4] Ohjaamatonta oppimista ovat muun muassa sellaiset autoenkooderit, jotka muuttavat vastaanottamansa syötteen matalampiuloitteiseen muotoon, ja yrittävät muokata sen takaisin alkuperäiseksi syötteeksi.

Osittain ohjatussa oppimisessa (engl. semi-supervised learning) osa näytteistä on luokiteltuja ja osa ei.[4] Tämä voi tarkoittaa esimerkiksi sitä, että osaa verkosta esiharjoitetaan ohjaamattomasti, ja sitten tätä neuroverkkoa käytetään osana ohjattua arkkitehtuuria.

Vahvistusoppimisessa (engl. reinforcement learning) syväoppimisen -malli oppii palautteen perusteella, jota ympäristö antaa suorituksen aikana.[4]

Katso myös[muokkaa | muokkaa wikitekstiä]

Lähteet[muokkaa | muokkaa wikitekstiä]

Haykin, Simon (1999). Neural networks - A comprehensive edition. 2.painos. Prentice Hall International. ISBN 0-13-908385-5.

Viitteet[muokkaa | muokkaa wikitekstiä]

  1. Orponen, Pekka: Neuroverkot users.ics.aalto.fi. Viitattu 28.04.2018.
  2. Josh Patterson, Adam Gibson: Deep Learning: A Practitioner's Approach, s. 86–104. Google Books: O´Reilly, 2017. ISBN 1491914211. Deep Learning: A Practitioner's Approach (viitattu 23.5.2018). (englanniksi)
  3. Juergen Schmidhuber: arXiv:1404.7828 Deep Learning in Neural Networks: An Overview arxiv.org. Viitattu 22.9.2019. (englanniksi)
  4. a b c d Isha Salian: SuperVize Me: What’s the Difference Between Supervised, Unsupervised, Semi-Supervised and Reinforcement Learning? blogs.nvidia.com. Viitattu 22.9.2019. (englanniksi)

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]