onsdag 15. februar 2017

Datavitenskap - hvordan gjør de det? Del 3

"Datavitenskap - hvordan gjør de det?* (del 3)
Gartners Hype Cycle sier at Data Science (datavitenskap) vil være på den såkalte "Plateau of productivity" ... NÅ. Selskaper som har ambisjon om å forme framtiden er allerede i gang.

I denne bloggserien "Datavitenskap - hvordan gjør de det?" gjennomgår jeg et utvalg av teknikker/algoritmer vi bruker for å skape kunnskap av data. Dette er inlegg #3. 

Min målgruppe er forretningsfolk - ikke dataeksperter. Jeg prøver å bruke begreper som de fleste kan forholde seg til og ofrer presisjonsnivå til fordel for lettere tilgjengelighet.
Inne i mellom kommer jeg ikke utenom å bruke begreper som kan være fremmede. Blant annet kan navngiving av algoritmer skape distanse slik som her i denne bloggen.

I dette innlegget tar jeg for meg to nye algoritmer: 
  1. Support Vector Machine og
  2. Nevrale nettverk.
Support Vector Machine
Support Vector Machines (SVM) er en kraftig og meget nyttig algoritme. SVM separerer data i klasser.
Algoritmen trenger historiske data med forhåndsdefinerte klasser å lære av. 

La oss for eksempel anta at de blå sirklene i figuren under representerer tidligere kjøpere og de røde sirklene representerer tidligere ikke-kjøpere.
Linjen mellom de klassifiserte kundene viser den beregnete avgrensningen mellom disse to klassene. Dette ser bra ut? Begge klasser er 100 % korrekt avgrenset og ingen sirkler har havnet i feil klasse.

Ved nærmere øyesyn ser vi imidlertid at linjen er veldig nær både den øverste blå sirkelen og den røde sirkelen lengst ned, mot midten.
La oss så gjennomføre en markedskampanje.  Vi kan da ende opp med noe som likner denne figuren:
Fremdeles veldig bra, men vi klassifiserte en ikke-kjøper feil. Selv om vi klassifiserte kunden som kjøper, så kjøpte ikke kunden. 
Som bruker av algoritmen er sluttresultatet det viktigste. Resultatet av SVM-algoritmens beregninger er at linjen justeres slik at den maksimerer marginen/rommet mellom gruppen. Dette rommet er vist med den gule fargen.
Bare ved et kjapt blikk på figuren ser vi at det var en god idé.
Nå har treffsikkerheten økt markant! 

Dette eksemplet viste prinsippet for to dimensjoner (for eksempel inntekt og alder) og med en lineær (rettlinjet) sammenheng.

I figuren under illustrerer vi i mer detaljer hva som egentlig foregår i et mer generelt og komplisert tilfelle. 
Som oftest vil vi ha mange egenskaper (ofte flere hundre) og avgrensningene mellom egenskapene trenger ikke være rettlinjete,  men kurvete. 
La oss holde oss til 2 dimensjoner (ett plan) hvor klassifiseringen ikke er lineær med hensyn på de to egenskapene. For eksempel kan økende alder gi flere kjøpere og økende inntekt også det samme, men bare inntil en viss alder. Når alderen passerer 70 så minker sjansen for kjøp igjen.  
Kanskje også produktet har en slik karakter at det er middelklassen med stadig økende inntekter som ønsker produktet, mens rikere kunder ikke er interessert?

Under ser vi hvordan vi kan oversette en modell som ikke er lineær (avgrensningslinjen er en kurve) til en dimensjon høyere (fra to til tre dimensjoner) med lineæritet. Vi "løfter" de blå sirklene opp fra de røde. Vi kan da legge et lineært plan (tenk at du stikker et rett ark) mellom de blå og røde sirklene. Dette planet legger vi slik at avstanden blir størst mulig, tilsvarende som beskrevet over. 
Teknisk sett er SVM spennende matematisk lineær algebra. Detaljene i dette bryr vi oss ikke om her. Vi bare konstaterer den snedige tilnærmingen og at algoritmen virker - og ofte virker den veldig godt.
Begrensninger
SVM er ressurskrevende. Det er tunge beregninger som skal til. Men med stadig raskere datamaskiner blir denne ulempen stadig mindre.
Algoritmen kan være vanskelig å tune og det er også vanskelig å tolke resultatet av algoritmen når mange ikke-lineære sammenhenger inngår.

SVM er presis og lærer hurtig fra nye data.

Nevrale nettverk
De enkleste variantene av nevrale nettverk er gamle. Men det er først i det seneste tiåret at nevrale nettverk virkelig har blitt brukt med gode og, inne i mellom, oppsiktsvekkende resultater. Dette takket være en  eksponensiell økning i kapasitet på datamaskinene og tilsvarene reduksjon i kostnader. 

Nevrale nettverk tar data - egenskaper - som input. Hver egenskap har sin tilhørende input-node (nevron). Se på egenskapene som variable i en funksjon og nodene som plassholdere for hver variabel i funksjonen (y = f(egenskap1, egenskap2, ... egenskapN). Vi lager ett eller flere skjulte lag med mange noder. Disse er koplet sammen lag for lag. Til slutt er det siste laget koplet til en eller flere output-noder avhengig av om resultatet skal gi én verdi eller flere verdier.  
Ved å justere på vektene på koplingene basert på beregning av hvor treffsikker outputnoden(e) er i sitt resultat kommer man, etter mange treningsrunder på mye data,  fram til en likevekt på vektene. Disse vektene representerer den iboende kunnskapen lært av alle treningseksemplene. 

I et nevralt nettverk kan det være ekstremt mange slike vekter, gjerne mange millioner.
Inputverdiene (paramtetrene i funksjonen) multipliseres med vektene. I hver node summeres disse multipliserte verdiene fra hver kopling fra forrige lag. Noden tar stilling til hvordan denne summen skal sendes videre til neste lag i nettverket.

Bildegjenkjenning, gjenkjenning av håndskrift som du finner på mobiltelefonen din, prediksjon av aksjemarkedet og  prediksjon av framtidig omsetning er bare noen av mange anvendelsesområder for nevrale nettverk. Nevrale nettverk virker best - og ofte fasinerende godt - der det er mye tilgjengelig data og hvor sammenhengene er komplekse.
Eksempel på nevralt nettverk med 4 inputnoder, to skjulte lag og to outputnoder.
Begrensinger
Nevrale nettverk er ikke lett å tolke. De virker best med mye data og kan være tunge å regne på. Det kan også være krevende å bygge den riktige nettverksarkitekturen for problemet man skal løse, samt å tune parametrene som skal til for at algoritmen skal fungere mest mulig optimalt.

Deep Learning

Deep Learning er det siste og trendsettende temaet innen nevrale nettverk. Enklest beskrevet er det nevrale nettverk  med flere skjulte lag og økende kompleksitet i nettverksarkitekturen.
Også andre algoritmer som i realiteten er summen av enklere læringsalgoritmer faller inn i denne kategorien. Jeg kommer tilbake til det senere i en annen blogg.
Deep learning-algoritmer har vært i stand til å lese nye bilder på nettet og beskrive innholdet i bildet skriftlig på engelsk. Dette har vært mulig etter å ha lært av millioner av bilder med tilhørende tekster som vi alle legger ut på Google, Facebook og andre nettsteder.

Dette er jo unektelig litt skummelt, men samtidig først og fremst veldig inspirerende!
Et annet eksempel: Google utviklet et nevralt nettverk over 16.000 cpu'er som så på Youtube-videoer i 3 dager. Systemet fikk ingen veiledning med hensyn på hvilke videoer systemet skulle analysere. Systemet lærte likevel å gjenkjenne katter.  Mye katter på Youtube åpenbart.
Algoritmen klarte, uten å bli fortalt hva den skulle lete etter, å gjenkjenne mønstre fra noe så komplekst som Youtube videoer tross alt er. Å gjenkjenne mønstre gjennom våre sanser er et av menneskets sterkeste fortrinn. Deep learning-algoritmer haler nå innpå.  Det er nå eksempler på at algoritmer klarer å gjenkjenne håndskrift, skilter og stemmer bedre enn mennesker.
Begrensninger
Kompleksitteten i beregningene er høye og det er behov for mye data.

Muligheter
Stadig mer data, forbedring av algoritmene, og at algoritmene er klargjort på vanlige server og pc-plattformer alle kan ha råd til gjør algoritmene stadig mer aktuelle.


Neste blogg

I del 4 vil jeg skrive om beslutningstrær og bruk av disse i såkalte "ensemble".
Det har vist seg at relativt enkle og svake algoritmer kan gi oppsiktsvekkende resultater når de settes sammen og bidrar til resultater i fellesskap. Maskinlæringens svar på gode teambeslutninger. 

*Innlegget er en blanding av fritt oversatt og omarbeidet innlegg av deler av Alex Jones artikkel om Bigdataalgoritmer og egne bidrag.


Espen Remman
Rådgiver/Partner
Chronos AS
tlf. 97557021

espen.remman(at)chronosit.no
twitter: EspenRemman
linkedin: espenremman

fredag 10. februar 2017

Kunstig intelligens i ekstrem utvikling


Kunstig intelligens i ekstrem utvikling

Året 2016 var gjennombruddet for bruk av kunstig intelligens i Norge. Stadig flere tester nå ut mulighetene.

Selskaper som Google, IBM, NVIDIA, Facebook, Amazon og andre kommer løpende med nye og oppsiktsvekkende resultater.  
Vi går her gjennom noen eksempler på brukstilfeller hvor utviklingen har skutt fart og hvor Chronos leverer konsulenttjenester og løsninger.

Språkoversettelse 
Google Translate har nå byttet til en helt ny og banebrytende algoritme*. Denne algoritmen er basert på nevrale nettverk. Algoritmen oversetter fra alle språk til en indre representasjon. Slik trenger ikke Google lenger å trene opp algoritmer for hver eneste kombinasjon av alle språk.

Faktisk har Googles med denne nye opplærte algoritmen oppfunnet et nytt universelt språk! 

[*Sequence-Sequence learning]
Bilde: Automatisk oversettelse mellom språk

Anbefalingsmotorer
[Anbefalingsmotorer predikerer hvilke varer som har høye sannsynlighet for å bli kjøpt av kunden i framtiden.]
Google har laget en ny anbefalingsmotor** for Youtube som er vesentlig mer treffsikker en tidligere løsning. Denne løsningen er bygget med Googles frigitte maskinlæringsplattform Google TensorFlow#. Algoritmen leser hvor lenge brukerne har sett på en video, alder, kjønn og andre demografiske data, samt hvor lenge siden og hvor ofte brukerne har sett på videoer. Algoritmen trenes over millioner av videoer. Til forskjell fra mange tidligere algoritmer tar den hensyn til rekkefølgen videoene er konsumert, visningstiden, samt søk og visningshistorikk. 

[**Recsys 16. September 2016]
[#Chronos bruker denne plattformen]
Bilde: Anbefalinger: Fra linkedIn

Klassifisering av bilder
Treninger over millioner av bilder på nettet har gjort det mulig å klassifisere innholdet i bilder innenfor mer enn tusen klasser. I dag kan man bruke ferdiglærte modeller som startgrunnlag, blant annet levert av Clarifai, for tilpassete klassifiseringer av bilder spesifikt for din virksomhet. For eksempel kan et bildebyrå automatisk arkivere bildene sine og et forsikringsselskap kan automatisk klassifisere bilder tatt av skader. 
Bilde: Fra clarifai demo

Klassifisering av tekst
Avanserte algoritmer leser gjennom tekstene dine (eposter, dokumenter, websider, sosiale medier etc.) og klassifiserer tekstene i emner du selv har definert, eller som algoritmen selv foreslår. Emneklassifiseringen kan for eksempel brukes til
  • avanserte søk,
  • etablering av automatiske arkivnøkler og avansert arkivering, samt
  • automatisk distribusjon av eposter eller henvendelser til relevante deler av organisasjonen (f. eks. dispatch på kundesenter).
Bilde: For analytikerne - Visualisering av emneklassifiseringsalgoritmens resultater

OCR-lesing av skannete tekst
Nøyaktigheten i gjenkjenning av tegn og ord basert på maskinlæring basert på eksempler er blitt vesentlig bedre de siste årene. Algoritmer klarer nå også å gjenkjenne håndskrift. Avanserte metoder forstår forskjellige tegnsett og kan også fjerne støy i det scannete dokumentet som kommer fra skygger, bretter, rifter, kaffeflekker, smuss eller liknende.
Bilde:  Gjenkjenning av tegn

Dette var noen få eksempler på hva som er mulig å få til med kunstig intelligens nå om dagen.  Du finner listet opp noen flere brukstilfeller på Chronos' hjemmeside.

PS. Den norske Dataforening har etablert en egen faggruppe for Kunstig Intelligens og Robotikk hvor Chronos deltar.
Faggruppen har eget spor på Software 2017. Sees vi der?

hilsen
Espen Remman
Bilde: Et nevralt nettverk gjenskaper en katt etter å ha blitt lært opp av van Goghs malerier først.