sunnuntai 17. lokakuuta 2010

Kiihdytin ei-symboliselle koneajattelulle

Lähes kaikki esitetyt arkkitehtuurit Yleisen Tekoälyn toteuttamiseksi edellyttävät symbolisen, semanttisen tiedon ja ei-symbolisen tiedon käsittelyn ja esittämisen erottamista toisistaan. Semanttisen, symbolisen tiedon esittäminen erilaisina verkkorakenteina, graafeina on luontevaa ja tehokasta perinteisiä ohjelmointitekniikoita soveltaen. Tavallisen suoritintekniikan kehittyminen multicore-, moniydinsuuntaan tuo tähän käytäntöön lisää tehoa lähivuosien kuluessa.

Semanttisesta tiedosta poiketen ei-symbolisen tiedon esittäminen ja käsittely on ongelmallisempaa. Luonteva lähestymissuunta on ollut, ja ovat edelleen "bioinspiroituneet" hermoverkkoalgoritmit, joista on laaja kokemus useiden vuosikymmenien ajalta. Mutta silloin kun tavoitteena olisi toteuttaa ihmissuorituskyvyn luokkaa olevia yleisen tekoälyn ratkaisuja, tavallinen näkemys on, että hermoverkkoalgoritmit ovat tehottomia, valtavasti suoritinkapasiteettia kuluttavia järjestelmiä. Hermoverkkoesityksessä niin tietämys kuin toiminnallisuuskin on hajantuneesti jakautuneena laajalle joukolle laskenta- ja muistiyksiköitä: neurooneja. Tämä esitapa edellyttää luonnostaan rinnakkaisuutta ja sen tarvitseman suuren yhteyslinkkimäärän ylläpito ohjemallisesti on hyvin raskasta.

Esitän ratkaisuksi laitteistotasolla toimivaa (vastakohtana ohjelmalliselle toteutukselle) kiihdytintä, jossa neuronien ja niiden ryhmien väliset yhteydet korvataan ohjelmistotoiminnallisuutta edullisemmilla, pääosin kiinteillä HW-ratkaisuilla.

Neurologian kehittyessä on ilmeisen ratkaisevaksi toiminnalliseksi yksiköksi paljastunut aivokuoren "cortical column", jonka monimutkaisuus on suuruusluokkaa 10000 neuronia. Oleellista on, että näyttää siltä, että ihmisaivojen muutama miljoonaa "kolumnia" (muutama 10 miljardia neuroonia) sisältävät kaikki suunnilleen saman perustoiminnallisuuden, joka yksilöllisesti ohjelmoituu, hienosäätyy yksilön kehityksen ja oppimisen seurauksena. Tämän toiminnallisuuden täyden tietellisen ymmärryksen saavuttaminen on vielä kesken, mutta jo nyt tekoälypiireissä on laaja kiinnostus soveltaa tämänhetkisiä, hyvin uskottavia teorioita aivokuoren ja kolumnien funktionaalisuudesta. Minulle tutuimpia tapauksia ovat Jeff Hawkinsin HTM ja Harri Valpolan vastaava ZenRobotics-arkkitehtuuri. Molemmissa kolumneja vastaavat yksiköt toimivat hierarkioina.

Esitän kolumnin funktionaalisuudeksi (hyvin yksinkertaistetusti) kykyä havaita sekä staattisia, että sekventiaalisia hahmoja antureilta tai toisista kolumneista saapuvista tuloistaan ja sen mukaan välittää havaitun staattisen tai temporaalisen hahmon koodi hierarkiassa ylöspäin. Muita funktionaalisuuksia on esim. poikkeavuuksien havaitseminen ja raportointi hierarkiassa sekä ylös- että alaspäin, samoin kuin sekvenssien jatkumistavan ennustaminen. Tämä oli siis hyvin karkea yksinkertaistus, ei mitenkään tyhjentävä kuvaus kolumneista.

Minun nyt esittämini ratkaisumalli ei-symbolisen konemielen tehokkaaksi toteuttamiseksi on luoda HW-kiihdytin, joka:

1. Toteuttaa yhden kolumnin abstraktin toiminnallisuuden HW-tasolla, laajaan sisäistä rinnakkaisuutta hyödyntäen. Toteutuksen ei tarvitse olla erityisen "biouskollinen".
2. Sisältää muistirakenteet esim tuhannen kolumnin yksilölliselle tietosisällölle, muuttujille.
3. Kykenee esim. suorittamaan yhden diskreetin (ulkomaailman suhteen) toiminnallisen kierroksen 1us:n aikana, vaihtaen sitten kolumniyksilön datalohkoja. Siten kaikkien tuhannen kolumnin tila voidaan päivittää 1ms:n välein (tai ehkä nopeamminkin), vastaten ihmisen aivokuoren suorituskykyä. Yhden kierroksen tulokset, kolumnien lähdöt, puskuroidaan muiden kolumnien tuloihin, datarakenteisiin, ja otetaan kaikki kerralla, synkronisesti käyttöön 1ms:n jaksoissa.

Piirikokonaisuus sisältäisi kymmeniä tuhansia laskureita, tilakoneita, aritmeettisloogisia yksiköitä ja erillismuisteja. Viimeksimainittujen ylimmät 10 osoitebittiä olisivat multipleksattuja kulloinkin valittuna olevan, yhden tuhannesta kolumnin koodin mukaan. Täten "kontekstinvaihto" sujuisi noin yhdessä kellojaksossa. Jos logiikan kellotaajuus olisi 1GHz, kolumnin tilan päivittämiseen jäisi 1000 kellojaksoa, joiden kuvittelisin rinnakkaisuuden ansiosta riittävän varsin hyvin.

Näitä tuhannen kolumnin emulaattoreita voidaan integroida teknologiasta riippuva määrä yhdelle piipalalle, esim kymmeniä, satoja tai tuhansia ja yhdistää kolumnien välisesti sarjaväyläkommunikaatiota käyttäen, rinnakkaisena HW-toteutuksena.

Esittämäni toteutustapa olisi tuhansia kertoja tehokkaampi kuin mikään ohjelmallinen toteutus mielivaltaisen tehokkaalla moniydinsuorittimilla. Jos yhdellä piipalalla olisi esim 1000 kolumniemulaattoria (jotka siis yhdessä emuloisivat miljoonaa kolumnia), ne vastaisivat 10 miljardia neuroonia. Tällainen piiri voisi olla toteutettavissa vaikkapa 15v kuluttua. Kymmenen emulaatorin piiri voisi olla todellisuutta hyvinkin pian ja sovellettavissa älykkäissä roboteissa.

Esitän yllä kuvatun lähestymistavan mm. siksi, että siten torjun, vaikeutan asiaa koskevia, turhia kehitystä hidastavia patentteja. Nythän tässä kuvattu ajatus on julkinen ja sellaisenaan patentoimiskelvoton, kun se esitetään blogissani (ellei vastaavaa jo ole patentoitu aikaisemmin). Tiedän, että aihepiiriin liittyviä muita patentteja on olemassa.

lauantai 16. lokakuuta 2010

Hieno robottikilpailu

"The Semantic Robot Vision Challenge" on kilpailu, jossa lyhyesti selostettuna kilpailevat robotit saavat tekstimuotoisen luettelon fyysisistä esineistä. Sen jälkeen roboteilla on nettiyhteys käytössään, jota käyttäen niiden tulee etsiä netistä kuvia esineistä, yleistää, generalisoida kunkin esinetyypin oleellisin ja mallintaa tiedot jatkokäyttöön. Sitten nettiyhteys katkaistaan ja robotti pääsee huoneeseen, jossa esineet löytyvät, isot esineet lattialla, pienemmät huonekalujen päällä. Robotin tehtävänä on navigoida huoneessa ja tunnistaa esineet. Näyttää siltä, että neljät vuotuiset kilpailut on jo takana, ja tehtävät tietysti vaikeentuvat vuosittain. Haasteena on suunnitelmallinen navigointi huoneessa, konenäkö, semanttinen ymmärrys ja eteenkin mallin rakentaminen surffauslöydösten pohjalta. Haastavaa! Ja vie varmasti esim. kotirobottien tuotekehitystä eteenpäin.