Johdatus tekoälyyn. Luento 6.10.2011: Koneoppiminen. Patrik Hoyer. [ Kysykää ja kommentoikaa luennon aikana! ]



Samankaltaiset tiedostot
TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

JOHDATUS TEKOÄLYYN TEEMU ROOS

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

Viikko 1: Johdantoa Matti Kääriäinen

E. Oja ja H. Mannila Datasta Tietoon: Luku 2

T DATASTA TIETOON

Viikko 2: Ensimmäiset ennustajat Matti Kääriäinen

Tekoäly ja alustatalous. Miten voit hyödyntää niitä omassa liiketoiminnassasi

Johdatus tekoälyn taustalla olevaan matematiikkaan

Tee-se-itse -tekoäly

KONEOPPIMISEN HYÖDYNTÄMINEN: AUTOMAATTINEN TIKETTIEN KÄSITTELY. Esa Sairanen

805306A Johdatus monimuuttujamenetelmiin, 5 op

Tekoäly tänään , Vadim Kulikov (Helsingin Yliopisto)

Tekoäly tukiäly. Eija Kalliala, Marjatta Ikkala

Älykäs datan tuonti kuljetusongelman optimoinnissa. Antoine Kalmbach

Luku 2. Datasta tietoon: mitä dataa? mitä tietoa?

Tilastotiede ottaa aivoon

Introduction to Machine Learning

Oppijan saama palaute määrää oppimisen tyypin

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

Johdatus Ohjelmointiin

Tilastotiede ottaa aivoon

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

Edistyksen päivät, Helsinki. Voiko tutkija muuttaa maailmaa? Humanistista meta-analyysiä merkitysneuvottelevien koneiden avulla.

finnish BOI 2015, päivä 1. Muistiraja: 256 MB

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Tekoäly ja koneoppiminen metsävaratiedon apuna

Ohjelmoinnin perusteet Y Python

Tiedonlouhinta ja sen mahdollisuudet

ALGORITMIT & OPPIMINEN

1 Bayesin teoreeman käyttö luokittelijana

SGN-1251 Signaalinkäsittelyn sovellukset Välikoe Heikki Huttunen

Matriisit ja vektorit Matriisin käsite Matriisialgebra. Olkoon A = , B = Laske A + B, , 1 3 3

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Tekoälykoulutus seniorimentoreille

Etsintä verkosta (Searching from the Web) T Datasta tietoon Heikki Mannila, Jouni Seppänen

JUHTA ja VAHTI juhlatilaisuus, Tietojärjestelmien tulevaisuudesta tekoälyn kehityksen näkökulmasta. Timo Honkela.

Avainsanojen poimiminen Eeva Ahonen

Laskut käyvät hermoille

Käyttöohje HERE Maps painos FI

Harjoitus 3 ( )

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

Koneoppiminen ja tekoäly suurten tietomassojen käsittelyssä yleensä ja erityisesti sovellettuina satelliittidatan käyttöön metsien arvioinnissa

Tekoäly liiketoiminnassa. Tuomas Ritola CEO, selko.io

Sähköpostitilin käyttöönotto. Versio 2.0

Tekoälysovellus: (Ennustaminen) Arviointi, estimointi

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Tarvikkeet: A5-kokoisia papereita, valmiiksi piirrettyjä yksinkertaisia kuvioita, kyniä

Sosiaalinen media työnhaussa

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

ImageRecognition toteutus

Tehtävän lisääminen ja tärkeimmät asetukset

Algoritmit 1. Luento 13 Ti Timo Männikkö

Tiedonlouhinta (kl 2013) Kurssin kuvaus. Esitiedot. Kurssin arvostelu

Yritysyhteistyömalli HOK-Elannon kanssa!

KTKO104 Tieto- ja viestintätekniikka

DIGITAALINEN MARKKINOINTI ELINTARVIKEALALLA EKM-102

Tähtitieteen käytännön menetelmiä Kevät 2009

Kuukauden kuvat kerhon galleriaan lähtien kuukaudenkuvaajan kuvagalleria on siirretty uudelle palvelimelle osoitteeseen:

Kaksiluokkainen tapaus, lineaarinen päätöspinta, lineaarisesti erottuvat luokat

Johdatus tekoälyyn (T. Roos) Kurssikoe

Alkukartoitus Opiskeluvalmiudet

Ohjelmoinnin perusteet Y Python

A* Reitinhaku Aloittelijoille

Johdatus lukuteoriaan Harjoitus 2 syksy 2008 Eemeli Blåsten. Ratkaisuehdotelma

Algoritmit 2. Luento 3 Ti Timo Männikkö

Tässä luvussa käsitellään optimaalisten piirteiden valintaa, luokittelijan optimointia ja luokittelijan suorituskyvyn arviointia.

Tekoäly muuttaa arvoketjuja

Paavo Kyyrönen & Janne Raassina

OKLV120 Demo 7. Marika Peltonen

Johdatus tekoälyn taustalla olevaan matematiikkaan

811312A Tietorakenteet ja algoritmit I Johdanto

Keskeneräisten tarujen kirja

Robotit ja tekoäly terveydenhuollon työvälineinä nyt ja tulevaisuudessa työn tutkimukseen perustuva näkökulma

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Harjoitus 3 ( )

Verkon värittämistä hajautetuilla algoritmeilla

Algoritmit 2. Luento 7 Ti Timo Männikkö

Johdatus tekoälyn taustalla olevaan matematiikkaan

Diskriminanttianalyysi I

805306A Johdatus monimuuttujamenetelmiin, 5 op

Tekoälyn perusteita ja sovelluksia (TIEP1000)

2 Yhtälöitä ja epäyhtälöitä

Johdatus tn-laskentaan perjantai

JOHDATUS TEKOÄLYYN TEEMU ROOS

jens 1 matti Etäisyydet 1: 1.1 2: 1.4 3: 1.8 4: 2.0 5: 3.0 6: 3.6 7: 4.0 zetor

Seuraavat kysymykset koskevat erilaisia tekijöitä, jotka liittyvät digitaaliseen mediaan ja digitaalisiin laitteisiin kuten pöytätietokoneet,

MAY1 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Julkaiseminen sallittu vain koulun suljetussa verkossa.

TIETOJENKÄSITTELYTIEDE

Kiinan kursseilla 1 2 painotetaan suullista kielitaitoa ja kurssista 3 alkaen lisätään vähitellen myös merkkien lukemista ja kirjoittamista.

Johdatus tekoälymatematiikkaan (kurssilla Johdatus Watson-tekn

Algoritmit 2. Luento 3 Ti Timo Männikkö

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

TEEMA 2 TAULUKKODATAN KÄSITTELY JA TIEDON VISUALISOINTI LUENTO 3

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Lapsen kielen kehitys II. Kielen ja puheen kehityksen tukeminen.

Transkriptio:

Johdatus tekoälyyn Luento 6.10.2011: Koneoppiminen Patrik Hoyer [ Kysykää ja kommentoikaa luennon aikana! ]

Koneoppiminen? Määritelmä: kone = tietokone, tietokoneohjelma oppiminen = ongelmanratkaisukyvyn parantuminen kokemuksen avulla Toisin sanoen... - sen sijaan että ohjelmoija kirjoittaa tarkat säännöt jonkun ongelman ratkaisuun, ohjelmoija ohjeistaa tietokonetta oppimaan esimerkeistä - monissa tapauksissa tietokoneohjelma voi tällöin oppia ratkaisemaan jotain tehtävää paremmin kuin ohjelmoija itse osaa!

Esimerkki 1 Miten ohjelmoida tietokonetta pelaamaan esim ristinollaa? Vaihtoehto 1: Katso koko pelipuu läpi, valitse optimaalisesti (vain hyvin yksinkertaiset pelit!) Vaihtoehto 2: Ohjelmoija kirjoittaa säännöt, tyyliin jos vastustajalla on kahden suora ja kolmas on vapaa, estä suora laittamalla oma merkki siihen, jne (työlästä, vaikeaa!) Vaihtoehto 3: Tietokoneohjelma kokeilee erilaisia sääntöjä, ja pelaa itseään (tai muita) vastaan kokeillen millä säännöillä voittaa ja millä säännöillä hävitään, oppien näin voittamaan ( koneoppiminen )

Arthur Samuel (50-60 luvuilla): Tietokoneohjelma oppii pelaamaan tammea Ohjelma pelaa itseään vastaan tuhansia kertoja, oppii mitkä positiot ovat hyviä, mitkä huonoja (sen perusteella, kuinka usein ne johtavat voittoon/häviöön) Ohjelma tulee lopulta paremmaksi kuin sitä opettava ohjelmoija

Ongelman ymmärtäminen Eräs koneoppimisen määritelmä on että tietokone parantaa suorituskykyään suorittaessaan jotain tiettyä tehtävää sitä mukaan kun se näkee esimerkkejä. Siispä täytyy erottaa: Tehtävä: Mitä kone/ohjelma yrittää tehdä? Minkä ongelman se ratkaisee? Hyvyysmitta: Miten mitataan kuinka hyvin kone/ohjelma ratkaisee tehtävää? Esimerkit/data: Mikä on se kokemuspohja/esimerkkidata jonka perusteella kone/ohjelma oppii?

Esimerkki 2 Automaattinen kasvojentunnistus (facebook, apple,... ): Ohjelmoija kirjoittaa sääntöjä: Jos tumma lyhyt tukka, joskus silmälasit, iso nenä, niin se on Mikko (ei toimi! miten tunnistaa tukan? miten arvioida nenän koko? jne...) Tietokoneelle näytetään (kuva, nimi)-esimerkkipareja, tietokone oppii itse mitkä piirteet ovat relevantteja (vaikea ongelma, mutta mahdollista jos riittävästi esimerkkejä!)

Esimerkki 3 Roskapostin suodatus: Ohjelmoija kirjoittaa sääntöjä: Jos sisältää viagra, niin se on roskaa (vaikeaa, eikä käyttäjälle räätälöity) Käyttäjä ohjeistaa tietokonetta, mitkä postit ovat roskaa, tietokone oppii itse mitä sanoja pitäisi katsoa!

Esimerkki 4 Hakulausekkeiden ennustaminen: Ohjelmoija antaa valmiin sanakirjan. (sanat muuttuu!) Edelliset hakulausekkeet käytetään esimerkkeinä! Hakutulosten järjestäminen: Ohjelmoija kirjoittaa tarkan kaavan jolla pisteytetään sanan esiintymismäärä, linkkien määrä, y.m. ja sitten järjestetään pisteiden mukaan. (mistä ohjelmoija tietää miten eri sivun ominaisuudet pitäisi painottaa?) Tallennetaan mitkä linkit valitaan minkäkin hakulausekkeen jälkeen, ja laitetaan suosituimmat sivut kärkeen (yritetään ennustaa mitä käyttäjä haluaa!)

Esimerkki 5 Käsinkirjoitettujen merkkien tunnistaminen: (postin lajittelu, vanhojen kirjojen digitointi,...)

Esimerkki 6 Autot jotka eivät tarvitse kuljettajaa: http://www.youtube.com/watch?v=atmk07otu9u

Esimerkki 7 Suositusjärjestelmät: amazon.com: jos ostit tämän kirjan, saatat myös olla kiinnostunut tästä toisesta kirjasta netflix.com: käyttäjät arvioivat elokuvia, järjestelmä ehdottaa sen pohjalta käyttäjille uusia elokuvia ( netflix prize : $1.000.000 palkinto, vuodet 2006-2009) http://www.youtube.com/watch?feature=player_detailpage&v=impv70ulxyw

Esimerkki 8 Konekääntäminen: Perinteinen tapa: Sanakirja ja kielioppi Nykyään (enemmän ja enemmän): Tilastollinen konekääntäminen, joka perustuu esimerkkeihin/dataan

Esimerkki 9 Kavereiden ehdottaminen: Voiko facebook kaverigraafin perusteella arvata tuntevatko kaksi henkilöä toisensa vaiko ei? Osaako twitter arvata ketä olisit kiinnostunut seuraamaan??

Miksi koneoppimista? Nykypäivänä on helppoa ja halpaa: - Kerätä dataa (halvat sensorit, paljon jo digitaalista) - Tallentaa dataa (kovalevytila halpaa) - Lähettää dataa (lähes ilmaista netissä) Joten: Kaikki keräävät suuria määriä dataa! - Yritykset: kaupat (ostotapahtumat), hakukoneet (hakulausekkeet, valinnat), finanssisektori (osakkeet, valuuttakurssit), tehtaat (erilaiset sensorit), sosiaalinen media (facebook, twitter,...), kaikki palvelimet - Tiede: geenisekvenssit, geeniekspressio, hiukkaskokeet fysiikassa, tähtitiede,... Mutta: Miten hyödyntää sitä?

Koneoppimisen lajit Ohjattu oppiminen: - Esimerkit ovat pareja (x, y), tavoitteena on oppia ennustamaan y annettuna x. Luokittelu (diskreetti y ): piirre-arvo 2 Regressio (jatkuva y ):... hinta (!) piirre-arvo 1!160.000!140.000!250.000...? talon koko (neliöt)

Koneoppimisen lajit Ohjaamaton oppiminen: - Esimerkit eivät sisällä oikeaa vastausta y. Sen sijaan tavoitteena on vain ymmärtää annettu datajoukko. Klusterointi:

Koneoppimisen lajit Ohjaamaton oppiminen: - Esimerkit eivät sisällä oikeaa vastausta y. Sen sijaan tavoitteena on vain ymmärtää annettu datajoukko. Klusterointi:

Koneoppimisen lajit Vahvistusoppiminen: - Annettuna syöte x, ohjelma tulostaa y, mutta sen sijaan että meillä olisi tarkka oikea y, osataankin vain antaa karkea arvio siitä, kuinka hyvä ohjelman tulostama y oli (eli: kannustetaan, muttei anneta mitään yhtä oikeaa vastausta ) Kaikki koneoppimistehtävät eivät ainakaan ihan suoraan mahdu näiden yksinkertaisten otsikoiden alle! (esim: semisupervised learning, yhteisöllistä suodattamista, learning to rank,...)

Käsinkirjoitetut merkit Koneoppimisongelman määrittely (esim.): Tehtävä: Annettuna uusi 28 x 28 pikselikuva, luokittele se johonkin luokkaan 0 9. (Funktion syöte on siis 28*28 = 784-pituinen binäärivektori, ja funktion pitää palauttaa jokin kokonaisluku 0 "9.) Hyvyysmitta: Kuinka monta prosenttia uusista kuvista luokitellaan oikein (eli siihen luokkaan mitä meidän esimerkeissä on annettuna) Data: MNIST-käsinkirjoitetut numerot, jossa jokaiselle kuvalle on annettu luokka 0 9. Ensimmäiset 5000 kpl käytetään opetusdatana, seuraavat 1000 kpl testidatana.

Lähimmän naapurin luokittelija Yksinkertaisin mahdollinen luokittelija. Toiminta: 1. Tallenna koko opetusdata 2. Annettuna uusi (testi-) syötevektori x, löydä sitä lähimpänä oleva opetusdatan vektori x train ja palauta sitä vastaava luokka y train. Havainnollisesti siis näin:

Lähimmän naapurin luokittelija Yksinkertaisin mahdollinen luokittelija. Toiminta: 1. Tallenna koko opetusdata 2. Annettuna uusi (testi-) syötevektori x, löydä sitä lähimpänä oleva opetusdatan vektori x train ja palauta sitä vastaava luokka y train. Havainnollisesti siis näin:

Lähimmän naapurin luokittelija Merkkien väliset etäisyydet? Käytännössä kahden binäärivektorin etäisyyttä voidaan mitata esim laskemalla kuinka monessa kohtaa vektorit ovat erisuuret: 1 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 4 eroa...tämä vastaa sitä että laitetaan merkit päällekkäin, ja katsotaan kuinka monessa kohtaa ne eroavat. Onko tämä hyvä etäisyysmitta? (esim kaksi melkein identtistä merkkiä jotka eroavat vain niin että toisessa kuvassa merkki on siirtynyt parin pikselin verran saattavat tämän etäisyysmitan suhteen olla hyvin kaukana toisistaan)

Lähimmän naapurin luokittelija Toinen esitys samasta asiasta: Opetusdata (luokat annettu): 0 7 1 1 4 9 4 3 4 8 2 2 1 8 7 0 8 1 0 7 Uudet kuvat: 1

Lähimmän naapurin luokittelija Toinen esitys samasta asiasta: Opetusdata (luokat annettu): 0 7 1 1 4 9 4 3 4 8 2 2 1 8 7 0 8 1 0 7 Uudet kuvat: 1 1

Lähimmän naapurin luokittelija Toinen esitys samasta asiasta: Opetusdata (luokat annettu): 0 7 1 1 4 9 4 3 4 8 2 2 1 8 7 0 8 1 0 7 Uudet kuvat: 1 1 9

Lähimmän naapurin luokittelija Toinen esitys samasta asiasta: Opetusdata (luokat annettu): 0 7 1 1 4 9 4 3 4 8 2 2 1 8 7 0 8 1 0 7 Uudet kuvat: 1 1 9 9

Lähimmän naapurin luokittelija 1-NN (1-nearest neighbor) luokitin käsinkirjoitetuille merkeille: Opetusdata (luokat annettu): 0 7 1 1 4 9 4 3 4 8 2 2 1 8 7 0 8 1 0 7 Uudet kuvat: 1 1 9 9... Virheitä: 7.6% (ensimmäiset 5000 merkkiä opetusdataa, seuraavat 1000 merkkiä testidataa)

k-lähimmän naapurin luokittelija Toiminta: Samoin kuin lähimmän naapurin luokittelija, mutta löydä k lähintä opetusdatan esimerkkiä, ja arvaa luokka tämän perusteella (k lähintä äänestävät mitä luokkaa ehdotetaan) Esim k=3: Harjoitustehtävänä kokeilla, miten tällainen k-nn luokitin toimii käsinkirjoitettujen numeroiden tunnistamisessa

Naive Bayes -luokittelija Käsitelty jo aiemmin kurssilla roskapostisuodatuksen yhteydessä Toiminta: Oppiminen: (annettuna iso esimerkkijoukko kuvia+luokkia) Jokaiselle luokalle i (tässä: 0-9) Jokaiselle piirteelle j (tässä: 784 pikseliä) Estimoi todennäköisyysjakauma tälle luokka-piirre kombinaatiolle (tässä: todennäköisyys että kyseinen pikseli, tämän luokan kuville, on 1) Luokittelu: (annettuna uusi kuva) Jokaiselle luokalle i (tässä: 0-9) Aseta log-todennäköisyys logp(i)=0 Jokaiselle piirteelle j (tässä: 784 pikseliä) logp(i) = logp(i) + log P(i,j) (eli summaa pikselien log-todennäköisyydet, annettuna luokka) Palauta luokka i jolla suurin log-todennäköisyys.

Naive Bayes -luokittelija Jokaisen luokan, jokaisen pikselin todennäköisyyet voidaan esitellä yksinkertaisesti näin (harmaasävy = todennäköisyys että pikseli on päällä kyseisen luokan kuvilla) Eli tässä saadaan eräänlaiset prototyypit luokille. Luokka arvioidaan sen perusteella, kuinka hyvin uusi kuva sopii näihin prototyyppeihin.

Neuroverkko Matkitaan aivojen toimintaa. Monta hermosolua, kukin pystyy vain hyvin yksinkertaiseen operaatioon, mutta yhdessä ne tekevät jotain mielenkiintoista:... 1 0 0 1 0 0 0 1... 0 1 2 3 4 5 6 7 8 9 Jokainen solu laskee painotetun summan tuloistaan, ja lähettää eteenpäin epälineaarisen funktion siitä summasta Painot ovat adaptiivisia, ja säädetään niin että verkko oppii datasta

Yhteenveto Koneoppimista kannattaa käyttää kun - Tehtävä on vaikea ratkaista manuaalisella ohjelmoinnilla: Ohjelmoija ei osaa itse ratkaista tehtävää, tai ehkä osaa muttei kuitenkaan pysty kertomaan miten se tehdään. - Esimerkkejä (dataa) on paljon, jonka perusteella kone voi oppia itse suorittamaan jotain tehtävää - Tarvitaan adaptiivinen menetelmä, joka mukautuu käyttäjän tottumuksiin ja tarpeisiin Aloita määrittelemällä tehtävä, hyvyysmitta, ja data. Tämän jälkeen valitse tehtävään sopiva menetelmä.

Mistä lisää tietoa? Koneoppiminen, ongelman määrittely, ohjattu/ohjaamaton oppiminen: Esim: Stanfordin kurssin intro videot (40 min) http://www.ml-class.org/course/video/preview_list Lähimmän naapurin luokittelija, k-nn. Esim: http://cseweb.ucsd.edu/~elkan/250b/nearestn.pdf Naive Bayes -luokitin. Esim: http://en.wikipedia.org/wiki/naive_bayes_classifier

Kurssit Introduction to Machine Learning (engl.) - Periodi II (1.11 9.12.2011) - Algoritmit ja koneoppiminen -linjan pakollinen kurssi Jatkokurssit: Supervised machine learning, Probabilistic models, Unsupervised machine learning, Data mining,... Myös Stanfordin yliopiston kurssi: www.ml-class.org - Videoita, tehtäviä, tentti, ohjelmointitehtäviä - Kurssi alkaa 10.10 (siis pian!) - Opintopisteitä tarjolla, katso: http://www.cs.helsinki.fi/en/uutiset/65779