Stor skala maskinelærings til forudsigelses opgaver

Ting lyder bedre når man siger dem på engelsk, der er ikke noget at gøre, men vi skriver jo på dansk.

I sidste uge var der RecSys 2014 i Californien som er en af de største recommender systems konferencer, og er værd at kigge lidt på, hvis man laver systemer som skal lave forudsigelser (predictive analysis). I det følgende vil jeg fortælle lidt om hvad Jeff Dean snakkede om i hans keynote med titlen “Large Scale Machine Learning for Predictive Tasks” (hvilket jeg har prøvet at oversætte i titlen på denne post).

Jeff Dean er en fellow ved Google og starter ud med at snakke om lidt om hvad de gør for at forbedre søgeresultater. I en tidligere blog skrev jeg om PageRank algoritmen, som handler om hvordan man sortere resultater af en søgning, men der er andre ting som bruges til at finde sættet af dokumenter som skal returneres. Og det berøre Jeff her. Man kan sige at det ikke er det samme som anbefalinger at lave søgninger, men det er det faktisk, for nå man søger på noget med mange dokumenter, så er det op til søgemaskinen at sortere dokumenterne således at de mest brugbare kommer øverst, altså laver den en anbefaling blandt de dokumenter som søge resultater indeholder.

Jeff snakker om hvad der kan være vigtigt for at give gode søgeresultater.

Kontekst

Det gode søge resultat afhænger af hvor man er, hvis man sidder på et kontor og søger efter kaffebarer leder man sikkert efter den bedste kaffe bar i området, mens hvis du står nede på gaden er det den som er tættest på. Her kunne man tilføje at hvis det lige er begyndt at regne er afstand langt mere vigtig end kvalitet, mens hvis solen skinner, kan det have noget at gøre med udendørs borde. Desuden kan der også være forskel på om man er i bevægelse eller om man er stationær.

Historiske data

Brugen af historiske data kan give hints til hvilke type svar brugeren er ude efter. For eksempel kan søgningen “pasta sauce recipe”, fortaget af to forskellige brugere, også forvente to vidt forskellige svar, som langt fra er en liste af sider som indeholder “pasta” “sauce” og “recipe”. Hvis man inddrager tidligere søgninger, som kunne være følgende :

Bruger 1

Søgning Viden om bruger
Grilling steaks Sikkert ikke vegetar
How to boil water sikkert ikke en rutineret kok

bruger 2

Søgning Viden om bruger
Vegetarian chili recipes sikkert en vegetar
French laundry reservations

Med disse historiske data er det nemt at forstille sig at bruger 1 sikkert vil være glad for et link til en ready-made pasta sauce man kan købe nede i nærmeste supermarkedet, mens bruger 2 ville være ude efter opskrifter som kan tage timer at forberede. Selvfølgelig er det et overdrevent eksempel, men de illustrere hvordan man kan bruge historiske søgninger til at forbedre nye.

Sammenkørring af data

De fleste søgninger handler om noget vi ikke ved noget om, det er jo derfor man søger efter viden om det, ofte søger folk efter ting som de ikke har gjort før, derfor er det en god ide at kigge på hvad ligende brugere, og se hvad de har søgt på, så når du skriver how do I … kommer der for det meste en række forslag i en dropdown, som er lavet ud fra brugerens tidligere søgninger men også ud fra hvad brugere ligesom mig har søgt på.

Så alt det lagt sammen har vi en masse data plus en søge strengen som skal koges ned til en liste af resultater. Eller sagt på en anden måde vi har et stort sæt input data, som en algoritme skal finde hoved og hale i. En algoritme som skal trænes til netop at give gode svar på specifikke søgninger i specifikke situationer (position, vejr, historiske søgninger, alder, køn osv). Og hvordan gør man så det på en fornuftig måde?

Velkommen til Maskine læring.

Det er jo en keynote, så Jeff giver en hurtig introduktion og fortæller om at man helt overordnet kan dele maskine læring op i 3 grupper:

  • Supervised learning – indlæring ved eksempler
  • Unsupervised learning – opdagelse af informationer i data
  • Reinforcement learning – indlærning med ris og ros

Der er hele uddannelser som bruges bare på at lære om de tre grupper, så her nøjes Jeff med at spørge hvordan kan man lave supervised learning i stor skala, og giver derefter en introduktion til “Deep learning” som faktisk ikke er så nyt, men nærmere ny suppe på samme ingredienser som blev brugt tilbage i 80’erne og 90’erne da man snakkede om artificial neural networks.

Jeg vil gerne skrive en hel post om Neurale netværk, men kort fortalt kan det beskrives som en samling af simple matematiske enheder der ligger i lag som kan trænes, og i samarbejde kan udregne komplekse funktioner. Det jeg syntes der er spændende ved måden jeff forklarer om deep learning på er at han laver analogier til menneske hjernen og filosofere på hvordan man kan se lagene i de neurale netværk som abstraktions niveauer, der kommer på højere og højere niveau nu tættere vi kommer på output.

Anything humans can do in 0.1 sec, the right big 10-layer network can do too.

Erfaring har vist at istedet for at prøve at lave en kompliceret håndkodet metode med en million if-statements, giver bedre resultat at bruge simple byggesten som så kalibers ved hjælp af data (også kaldt træningen af netværket), og derved lade maskinen lære af data så den er bedre til at svare på fremtidige søgninger. måden det forgår på er ved en slags kompliceret udgave af noget som minder om lineær regression som de fleste kender og elsker. Et eksempel på hvad man kan lære en sådan maskine, kunne være at den skal lære at se om et input billede er en hund eller en kat.

Men problemet er at for at træne sådan et netværk tager lang tid, meget lang tid, så google arbejder med at kunne distribuere udregningerne, og de har fundet ud af at det kan man, i eksemplet oven for kan klippe billeder op i mindre billeder som så bliver beregnet hver for sig, og derved tillade distribution, uden at der behøves at sendes store mængder mellem disse processor.

Spændende ting alle sammen, og jeg har kun givet et kort resume. Lyden er dårlig mem det er en rigtig god præsentation, som giver et godt billede af hvordan machine learning bruges. Så hermed en anbefaling fra mig, se det:

Share Button
The following two tabs change content below.
Profile photo of kimfalk

kimfalk

Lead Data scientist hos Karnov om dagen, Forfatter til Practical Recommender Systems om aftenen
Profile photo of kimfalk

Nyeste indlæg af kimfalk (se alle)

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *