Vilket är det bästa sättet att lära sig maskininlärning utan att ta några onlinekurser?
Vad är det bästa sättet att börja lära sig maskininlärning och djupinlärning utan att ta några onlinekurser? dök ursprungligen upp på Quora: platsen för att få och dela kunskap, vilket gör det möjligt för människor att lära sig av andra och bättre förstå världen.
Svar från Eric Jang, forskningsingenjör på Google Brain, på Quora:
Låt mig först börja med att säga att det inte finns något enda ”bästa sättet” att lära sig maskininlärning, och du bör hitta ett system som fungerar bra för dig. Vissa människor föredrar kursernas struktur, andra tycker om att läsa böcker i sin egen takt och vissa vill dyka ner direkt i koden.
Jag började med Andrew Ngs kurs i maskininlärning på Coursera 2012, med nästan noll koll på linjär algebra och ingenting om statistik eller maskininlärning. Observera att även om kursen behandlade neurala nätverk var det inte en kurs om djupinlärning. Jag gillade verkligen hur kursen formulerade ”maskininlärning” som inget annat än numerisk optimering.
Om onlinekurser är för långsamma för dig är den bästa konsoliderade resursen förmodligen Deep Learning book av Goodfellow, Bengio och Courville. Den innehåller några kapitel om grunderna (ungefär som det som behandlas i Ngs kurs) och hoppar sedan in i praktiska DNNs.
En statistisk/matematiskt rigorös bakgrund krävs inte för att göra användbart Deep Learning-arbete, men det hjälper verkligen till att formulera hypoteser om varför modellerna fungerar/inte fungerar, och vad som kan hjälpa. Murphys lärobok Probabilistic Machine Learning är en bra grund för matematiskt rigorös ML (och har bra diagram också!)
När du är klar med DL-boken kan du ”specialisera dig” på ett av Deep Learning:s delområden/underdelområden genom att implementera några av artiklarna själv. Några exempel på ämnen:
- Bayesiansk djupinlärning (kombinerar neurala nät med grafiska modeller)
- Djup förstärkningsinlärning (AlphaGo, AI som spelar Atari, robotik)
- Generativa modeller (GANs, PixelCNN, VAEs)
- Adversariella metoder (GANs, Actor-Critic)
- Teori om djupinlärning
- Datorseende
- NLP/Tal (översättning, textning, seq2seq-modeller)
- Symboliska resonemang (t.ex.g. bevislösning)
- Recurrent Neural Networks (t.ex. LSTMs, externt minne, uppmärksamhet)
- Användningar (lösa domänspecifika problem som klassificering av cancer, proteinveckning, läppläsning från video)
- Meta-lärande / learning-to-learn (Synthetic Gradients, Pathnet)
Djupinlärningsfältet har expanderat dramatiskt under de senaste åren, till den grad att det inte är realistiskt att på kort tid kunna lära sig känna alla delområden inom djupinlärning. Jag rekommenderar att man dyker djupt ner i ett visst delområde, och sedan blir det lättare att lära sig de andra delområdena när man väl behärskar ett område. Dessa områden har inte så mycket gemensamt längre, förutom det faktum att de alla utnyttjar djupinlärningens uttrycksförmåga för att lära sig uppgifter från början till slut, och är av allmänt experimentell karaktär (snarare än teoretisk datavetenskap).
Nuförtiden kommer de mest intressanta uppsatserna om djupinlärning med någon allmänt tillgänglig implementering i TensorFlow, Pytorch, Torch, Keras eller Theano, så ett sätt att snabbt bygga upp en intuition är att se om du kan förbättra en befintlig modell (t.ex. göra ett bättre ResNet).
Du bör antagligen inte implementera ett eget paket med neurala nät i Python från grunden. Det är mycket arbete att få de små detaljerna rätt (se till exempel den här kommentaren om hur softmax-operationen implementeras i TensorFlow).
Deep Learning-ramverk är komplexa och tar lite tid att lära sig. Det snabbaste sättet att behärska ett DL-ramverk är att implementera en utmanande neurala nätarkitektur som tränar obskyra funktioner i ramverket eller idéer som sträcker sig över flera delområden inom DL. Några rekommendationer om knepiga arkitekturer/träningspipelines:
- Progressiva nät
- DenseNet
- Syntetiska gradienter
- Neurala Turingmaskiner
- Embed-till-kontroll
- Neural maskinöversättning
Slutligt, Många forskare inom maskininlärning finns på Twitter och Reddit Machine Learning community är ett bra sätt att få de senaste nyheterna om neurala nätverk. Området är mycket konkurrensutsatt och rör sig väldigt snabbt så det hjälper att hålla sig uppdaterad.
Denna fråga dök ursprungligen upp på Quora. the place to gain and share knowledge, empowering people to learn from others and better understand the world. Du kan följa Quora på Twitter, Facebook och Google+. Fler frågor:
- Maskininlärning: Hur svårt är det för en motiverad forskare att bygga ett automatiserat handelssystem hemifrån?
- Datorprogrammering: Hur upptäcker man en nybörjarprogrammerare?
- Inlärning: Hur kan jag tänka snabbare och bättre?
Quora: platsen för att inhämta och dela kunskap, vilket gör det möjligt för människor att lära sig av andra och bättre förstå världen.