01110111010110 11110101010101 00101011010011 01010111010101 01001010101010 10101010101010 Uuden äärellä ohjelmoitava vai oppiva kone? Petteri Kaski Tietotekniikan laitos Aalto-yliopisto ICS-A1120 Ohjelmointi 2 9. toukokuuta 2016 10101011110101 01010101011101 01010111010110 10101101010110 10101110101010 11101010101101 01110111010110 10111011010101 11110101010101 00010101010101 01011010101110
Sisältö (kierrokset ja moduulit) I 1. Lämmittelykierros Tietokoneen mysteeri 2. Bitit ja data 3. Kombinaatiologiikka 4. Sekventiaalilogiikka 5. Ohjelmoitava kone II Abstraktiot ja analyysi 6. 7. 8. 9. III Funktionaalinen ohjelmointityyli Suorituskykyanalyysi Rekursio Algoritmit ja informaation esitykset Uuden äärellä 10. Rinnakkaisuus ja samanaikaisuus 11. Virtualisointi ja skaalautuvuus 12. Ohjelmoitava vai oppiva kone? (Intel Xeon Phi Knights Landing -lastu, 72 suoritusydintä, 8 miljardia transistoria, 14 nanometrin litografia) (Google Hamina)
Uuden äärellä 10. Samanaikaisuus ja rinnakkaisuus 11. Virtualisointi ja skaalautuvuus 12. Ohjelmoitava vai oppiva kone? helppoa rinnakkaisuutta: rinnakkaiskokoelmat, futuurit ja lupaukset laskentaa saa kuin sähköä seinästä skaalautuvuus omasta koneesta tehdashallitietokoneeseen*; Apache Spark (asennettu Maarille) konetta voi joskus opettaa sen sijaan että sitä ohjelmoidaan, ts. kone osaa joskus näppärästi yleistää sille esitetyistä esimerkeistä *) vain sähkösopimus (ja luottokortti) tarvitaan
The science of learning mechanisms explores how a computationally limited entity can succeed in a world that is too complex for it to model. It focuses on three things: computationally bounded entities, successful action in a complex world, and, most importantly, the relationship between the two. Leslie Valiant, in Probably Approximately Correct: Nature s Algorithms for Learning and Prospering in a Complex World, Basic Books, 2013
Voisiko konetta opettaa sen sijaan että sitä ohjelmoidaan?
Motivaatio: Ohjelmointi on raakaa työtä ja ohjelmoija luonteeltaan peruslaiska (~ Miksi raataa jos kone voi raataa puolestasi?)
(Motivaatio:) Mitä on älykkyys? Mitä on tietoisuus? (~ Ehkäpä koneen opettaminen antaisi valaistusta asiaan?)
Miten ohjelmointi ja oppiminen eroavat toisistaan?
Mitä on opettaminen? Mitä on oppiminen? (Ja miten tämä suhtautuu ohjelmointiin? Mitä on älykkyys / luovuus?)
(Eräs tapa mieltää) Opettaminen / oppiminen vs ohjelmointi
Opettaja Oppija valitsee opetettavan aiheen/ aineiston valmistelee aineiston ja esittelee sen oppijalle (toistaa edellisiä oppijan suoriutumisen ml. oppijalta saadun palautteen perusteella) aineisto suoriutuminen & palaute tarkastelee esiteltyä aineistoa ja (toivoaksemme)py rkii oppimaan sen mitä opetetaan oppiminen vaatii työtä oppijalta aineiston omaksumista ( oppimista ) mitataan palaute opettajalle
Ohjelmoija Kone etsii täydellisen ratkaisumenetelmän tarkasteltavaan tehtävään (~ tehtävän ratkaisevan algoritmin) toteuttaa algoritmin tietokoneohjelmaksi haluamallaan ohjelmointikielellä voi halutessaan mitata ohjelman suorituskykyä eri syötteillä ohjelma (tehtävän ratkaisu & tietoa ohjelman suorituskyvystä) suorittaa annetun ohjelman
Ohjelmoitaessa työ on täysin ohjelmoijan puolella (ohjelman suoritusta vaille) Opittaessa oppiminen on oppijan vastuulla ( työ jakautuu tasaisemmin opettajan ja oppijan kesken)
Opettaja (~ohjelmoija) Oppija (~kone) valitsee opetettavan aiheen/ aineiston valmistelee aineiston ja esittelee sen oppijalle (toistaa edellisiä oppijan suoriutumisen ml. oppijalta saadun palautteen perusteella) aineisto (~data) suoriutuminen & palaute tarkastelee esiteltyä aineistoa ja oppii ohjelmointinsa perusteella oppiminen vaatii työtä oppijalta tämä työ on ohjelmoijalta pois! aineiston omaksumista ( oppimista ) mitataan
Mitä on opettaminen? Mitä on oppiminen?
Oppija pyrkii yleistämään annetuista esimerkeistä (Opettajan rooli on johdattaa oppija hyvien esimerkkien äärelle aina opettajaa ei edes tarvita!)
Esimerkkejä Osaisimmeko opettaa koneen näkemään nollia ja ykkösiä?
Esimerkkejä valmiiksi luokiteltuna ( nimettyinä ) Opettaja valmistelee nimettyjä esimerkkejä siitä miltä nolla ja yksi näyttävät, käsinkirjoitettuina
Oppijan tehtävä on oppia yleistämään esitetyistä esimerkeistä ennalta tuntemattomiin? tapauksiin
Opettaja voi helpottaa oppimista pelkistämällä esimerkeistä piirteitä, jotka korostavat opittavaa säännönmukaisuutta aineistossa (Piirteitä voidaan myös oppia ilman opettajan työtä)
Oppimisen arviointi ( validointi ) Opetusaineisto Testiaineisto Millä tarkkuudella oppija osaa käsitellä (tässä: luokitella nolliksi ja ykkösiksi) opetusaineistosta riippumattoman ja opetusvaiheessa tuntemattoman testiaineiston?
Oppimisen riskit Yleistys tuntemattomaan sisältää aina epävarmuutta Ehkäpä esimerkit eivät olekaan riittävän kattavia Virheet ovat oppimisen arkipäivää Virheet johtuvat mm. puutteellisista esimerkeistä ja puutteellisesta oppimisesta Virheisiin on varauduttava ja oppimista arvioitava
Oppimisen ihme Datan muoto palvelee tarkoitusta Muodosta voidaan (koneellisesti) päätellä tarkoituksen kannalta hyödyllistä Vrt. kone oppii tunnistamaan käsinkirjoitetut nollat ja ykköset niiden muodon (kirjoitusasun piirteiden) perusteella Datasta oppivat menetelmät ovat perin yksinkertaisia verrattuna ohjelmointiin (vrt. kirjoita ehtolauseilla miltä nolla näyttää ) Mitä runsaammin ja monipuolisemmin dataa on saatavilla, sitä hyödyllisemmäksi tulevat oppivat menetelmät Oppivat menetelmät ottavat työtä ohjelmoijalta pois ja siirtävät sitä koneelle lämpimästi suositellaan!
Koneoppimisen arkipäivää http://dx.doi.org/10.1038/nature16961
Koneoppimisen arkipäivää http://www.youtube.com/watch?v=fr9axp_efti http://www.youtube.com/watch?v=ygysv2ksywg
Tehtävät binaryvision opetamme koneen näkemään käsinkirjoitettuja 0 - ja 1 -lukuja bayes rakennamme naiivin Bayes-luokittimen ja sovellamme sitä 2011 eduskuntavaalien vaalikonedataan (Helsingin Sanomat) matrixinverse harjoittelemme numeerisen laskennan menetelmiä (käänteismatriisin laskeminen Gaussin eliminaatiolla) edellisen sovellus pienimmän neliövirheen polynomin sovittamiseen dataan (polynomiregressio) SVD lisää numeriikkaa singulaariarvohajotelma (SVD) [edellisen sovellus ohjaamattomaan piirteiden erotteluun]
Kurssikalenteri
Ohjelmointi 2 Ohjelmoinnin ja laskennan periaatteita porttitasolta funktionaaliseen rinnakkaisohjelmointiin Laskenta: Eräs vähiten ymmärretyistä luonnonilmiöistä Ohjelmointi: Keino valjastaa laskenta haluttuun tarkoitukseen
Porttitasolta tehdashallitietokoneeseen (Intel Xeon Phi Knights Landing -lastu, 72 suoritusydintä, 8 miljardia transistoria, 14 nanometrin litografia) (Google Hamina)
What s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more. Alan J. Perlis (1 April 1922 7 February 1990) in foreword to Harold Abelson and Gerald Jay Sussman, with Julie Sussman, Structure and Interpretation of Computer Programs, 2nd ed., MIT Press, 1996