En introduktion till AI
Vårt mål med denna artikel är att ge en bred introduktion till AI och machine learning som gör att man förstår tekniken, förutsättningarna och tillämpningarna. Efter att ha läst den ska man ha tillräckliga kunskaper i ämnet för att kunna börja fundera kring sin egen verksamhet och hur AI skulle kunna användas för att lösa problem, minska manuellt arbete eller bygga tjänster som ger en konkurrensfördel.
AI, Machine learning och Deep learning
Om vi börjar med att reda ut begreppen:
- AI (Artificiell Intelligens) - ett samlingsnamn för all form av verksamhet som syftar till att efterlikna mänsklig intelligens med hjälp av datorer.
- Machine learning - datorer som lär sig att på egen hand urskilja och klassificera saker efter att vi talat om för dem vilka kännetecken de ska titta efter och hur sakerna ska klassificeras.
- Deep learning - datorer som lär sig att på egen hand urskilja och klustra saker utan att vi talat om för dem vilka kännetecken de ska titta efter eller hur de ska klustras.
Vi skiljer på att klassificera och klustra. Att klassificera något innebär att man talar om vilken kategori något sägs tillhöra baserat på vissa egenskaper. Att klustra innebär att man bara buntar ihop saker som verkar ha liknande egenskaper utan att ge dem en etikett som faktiskt innebär något rent semantiskt. En dator kan alltså på egen hand urskilja och klustra alla bilder som innehåller en hund men den kan inte sätta etiketten hund på bilderna på egen hand utan att vi har talat om det för den. Den har ingen aning om vad en hund är utan tuggar bara bildpixlar genom algoritmer och sammanställer ett resultat.
Här berör vi något som är viktigt att förstå: allt en dator gör är att räkna. Så den typ av teknik som vi kallar AI baserar sig (som all annan form av datorteknik) enbart på beräkningar. Det finns i en AI ingen djupare förståelse, inga reflexioner och inga associationer som motsvarar människans. En AI räknar bara i syfte att efterlikna de mänskliga aktiviterna att förstå, reflektera och associera.
Svag och stark AI
Man brukar skilja på svag/avgränsad och stark/generell AI. Svag AI har utvecklats för att lösa tydligt avgränsade uppgifter. Stark AI ska kunna hantera alla sorters uppgifter man ber den lösa lika bra som en människa.
Den AI vi ser i vår vardag idag är svag AI. Några exempel är spamfiltret i Gmail, Google Assistant, Alexa, Siri eller de rekommendationer på låtar eller bilder du får från Spotify eller Pinterest. Men även lite mer spektakulära tillämpningar som t.ex. system för självkörande bilar eller IBM:s jeopardyspelande AI Watson är exempel på svag AI eftersom de är utvecklade för att lösa specifika uppgifter - köra bil och spela Jeopardy. Stark AI är något som än så länge bara finns i sciencefictionfilmer som 2001, AI eller Her. En stark generell AI förväntas kunna resonera, göra egna associationer, lösa många olika sorters problem, fatta beslut under oklara förutsättningar, uppvisa uppfinningsrikedom, fantasi och kreativitet. Det pågår mycket forskning, men stark AI är inget som vi möter i vår vardag idag.
Det är inte magi - bara matte och processorkraft
AI omges i populärpressen av en närmast magisk aura. Men egentligen är det bara matematik. Algoritmerna arbetar med vektorer, ett grundläggande begrepp i linjär algebra - listor med tal som kan se ut så här:
[6.0, 1.0, 0.0, 0.0, 9.321, 1.01, 0.0 ...]
Vektorer råkar också vara en viktig komponent i datorgrafik. Tekniken bakom avancerad grafik i spel innehåller också gott om vektorer och av den anledningen är grafikkort utvecklade för att vara väldigt snabba på att räkna på just vektorer. Därför är det en vanlig strategi inom AI att låta grafikprocessorer utföra de stora mängder beräkningar som behövs för machine learning. För små enkla experiment på hemmaplan räcker den hårdvara man har i sin egen dator. Men för stora körningar skulle det vara opraktiskt och ta för lång tid. Därför är molntjänster som tillhandahålls av Google, Amazon eller Microsoft en mer realistisk teknisk plattform när man vill utveckla lösningar som är baserade på machine learning.
Machine learning i tre steg
Om man googlar vilka steg som ingår i en process för machine learning så ser man att det är fler steg än tre. Men vi har valt att förenkla det lite enligt ramarna för denna artikel.
- Samla och förbereda data
- Välja ut och träna algoritmen
- Testa algoritmen och titta på resultatet
Samla och förbereda data
Vilken typ av data pratar vi om? Det kan vara data i form av bilder, texter, finansiell information, ljudfiler - egentligen all data som man kan lagra i en dator. Själva formatet är inte så intressant - allt är ändå bara ettor och nollor i grund och botten. Det som är desto viktigare är mängden data du har tillgång till och hur välstrukturerad den är. Generellt kan man säga att ju mer data du har, desto bättre. Men den måste också vara välstrukturerad och konsekvent - annars kommer algoritmen få svårt att hitta mönster. Dels handlar det om att välja ut data som är relevant för den frågeställning man har, dels handlar det om att se till att saker som format och skala är konsekvent genom hela datasetet. Både urval och normalisering av data kräver att man vet vad man gör eftersom fel urval och fel normalisering i slutändan kommer att leda till felaktiga resultat.
Man behöver två olika uppsättningar data: en uppsättning för att träna algoritmen och en uppsättning för att testa den.
Låt oss ta ett exempel:
E-handelsjätten Zalando har ett eget tekniklabb som heter Zalando Research som bland annat använder machine learning i syfte att förbättra kundupplevelsen på sin e-handelssite.
För att träna sin AI i att kunna klassificera bilder på klädesplagg har de tagit fram ett dataunderlag som kallas Fashion MNIST. Det är en databas som innehåller bilder på 60 000 klädesplagg i träningsdatabasen och 10 000 plagg i testdatabasen.
Varje bild i exemplet ovan är 28 x 28 pixlar stor och i gråskala, fotograferade från samma platta vinkel. Varför har man gjort så när Zalando har högupplösta bilder på sina plagg med miljontals färger? Det är helt enkelt en anpassning av grunddata för att den ska funka praktiskt för machine learning och vad man vill använda den till. Den algoritm som ska analysera bilderna kommer nämligen att analysera varje bild, pixel för pixel, färg för färg. Att reducera bilderna till 28 x 28 pixlar och ta bort färgen är helt enkelt ett sätt att reducera mängden data som det neurala nätverket ska bearbeta. 28 x 28 pixlar innebär 784 pixlar. Om varje pixel dessutom skulle ha haft en färg som är en blandning av grundfärgerna rött, grönt och blått så blir det 28 pixlar x 28 pixlar x 3 grundfärger = 2352 pixlar - för varje bild.
Programmerarna på Zalando har troligvis upptäckt genom tester att om huvuduppgiften för deras AI är att kunna klassificera klädesplagg (sandal, t-shirt, byxa, väska etc.) så behövs inte färger. Resultatet blir lika bra med svart-vitt och om man därmed kan kapa bort 2/3 av antalet pixlar utan att kvalitén på resultatet försämras så gör man såklart det.
Välja ut och träna algoritmen
Exakt vilka olika typer av algoritmer för machine learning som finns och när man ska välja en viss algoritm framför en annan ryms inte inom ramarna för denna artikel. Men vi kan nämna att det finns många olika algoritmer och vilken man väljer styrs till stora delar av följande fyra faktorer:
- Storlek, kvalitet och typ av data
- Hur mycket datorkraft du har till ditt förfogande
- Hur bråttom du har
- Vad du ska använda resultatet till
Dessutom är det så att du inte alltid på förhand kan veta vilken algoritm som kommer att ge det bästa resultatet. Därför vill man ofta testa några olika för att se vilken som presterar bäst med det aktulla datasetet.
Vi nämnde tidigare att man har två dataset: ett för att träna algoritmen och ett för att testa den. När algoritmen ska tränas så är målet att hitta kopplingarna mellan en kategori det som är utmärkande för kategorin. Om vi tar ett exempel från Zalandos dataset ovan så vill vi alltså lära vår algoritm att känna igen en sandal utifrån det som särskiljer den från andra plagg.
När vi tränar (lär upp) algoritmen så låter vi den helt enkelt tugga igenom all data och hitta utmärkande drag. Eftersom vi redan på förhand har klassificerat allt i testdatat så känner algoritmen redan till det rätta svaret. Träningen går ut därför på att algoritmen ska hitta den model som med störst sannolikhet levererar det rätta svaret.
Testa algoritmen och titta på resultatet
Nu har vi en algoritm som är tränad för den uppgift den ska lösa och är redo att testas. Här kommer testdata in. Vi kör algoritmen med testdata där vi vet vad som är de rätta svaren, men algoritmen vet inte det. Den förlitar sig på sin träning. I ett bra resultat har algoritmen med hög sannolikhet lyckats klassificera data korrekt. Många rätt alltså.
Den uppmärksamme läsaren har noterat att vi pratar om sannolikhet snarare än rätt och fel. Och det är så det funkar. Om vi i testet ser att den lyckas klassificera 40 av 44 bilder på gympaskor korrekt så kan vi säga att den med 91% sannolikhet kan klassificera en bild på en gympasko i aktuellt testdata.
Stämmer det att programmeraren inte vet hur programmet funkar?
Man hör ofta att det är svårt att visa exakt hur ett AI-system har kommit fram till ett visst resultat - att AI:n är som en svart låda som programmeraren riggar upp och kör utan att veta vad som händer inuti. Stämmer detta?
Svaret är som så ofta: nja. Programmeraren har koll på alla komponenter, dvs. indata, algoritmen och slutresultatet. Det som gör det svårt att analysera exakt vad som händer är att algoritmen är självlärande och det går dessutom i en rasande takt. När den gissar rätt kommer den förstärka de parametrar som ledde fram till rätt resultat och när den gissar fel så kommer den att försvaga de parametrar som ledde fram till fel resultat. Hur programmet fungerar är alltså ett resultat av vad man stoppar in i det, hur mycket och i vilken ordning. Samma indata kommer att resultera i olika utdata beroende på var i träningsprocessen algoritmen befinner sig.
Inom traditionell programmering är man van vid att samma indata med samma styrparametrar alltid resulterar i samma utdata. Det är det sätt man som programmerare kan avgöra om en funktion gör det den ska eller inte. Med AI så funkar det inte riktigt så eftersom resultatet av en beräkning matas tillbaka in i nästa beräkning och därmed påverkar resultatet. Efter ett antal tusen varv är det omöjligt att ha exakt koll på alla parametrar. Man är därför i dagsläget beroende av att testa sig fram och inte titta så mycket på exakt hur beräkningarna går till utan istället jämföra resultat med facit.
Detta kan få konsekvenser för inom vilka områden man kan använda AI. Om utrymmet för fel är noll eller nära noll så blir det problematiskt och dyrt. Exempel på sådana områden är inom sjukvården, trafiken, eller försvaret; verksamheter där människor kan komma till allvarlig skada om något går fel. För att kunna garantera att systemet inte kommer fram till slutsatser som sätter människors liv på spel så måste man lägga mycket tid på att träna, mäta, utvärdera och förfina tekniken. Detta är t.ex. en av anledningarna till att det är så kostsamt och komplext att utveckla självkörande bilar.
Hur används AI av företag idag?
Om och på vilken nivå man använder AI i verksamheten varierar stort. Globala teknik- och e-handelsjättar som Google, Amazon, eBay, Facebook etc. använder det idag i stor utsträckning. De har pengarna, kompetensen, behovet och framför allt enorma mängder strukturerad data. Sedan finns det en stor grupp företag som använder AI utan att de är riktigt medvetna om det. Man har köpt färdiga mjukvaruprodukter som innehåller element av AI, t.ex. en chatbot, ett spamfilter eller ett CMS.
Som denna artikel har pekat på så är en förutsättning för AI att man har strukturerad data. Utan strukturerad data kan man inte få ut några vettiga resultat. Då många företag idag inte har den höga nivå av struktur på data som krävs för AI så kommer många att först behöva fokusera på grunderna: att ta reda på vilken data man vill bearbeta med AI och se till att den får en enhetlig struktur. Kastar vi in en striktare lagstiftning rörande datalagring och databearbetning i ekvationen så kommer de bidra till att utvecklingstakten bromsas.
Något som talar för ett ökat användande av AI är molnbaserade tjänster där molnleverantörerna har paketerat den infrastruktur (processorkraft och datalagring) och mjukvara (datainsamling och databehandling) som utgör grundförutsättningarna för AI. Det gör det möjligt att bygga AI-system till en rimlig kostnad.
Det kommer också nya tjänster som ligger en nivå ovanför molnleverantörerna. Det är produktföretag som har tagit fram produkter baserade på specifika tillämpningar av AI, ofta med molnleverantöreras infrastruktur som bas. Det kan vara tjänster för e-learning, energikonsumtion, finansiell analys eller bilddatabaser - antalet tillämpningsområden är i praktiken oändligt. Dessa tjänster är förhållandevis enkla att implementera i sin verksamhet eftersom man redan har förberedda algoritmer och datamodeller och den erfarenhet och kompetens som krävs för att implementera dem i verksamheten.
Det här var en introduktion till AI. Vi ser fram emot att ta ett förutsättningslöst möte hur vi på Limetta skulle kunna hjälpa er att utveckla ert företags digitala tjänster och produkter. Vi arbetar med AI och machine learning för flera av våra uppdragsgivare, bland annat företag inom utbildning och e-handel.
Vi ser fram emot att berätta mera!