Hur kommer man igång med maskininlärning?

Försök att designa maskiner smartare än människor är inte nya.

En av de mycket tidiga attackerna som datavetenskapen gjorde på mänsklig ”intelligens” var genom schackspelet. Schack antas (eller ska vi säga, antogs?) av många som det ultimata testet på mänskligt intellekt och kreativitet, och redan på 1960-70-talet fanns det olika skolor inom datavetenskap.

Vissa menade att det bara var en tidsfråga innan datorer gick om människor när de spelade schack, medan andra trodde att detta aldrig skulle hända.

Kasparov mot Deep Blue

Den mest sensationella händelsen med man vs. maskin i tankens kamp var schackmatchen 1996 mellan den dåvarande världsmästaren Garry Kasparov (och utan tvekan den bästa schackspelaren någonsin) och Djupblåen superdator som IBM designat för just detta evenemang.

Bildkredit: Wikipedia

För att göra en lång historia kort, vann Kasparov 1996 matchen övertygande (4-2) men förlorade 1997 revanschen (4,5-3,5) mitt i mycket kontrovers och Kasparovs direkta fuskanklagelser mot IBM.

Oavsett vilket var en era inom schack och datavetenskap över. Datorer var berättigade smartare än någon levande människa. IBM, nöjd med hämnden, demonterade Deep Blue och gick vidare.

Idag är det omöjligt för någon stormästare att slå en vanlig schackmotor som körs på råvaruhårdvara.

Vad är inte maskininlärning?

Innan vi tar en mer djupgående titt på Machine Learning, låt oss få bort några missuppfattningar ur vägen. Machine Learning är inte på något sätt ett försök att replikera den mänskliga hjärnan. Trots sensationella övertygelser som hålls av sådana som Elon Musk, hävdar datavetenskapsforskare att de inte är på jakt efter detta heliga sädeskorn och absolut inte någonstans i närheten av det.

Enkelt uttryckt är maskininlärning metoden att tillämpa inlärnings-för-exempel-processer på datorer. Detta står i kontrast till det traditionella tillvägagångssättet att förlita sig på en mänsklig programmerare för att tänka ut alla möjliga scenarier och hårdkodsregler för dem i ett system.

Ärligt talat, det handlar om vad maskininlärning är: mata massor av data till en dator så att den kan lära sig av exempel (försök → fel → jämförelse → förbättring) snarare än att förlita sig på källkoden.

Tillämpningar av maskininlärning

Så, om maskininlärning inte är svart magi och inte heller något kommer att skapa Terminators, vad är det användbart för?

Machine Learning hjälper i fall där traditionell programmering faller platt, och dessa fall faller vanligtvis inom en av de två kategorierna.

Som namnet antyder handlar Klassificering om att märka saker korrekt, medan Prediction syftar till att korrigera framtida prognoser, givet en tillräckligt stor datamängd av tidigare värden.

Några intressanta tillämpningar av maskininlärning är:

Skräppostfiltrering

E-postspam är genomgående, men att försöka stoppa det kan vara en mardröm. Hur definieras skräppost? Är det förekomsten av specifika sökord? Eller kanske hur det är skrivet? Det är svårt att komma på en uttömmande uppsättning regler, programmässigt.

Det är därför vi använder Machine Learning. Vi visar systemet miljontals skräppostmeddelanden och icke-spammeddelanden och låter det lista ut resten. Detta var hemligheten bakom Gmails utmärkta spamfilter som skakade personlig e-post i början av 2000-talet!

Rekommendationer

Alla större e-handelsföretag har idag kraftfulla rekommendationssystem. Ibland är deras förmåga att rekommendera saker som vi ”kanske” tycker är användbara otroligt korrekta, trots att vi aldrig har klickat på det objektet tidigare.

Tillfällighet? Inte alls!

Machine Learning arbetar hårt här, slukar upp terabyte efter terabyte med data och försöker förutsäga våra flyktiga humör och preferenser.

Chatbots

Har du stött på kundsupport på första nivån som verkade konstigt robotisk och ändå kunde föra intressanta småprat?

Nåväl, då har du blivit övertygad av Machine Learning!

Att lära sig av konversationer och bestämma vad man ska säga när är ett kommande och spännande område för chatbotapplikationer.

Ogräsborttagning

Inom jordbruket används robotar som drivs av Machine Learning för att selektivt spraya 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 också skulle spraya produkten med mördarvätskan!

Röstbaserad interaktion med datorsystem är inte längre science fiction. Idag har vi digitala assistenter som Alexa, Siri och Google Home som kan ta kommandon verbalt och inte krångla (ja, nästan!).

Vissa kanske hävdar att det är en uppfinning som bäst undviks eftersom den gör mänskligheten latare än någonsin, men du kan inte argumentera med effektiviteten.

Medicinsk diagnos

Vi står på gränsen till en revolution inom medicinsk diagnos, eftersom maskininlärningsbaserade system börjar överträffa erfarna läkare inom diagnos genom röntgen etc.

Observera att detta inte betyder att läkare snart inte kommer att behövas, utan att kvaliteten på sjukvården kommer att öka dramatiskt, samtidigt som kostnaderna kommer att ta ett dopp (om inte affärskarteller dikterar något annat!).

Detta var bara ett exempel på vad Machine Learning används till. Självkörande bilar, robotar för strategispel, vikmaskiner för t-shirt, brytning av captcha och färgläggning av svartvita foton händer dessa dagar.

Typer av maskininlärning

Maskininlärningstekniker är av två slag.

Supervised Learning, där systemet styrs av mänskligt omdöme, och Unsupervised Learning, där systemet lämnas att lära sig helt själv. Ett annat sätt att säga samma sak skulle vara att vi i Supervised Learning har en datamängd som innehåller både input och förväntad output, som systemet använder för att jämföra och självkorrigera. I Unsupervised Learning finns det dock ingen befintlig utdata att mäta mot, så resultaten kan variera kraftigt.

En spännande och benhård tillämpning av Unsupervised Machine Learning?

Det skulle vara bots som spelar brädspel, där programmet lärs ut spelreglerna och vinstvillkoren och sedan lämnas till sina egna enheter. 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 är på en tillräckligt kraftfull dator kan en världsslående spelande AI förberedas 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

Så nu när du är helt nyfiken på maskininlärning och hur det kan hjälpa dig 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 uppnå flytande maskininlärning utan att ta doktorsexamen. i datavetenskap! Om du inte är en maskininlärningsforskare kommer du att tycka att maskininlärningsdomänen är lika praktisk och njutbar som programmering i allmänhet.

Så oroa dig inte, oavsett vilken nivå du har 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 Machine Learning är att lära sig programmera. Det beror på att Machine Learning-system kommer i form av bibliotek för olika programmeringsspråk.

Python är den mest rekommenderade, dels för att den är otroligt trevlig att lära sig och dels för att den har ett enormt ekosystem av bibliotek och resurser.

De officiell Nybörjarguiden är ett bra ställe att börja, även om du är lite bekant med Python. Eller ta det här Bootcamp kurs att bli en hjälte från noll.

#2. Tänk statistik

När du är klar med grunderna i Python skulle min andra rekommendation vara att gå igenom två enastående böcker. De är 100 % gratis och tillgängliga som PDF för nedladdning. Tänk statistik och Tänk Bayes är två moderna klassiker som varje blivande maskininlärningsingenjör borde internalisera.

#3. Udemy

Vid det här laget skulle jag rekommendera att du tar ett par kurser från Udemy. Det interaktiva formatet i egen takt hjälper dig att komma in i det knasiga och bygga självförtroende.

Se till att du kollar in kursförhandsgranskningen, recensionerna (särskilt de negativa!) och den övergripande känslan av kursen innan du börjar.

Du kan också hitta fantastiska tutorials på YouTube gratis. Sentdex är en sådan kanal som jag kan rekommendera, där massor av kul alltid kommer, men hans tillvägagångssätt är inte nybörjarvänligt.

#4. Andrew Ng

Kurs undervisad av Andrew Ng on Coursera är utan tvekan den mest populära inlärningsresursen för grundläggande maskininlärning.

Även om det använder programmeringsspråket R, förblir det oöverträffat i sin behandling av ämnet och dess tydliga förklaringar. På grund av denna kurs har Andrew Ng uppnått något av en gudaliknande ställning i ML-kretsarna, och folk ser upp till honom för ultimat visdom (jag skojar inte!).

Det här är inte en kurs för nybörjare, men om du redan är bra på att gräla med data och inte har något emot lite sidoforskning när du går, är den här kursen den bästa rekommendationen.

#5. Udacity

Bli en maskininlärningsingenjör genom att ta denna nanoexamen Udacity.

Det kommer att ta cirka 3 månader att slutföra och avsluta kursen, du förväntas ha en rättvis uppfattning om maskininlärningsalgoritmer, hur man modellerar och distribuerar dem till produktion.

Slutsats

Det finns inget slut på resurser på internet, och du kan lätt gå vilse när du börjar. De flesta handledningarna och diskussionerna där ute är matematiskt utmanande eller saknar struktur och kan bryta ditt självförtroende innan du ens kommit igång.

Så jag skulle vilja varna dig för självförstörelse: håll ditt mål blygsamt och rör dig i minimala steg. Machine Learning är inget du kan bli bekväm med inom en dag eller två, men ganska snart kommer du att börja trivas, och vem vet, kanske till och med skapa något skrämmande!

Ha så kul! 🙂