Kannustavalla oppimisella menee lujaa
Olen viime aikoina viettänyt merkittävän osan työajasta koneoppimisen kouluttamiseen. Olen huomannut materiaalissani puutteen: siinä ei käsitellä juuri lainkaan vahvistusoppimista, josta käytän usein nimitystä kannustava oppiminen.
Toisin kuin ohjatussa oppimisessa, vahvistusoppimisessa haluttua vastetta ei osata/haluta määritellä tarkasti, mutta parhaalta vaikuttavia ratkaisuja kannustetaan kehittymään entisestään. Tällaisia tilanteita tulee usein vastaan monimutkaisissa säätö- ja optimointitehtävissä. Tietyssä tilanteessa tietyillä toiminnoilla on välittömän hyödyn/haitan lisäksi pitkän aikavälin hyöty/haitta ja nämä saattavat olla suoraan verrannollisia lopulliseen tavoitteeseen, mutta eivät välttämättä.
Vahvistusoppimisen nousu
Tehdessäni väitöskirjaa Otaniemessä 2011 – 2016, vahvistusoppiminen näyttäytyi melko marginaalisena osana tekoälyä ja koneoppimista. Kaikki olivat innostuneita syväoppivista neuroverkoista. Syväoppivien neuroverkkojen saatua murskavoiton ImageNet ILSVRC -kilpailussa vuonna 2012[1], valtava määrä intoa ja rahaakin on virrannut näiden tutkimiseen. Tämä on tuottanut tulosta: kissat osataan nyt tunnistaa etu- ja takaperin. Puheentunnistus ja konetulkkaus on pompannut suorastaan maagiselle tasolle viimeisten muutaman vuoden aikana.
Nyt terävimmän kärjen huomio näyttää kohdistuvan vahvistusoppimiseen. Syväoppimisella varustettuna vahvistusoppiminen näyttää mahdollistavan huomattavasti entistä yleistettävämpien koneoppimisalgoritmien luonnin.
Eräitä hienoimpia demonstraatioita vahvistusoppimisen sovelluksista ovat Dotaa pelaava OpenAI:n algoritmi ja musiikkia säveltävä AIVA. AlphaGo käyttää sekin vahvistusoppimista. Erittäin hiljattain vahvistusoppimista on käytetty web-käyttöliittymän automatisointiin ilman API:a.[2] Siis ohjelmistorobotiikkaan.
Vahvistusoppimisen haasteet
Niin sanottu kannustava oppiminen ei ole helppo ratkaisu koneoppimisen ongelmiin. Erityisenä ongelmana on, että parhaatkin tämänhetkiset algoritmit vaativat suuren määrän kokeiluja ennen kuin pääsevät jyvälle ongelmasta. Esimerkiksi labyrintin ratkaiseminen on helppo tehtävä yksinkertaisillekin valvottuun oppimiseen perustuville algoritmeille, kun taas vahvistusoppimiseen perustuva algoritmi joutuu ihmettelemään kauan labyrintin olemusta ja tarkoitusta.
Kannustavaan oppimiseen liittyy samoja ongelmia kuin koneoppimiseen ja tekoälyyn yleensä. Esimerkiksi:
- Mallin siirrettävyys. Voidaanko opittua mallia hyödyntää uudessa ympäristössä?
- Syy-seuraus-suhteet. Miten erottaa tilastollinen riippuvuus kausaalisesta riippuvuudesta?
- Harvat palkinnot. Miten auttaa algoritmia oppimaan, kun palkkion saaminen on hyvin harvinaista tai hankalaa?
- Turvallinen kokeileminen. Miten algoritmi voi oppia tehokkaasti, jos väärät kokeilut johtavat vaaratilanteisiin tai aiheuttavat suuria kustannuksia?
- Palkkiolla pelaaminen. Miten kehittää algoritmi siten, että se tekee mitä tarkoitettiin eikä mitä pyydettiin?
Palkkiolla pelaaminen on klassinen ongelma koneoppimisessa. Algoritmi löytää näennäisen hyvän tavan optimoida palkintojen saantia löytämällä jonkinlaisen porsaanreiän, mutta myöhemmin huomataan ettei tämä itse asiassa ollutkaan mielekäs ratkaisu lopullisen tavoitteen kannalta. Palkkiolla pelaamisen ongelma vaikuttaa mahdottomalta ratkaista. Miten odottaa tietokoneelta jotain muuta kuin mitä sen pyydettiin tehdä? Yllättäen myös tämän kysymyksen saralla on viime aikoina nähty vakavasti otettavia ideoita.[3]
Harvojen palkintojen ongelmassa yksi mielenkiintoinen ja yksinkertainen lähestymistapa on ns. ’hindsight experience replay’ (HER). [4] HER-menetelmässä ydinajatuksena on pyrkiä oppimaan myös epäonnistumisista: jos algoritmi ajaa auton puuhun, ei asiasta rangaista vaan sanotaan ’Hienoa, tuo oli erinomainen tapa ajaa auto puuhun!’. Kunkin episodin tulos syötetään takaisin haluttuna tavoitteena. Todellinen tavoite on näiden apu-tavoitteiden erikoistapaus.
Lopuksi
Jatkossa aion ottaa kursseihini vahvemmin mukaan kannustavan oppimisen algoritmit. Luultavasti lähitulevaisuudessa tullaan näkemään vahvistusoppimista hyödyntävää ohjelmistorobotiikkaa ja ohjelmistotestausta.
Tällä hetkellä OpenAI:n tarjoama ’AI-kuntosali’ antaa mainion leikkikentän vahvistusoppimisalgoritmien demonstrointiin ja testailuun. Vastaavia alustoja soisi olevan enemmänkin.
Tekoälyalgoritmien testaus ylipäätään on luultavasti kasvava ala tulevaisuudessa. Algoritmien kehitys menee yhä yleisempään suuntaan ja alalla on yhä enemmän kehittäjiä. Tavoitteena on pystyä käyttämään samaa AI-sovellusta useisiin erilaisiin tehtäviin.
Tähän mennessä kehittäjät ovat hoitaneet myös testauksen, mutta luultavasti tullaan näkemään samanlainen ammattilaistestaajien erottuminen kuin ohjelmistokehityksessä aiemminkin. Erillisen testauksen tarve korostuu, kun algoritmeja ei enää tehdä mittatilaustyönä.
Viitteet:
[1] Krizhevsky, A., Sutskever, I., Hinton, G., ImageNet Classification with Deep Convolutional Neural Networks, NIPS, 2012.
[2] Liu, E., Guu, K., Pasupat, P., Shi, T., Liang, P., Reinforcement Learning on Web Interfaces Using Workflow-guided Exploration, ICLR, 2018.
[3] Everitt, T., Krakovna, V., Orseau, L., Hutter, M., Legg, S., Reinforcement Learning with Corrupted Reward Channel, IJCAI, 2017.
[4] Andrychowicz, M. et al. Hindsight Experience Replay, NIPS, 2017.