Hvad er den bedste måde at lære maskinlæring på uden at tage nogen onlinekurser?
Hvad er den bedste måde at begynde at lære maskinlæring og deep learning uden at tage nogen online kurser? blev oprindeligt vist på Quora: stedet for at få og dele viden, der gør det muligt for folk at lære fra andre og bedre forstå verden.
Svar af Eric Jang, Research engineer at Google Brain, på Quora:
Lad mig først starte med at sige, at der ikke findes én “bedste måde” at lære maskinlæring på, og du bør finde et system, der fungerer godt for dig. Nogle mennesker foretrækker kursernes struktur, andre kan lide at læse bøger i deres eget tempo, og nogle vil gerne dykke direkte ned i koden.
Jeg startede med Andrew Ng’s kursus i maskinlæring på Coursera i 2012, da jeg næsten ikke vidste noget om lineær algebra og intet om statistik eller maskinlæring. Bemærk, at selv om kurset dækkede neurale netværk, var det ikke et kursus om Deep Learning. Jeg nød virkelig, hvordan kurset formulerede “maskinlæring” som intet andet end numerisk optimering.
Hvis online-kurser er for langsomme for dig, er den bedste konsoliderede ressource sandsynligvis Deep Learning-bogen af Goodfellow, Bengio og Courville. Den har et par kapitler dedikeret til det grundlæggende (lidt ligesom det, der er dækket i Ng’s klasse) og springer derefter ind i praktiske DNN’er.
En statistisk/matematisk stringent baggrund er ikke nødvendig for at lave nyttigt Deep Learning-arbejde, men det hjælper virkelig med at formulere hypoteser om, hvorfor modellerne virker/ikke virker, og hvad der kan hjælpe. Murphy’s Probabilistic Machine Learning lærebog er et godt fundament for matematisk rigoristisk ML (og har også gode diagrammer!)
Når du er færdig med DL-bogen, kan du “specialisere” dig i et af underområderne/underunderområderne inden for Deep Learning ved selv at implementere nogle af papirerne. Nogle eksempler på emner:
- Bayesian Deep Learning (kombination af neurale net med grafiske modeller)
- Deep Reinforcement Learning (AlphaGo, Atari-spillende AI, Robotics)
- Generative Models (GANs, PixelCNN, VAEs)
- Adversarial Methods (GANs, Actor-Critic)
- Theory of Deep Learning
- Computer Vision
- NLP/Speech (translation, captioning, seq2seq models)
- Symbolic reasoning (e.g. proof-solving)
- Recurrent Neural Networks (f.eks. LSTM’er, ekstern hukommelse, opmærksomhed)
- Anvendelser (løsning af domænespecifikke problemer som f.eks. klassificering af kræft, proteinfoldning, læbelæsning fra video)
- Meta-learning / learning-to-learn (Synthetic Gradients, Pathnet)
Deplearning-feltet er vokset dramatisk i de sidste par år, til et punkt, hvor det ikke er realistisk at lære alle underområderne inden for deep learning at kende på kort tid. Jeg anbefaler at dykke dybt ned i et bestemt underområde, og så bliver det nemmere at lære de andre underområder, når man først mestrer ét område. Disse områder har ikke så meget til fælles længere, ud over at de alle udnytter deep learning’s udtryksstyrke til at lære opgaver fra ende til anden, og er af en generelt eksperimentel karakter (snarere end teoretisk datalogi).
I disse dage kommer de mest interessante Deep Learning-artikler med en eller anden offentligt tilgængelig implementering i TensorFlow, Pytorch, Torch, Torch, Keras eller Theano, så en måde, hvorpå du hurtigt kan opbygge en intuition, er at se, om du kan forbedre en eksisterende model (f.eks. lave et bedre ResNet).
Du bør sandsynligvis ikke implementere din egen neurale netpakke i Python fra bunden. Det er meget arbejde at få de små detaljer rigtigt (se f.eks. denne kommentar om, hvordan softmax-operationen er implementeret i TensorFlow).
Deep Learning-rammer er komplekse og tager lidt tid at lære, og den hurtigste måde at mestre en DL-ramme på er at implementere en udfordrende neuralnetarkitektur, der udøver obskure funktioner i rammen eller idéer, der spænder over flere delområder af DL. Nogle anbefalinger om vanskelige arkitekturer/træningspipelines:
- Progressive Nets
- DenseNet
- Syntetiske gradienter
- Neurale Turingmaskiner
- Embed-to-Control
- Neural Machine Translation
Finalt, mange forskere inden for maskinlæring er på Twitter, og Reddit Machine Learning-fællesskabet er en god måde at få de seneste nyheder om neurale netværk på. Feltet er meget konkurrencepræget og bevæger sig meget hurtigt, så det hjælper at holde sig opdateret.
Dette spørgsmål blev oprindeligt vist på Quora. stedet for at opnå og dele viden, der gør det muligt for folk at lære af andre og bedre forstå verden. Du kan følge Quora på Twitter, Facebook og Google+. Flere spørgsmål:
- Machine Learning: Hvor svært er det for en motiveret videnskabsmand at opbygge et automatiseret handelssystem hjemmefra?
- Computerprogrammering: Hvordan kan man spotte en nybegynderprogrammør?
- Læring: Hvordan kan jeg tænke hurtigere og bedre?
Quora: Stedet for at få og dele viden, der giver folk mulighed for at lære af andre og bedre forstå verden.