Ajatuksia koskien Vadim Kulikovin tekstiä Voiko kone oppia ihmisen abstraktia ajattelua?

(NB. Some scattered thoughts in Finnish concerning blog post I read.)

Artikkelin lopusta eräs mielenkiintoinen ja ajatuksia herättävä lainaus:

Mutta jos saamme tekoälyn ymmärtämään, että kaksi ääntä on tavallaan sama asia kuin kaksi sekuntia tai kaksi pistettä, olemme päässeet ehkä askeleen lähemmäksi todellista lukumäärien ymmärtämistä.

Kysymys: Kuinka lähellä nykyiset “tekoälyt” ovat lukumäärien ymmärtämistä?

Nykyinen käsitykseni (kenties virheellinen) konenäön (computer vision) “tekoälyn” tasosta on seuraava: Nykyiset neuroverkkopohjaiset (neural network, NN) ja muut koneoppimismenetelmät (machine learning, ML) osaavat käsitellä visuaalista inputia todella hyvin. Perinteisten luokittelutehtävien lisäksi löysin jotain referenssejä joissa kehitetyt mallit osaavat laskea montako kappaletta tai erillistä esinettä kuvassa on. Esim. [1] [2] [3]

Pohdintaa

Onko tämä sitten oikeastaan laskemista tai lukumäärän tajuamista Kulikovin kysymyksen mielessä? Ei oikeastaan:

Huomio a.) Valtaosa tällaisistä NN-systeemeistä on opetettu ohjatusti aineistolla jossa ihmiset ovat itse laittaneet 1-1 relaatioon kuvia (esimerkiksi kuva jossa on kolme omenaa) ja tulkinnan (“kolme omenaa”); tutkimuksen kohteena on löytää tehokkaita representaatioita kuvan ja ihmisen rakentaman käsitteen välille (supervised learning). Ks. esim. [2] [3] [9]. Kyseessä ei ole siis oikeastaan alkeellinen representaatio lukumäärille sinänsä (tästä jäljempänä).

Huomio b.) Erityisesti “perinteisimmissä” ei-NN objekteja laskevissa algoritmeissa / malleissa on oleellista huomata että ne ovat edelleen ihmisten omien kognitiivisten konseptien jatkeita. Esimerkiksi artikkelin [1] probabilistinen malli 3d-kappaleiden tunnistamiseksi ja laskemiseksi sisältää valmiiksi “koodattuna” objektien tyypit, asennon; erityisesti artikkelissa esitetty probabilistinen malli yleisellä tasolla ‘sisältää’ jo valmiiksi myös käsitteen lukumäärän laskemisesta. Ja niin sisältyy myös jos ihminen on valmiiksi luokitellut kuvadatan sen mukaan montako objektia siinä on (tai generoinut keinotekoista dataa [9]). Onko tälläisellä neuroverkolla representaatio lukumäärälle? Pikemminkin vaikuttaa siltä ettei: kyseessä on vain monimutkaisesti rakennettu funktio kuvasta maalijoukkoon , joka on kuitenkin periaatteessa vastaava asia kuin kuin esim. perinteinen algoritmi yhden väristen pallojen laskemiseksi valkoisella taustalla: segmentoi kuva ja laske yhtenäisten väripintojen lukumäärä.

Huomio c.) Ohjatun lisäksi on ohjaamatonta oppimista (unsupervised learning), jossa (karkeasti ottaen) tavoitteena on oppia tehokkaita representaatiota datalle ilman annotoitua. Klassinen esimerkki: klusterointi. (Esim. [5] on jännä paperi jossa yritetään löytää representaatio joka yhdistää videon kuvan ja audion.)

Unsupervised saattaisi olla lähempänä sitä mitä haetaan neuroverkolta joka osaa laskea: neuroverkko joka ikään kuin itsenäisesti osaisi muodostaa ‘representaation’ lukumäärälle, vain tarkastelemalla dataa jossa on eri määrä objekteja. Voidaanko opettaa syvä neuroverkko (deep learning) luokittelemaan kuvia sen perusteella, montako objektia niissä on? (Yllä mainittiin jo esim [9].) Voidaanko se opettaa ilman annotoitua dataa? Tämä onkin vaikeampaa: voitaisiin kuvitella ehkä CNN-autoenkooderi, jossa neuroverkon taso joka esittää “koodattua informaatiota” jotenkin vastaisi alkeellista lukumääräinformaatiota (toivotaan että koodatulla tasolla yksi neuroni vastaisi yhtä lukua, kenties). (En onnistunut löytämään juuri mitään jossa sen tapaista oltaisiin yritetty kenenkään toimesta.) Mutta tässäkin oikeastaan törmätään siihen helposti jälleen oletuksemme koodaavan tason koosta tms ominaisuuksista oikeastaan on jälleen samalla tavalla oman lukumääräkäsitteemme jatke / vastine.

Tiivistäen, musta tuntuu että a.), b.), c.) tapausten tyyppiset koneoppimissysteemit on vielä hyvin kaukana blogissa viitatussa “lukumääriä ymmärtävästä tekoälystä”, koska mallien oletuksissa on vahvasti mukana ihmisen konsepti luvuista. Toisin sanoen koneoppimissysteemin mahdollinen numeerinen kyky ei ole “emergentti” ominaisuus tai kyky, vaan edelleen ihmisen “lukukäsitteestä” riippuvainen. (Kenties se on hieman lähempänä oikeaa emergenttiä numerotajua kuin perinteinen taskulaskin tai mekaaninen laite joka on suoraan ohjelmoitu laskemaan “1+1 = 2”, mutta ei ratkaisevasti parempi.) Muistelisin etäisesti että hieman tämäntapaista keskustelua käytiin taannoisessa Matematiikan kognitio -seminaarissa keväällä 2017.

Jännittävää!

Mutta lopuksi jotain jännittävää.

Aloin pohtia hieman toisenlaista lähestymistapaa. Vahvistusoppimisessa aka reinforcement learning -skenessä on tutkittu kuinka NN-pohjaiset toimijat (“agentit”, anglismi) voivat oppia tekemään simuloidussa ympäristössä hyvinkin monimutkaisia asioita maksimoimalla jotain hyvin yksinkertaista palautefunktiota (esimerkiksi pelaamaan Atari- tai muuta tietokonepeliä, funktiona pelaajan pistemäärä / score [4] [6], tai puuhastelemaan hyvin monimutkaisia tehtäviä ihmisen jatkuvan palautteen mukaan [7]). Merkittävä nimi tällä saralla on Googlen omistama firma nimeltä DeepMind.

Olennainen juttu: kuvatunlaisissa RL-malleissa neuroverkko-pohjainen agentti on hyvin vahvasti black box -malli joka oppii esim. pelaamaan esim peliä ilman ihmisen tarjoamia vahvoja oletuksia pelistä: ainoat inputit on pelikentän pikselit (‘visuaalinen input’) + nykyinen pelin pistesaldo (funktio jota agentti yrittää maksimoida). Ja tämä black box oppii pelaamaan näitä pelejä todella hyvin!

Mikä tässä on sitten jännittävää: Kuvitellaan nyt peli tms. ympäristö, jossa on paljon erillisiä objekteja joiden kanssa pelaaja-agentilla on runsaasti interaktiota; voisi olettaa että näiden objektien “laskeminen” olisi hyödyllinen kyky pelin pelaamiseksi. Mutta toisaalta kuvitellaan myös että nämä erilliset objektit ovat hyvin hyvin epäsuorasti yhteydessä pistesaldoon jota agentti yrittää maksimoida (ts. tavoitteena rakentaa sellainen peli että käsite “pelikentän objektit ja niiden lukumäärä” ei ole suoraan mukana valmiina mallissa palautefunktion kautta). Mielenkiintoinen kysymys pohdittavaksi: saattaisiko olla mahdollista tutkia oppisiko jokin sopiva yleinen konvolutiivinen NN-arkkitehtuuri rakentamaan alkeellisia lukumäärä-representaatioita kun se yrittää oppia toimimaan kuvatussa peliympäristössä? Olennainen ja luultavasti ratkaiseva kysymysmerkki tässä on sitten “mikä on sopiva arkkitehtuuri”. (En tiedä, ohitamme tämän teknisen yksityiskohdan :P)

(Tai sitten voi käydä ilmi että nykyisenkaltaiset systeemit ovat surkeita tuollaisessa pelissä. Ehkä puhun asioista joitan en ymmärrä vielä tarpeeksi hyvin ja kuvittelen liikaa black box -magiaa Atari-pelejä pelaavaan ConvNettin.)

Mutta miten sitten testata onko neuroverkko-agentilla representaatioita jotka muistuttavat laskutaitoa? (Mielenkiintoinen yleisluontoinen kuvaus kogn. psykologian soveltamisesta neuroverkkojen tutkimiseen [8])

Lähestysmistapa, “ylhäältä alaspäin”. Tyypillinen testi eläimille ja pikkulapsille: laitetaan esineitä sermin taakse. Jos sermin takana on väärä määrä esineitä kuin yhteenlaskun säännöt antavat olettaa, lapsi / eläin on yllättynyt. Testi sellaisenaan vaatisi jo aivan uskomattomia kognitiivisia kykyjä tekoälyltä. Miten NN-pohjainen RL-agentti voisi olla yllättynyt? Tällainen testi vaatisi jo tekoälyn jolla olisi ylipäätään hyvin eläinmäinen kognition taso.

Lähestysmistapa, “alhaalta ylöspäin”. Sen sijaan voidaan oppimisjakson jälkeen poimia NN-arkkitehtuurin “visuaalisen prosessoinin” moduuli, ja yrittää tarkastella tapahtuuko sen pohjalla (missä pitäisi olla korkean tason reprentaatioita enkoodattuna) jotain mikä vaikuttaa lukumäärään liittyvältä representaatiolta (esim alkeellista “enemmän on eri asia kuin vähemmän” tai subitizing) kun NN:lle annetaan sopivaa koekuvastoa. (Koekuvasto: Kuvia joissa eri määriä kappaleita, mutta esimerkiksi erilaisia kappaleita kuin itse peliympäristössä). (Tässä on toki hirveän epämääräisesti ilmaistu “yrittää tarkastella”.) Tätä kautta saadaan kuitenkin myös ehkä yksi tapa korvata “yllättyminen”: mitä “korkean tason representaatio” -layerissä tapahtuu, jos agentille (joka on opetettu ympäristössä missä fysikaalinen aritmetiikka pätee) tehdään sermitesti jossa aritmetiikka näyttäisi menevän rikki?

En oikeastaan ole varma johtaako tällainen pohdinta yhtään mihinkään. Mutta mielestäni tämä hyvin mielenkiintoista ja ajankohtaista problemetiikkaa. Ongelmana: ilman tarkempaa kuvausta sopivasta arkkitehtuurista, tämä on vielä turhan spekulatiivista / epämääräistä pohdintaa.

lisäys 2017-07-18. Relevantti huomio miksi RL luultavasti ei ole aivan yhtä jännittävää kuin edellä kirjoitin.

lisäys #2 2017-07-18 #toisaalla käydyn keskustelun perusteella tässä esitetyt ajatukset muutenkin kaipaisivat edelleen runsaasti tarkentamista.

Viitteet

[1] Eslami et al 2016 http://papers.nips.cc/paper/6230-attend-infer-repeat-fast-scene-understanding-with-generative-models

[2] Zhang et al 2015 http://www.cv-foundation.org/openaccess/content_cvpr_2015/html/Zhang_Salient_Object_Subitizing_2015_CVPR_paper.html

[3] Perez et al 2017 https://arxiv.org/abs/1707.03017

[4] Mnih et al. 2015 https://www.nature.com/nature/journal/v518/n7540/abs/nature14236.html

[5] Arandjelović, Zisserman 2017 https://arxiv.org/abs/1705.08168

[6] Jaderberg et al 2016 https://arxiv.org/abs/1611.05397

[7] Teh et al. 2017 https://arxiv.org/abs/1707.04175

[8] https://deepmind.com/blog/cognitive-psychology/

[9] Segui et al. 2015 http://www.cv-foundation.org/openaccess/content_cvpr_workshops_2015/W03/papers/Segui_Learning_to_Count_2015_CVPR_paper.pdf