Jakten på intelligenta maskiner
Att försöka skapa maskiner som överträffar människans intelligens är ingen ny företeelse. Ett av de tidigaste områden där datavetenskapen utmanade den mänskliga ”intelligensen” var schackspelet. Många ansåg schack (eller ska vi kanske säga ansåg?) som det ultimata provet på mänskligt intellekt och kreativitet, och redan under 1960- och 70-talen fanns det olika åsikter inom datavetenskapen.
Vissa menade att det bara var en tidsfråga innan datorer skulle överträffa människor i schack, medan andra trodde att det aldrig skulle ske.
Kasparovs möte med Deep Blue
Den mest uppmärksammade kampen mellan människa och maskin i tankens värld var schackmatchen 1996 mellan den dåvarande världsmästaren Garry Kasparov (utan tvekan den bäste schackspelaren genom tiderna) och Deep Blue, en superdator skapad av IBM specifikt för detta ändamål.
Bildkälla: Wikipedia
För att göra en lång historia kort, vann Kasparov övertygande matchen 1996 (4-2) men förlorade returmatchen 1997 (4,5-3,5) under stor kontrovers och Kasparovs direkta anklagelser mot IBM om fusk.
Oavsett detta så avslutades en era inom schack och datavetenskap. Datorer visade sig vara smartare än någon levande människa. IBM, nöjda med revanschen, monterade ner Deep Blue och gick vidare.
I dag är det omöjligt för någon stormästare att besegra en standard schackmotor som körs på vanlig hårdvara.
Vad är inte maskininlärning?
Innan vi går djupare in på maskininlärning, låt oss reda ut några missförstånd. Maskininlärning är inte på något sätt ett försök att kopiera den mänskliga hjärnan. Trots uppfattningar som delas av personer som Elon Musk, så menar datavetenskapliga forskare att de inte är ute efter den heliga graalen och att de inte är i närheten av den.
Enkelt uttryckt är maskininlärning metoden att tillämpa inlärningsprocesser genom exempel på datorer. Det skiljer sig från den traditionella metoden att förlita sig på en mänsklig programmerare som ska komma på alla möjliga scenarier och koda in regler för dem i ett system.
Maskininlärning handlar i grunden om att mata in stora mängder data till en dator så att den kan lära sig av exempel (försök → fel → jämförelse → förbättring) istället för att förlita sig på källkod.
Tillämpningar av maskininlärning
Så om maskininlärning varken är magi eller något som kommer att skapa Terminators, vad kan det då användas till?
Maskininlärning är användbart i situationer där traditionell programmering inte räcker till, och dessa situationer brukar falla in i någon av två kategorier.
Som namnet antyder handlar Klassificering om att märka saker korrekt, medan Prediktion syftar till att göra korrekta framtida förutsägelser med hjälp av en tillräckligt stor datamängd med tidigare värden.
Här är några intressanta användningsområden för maskininlärning:
Spamfiltrering
E-postspam är ständigt närvarande, och att försöka stoppa det kan vara en mardröm. Hur definieras spam? Är det förekomsten av specifika nyckelord? Eller kanske hur det är skrivet? Det är svårt att komma på en fullständig uppsättning regler via programmering.
Det är därför vi använder maskininlärning. Vi visar systemet miljontals spam- och icke-spammeddelanden och låter det lista ut resten. Detta var hemligheten bakom Gmails utmärkta spamfilter som revolutionerade personlig e-post i början av 2000-talet!
Rekommendationer
Alla stora e-handelsföretag har idag kraftfulla rekommendationssystem. Ibland är deras förmåga att rekommendera saker som vi ”kanske” tycker är användbara otroligt exakta, trots att vi aldrig har klickat på objektet tidigare.
Slump? Inte alls!
Maskininlärning arbetar hårt här, bearbetar terabyte av data och försöker förutsäga våra skiftande humör och preferenser.
Chatbots
Har du stött på kundsupport som verkade konstigt robotlik men ändå kunde föra intressanta småprat?
Då har du blivit övertygad av maskininlärning!
Att lära sig av konversationer och bestämma vad som ska sägas är ett kommande och spännande område för chatbotapplikationer.
Ogräsbekämpning
Inom jordbruket används robotar med maskininlärning för att selektivt bespruta ogräs och andra oönskade växter bland grödor.
Detta skulle annars behöva göras för hand eller skulle vara väldigt slösaktigt eftersom systemet även skulle spruta produkten med bekämpningsmedel!
Röstsökning
Röstbaserad interaktion med datorsystem är inte längre science fiction. I dag har vi digitala assistenter som Alexa, Siri och Google Home som kan ta kommandon verbalt och inte krånglar (ja, nästan!).
Vissa kanske menar att det är en uppfinning som är bäst att undvika eftersom den gör mänskligheten latare än någonsin, men effektiviteten går inte att argumentera emot.
Medicinsk diagnos
Vi står inför en revolution inom medicinsk diagnostik, eftersom maskininlärningsbaserade system börjar överträffa erfarna läkare inom diagnos med hjälp av röntgen med mera.
Observera att detta inte betyder att läkare snart inte kommer att behövas, utan att kvaliteten på hälsovården kommer att öka dramatiskt samtidigt som kostnaderna kommer att minska (om inte affärskarteller har andra planer!).
Detta var bara ett fåtal exempel på vad maskininlärning används till. Självkörande bilar, robotar för strategispel, t-shirtvikningsmaskiner, captcha-lösare och färgläggning av svartvita foton är bara några exempel på vad som händer idag.
Olika typer av maskininlärning
Maskininlärningstekniker delas in i två kategorier.
Övervakad inlärning, där systemet styrs av mänskliga beslut, och Oövervakad inlärning, där systemet får lära sig helt på egen hand. Ett annat sätt att uttrycka samma sak är att vi i Övervakad inlärning har en datamängd som innehåller både inmatning och förväntad utmatning, som systemet använder för att jämföra och korrigera sig själv. I Oövervakad inlärning finns det dock ingen befintlig utmatning att mäta mot, så resultaten kan variera kraftigt.
En spännande tillämpning av Oövervakad maskininlärning?
Det skulle vara robotar som spelar brädspel, där programmet får lära sig spelregler och vinstvillkor och sedan lämnas åt sig självt. Programmet spelar sedan miljontals spel mot sig själv, lär sig av sina misstag och förstärker de fördelaktiga besluten.
Om du har en tillräckligt kraftfull dator kan en AI som är bäst i världen i spel skapas på några timmar!
Följande bilder illustrerar dessa idéer kortfattat (källa: Medium):
Resurser för att komma igång med maskininlärning
Nu när du är full av nyfikenhet på maskininlärning och hur det kan hjälpa dig att erövra världen, var ska du börja?
Nedan har jag listat några fantastiska resurser på webben som kan hjälpa dig att bli flytande inom maskininlärning utan att behöva ta doktorsexamen i datavetenskap! Om du inte är maskininlärningsforskare kommer du att märka att maskininlärningsområdet är lika praktiskt och underhållande som programmering i allmänhet.
Så oroa dig inte, oavsett vilken nivå du är på just nu, kan du, som ett bra maskininlärningsprogram, lära dig själv och bli bättre. 😛
#1. Programmering
Det första kravet för att komma in i maskininlärning är att lära sig programmera. Detta beror på att maskininlärningssystem kommer i form av bibliotek för olika programmeringsspråk.
Python är det mest rekommenderade, delvis för att det är väldigt roligt att lära sig och delvis för att det har ett enormt ekosystem av bibliotek och resurser.
Den officiella nybörjarguiden är en bra startpunkt, även om du redan är lite bekant med Python. Eller ta den här Bootcamp-kursen för att bli en hjälte från noll.
#2. Tänk statistik
När du är klar med grunderna i Python, är min andra rekommendation att gå igenom två enastående böcker. De är 100 % gratis och finns som PDF för nedladdning. Tänk statistik och Tänk Bayes är två moderna klassiker som alla blivande maskininlärningsingenjörer borde ta till sig.
#3. Udemy
Vid det här laget skulle jag rekommendera att du tar några kurser från Udemy. Det interaktiva formatet i egen takt hjälper dig att komma in i det och bygga självförtroende.
Se till att du kollar in kursförhandsgranskningen, recensionerna (särskilt de negativa!) och kursens helhetsintryck innan du börjar.
Du kan också hitta fantastiska handledningar på YouTube gratis. Sentdex är en sådan kanal som jag kan rekommendera, där det alltid är mycket kul, men hans tillvägagångssätt är inte nybörjarvänligt.
#4. Andrew Ng
Kursen som undervisas av Andrew Ng på Coursera är utan tvekan den populäraste inlärningsresursen för grundläggande maskininlärning.
Även om den använder programmeringsspråket R, är den oöverträffad i sin behandling av ämnet och sina tydliga förklaringar. Tack vare den här kursen har Andrew Ng fått något av en gudaliknande ställning i ML-kretsar och folk ser upp till honom för den ultimata visdomen (jag skojar inte!).
Detta är inte en kurs för nybörjare, men om du redan är bra på att hantera data och inte har något emot lite sidoforskning medan du studerar, är den här kursen den bästa rekommendationen.
#5. Udacity
Bli en maskininlärningsingenjör genom att ta den här nanoexamen från Udacity.
Det tar cirka 3 månader att slutföra kursen och när den är klar förväntas du ha en bra uppfattning om maskininlärningsalgoritmer, hur man modellerar och distribuerar dem till produktion.
Slutsats
Det finns ingen brist på resurser på internet, och du kan lätt gå vilse när du börjar. De flesta handledningar och diskussioner där ute är matematiskt krävande eller saknar struktur och kan knäcka ditt självförtroende innan du ens har kommit igång.
Så jag vill varna dig för självdestruktivitet: håll dina mål blygsamma och rör dig framåt i små steg. Maskininlärning är inget du kan bli bekväm med på en dag eller två, men snart kommer du att börja gilla det, och vem vet, kanske du till och med skapar något imponerande!
Ha det så kul! 🙂