Hvordan få en datamaskin til å lære?

Jeg lovte å skrive mer om maskinlæring i forrige blogg (Har du hørt den om mennesket, bananfluen og rundormen?). Da fortalte jeg om hvordan forskere ved hjelp av maskinlæring klarte å konstruere en universell modell som beskrev genregulering i tre arter. Men hvordan trener vi en maskin? Vel, litt på samme måte som vi trener studenter; vi gir dem oppgaver med fasit (et treningssett). Deretter evaluerer vi om treningen har fungert ved å gi studentene oppgaver uten fasit (eksamen, eller det vi i maskinlæring kaller et testsett).

Under mine 10 år som forsker i Sverige pleide jeg å bruke følgende analog under forelesning: La oss bruke menneskene i forelesningssalen som eksempler for å lære oss hvordan en nordmann ser ut! Siden jeg var den eneste nordmannen der så fungerte ofte noe sånt som ”en nordmann er en mann på 100kg med turkis t-skjorte”. Denne analogien illustrerer to viktige maskinlæringskonsepter. Treningssettet er altså alle kjennetegnene ved menneskene i salen kombinert med kunnskapen om hvem som er nordmenn og hvem som ikke er det. Modellen man lærer er en generell regel som kan forutsi hvordan nordmenn ser ut (et mønster, klassifiseringsregel, modell, …, kjært barn har mange navn). Men hvordan kan vi teste om klassifiseringsregelen holder vann? Jo, jeg har hundre tilfeldige valgte nordmenn og svensker på gangen utenfor forelesningssalen (testsett). Hvem tror at klassifiseringsregelen min (”100kg og turkis t-skjorte”) vil fungere på disse? Ingen. Så vi har ikke lært noe? Hva gikk galt? Først og fremst hadde vi et for lite treningssett (bare en nordmann) og i tillegg hadde vi for mange mulige modeller (alle kombinasjoner av vekt, høyde, hårfarge, type klær, farge på klær, osv.). Når en modell ikke fungerer på nye eksempler i et testsett sier vi at den ikke generaliserer; den er overtilpasset. En kombinasjon av for lite data og for mange valgmuligheter gjorde at vi fant en regel som forklare treningsdata, men som ikke representerer noen egentlig kunnskap.

Hvis jeg er i det filosofiske hjørnet, og det er jeg ofte, så ville jeg si at naturvitenskap først og fremst handler om maskinlæring. Man samler data om naturen og forsøker å finne en generell modell som beskriver det man ser. Noen ganger er denne modellen enkel (E = mc^2). Noen ganger er den kompleks (evolusjonsteorien). Noen ganger lar ikke modellen seg reprodusere og man må trekke tilbake artikkelen (overtilpassing!). Vi mennesker er veldig gode til å trekke generelle konklusjoner basert på sviktende data. ”Det var masse snø i vinter så alt snakket om global oppvarming må være tull”. Dette hender i forskningen også (the decline effect).

Fra Machine learning in bioinformatics. Brief Bioinform 7 (1): 86-112, 2006
Fra Machine learning in bioinformatics. Brief Bioinform 7 (1): 86-112, 2006

Maskinlæring har blitt et veldig viktig verktøy i molekylærbiologisk forskning der store datamengder, som for eksempel genuttrykksdata, skal analyseres. Det viktigste er ofte ikke at modellen kan forutsi for eksempel genfunksjon eller sjukdom, men hvordan modellen gjør det. Hvilke egenskaper ved et gen gjør det til en transporter? Hvilke mutasjoner forårsaker Alzheimer? I ENCODE-artikkelen presenterte forskerne en modell som kan forutsi om et gen er aktivt eller ikke (om genet er uttrykt eller ikke) ut i fra hvilke epigenetisk modifikasjoner som har skjedd i genomet nær genet og hvilke regulatoriske proteiner som dermed kan bruke av- og på-bryterne i disse regionene. Genene i genomene ble delt inn et treningssett der maskinen hadde tilgang til genuttrykksdata og et testsett der man kontrollerte at modellen kan forutsi genuttrykk for gener som ikke ble brukt under trening. Man kan derfor være trygg på at modellen representer interessant kunnskap om genregulering. I dette tilfellet brukte forskerne en maskinlæringsmetode som er basert på beslutningstrær. Faktisk brukte forskerne mange beslutningstrær konstruert fra ulike deler av datasettet og fikk dermed en skog av beslutningstrær (kalt Random forest).

Fra http://www.alanturing.net
Fra http://www.alanturing.net

En liten digresjon til slutt. Alan Turing (1912-1954) foreslo i en helt ellevill artikkel (få med dere paragrafen om telepati!) at en maskin viser intelligent oppførsel om et menneske kan chatte med den uten å kunne si om det er en maskin eller et menneske han/hun chatter med. Denne såkalte Turing-testen startet på mange måter forskningsfeltet kunstig intelligens. Navnet lover kanskje litt vel mye og ble på norsk døpt om til Kunnskapsbaserte systemer (greit nok, men den som oversatte ”artificial intelligence” med ”kunnskapsbaserte systemer” i filmen Matrix var vel i overkant forsiktig?). Man fant nemlig fort ut at Turing-testen krever at man løser en rekke ulike problemer som for eksempel: Hvordan representere kunnskap i en datamaskin (kunnskapsrepresentasjon)? Hvordan få en maskin til å forstå ”menneskespråk” (naturlig språkprosessering)? Og, som jeg har skrevet om i dette blogginnlegget: Hvordan få en datamaskin til å lære (maskinlæring)?

Leave a Reply

Your email address will not be published. Required fields are marked *