Arvostelu: The Master Algorithm (P. Domingos)

Sain äskettäin luettua loppuun professori Pedro Domingosin kirjoittaman kirjan The Master Algorithm (Amazon), joka on yleistajuinen johdatus koneoppimisen nykytilaan ja lähitulevaisuuteen. Sitä voi suositella lämpimästi kaikille koneoppimisen ja tekoälyn kehityksestä kiinnostuneille. Erityisiä pohjatietoja ei vaadita, mutta jonkinlainen käsitys ohjelmoinnista, optimoinnista ja tekoälymenetelmien perusteista ei ole haitaksi.

Kirjoittaja Domingos toimii professorina Washingtonin yliopistossa Seattlessa, ja on hyvin arvostettu asiantuntija koneoppimisen alalla. Omassa tulevassa väitöskirjassani viittaan useisiin hänen julkaisemiinsa tieteellisiin artikkeleihin. Verrattuna moniin muihin tämän alan asiantuntijoihin hänen kirjoituksensa ovat hyvin selkeitä ja ymmärrettäviä. Reilu vuosi sitten ilmestynyt kirja The Master Algorithm on sekin hyvin selkeästi kirjoitettu, ja se on suunnattu alaa tuntemattomille. Tekstistä saa paljon irti ilman pohjatietojakin, kunhan innostusta asioiden pohtimiseen löytyy. Kirjaa ovat ansaitusti kehuneet monet merkittävät asiantuntijat, kuten Judea Pearl ja Sebastian Thrun. Yleistajuisuuden myötä tekstissä on yksinkertaistettu monia asioita muuten sangen monimutkaisella aihealueella, mutta siinä luetellaan erittäin ansiokas kokoelma lähdekirjallisuutta yksityiskohdista kiinnostuneille.

Kirjassa kuvaillaan koneoppimisen viisi ’heimoa’ eli koulukuntaa, jotka ovat loogiseen päättelyyn, neuroverkkoihin, Bayesilaiseen tilastotieteeseen, geneettisiin algoritmeihin ja analogioihin tukeutuvat oppivien järjestelmien tutkijat ja kehittäjät. Eri koulukuntien ja heidän algoritmiensa edut ja haitat kuvaillaan intuitiivisesti, ja lopuksi pohditaan mahdollisuutta kehittää ’yleisalgoritmi’ (jota kirjan nimen ’master algorithm’ tarkoittaa) yhdistäen eri koulukuntien parhaat ideat. Tällainen ’yleisoppija’ voisi ottaa vastaan mitä tahansa dataa, oppia siitä mitä opittavissa on, ja soveltaa oppimaansa ennakoidakseen vastaavia tilanteita tulevaisuudessa. Esitetyt ideat ja tavoitteet ovat suhteellisen realistisia, joskin hieman yksinkertaistettuja ja turhan optimistisia.

Aihe on tietysti nykypäivänä hyvin ajankohtainen ja tärkeä, ja herättää kaikissa ajatuksia, koska ensimmäiset todella älykkäät järjestelmät alkavat tulla yleiseen tietoisuuteen. Joitakin esimerkkejä ovat IBM:n Watson, Googlen AlphaGo, itseohjaavat autot kuten Teslan Suomessakin myytävät mallit, ja digitaaliset avustajat kuten Applen Siri, Google Now, Amazonin Alexa ja Microsoftin Cortana. Toiset varmaankin pohtivat, millaisia uusia hyötyjä ja uudenlaista liiketoimintaa nämä mahdollistavat, toiset seuraavat varovaisemmin ja miettivät mahdollisia uhkia ja haittavaikutuksia.

Myös Domingos pohtii kirjansa päätteeksi mielestäni hyvin tyhjentävästi tekoälyn kehittymisen yhteiskunnallisia vaikutuksia. Hän päätyy samankaltaiseen optimistiseen lopputulokseen kuin minä itse: tekoälystä tulee ihmisen jatke siinä missä kaikesta muustakin teknologiasta, kuten älypuhelimista ja hakukoneista, on jo tullut. Ihminen tulee toimimaan yhteistyössä älykkäiden järjestelmien ja laitteiden kanssa. Ne helpottavat elämäämme monin tavoin. Tietysti on väistämätöntä, että taloudellisesti tuottavaa työtä jää ihmisille yhä vähemmän. Siksi meidän on yhteiskuntana siirryttävä kohti pehmeämpiä arvoja ja oltava valmiita jakamaan enemmän ja maksamaan ihmisen suorittamista palveluista ylimääräistä. Domingosin tavoin myös minä kannatan perustuloa, jolla taataan kaikille tietty kohtuullinen elintaso.

Omasta mielestäni teknologia pitäisi nähdä koko ihmiskunnan yhteisenä saavutuksena. Vaikka jotkut rikastuvat oman työnsä tai yritystoimintansa kautta, kukaan ei voi enää väittää saavuttavansa kaiken yksin. Menestyksen takana on sukupolvien työ ja globaalin talouden panostukset. Ahkeruus ja riskinotto pitää tietysti palkita, mutta rikkaidenkin pitää olla valmiita jakamaan myös toisille. Ihmisarvoa ei voida mitata taloudellisilla mittareilla.

Domingos on opiskelijoidensa kanssa kehittänyt relationaalisen oppijan nimeltä Alchemy. Oma väitöstutkimukseni liippaa aihetta läheltä, ja toivon voivani esitellä tässä blogissa myöhemmin tarkemman esittelyn ja jonkinlaisen käytännön demonstraation tästä menetelmästä ja tietysti omastani myös.

Tämä on ensimmäinen kirjoittamani arvostelu, ja se aloittaa uuden blogikirjoitusten sarjan. Toivon pystyväni jatkamaan sitä kuukausittain.

(Muutoksia 18.10.2016 klo 18:12 – lähinnä pieniä lausemuotojen tarkennuksia ja korjauksia)

seuraavia askeleita

Kuluneen viikon olen lähinnä hoidellut monenlaisia käytännön asioita, joita yrityksen käynnistäminen vaatii, ja hahmotellut mielessäni kokonaiskuvaa toimintatavoista. Nyt ajattelin istahtaa alas hetkeksi ja hahmotella millaisia asioita aion käsitellä tässä blogissa lähiaikoina. Tarkoituksena on paitsi kommentoida erilaisia ajankohtaisia ja muuten tärkeitä tai mielenkiintoisia aiheita, myös esitellä omaa toimintaani ja osaamistani erilaisten projektien muodossa. Tässä kirjoituksessa piirtelen hieman karttaa maastosta, jossa lähiaikoina tulen liikkumaan, ja toivoakseni onnistun herättelemään mahdollisten tukijoideni ja asiakkaideni mielenkiintoa.

kirjoja ja kirjoituksia

Koska liiketoimintani tulee pitkällä tähtäimellä rakentumaan erikoisosaamisen varaan, olen varannut itselleni aikaa lukemiselle ja pohtimiselle. Osaamista täytyy ylläpitää ja kehittää edelleen. Tietysti myös väitöskirjani loppuunsaattaminen vaatii aikaa ja energiaa, mutta tästä aiheesta kirjoitan myöhemmin. Lähiviikkoina tulen kirjoittamaan jonkinlaisia arvosteluja ja kommentaareja tärkeistä kirjoista, joita olen lukenut ja joita voin suositella muillekin. Jotkin näistä ovat yleistajuisempia, toiset teknisempiä tai matemaattisempia.
Luetellakseni muutamia esimerkkejä, tulen esittelemään sellaisia kirjoittajia kuin Pedro Domingos, David Vernon, David Mumford, Jeff Hawkins, Ray Kurzweil ja Marcus Hutter. Keskeisiä aiheita ovat erilaiset tekoälyyn ja älykkäisiin järjestelmiin liittyvät ideat ja tekniikat. Tulen kirjoittamaan myös ajankohtaisista aiheista, uutisista ja läpimurroista ja kommentoimaan niitä.

projekteja ja kokeiluja

Edellisessä kirjoituksessani väitin hiukan provosoivasti ja itsetietoisestikin olevani henkilö, joka kykenisi periaatteessa yksinään toteuttamaan kokonaisen järjestelmän palvelimilta useisiin päätelaitesovelluksiin saakka. Tällaisesta henkilöstä käytetään usein nimitystä full-stack -kehittäjä, vaikka termin tyypillinen merkitys on kylläkin hiukan suppeampi, ja tarkoittaa henkilöä joka on minua huomattavasti rutinoituneempi työtehtävissään. En markkinoi itseäni full-stack -kehittäjänä, mutta en halua jättää tätä väitettä pelkäksi kehuskelevaksi heitoksi, vaan todistaa sen. Tarkoitukseni on toteuttaa kuvatunlainen kokonaisuus vaiheittain, dokumentoiden prosessi tässä blogissa.
Tavoitteena tässä kirjoitussarjassa on toisaalta tehdä alaa vähemmän tuntemattomille selkeämmäksi, millaisia asioita modernien tietojärjestelmien toteuttaminen vaatii, ja millaisia osasia niissä on. Toisaalta haluan kuvailla nopeaa tekniikan kehitystä viimeisen 20 vuoden aikana; olen kuitenkin nähnyt läheltä ne ajat, jolloin nykyisen kaltaisia työkaluja ja apujärjestelmiä ei vielä ollut, ja suuri osa järjestelmien koodista ja konfiguroinneista piti vaivalloisesti kirjoittaa itse. Nykyään olemme tilanteessa, jossa yhden henkilön on mahdollista kohtuullisessa ajassa suoriutua kaikista työvaiheista.
Kirjoituksissa tullaan käsittelemään sellaisia asioita kuin virtuaalikoneet, Docker, REST ja JSON sekä Android. Valtavirrasta tulen poikkeamaan sillä tavoin, että tulen käyttämään funktionaalista ohjelmointia, joten tulen käsittelemään myös sellaisia asioita kuin Haskell ja Yesod. Kaikki tämä on kuitenkin vasta runkoa varsinaiselle ydinasialle, joka on tietysti oppivat ja älykkäät järjestelmät. Tulen siis kirjoittamaan myös sellaisista asioista kuin relationaalinen oppiminen, neuroverkkojen ja Bayesin verkkojen lisäksi. Tällaisten tekniikoiden käyttö bisneksessä vaatii kuitenkin tietynlaisen pohjatyön ja runkotekniikan, ja haluan osoittaa ymmärtäväni riittävästi myös tästä puolesta. Tietysti tarvitsen myös omiin tarkoituksiini, esimerkiksi esittelyjä varten, jonkinlaisen perusjärjestelmän käyttööni. Tämän järjestelmän rakentamista tulen kuvailemaan tässä blogissa.