ALGORITMIT & OPPIMINEN Mitä voidaan automatisoida? Mikko Koivisto
Avoimet aineistot tulevat Tekijä: Lauri Vanhala
yhdistä, kuvita, selitä, ennusta! Tekijä: Logica
Mitä voidaan automatisoida? Algoritmi on tarkasti määritelty äärellinen (päättyvä) vaihesarja, jota seuraamalla voidaan ratkaista tietty ongelma. Wikipedia Laskenta = vaihesarjan automaattinen seuraaminen
Mitä voidaan automatisoida? Algoritmi on tarkasti määritelty äärellinen (päättyvä) vaihesarja, jota seuraamalla voidaan ratkaista tietty ongelma. Wikipedia Laskenta = vaihesarjan automaattinen seuraaminen Koneoppiminen: Field of study that gives computers the ability to learn without being explicitly programmed. A. Samuel (1959) Oppiminen = suorituksen paraneminen kokemuksen myötä Oppiminen = valmiuksien virittyminen havaintoihin
Pääteemat Algoritmit: Ongelmatyypit Algoritmien suunnittelumallit Tehokkuuden mittarit Laskettavuuden rajat
Pääteemat Algoritmit: Ongelmatyypit Algoritmien suunnittelumallit Tehokkuuden mittarit Laskettavuuden rajat Oppiminen: Tehtävätyypit Käsite- ja malliluokat Suoriutumisen mittarit Oppimisen rajat
70 neliön asunnon hinta? 400 K 300 200 100 50 60 70 80 90 m 2
70 neliön asunnon hinta? K 400 320 300 200 Sovita suora jäykkä 100 50 60 70 80 90 m 2
70 neliön asunnon hinta? K 400 350 300 200 Sovita käyrä taipuisa 100 50 60 70 80 90 m 2
70 neliön asunnon hinta? K 400 375 300 200 Lähin naapuri äärimmäisen taipuisa 100 50 60 70 80 90 m 2
70 neliön asunnon hinta? 400 375 300 K // Lähimmän naapurin arvo // Syöte: n piste-arvo-paria (x_i, y_i) // sekä 200 kyselypiste p. // Tulos: arvo y_j, missä j minimoi // etäisyyden x_j p. // Algoritmi: raa alla voimalla. // 100 int lahin(int p, int x[], int y[], int n){ int j = 0; for (int i = 1; i < n; ++i) if (abs(x[i] - p) < abs(x[j] - p)) j = i; return y[j]; } Lähin naapuri äärimmäisen taipuisa 50 60 70 80 90 m 2
Pääteemat Algoritmit: Ongelmatyypit Laskettavuuden rajat Tehokkuuden mittarit Algoritmien suunnittelumallit Oppiminen: Tehtävätyypit Oppimisen rajat Suoriutumisen mittarit Käsite- ja malliluokat
Ongelmatyypit / Tehtävätyypit Algoritmit: Päätös-, optimointi-, lukumäärä-, luettelu-, etsintäongelma? Algebrallinen ongelma, verkko-ongelma, merkkijono-ongelma, geometrinen ongelma? Tietorakenneongelma?
Ongelmatyypit / Tehtävätyypit Algoritmit: Päätös-, optimointi-, lukumäärä-, luettelu-, etsintäongelma? Algebrallinen ongelma, verkko-ongelma, merkkijono-ongelma, geometrinen ongelma? Tietorakenneongelma? Oppiminen: Ohjattu vai ohjaamaton? Vähitellen vai kerralla? Aktiivinen vai passiivinen? Sovelluksia: - Roskapostin suodattaminen - Webbisivujen järjestäminen (esim. Google) - Sään ennustaminen - Kasvojen tunnistaminen - Puheen tunnistaminen - Luonnollisen kielen jäsentäminen - Motiivien paikantaminen genomissa
Laskennan / Oppimisen rajat Algoritmit: Yleisesti hyväksytty: kaikkia ongelmia ei voida ratkaista algoritmisesti. Jotkin ongelmat ratkeavat jo rajoitetussa laskennan mallissa: Äärellinen automaatti Pinoautomaatti Vakiosyvyinen piiri Paikallinen laskenta
Laskennan / Oppimisen rajat Algoritmit: Yleisesti hyväksytty: kaikkia ongelmia ei voida ratkaista algoritmisesti. Jotkin ongelmat ratkeavat jo rajoitetussa laskennan mallissa: Äärellinen automaatti Pinoautomaatti Vakiosyvyinen piiri Paikallinen laskenta Oppiminen: No free lunch Kolmen kauppa: 1. Taipuisa 2. Nopeasti virittyvä 3. Tarkka ennustaja voit valita enintään kaksi.
Tehokkuuden / Suoriutumisen mittarit Algoritmit: Aika-, tila- vai rinnakkaistumisteho? Paras, pahin, keskimääräinen vai tyypillinen tapaus? Tarkasti vai likimäärin? Varmasti vai todennäköisesti? Käytännössä vai teoriassa?
Tehokkuuden / Suoriutumisen mittarit Algoritmit: Aika-, tila- vai rinnakkaistumisteho? Paras, pahin, keskimääräinen vai tyypillinen tapaus? Tarkasti vai likimäärin? Varmasti vai todennäköisesti? Käytännössä vai teoriassa? Oppiminen: Erehtymisen kustannus? Opetusaineiston määrä? (Laskennan tehokkuus?) Takeiden luonne: Satunnainen aineisto Subjektiivinen epävarmuus Suhteessa muutamiin kilpailijoihin kilpailevia koulukuntia.
Suunnittelumallit / Malliluokat Algoritmit: Raaka voima Palautuva etsintä Hajota ja hallitse Dynaaminen ohjelmointi Muunna ja hallitse Järjestä ja hae
Suunnittelumallit / Malliluokat Algoritmit: Raaka voima Palautuva etsintä Hajota ja hallitse Dynaaminen ohjelmointi Muunna ja hallitse Järjestä ja hae Oppiminen: Lineaarinen vai epälineaarinen? Staattinen vai dynaaminen? Hierarkkinen vai ei-hierarkkinen? Kombinatorinen vai algebrallinen? Deterministinen vai probabilistinen? Syy-yhteys vai pelkkä riippuvuus?
Työjärjestys 5. Hahmota ongelma(t) 1. Hahmota tehtävä 6. Totea laskettavuus 2. Tiedosta rajat 7. Muotoile mittarit 3. Muotoile mittarit 8. Laadi algoritmi 4. Rakenna malli
Jättiläisten harteilla Leslie Valiant 2011 Turing Award Judea Pearl 2012 Turing Award Alan Turing (1912 1954)
Kotitehtävä Tiedonlouhinnassa (engl. data mining) pyritään löytämään oleellinen tai kiinnostava suuresta tietoaineistosta, usein ohjaamattomaan oppimiseen sopivin keinoin. Yksi tyypillinen tiedonlouhinnan tehtävä on eristää annetuista näytteistä ne, jotka eivät kuulu joukkoon eli poikkeavat muista. Tarkastele tätä tehtävää käyttäen esimerkkinä asunnonhintaaineistoa. Käy läpi työjärjestyksen 8 vaihetta.