Deep learning – Mitä se on?

”Deep learning”- termiin törmää nykyisin monessa yhteydessä, esimerkiksi lukiessaan kagglen kilpailujen tuloksia tai alan kirjoituksia (machine learning). Google Trendsistä tarkastettuna ”deep learning” tai tuttavallisemmin syväoppiminen on alettu hypettämään 2012 vuoden lopusta lähtien ja termin viljeleminen internetissä on ollut liki eksponentiaalisessa nousukiidossa. Mistä oikein on kyse?

Syväoppimisen voi ymmärtää monella tapaa. Joillekin se voi merkitä ainoastaan perinteisien mallinnusmenetelmien soveltamista, askeleena raportoinnista kohti ennustavaa analytiikka. Omasta näkökulmasta ajateltuna kyseessä on joukko mallinnusmenetelmiä normaalia kompleksisempien datastruktuurien tai ilmiöiden mallintamiseen/ennustamiseen. Tekisi mieli sanoa, että syväoppiminen on suurilta osin erityyppisten neuroverkkojen (convolution, radial basis, recurrent, stochastic,…) tuunaamista ja optimoimista erilaisiin tavallista haastavampiin mallinnusongelmiin. Tälläisiä ongelmia ovat esimerkiksi käsialan (kirjainten ja numeroiden) ja puheen tunnistaminen, genetiikan mallinnusongelmat. Kyseiset mallinnusongelmat voivat olla tyypiltään supervised- tai unsupervised (mitä nämä ovat suomeksi? itseoppiva ja ei-itseoppiva?).

Vahvasti kuitenkin näyttää siltä, että myös ns. tukivektorikoneen (SVM) käyttöä voidaan pitää syväoppimisena, tämä on hyvin ymmärrettävää, sillä todellisuudessa suurin osa kyseisen menetelmän soveltajista ei oikeastaan tiedä yhtään mitään siitä, mitä mallinnuksen aikana tapahtuu matemaattisesti, enkä voi myöskään suosittele kaikkia ottamaan selvää asiasta, ainakaan kovin syvällisesti. Perusperiaatteen tunteminen yksinkertaisessa tapauksessa on tietysti suotavaa. Lisäksi todettakoon, että tukivektorikone ja neuroverkko eivät itseasiassa pohjimmiltaan eroa kovinkaan suuresti toisistaan, joten on perusteltua lisätä tukivektorikoneet samaan kategoriaan, kun rajoitetaan tarkastelu supervised-tyyppisiin syväoppimisen menetelmiin.

”Tavanomaisiin” mallinnusongelmiin (supervised & verrattain selkeä datan rakenne) käytettävissä neuroverkoissa on tavallisesti yksi, tai maksimissaan kaksi tasoa (hidden layers). Syväoppimisessa käytettävien neuroverkkojen tasojen määrä voi olla huomattavasti suurempi, joka mahdollistaa kompleksisemman datan rakenteen mallintamisen. Itseasiassa syväoppimiseen luokiteltavien neuroverkkotyyppien rakenne ja estimointimenetelmät mahdollistavat sen, että laskennan takana ei tarvita välttämättä yhtä paljon rautaa kuin saman mallinnusongelman ratkaisemisessa tavanomaisella neuroverkolla. Tästä syystä tasojen lisääminen ei välttämättä muodostu laskennallisesti mahdottomaksi.

Tein kenttäkokeita syväoppimiseen lukeutuvilla neuroverkoilla luokitteluongelmille, joihin business-maailmassa törmää usein ja vertasin tuloksia perinteisempien menetelmien (satunnainen metsä, boostattu päätöspuu) tuloksiin, tässä joitakin huomioita:

a. Neuroverkon parametrien optimointi (~15-20 parametria, mm. tasojen lkm, regularisointiparametrit, aktivointifunktioit.) muistutti läheisesti tietokoneen tweekkaamista, ts. laskenta-ajan mahdottomuus vs. luokittelutarkkuus. Joidenkin parametrien merkityksestä itse neuroverkon estimointiprosessissa ei itselläni ollut mitään hajua (laiskuus iski, en jaksanut selvittää ja/tai ymmärtää kaikkien syvällistä merkitystä!). Onneksi käyttämäni ohjelma kertoi arvioidun jäljellä olevan laskenta-ajan suhteellisen osuuden, joten joidenkin parametrikombinaatioiden osalta oli peli vihellettävä poikki hyvissä ajoin!

b. Satunnainen metsä ja boostattu päätöspuu suoriutuivat mallinnusongelmista yhtä hyvin kuin neuroverkko, pienemmällä määrällä parametrien säätöä. Neuroverkon laskenta-ajan käytin taustamuuttujien muunnoksien muodostamiseen ja muuttujien valintaan. Neuroverkkoihin syötin taustamuuttujat sellaisenaan.

c. Neuroverkon parametrien optimointi suoritettiin intensitiivisenä rinnakkaislaskentana, joten koneen käyttäminen laskenta-aikana oli liki mahdotonta. Tästä tuli mieleen tunnettu slogan ”jää aikaa muuhunkin”. Ilman rinnakkaislaskentaa olisi mallinnukset kestäneet arviolta 3 kertaa kauemmin.

d. Enpä oikeistaan ymmärtänyt mitä neuroverkon opettamisessa tapahtui, täysin blackbox… No tulokset olivat kuitenkin yllättävän hyviä manuaaliseen iteroimisvaivaan nähden, rauta hoiti hommat. Tulokset olivat vahvasti sidoksissa parametrien optimointiin, joten optimointi oli välttämätöntä.

Yhteenvetona voisi todeta, että neuroverkkoa (syväoppimiseen lukeutuva/lukeutuvat) käytettäessä analyytikon manuaalinen iteraatiokierroksiin käytetty aika käytettiin laskenta-aikaan. Satunnaisen metsän ja boostatun päätöspuun parametrien optimointi tuntui varsin tylsältä ja yksinkertaiselta. Fiilis neuroverkon estimoinnin valmistumisesta ja tulosten tupsahtamisesta toi mieleen joulunajan odotuksen ja lahjojen avaamisen: aina ei piinallisen odottelun jälkeen lahja (mallin tarkkuus) ollut mieleinen tai vastaavasti joulupäivänä seuraavan jouluun (estimoinnin valmistuminen) odottaminen tuntui tolkuttoman pitkältä ajalta.

Omien kenttäkokeiden perusteella suurin osa supervised-tyyppisistä yritysmaailman mallinnusongelmista ei välttämättä tarvitse syväoppimisen menetelmien kirjoa, voi kuitenkin joskus olla järkevää jättää yöksi kone jauhamaan neuroverkkojen (ja tukivektorikoneiden) pariin saadakseen jonkin benchmark-tuloksen perinteisimmille, ehkä hieman tulkinnallisemmille menetelmille.

Itse en ole suuri neuroverkko tai tukivektorikone fani/spesialisti, mutta lupasin itselleni jatkossa hyödyntää koesession oppeja ja valmiita syväoppimisen aihioita päivittäisessä mallinnustyössäni enemmän. Syväoppimisen menetelmiin syvällinen perehtyminen ei siis välttämättä ole aivan tarpeen ellei työnkuvaasi kuulu unsupervised-ongelmien ratkominen, joissa tulet ennen pitkään törmäämään hypetettyyn käsitteeseen halusit sitä tai et.

2 comments on “Deep learning – Mitä se on?

  1. Niilo Latva-Pukkila on

    Hyvä kirjoitus! Omien kokemusteni perusteella syväoppimisen menetelmät (sanan oikeassa merkityksessä, ei business-hype merkityksessä!) on relevantteja oikeasti melko harvoin. Harvoin käytännössä ongelmat ovat niin monimutkaisia, etteikö esimerkiksi yhden tai kahden tason neuroverkko tai huolella rakenneltu logistinen regressio hoitaisi hommaa kotiin. Jos on, niin yleensä tekijä tietää sen oikein hyvin jo.

    Ohjattu ja ohjaamaton oppiminen on melko laajasti käytettyjä ja ainakin omasta mielestäni hyviä käännöksiä termeille supervised ja unsupervised learning.

    Vastaa
  2. lasseliuk on

    Kiitokset suomennoksista, itse en ole törmännyt kyseisiin termeihin suomeksi, mutta kuullostavat sen verran hyviltä, että taidanpa ottaa käyttöön. Yksi hyvä sovelluskohde syväoppimisen menetelmille on poikkeavien havaintojen etsiminen (anomaly), erityisesti aikasarjoissa. Tietenkään tässäkään syväoppimisen menetelmien käyttö ei ole täysin välttämätöntä, pärjää perinteisimmilläkin menetelmillä, joutuu vaan tekemään vähän enemmän duunia.

    Vastaa

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Yhteydenotto

Mikäli olet kiinnostunut yrityskohtaisista palveluista tai sinulla kysyttävää palvelujemme sisällöstä, niin ota yhteyttä oheisella lomakkeella tai soita Mikalle numeroon 040 845 8432.

Please leave this field empty.