Machine Learning

 

Hvad er Machine Learning?

Machine Learning (på dansk: Maskinlæring) er en måde hvorpå en computer selv vil forbedre sig uden at den udtrykkeligt er programmeret til det. Computeren vil blive givet inputdata og selv lære, hvordan og hvorledes den skal håndtere dataen. Computeren vil dermed være i stand til at lave forudsigelser, finde sammenhænge og identificere mønstre, baseret på dataen.

Når man programmerer er det oftest at man opstiller nogle regler for programmet, så det giver et bestemt resultat. Med Machine Learning opstiller man en algoritme for programmet, så den selv kan skabe reglerne for, hvordan den skal finde frem til et bestemt resultat. Denne algoritme definerer hvordan programmet lærer af dataen. Når en Machine Learning-algoritme så bliver eksponeret for mere data vil den forbedre sig, uden menneskelig indblanding.

Begrebet Machine Learning blev skabt i 1959 af Arthur Samuel, men begrebet er især først blevet relevant for nyligt i takt med at computernes lager- og beregningskapacitet er blevet bedre og i stand til at indsamle big data.

Machine Learning er bl.a. blevet benyttet til at programmere Google Oversæt, Netflix’ anbefalingssystem og den meget omtalte selvkørende Google-bil.

Man kan benytte mange forskellige programmeringssprog til at programmere Machine Learning, bl.a. Java, R og JavaScript, men det mest populære og optimale sprog er helt klart Python, eftersom majoriteten af dataforskere og Machine Learning-udviklere foretrækker Python frem for andre programmeringssprog. Det er bl.a. muligt at programmere Machine Learning programmer i Python ved hjælp af Scikit-learn modulet, som har navnet sklearn. Du kan læse mere om Scikit-learn på deres hjemmeside ved at klikke her.

Denne artikel vil introducere dig til de essentielle begreber, metoder og modeller indenfor Machine Learning.

 

Machine Learning algoritmer

Der findes mange forskellige typer af algoritmer for Machine learning. De to mest benyttede typer af algoritmer kan ses nedenstående:

De fleste læringsalgoritmer indenfor Machine Learning kan inddeles i én af følgende to kategorier:

  • Supervised learning (læring med opsyn): dataen er beskrevet og computeren vil lære at genkende inputdata ud fra den beskrevne data
  • Unsupervised learning (læring uden opsyn): dataen er ikke beskrevet og computeren må selv lære at genkende og beskrive inputdataen

Derudover findes der andre mindre omtalte, men stadig nyttefulde, kategorier af Machine Learning algoritmer, bl.a.:

  • Semi-supervised learning: En blanding af Supervised og Unsupervised learning. Her vil kun en andel af dataen være beskrevet
  • Reinforcement learning: Computeren “belønnes” når den gør noget rigtigt og vil derfor lære, at følge vejen til målet, som fører til flest belønninger

Hver slags læringsalgoritme benytter bestemte datamodeller til at arbejde med, som vil give forskellige former for output.

Denne artikel vil gå i dybden med Supervised Learning, Unsupervised learning og Reinforcement learning.

 

Supervised learning

Med algoritmer af typen Supervised learning bliver computeren oplært ved hjælp af data som er beskrevet. Hvis computeren bliver givet en masse billeder og frugter og frugternes navne, hvorefter computeren selv skal navngive frugter på nye fotografier, så er det Supervised learning, eftersom navnene på frugterne er angivet.

Indenfor Supervised learning bliver der hovedsageligt benyttet to slags datamodeller: regression og klassifikation. Dette afsnit vil gennemgå disse to modeller.

 

Regression

Regression bliver benyttet til at forudsige kontinuerlig data, altså, data som vil blive ved med at fortsætte. Mange har nok hørt om regression fra matematikkens verden. Det er når man opstiller en funktion baseret på eksisterende data. Denne funktion kaldes regressionslinjen og vil være i stand til at forudsige, dataens fremtidige forløb.

Nedenstående eksempel viser et datasæt for længden og bredden på tilfældige grå kænguruer i millimeter. x-aksen er længden og y-aksen er bredden. Ét grønt punkt er én kænguru. Datasættet er tilføjet i en graf sammen med en regressionslinje, som er den grønne streg:

Lineær regression

 

Regressionslinjen er en funktion, som er baseret på den eksisterende data og kan bruges til at forudsige fremtidig data. I ovenstående tilfælde er regressionslinjens funktion f(x) = 0,288x + 46,45. Med denne funktion kan man indsætte en vilkårlig længde i millimeter (x) for en kænguru og så vil den derved kunne udregne kænguruens bredde, baseret på den eksisterende data.

Fordi at funktionen kun beskriver sammenhængen på den eksisterende data vil den derfor aldrig være helt præcis. Derfor kan man også udregne en såkaldt R2-værdi. Denne værdi er et decimaltal mellem 0 og 1. Jo tættere på 1 jo mere præcis vil regressionslinjen være. I ovenstående tilfælde er R2-værdien lig med 0,7769.

 

Klassifikation

For regression er antallet af mulige udfald ubestemt, da det kan være hvad som helst. Klassifikation bliver derimod benyttet til at forudsige et bestemt antal af mulige udfald. I de fleste tilfælde for klassifikation er det kun to mulige udfald. Når der kun er to mulige udfald kaldes det for binær klassifikation, f.eks. Sandt og Falsk, 0 og 1 eller Ja og Nej. Når man benytter binær klassifikation kan det f.eks. være hvis man vil forudsige om det kommer til at regne eller ej, eller om en email er spam eller ej.

I tilfælde af at der er flere udfald end to, kaldes det for Multi-label klassifikation. Man kan bl.a. benytte Multi-label klassifikation, hvis programmet skal klassificere hvilke frugter der er på et billede. Her kan udfaldet være alle slags frugter: banan, æble, pære osv.

 

Unsupervised learning

Med algoritmer af typen Unsupervised learning bliver computeren oplært ved hjælp af data som ikke er beskrevet. Derfor skal computeren selv skelne og gruppere dataen ud fra deres værdier. Hvis computeren bliver givet en masse billeder af frugter, som den selv skal udforske og udtrække meningsfuld data fra ved at skelne deres visuelle forskelle, uden nogle beskrivelser af frugterne, så er det Unsupervised learning.

Indenfor Unsupervised learning er det hovedsageligt datamodellen Clustering (klyngedannelse) der bliver benyttet. Denne model vil blive gennemgået her.

 

Clustering

Clustering benyttes til at danne datagrupper fra et datasæt. Computeren vil inddele dataen i datagrupper med værdier som alle ligner hinanden.

På nedenstående eksempel er værdierne fra et datasæt angivet i et punktdiagram med to variable: x og y. Dataværdierne er inddelt i tre grupper baseret på deres placering i diagrammet.

Clustering

Ovenstående eksempel kunne f.eks. være et datasæt for tre slags blomster, hvor x-aksen er højden på blomsten og y-aksen er bredden på blomstens kronblade. Her har man så målt en masse blomster og angivet dataen i datasættet. Derefter har man benyttet clustering til at gruppere, hvilke blomster der ligger i hvilke af de tre kategorier, baseret på dens værdier. De blå prikker er en slags blomst, de grønne prikker er en anden slags blomst og de røde prikker er en tredje slags blomst.

 

Reinforcement learning

Reinforcement learning er en algoritme som er baseret på et belønningssystem. Det betyder at computeren vil blive belønnet for hver gang den når sit mål, hvilket gør at den selv lærer at nå sit mål ved at prøve sig frem. Når computeren når frem til målet og modtager sin belønning, så vil belønningen blive brugt som feedback til at vurdere, hvordan den kan justere sin tilgang, så den kan nå i mål hurtigere og mere effektivt næste gang.

Nedenstående video viser et eksempel på en Machine learning algoritme som er bygget af Google og som benytter Reinforcement learning til at lære computeren at spille Atari Breakout:

I takt med at computeren spiller computerspillet vil den automatisk blive bedre og til sidst blive så god at intet menneske vil kunne konkurrere mod den.

 

Trænings- validerings- og testsæt

Når man laver en algoritme med Supervised Learning, så er det vigtigt at vurdere, hvor præcis algoritmen er ved at opdele datasættet i trænings- og valideringssæt.

Træningssættet er den del af datasættet som algoritmen lærer fra. Valideringssættet er den del af datasættet, som validerer, hvor præcis algoritmen er, efter den har lært fra træningssættet. Da man allerede kender til det rigtige output i valideringssættet kan man give den til programmet og finde ud af, om den indlæser det samme output som det rigtige. På den måde kan man vurdere, hvor præcis programmets algoritme er.

Trænings- og valideringssæt

I de fleste tilfælde anbefales det at opdele datasættet i 80/20, så 80 % af det består af træningssæt og 20 % af det består af valideringssæt.

For at forsikre programmets nøjagtighed benytter man sig ofte af K-Fold Cross-Validation, som er hvor man foretager en validering K antal gange, med et nyt valideringssæt hver gang. Det kunne f.eks. være en 10-fold cross-validation, hvor man opdeler datasættet i 10 dele og validerer det 10 gange. Den første gang vil være med den første del som valideringssæt, den næste gang vil være med den anden del som valideringssæt osv.

Efter at algoritmen er blevet trænet og valideret med et datasæt, så vil det næste skridt være, at sætte det op imod et nyt datasæt, som er uafhængigt af de andre. Dette datasæt kaldes testsættet. Hvis algoritmen også passer til testsættet, så kan den betragtes som at virke til sit formål.

 

Deep Learning

Når man beskæftiger sig med Machine Learning er det vigtigt at kunne skelne mellem tre begreber: Artificial Intelligence (AI), Machine Learning og Deep Learning.

Artificial Intelligence, forkortet som AI, er et begreb der dækker over alle former for kunstig intelligens. Kunstig intelligens er videnskaben for, at skabe intelligente maskiner. Der er flere former for kunstig intelligens, men helt generelt siger man at hvis en computer er i stand til at tænke og foretage rationelle beslutninger, så besidder den kunstig intelligens.

Machine Learning er en bestemt form for kunstig intelligens. Når en Machine Learning-algoritme bliver eksponeret for mere data vil den kunne forbedre sig, uden menneskelig indblanding.

Begreberne Machine Learning og Deep Learning bliver ofte kategoriseret som det samme, men der er en væsentlig forskel. Deep Learning er en mere kompleks udgave af Machine Learning, på den måde, at algoritmen for Deep Learning er inspireret af det neurale system i biologiske væsner, som gør, at den i højere grad vil være i stand til at forbedre sig selv, baseret på tidligere erfaringer. Dette giver bl.a. algoritmen egenskaber som stemme- og billedgenkendelse.

Deep Learning

Et neuralt netværk for en Machine Learning-algoritme er opbygget af neuroner som er forbundet med hinanden i et net. Der findes tre typer af neuroner i dette netværk: Input neuroner, gemte neuroner og output neuroner. Netværket er illustreret på nedenstående tegning:

Neuralt netværk

I illustrationen er det de blå cirkler som repræsenterer input neuronerne i det første lag, de orange cirkler repræsenterer skjulte neuroner i de midterste lag og de grønne cirkler repræsenterer output neuronerne i det sidste lag. Input neuronerne bliver givet rådata, bearbejder det og videregiver det til det næste lag af neuroner. Dataen vil til sidst blive sendt ud til output neuronerne, som indlæser en forudsigelse.

 

Skriv et svar