Blogg

Här finns tekniska artiklar, presentationer och nyheter om arkitektur och systemutveckling. Håll dig uppdaterad, följ oss på Twitter

Callista medarbetare Erik Lupander

ArchConf, dag 1 - Machine learning workshop

// Erik Lupander

En delegation från Callista har lämnat snöstormar och julhets bakom sig och tagit sig till Clearwater Beach, Florida, för att under fyra dagar vara på ArchConf 2017. Här kommer en liten rapport från den heldagsworkshop om Machine Learning undertecknad deltog i under dagen.

Agenda

Föreläsaren Brian Sletten gjorde tidigt klart att ämnet är alltför omfattande för att hinna med mycket mer än att gå genom grunderna och titta på lite praktiska tillämpningar. Ingen hands-on med andra ord.

  • Historik
  • Teori och Algoritmer
  • Tillämpning

Lite historik

Brian gjorde dock ett gott arbete där han började med att ta oss tillbaka till 50- och 60-talens första stapplande steg inom området, 70-talets relativa stiltje innan finansbranchen i början av 80-talet på allvar börjande anamma ML. Filosofiska spörsmål, förekomst i populärkultur (Wargames, Terminator) och de risker kring att datorer och AI kan ersätta fler och fler både enkla och mer avancerade jobb avhandlades på ett intressant och underhållande vis innan vi slutligen landade i hur “Big Data”, GPGPU och allt mer avancerade metoder givit oss allt från rekommendationsmotorer, självkörande bilar och Boston Dynamics fantastiska robotar.

brian snackar terminator

Sedan följde en ganska tänkvärd teoridel där Brian tog avstamp i hur förhållandet mellan insamling av data (big data), nyttjade av denna data (skapa modeller för ML) och att dra slutsatser från modellernas utfall kunde liknas vid hur Tycho Brahe under många år studerade och antecknade planeternas positioner, hur Johannes Kepler kunde nyttja Brahes insamlade data för att lägga fram Keplers lagar kring planeters rörelser vilka Isaac Newton senare baserade sina tre lagar kring kroppars rörelser och krafter.

Efter ovanstående historiska metafor blev det lite mer handfast där ämnen såsom R vs Python (Python växer mest), förhållandet till klassisk statistik och numerisk analys och en genomgång av basala begrepp inom domänen såsom medelvärde, medianvärde, standardavvikelser, varians, avvikande värden osv. Kanske lite väl grundläggande nivå, men i ärlighetens namn rätt nyttigt för undertecknad vars 10 högskolepoäng statistik A på universitet för drygt 15 år sedan fallit något i glömska.

Teori & Algoritmer

Här höjdes svårighetsgraden tämligen tvärt. “Curse of the dimensionality” beskrevs som en av ML-domänens ständigt återkommande faktorer - dvs hur man behöver förenkla, normalisera, tvätta och städa den data man vill jobba med. Han hade en bra metafor där han beskrev hur problemet man skulle lösa var att finna 10 st quarters. Ligger de uppradade i en rad på golvet i rummet (1 dimension) så är de lätta att hitta. Om man lägger på en dimension så kan de de befinna sig var som helst på golvet i rummet (2D). Nästa dimension är att man inte vet på vilket av hotellets 14 våningar som mynten finns. Ytterligare dimensioner kan ju vara tid (när i tid befann sig mynten någonstans i hotellet) osv - med kontentan att för att kategorisera data eller dra vettiga slutsatser behöver man ha ett dataset stort nog ändamålet. Lösningen handlar mycket om Big Data - kvantitet är en kvalitet i sig åtminstone när det gäller machine learning.

Det diskuterades också lite kring ML-området och hur ytterst få människor behärskar både dataanalystens och mjukvaruarkitektens roll - att ta rådata och göra den användbar för ML, definiera och testa fram en modell och sedan kunna produktifiera detta i form av fungerande, skalbar och korrekt mjukvara.

En annan intressant sak som togs upp var syftet med det ML-jobb man gör. Om man gör ML för att ta fram beslutsstöd - “därför skall vi satsa på marknad X med produkt Y” - då måste man kunna förklara varför våra ML-modeller dragit den slutsatsen inför ledningsgrupp. Om man däremot skall ta fram en produkt som t.ex. ett spamfilter eller en rekommendationsmotor så är det ganska ointressant exakt hur eller varför den fungerar - bara den gör sitt jobb väl nog. Ibland kan det till och med vara så att en ML-lösning har gjort sitt jobb när man exempelvis identifierat en anomali i det data man har - Brian tog ett exempel från sitt yrkesliv där han hjälpt ett läkemedelsbolag hitta varför en medicin mot fibromyalgi inte fungerade på vissa patienter. Företaget hittade inga kliniska samband, men där ett unsupervised NN avslöjade en hög korrelation mellan utebliven effekt av läkemedlet med att patienten ådragit sig diagnosen efter ett fysiskt trauma. Problemet löst och läkemedelsbolaget var nöjda.

Förmiddagen avslutades med att “5 tribes of Machine Learning” (Evolutionaries, Connectionists, Symbolists, Bayesians, Analogizers) och deras underliggande metoder - exempelvis linjär regression, beslutsträd, support vector machines etc gicks igenom på ett pedagogiskt vis även om fler och fler av åhörarnas ansikten fick drag av fågelholk mellan varven. Om det var gäspningar pga tidsomställning eller klurigt ämne låter jag vara osagt…

Tillämpning - Neurala nätverk, Deeplearning4J, TensorFlow och R

Det var många tunga ögonlock efter en rejäl lunch som amerikanskt blaskkaffe inte kunde råda bot på. Parat med ganska kniviga formler, R-kod och förklaringar av grunderna kring neurala nätverk gjorde att första delen av eftermiddagen inte var helt lätt att greppa. Brian gjorde dock ett gott jobb och kodexemplen med R var nog bland det mest lättbegripliga jag sett av det språket. Finns uppenbarligen en hel del väldigt användbara abstraktioner i R om man jobbar med att preparera eller analysera data. Även Python med NumPy och SciPy nämndes i positiva ordalag.

Dagen avslutades med genomgång ett av de ledande ramverken för ML - TensorFlow. TensorFlow är uppdelat i en runtime-del som kan köras distribuerat med stöd för GPGPU och som jag uppfattade det är implementerad i något relativt maskinvarunära språk. API:t man jobbar med är däremot Python-baserat och ganska intressant då man bygger upp en graf av “Tensors” och operationer i form av noder som slutligen exekveras - en kollega sade att det hade en hel del likheter med MatLab. Oavsett vilket gjorde föreläsaren ett gott jobb i sin pedagogik - jag har tidigare tittat på lite Hello Worlds av TensorFlow utan att riktigt få ihop helheten.

Sammanfattningsvis var det en workshop där jag kanske var lite besviken på att det inte var några hands-on moment alls och där en hel del av teorin var bekant om man som jag tidigare fuskat lite inom området på egen hand. Men som helhetsgenomgång av historik, teori och tillämpning var det en riktigt bra workshop.

Imorgon börjar konferensen på riktigt med tre dagar av 90-minutersföredrag. För egen del kommer det nog bli en hel del föreläsningar kring reaktiv arkitektur, microservices och distribuerade system - förhoppningsvis även sammanfattade i denna blogg!

Tack för att du läser Callistas blogg.
Hjälp oss att nå ut med information genom att dela nyheter och artiklar i ditt nätverk.

Kommentarer