Skip to content

Hermoverkon laitteiston merkitys ja miten hermoverkkoja ’ohjelmoidaan’

marraskuu 26, 2015

1 Laitteiden rakenteen merkitys

Tällä hetkellä keskustelu syviä hermoverkkoja simuloivista oppivista algoritmeista ( Deep Learning ) käy tosi kuumana,  ja keskusteluun osallistuu erilaisia ja eri alojen asiantuntijoita. Näyttää siltä, että suuremmalla osalla keskusteluun asiantuntijoina osallistuvista ei ole riittäviä pohjatietoja,  ja he eivät tiedä, että näin on.

Ensimmäinen ja akuutein tiedonpuutteen alue on käytettävän laitteiston merkitys lopputuloksen kannalta. Suuri osa puhujista eivät joko tiedä tai tajua sitä,  miten nykyisten tietokoneiden rakenne rajoittaa hermoverkkojen käyttömahdollisuuksia. Nykyisen tietokoneen perusrakenne on kehitetty 1940-luvulla,  ja se on säilynyt muuttumattomana tähän päivään saakka. Sen koko, komponenttien määrä ja teho ovat sitä vastoin kehittyneet hurjasti. Tämä rakenne – nimeltään keksijänsä mukaan von Neuman- arkkitehtuuri – on hyvin yksinkertainen. Se koostuu kahdesta osasta: suorittimesta ( tai laskimesta) ja muistista, jota sekaannuksen välttämiseksi kutsutaan keskusmuistiksi. Keskusmuistiin talletetaan sekä suoritusohjeet (ohjelma) että sen tarvitsemat lähtötiedot  ja suorituksen eri vaiheissa syntyneet tiedot.

Suoritin pystyy suorittamaan ohjelman yhden käskyn kerrallaan. Ohjelman suoritus etenee seuraavasti: Ohjelman käsky siirretään muistista suorittimeen. Sitten se suoritetaan. Tämä tapahtuu niin, että aluksi käsky hakee muistista tarvittavat (tyypillisesti kaksi) lähtötiedot. Sen jälkeen suoritin toteuttaa käskyn, esimerkiksi yhteenlaskun. Lopuksi käsky tallettaa lopputuloksen,  esimerkissä summan jonnekin keskusmuistiin. Suoritin osaa perulaskutoimitukset ja kahden luvun suuruusvertailun eikä sitten muuta.

Kun sitten tarkastellaan hermoverkkoa, sen toimitapa on tyystin toisenlainen. Jokainen hermosolu on periaatteessa suoritin, mutta sillä ei ole pelkästään kahta lähtötietoa,  vaan niitä voi olla jopa tuhansia samanaikaisesti. Hermosolun ’käskyjä’ ei haeta mistään, vaan ne ’sijaitsevat’ solussa itsessään,  samoin on laita lopputuloksen.

Kun tietokoneella jäljitellään hermoverkon toimintaa, se tarkoittaa sitä, että koko verkon kaikkien solujen tosin varsin yksinkertainen toiminta kirjoitetaan ohjelmaan,  ja kun tätä suoritetaan hermosolun reaktio – siis laskennan lopputulos – siirretään muistiin seuraavaa käyttöä varten. Näin siis deep learning algoritmi jäljittelee oikeaa hermoverkkoa laitteella, jossa on ainoastaan yksi hermosolu.

Oikeissa hermoverkoissa on muutamista tuhansista miljardeihin hermosoluihin. Aito hermoverkon toiminta on vahvasti rinnakkainen. Kun viesti siirtyy eteenpäin verkossa, tähän osallistuvat vähintään tuhannet hermosolut samanaikaisesti. Näin muutaman suoritusaskeleen jälkeen tähän ovat voineet osallistua kymmenet tai sadattuhannet hermosolut.

Tietokoneen suorittaessa hermoverkkosimulaatiota se toteuttaa yhdellä ’hermosolulla’ satojentuhansien solujen samanaikaisen operaation. Jokaista operaatiota varten ohjelman pitää joka suorituksen välissä hakea kyseisen solun tila, kaikki syötesignaalit keskusmuistista ja palauttaa syntynyt uusi tila takaisin keskusmuistiin ja jatkaa tätä niin kauan kuin jossain verkon solussa uusi signaali syntyy.

Neurosynaptinen kone sen sijaan toimii samalla tavalla kuin aito hermoverkko.

Näinpä Jepardy- kilpailun voittanut BM:n Watson on siis toteutettu perinteisillä tietokoneilla, joka koostui 750 kappaleesta 3.5 GHz POWER7 keskusyksikköjä, joissa on 8-ytiminen prosessori. Laitteiston keskusmuisti on 16 000 Gb. Laitteisto oli siis jättiläismäinen ja vastaa kutakuinkin noin 3000 perinteistä PC:tä. On selvää, että jos yhden kohtuullisen kapea-alaisen sovelluksen pyörittämiseen tarvitaan tällainen määrä kalustoa, ei tällainen teknologia voi tulla mitenkään yleisesti käyttöön.

Tässä vielä kuva konehuoneesta:

IBM jepardy tietokone

Vastaava neurosynaptinen kone on noin 1/100 000  tämän koosta ja energiankulutuksesta ja on noin tuhat kertaa tehokkaampi.

2 Järjestelmien toiminnat synnyttämisen luonne

Toinen sekaannusta aiheuttava asia on näiden neuroverkkojen ’ohjelmointi’. Suuri osa IT- ammattilaisista ei tiedä näistä riittävästi ja automaattisesti olettavat, että nämä ovat samanlaisia kuin tietokoneiden sovellusohjelmat, mutta todellisuus on tyystin erilainen. Kun koko tietokoneiden historian ajan ohjelmointi on ollut toiminnan pikkutarkkaa koodaamista, ja sovellus on toiminut täsmälleen aina niin kuin se on ohjelmoitu. Tästä mielikuvasta kumpuaa ilmaisut ”keinoälylle pitää ohjelmoida etiikka, että se ei ryhdy toimimaan ihmistä vastaan”. Tämä on kaunis ajatus, mutta kun sitä ei ole mitään mahdollisuutta toteuttaa.

Kun Watsonia on ’ohjelmoitu’ tuolle kuvassa näkyvälle tietokoneelle, siinä ohjelmassa ei ole kerrottu, miten Watson tietojen perusteella laatii vastauksia. Siinä ohjelmassa on kuvattu Watsonin hermoverkon toiminta. Sen ohjelmoijat tarvitsevat hyvin vähän tietoja siitä,  mitä Watson toimiessa tekee. Kun sitten hermoverkko on ohjelmoitu ja siis valmis, sitä ryhdytään opettamaan. Kun meillä on kissan hahmoja tunnistava hermoverkko, sitä opetetaan niin, että sen verkkokalvolle heijastetaan kaiken maailman kuvia,  ja sitten kun kuvassa on kissa, hermoverkon pitää reagoida  ’tässä’. Aluksi verkko ei osaa mitään, joten se arvaa väärin. Tässä vaiheessa verkolle kerrotaan, mikä kustakin kuvasta esittää kissaa,  mikä ei. Tämä opetus tallentuu hermoverkon synaptisiin painokertoimiin ja hermosolujen toiminnan ohjaukseen, kun se saa impulssin.

Näin hermoverkon oppiminen muistuttaa ihmisen oppimista. Kun kuvia käsitellään runsaasti, alkaa verkko tunnistaa  oikein aina suuremman ja suuremman määrän  kissankuvia. Se ei kuitenkaan koskaan pääse 100 %: iin,  ja se oppii aina lisää toimiessaan.

Jos nyt ajatellaan, että meillä on keinoälyinen robotti,  ja sille opetetaan ajoradan ylitys niin kuin ihmisellekin. Alkuvaiheessa se varmaankin ylittäisi kadun suojatien kohdalla varovaisesti, mutta kun siitä kehittyy kokenut tienylittäjä, saattaa olla hyvinkin, että se huomaa ja oppii tilanteita, joissa katu kannattaa ylittää suojateiden välissä, kun liikennettä ei ole.

Kun siis pyrimyksenä  on saada aikaan keinoäly, joka pystyy sopeutumaan vaihtuviin olosuhteisiin ja keksimään uusia parempia ratkaisuja, niin tämän tavoitteen varjopuoli, on  että me emme voi ennalta tietää,  miten se toimii ja toisaalta että  se tekee virheitä.

Tässä vielä tähän liittyvää ajakohtaista keskustelua: https://www.youtube.com/watch?v=f7apPVAcIZ0&list=PLAA2F7385208D3EBF&index=32

 

Mainokset

From → oppiva kone, tekoäly

Jätä kommentti

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s

%d bloggers like this: