AI guiden för utvecklare - Så används det, Utbildningar, Kompetenser m.m

Är du som utvecklare intresserad av att slå dig in på AI. Då är ett av de första stegen att välja rätt programmeringsspråk. Vi på Demando har sett att efterfrågan på kunnande inom detta område har ökat lavinartat. Därför tyckte vi att det vore intressant att ta reda på vilket programmeringsspråk våra mest erfarna kandidater primärt använder i sitt arbete.

Vad är machine learning, deep learning och AI?

Artificiell Intelligens

Sommaren 1956 hölls en konferens där de tidiga pionjärerna inom AI samlades för att prata om deras visioner om avancerade maskiner som skulle vara kapabla utföra samma typer av uppgifter som vanligtvis bara människor klarar av.

Begreppet AI har således funnits med oss länge, men fram till för några år sen var det kanske främst som inslag i dystopiska sci-fi rullar. Alla minns väl Arnold Schwarzeneggers karaktär John Connor från Terminator filmerna, eller varför inte den något mer snällare C-3PO från fantastiska Star Wars.

Definitionen för AI är alltså en dator, maskin eller ett program som kan utföra uppgifter som normalt sett kräver mänsklig intelligens. Det kan vara allt från röstigenkänning, visuell uppfattning eller beslutstagande. Mänsklig intelligens, utfört av maskiner.

Även om dagens AI ännu inte är lika utvecklad som den i Terminator och Star Wars, är det något som är hetare än någonsin med ett användningsområde som bara blir större och större. Tjänster som Apples Siri, Amazones Alexa och Googles Home är några av de tjänsterna som har flyttat AI från bioduken till vardagsrummet.

Facebook och Pinterest använder även de AI för att kunna känna igen saker som ansikten och annan typ information från bilder. Den här typen av AI kallas för “narrow-AI” och det är här vi är i dagens AI utveckling. Men hur gör man egentligen för att göra en dator eller ett program intelligent?

Machine Learning

Machine Learning eller som Arthur Samuel sammanfattade det på den där konferensen sommaren 1956: “Förmågan att lära sig utan att uttryckligen programmeras.” Man skulle kunna säga att det är en metod för att kunna uppnå “riktig” AI. Det är en teknik som använder algoritmer för att analysera data, lära sig av datan för att därefter fatta ett beslut. Istället för att för hand koda nya rutiner, tränas maskinen, eller programmet, med hjälp av en stor mängd data och algoritmer som hjälper den  att “lära sig” den specifika uppgiften.

Det skulle visa sig att det “enklaste” området för machine learning var computer vision. De första lyckade experimenten var med en dator som tillslut kunde läsa av ordet och innebörden av en STOP-skylt. Men även denna till synes enkla uppgiften krävde en hel del handskriven kod.

Även om resultat var lyckat, var det långt bort från de storslagna visionerna om hur AI skulle vara.

Tid och rätt inlärnings algoritmer har visat sig vara nyckeln till framgång vilket leder oss vidare till den tredje delen i uppbyggandet av AI, Deep Learning.

Deep Learning

Artificial Neural Networks var ett nytt algoritmiskt tillvägagångssätt som myntades av de tidiga pionjärerna inom Machine Learning. Metoden hämtade inspiration från hur den mänskliga hjärnans neuroner kommunicerade med varandra.

Till skillnad från vår biologiska hjärna med neuroner som kan ansluta sig till vilken annan närliggande neuron som helst inom, har det artificiella nätverket av neuroner diskreta lager, anslutningar och riktningar för hur datan ska breda ut sig.

Låter det rörigt? Tänk så här:

Ta en bild och riv upp den i små bitar och mata in den i det första lagret i det neurala nätverket. I det första lagret delar enskilda celler vidare datan till det andra lagret. Det andra lagret kör sina rutiner och matar vidare infon till det tredje lagret. Såhär håller det på tills du har kommit till det sista lagret som visar ett resultat.

Tänk på STOP-skylten som vi nämnde tidigare. Det första lagret analyserar bitarna från bilden och drar slutsatsen att det är en skylt. Det andra lagret ser att den har en röd färg, varpå det tredje lagret läser av informationen och kommer fram till att det står STOP på skylten.

Med hjälp av alla bitarna sammanställer datorn informationen och kan på så sätt komma fram till det mest rimliga resultatet.

Tack vare den här tekniken av Deep Learning har vi idag bilar som kan köra på egen hand, vi har möjlighet att kunna se och förebygga sjukdomar, till något så enkelt som att Spotify ger oss mer träffsäkra låttips.

Så lär man sig AI

Att AI redan är en stor del av vår vardag som kommer att bli ännu större i framtiden råder det inga tvivel om. Så hur ska du gå till väga för att hoppa på tåget om du vill lära dig hur det fungerar? Vi hittade en bra artikel skriven av Alexis Sanders, där hon som fullständig nybörjare har listat vilka kurser hon tagit och hur du lägger upp dina studier för bästa resultat. Så här ser upplägget ut:

1. Start - ca 60h

Här får du en överblick över hur och vad Machine Learning fungerar.

-Spendera ca 3h med Jason Maye's Machine Learning 101 slidedeck: 2 years of headbanging, so you don't have to.

-2h med Google's {ML} Recipes with Josh Gordon YouTube Playlist.

- Skriv upp dig för Sam DeBrules Machine Learnings nyhetsbrev.

- Ta dig igenom Googles egna Machine Learning Crash Course.

- När du sitter i bilen eller på bussen lyssnar du på podcasten OCDevel's Machine Learning Guide Podcast , skippa avsnitten 1, 3, 16, 21.

- Offra en helg till Kaggle's Machine Learning Track part 1.

2. Fördjupning - ca 80h

Vid det här laget bör du veta ungefär vilken intressenivå du ligger på. Följande kurser fokuserar på att tillämpa de du lärt dig från de föregående stegen.

- Försök lägga ca 10 timmar i veckan, i 7 veckor, med Fast.ai. Har du någon polare som är duktig på att sätta upp och installera AWS (Amazon Web Services) så be om hjälp, det sparar du mycket tid på.

- Fixa ett exemplar av Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems och tugga i dig de två första kapitlena, sen kan du använda resten av boken som ett komplement allt eftersom du stöter på problem.

3. Lyft blicken och bredda din kunskap - ca 115h

När du har kommit så här långt och tagit dig igenom alla de tidigare stegen kan det vara bra att lägga tid på att förstå dig på bredden i Machine Learning och skapa dig en större förståelse för algoritmer.

- Tittat på och delta i Udacity's Intro to Machine Learning.

- Ta dig igenom kursen Andrew Ng's Coursera Machine Learning.

4. Ta dig vidare

Nu har du en stabil och hyfsat bred grund av kunskap att stå på. Det är dags att fundera på hur du vill gå vidare och på vad du vill göra. Hitta ett projekt baserat på dina intressen och använd det du lärt dig för att klara dina mål.

Utbildningar

Det finns flera exempel på svenska företag som använder AI i sina tjänster, Spotify använder till exempel deep learning för att förbättra anpassade låtlistor och rekommendationer. I takt med att kompetenserna får större efterfrågan kommer även möjligheten till passande utbildningar att öka.

Göteborgs Universitet - erbjuder en kurs i Algorithm for Machine Learning. Kursen kan dock inte tas för sig utan ingår i dagsläget i ett större kurspaket.

Chalmers Tekniska Högskola - Här kan du läsa Datavetenskap 300p som fördjupar sig en hel del i algoritmer.

Studentum Stockholm - Kandidatprogram för Datavetenskap på Studentum i Stockholm.

Populäraste språken för AI-programmering

Är du som utvecklare intresserad av att slå dig in på AI? Då är ett av de första stegen att välja rätt programmeringsspråk. Vi på Demando har sett att efterfrågan på kunnande inom detta område har ökat lavinartat. Därför tyckte vi att det vore intressant att ta reda på vilket programmeringsspråk våra mest erfarna kandidater primärt använder i sitt arbete.

1. Python 

Vi har sett att Python är det populäraste språket hos våra kandidater. En del av anledningen av att det är så populärt kan vara för det stora utbudet av AI-bibliotek som finns att använda sig av.

2. C++ 

Vi har också sett att C++ är ett vanligt förekommande språk. Det har sin snabba exekveringstid som fördel. Passar bra att använda sig av i spel och när man bygger neurala nätverk då snabbheten är en betydande faktor.

3. Java 

Är också ett bra språk att använda sig av. Med hjälp sin “Garbage Collector” är det lätt att utveckla algoritmer och det kan lätt köras på olika plattformar utan att behöva kompileras om.

Vi har också genomfört en undersökning på Twitter där vi gick ut med frågan vilket som är det bästa alternativet för AI-programmering. Även där hamnade Python högst upp på 44%, C++ på andra plats på 30% och Java på tredje plats på 18%.

Vilket stämmer väldigt bra överens med vår interna undersökning. I undersökningen på Twitter tog vi också med uppstickaren - utvecklingsspråket Go som hamnade på en fjärde plats med 8%. Vi har tidigare skrivit om språket Go i vår artikel "Hetaste teknikerna och programmeringsspråken bland utvecklare" och att det ofta nämns i AI-sammanhang så vi tänkte det kunde vara intressant att se hur det står sig mot de mer etablerade språken.

Något som är intressant är att språket Go som är ett mindre etablerat språk ändå står sig bra mot de mer etablerade språken. Vi kommer antagligen se mer av Go inom AI allt eftersom utvecklar antalet och communityt växer.

Så använder techjättarna AI

Att många företag redan använder sig av AI och Machine Learning visste vi redan, men på vilket sätt? I listan nedan får du några konkreta exempel.

Facebook - och deras chatt-applikation Messenger har blivit lite av ett testlabb för chatbots. Idag är det enkelt för programmerare att skapa egna chatbots vilket har gjort det möjligt för både stora och små företag att ha en automatiserad chattfunktion. Facebook använder även  AI för att sortera bort saker som till exempel spam.

Pinterest - har machine learning inbäddat i stora delar av sin affärsverksamhet. Vi hittar det bland annat i hanteringen av spam i de anpassade förslagen.

De lanserade nyligen en funktion som de kallar för Lens. Den ska hjälpa användaren att köpa och identifiera saker. Genom att knäppa kort på till exempel ett plagg eller en måltid ska Lens automatiskt analysera bilden och ge förslag på bilder med recept eller klädförslag.

Twitter - bytte ganska nyligen till en algoritmisk feed. Vilket inte alltid är så uppskattad, då innehållet som Twitter anser är bäst hamnar överst i din feed men som i många fall inte alls stämmer överens med dina intressen.

Twitter har också genomfört ett projekt där de använder machine learning för att automatiskt klippa bort de oviktiga delarna i en bild. Så kanske nästa gång du ser en bild på twitter kan den vara klippt för att maximera antalet klick.

Google - har spridit ut sina tentakler i många olika grenar och branscher. De har lagt mycket tid på neurala nätverk och har fått mycket uppmärksamhet för sitt DeepMind nätverk. Är ni intresserade om Googles alla AI-projekt, läs mer på Experiments with Google.

Populäraste AI ramverken

Ett bra ramverk och rätt verktyg kan betyda allt för ett lyckat projekt. Som vanligt finns det mycket att välja på så för att göra det lite enklare för er har vi listat de, enligt GitHub och Stack Overflows, fem vanligaste och populäraste ramverken.

Pytorch

Är ett av de senaste ramverken som används för Deep learning. Man skulle kunna säga att det är en nära släkting till det Lua baserade ramverket Torch, där Torch har blivit omskrivet för att passa Python för att ge en snabbare upplevelse som dessutom känns mer native.

TensorFlow

Google 2015 som bland annat kan användas för att utveckla neurala nätverk. Det är enligt GitHubs och Stack-overflows användare det mest populära biblioteket. TensorFlow har en populär funktion som heter Tensorboard Vizualisation som gör det enkelt att visualisera och hitta fel.   

TensorFlow används av flera stora företag som, Dropbox, Ebay, Intel, Twitter och Uber.

I skrivande stund är det kompatibelt med Python, C++, Haskell, Java, Go, Rust och JavaScript, men det finns även paket från tredjepartsutvecklare som gör det tillgängligt för ytterligare språk.

Caffe

Är skapat av Berkeley Vision och Learning Center kom 2017 och är ett deep learning bibliotek skrivet i C++ med ett Python interface. Det har en snabb prestanda och en stor community, vilket bäddar för en stor tillväxt.

Scikit-learn

Kom ut 2007 och är ett open source bibliotek skrivet i Python. Sickit-learn är enkelt att använda, så man behöver inte vara någon expert på Machine learning algoritmer för att komma igång. Sickit-learn är utvecklat från tre andra open source projekt, Matplotlib, NumPy och SciPy, med fokus på data mining och dataanalys.

CNTK

Kommer från Microsoft och står för Cognitive Toolkit. Används till deep learning.

Caffe2

Utvecklat av Facebook och bygger logiskt nog på Caffe. Det var utvecklat med fokus på hastighet och modularitet och har också på senare tid blivit ihopslaget med Pytorch.

Övriga källor

Podcasts

Perfekt att lyssna på när du kör eller åker buss till och från jobbet, på jobbet, när du lagar mat och kanske innan du somnar.

TWiML - Leds av Sam Charrington med fokus på machine learning och AI.

Data Sceptic - korta avsnitt som kommer ut en gång i veckan med diskussioner och intervjuer i ämnet datavetenskap på hög nivå. Leds av Kyle Polich, Linh Da Tran och deras papegoja Yoshi.  

TechEmergence - är en stor och seriös hemsida som är helt dedikerad åt AI. Hit kan företagsledare vända sig för att få en inblick i hur AI skulle kunna förändra och förbättra deras verksamheter. Självklart har de också en podcast med diskussioner och intervjuer i samma ämne.   

The AI podcast - Nvidias egna podcast som i regel släpper ett nytt avsnitt en gång varje månad.

Nyhetsbrev

Bra för dig som gillar att få information i skriven form. Perfekt läsning till morgonkaffet eller på bussen.

The Exponational View - har nära 20 000 följare och är ett nyhetsbrev som samlar länkar till intressanta artiklar med fokus på allt som rör AI och andra närliggande ämnen.  

AI Weekly - samlar de bästa nyheterna från den gångna veckan med fokus på AI och machine learning.

Machinelearnings.co - utgiven av den populära sajten Medium. Seriösa och välskrivna artiklar helt dedikerade åt machine learning och AI.

Läs också vår intervju med en av Sveriges bästa AI-utvecklare Lars Sjösund