Bedste svar
foruddannelse i dyb læring er intet andet end , træne maskinerne, inden de begynder at udføre en bestemt opgave.
For eksempel:
- Du vil træne et neuralt netværk til at udføre en opgave, tage klassifikation på en datasæt med billeder. Du begynder at træne ved at initialisere vægtene tilfældigt. Så snart du starter med træningen, ændres vægten eller varieres for at udføre opgaverne med mindre fejl (optimeret). Når du er tilfreds med træningsresultaterne, gemmer du vægten på dit netværk, så det trænede neurale netværk kan udføre den samme opgave næste gang med en god optimering og bedre resultater.
- Næste gang start fra træning med tilfældigt initialiserede vægte, kan du bruge de vægte, du har gemt fra det forrige netværk, som de indledende vægtværdier for dit nye eksperiment. Initialisering af vægten på denne måde kaldes at bruge et foruddannet netværk ……………………….
Det første netværk er dit foruddannede netværk. Den anden er det netværk, du finjusterer.
Den grundlæggende idé bag foruddannelse er, at tilfældig initialisering af input er godt .. tilfældig, værdierne af vægte har intet at gøre med opgave, du prøver at løse.
Værdierne fra det foregående, træning skal være bedre end den tidligere træning, værdierne skal initialiseres korrekt til opgaven, vi kan lige så godt indstille dem til de optimale værdier.
Derfor giver Pre-training netværket et forspring. Som om den har set dataene før.
Svar
For det første vil jeg antage, at vi er på planeten Merkur, hvor en uge er cirka 58 uger. Forudsat at du bruger omkring 8 timer om dagen på at lære 5 dage om ugen, har du 2320 timer, nok til at have et godt nok greb om dyb læring til at gå videre som forskningsingeniør og forsker på begynderniveau.
Så først skal du gøre dig selv en tjeneste og få fat i Deep Learning bogen af Goodfellow et al. Det er en ekstremt SOLID bog om dyb læring, der ikke viger væk fra noget af matematikken, mens det ikke er alt for pedantisk. For eksempel har det en fantastisk måde at forklare, hvad der sker, når du optimerer KL-divergens den anden vej, hvad L1- og L2-tab faktisk gør med dine vægte (med hensyn til egenvektorer for tabsfunktionen), intuition bag LSTMer og så videre. Start med den første del af bogen. Det tager cirka to uger at fordøje det materiale (YMMV) fuldstændigt. Hvis du er forbi denne uge uden at kede dig eller køre ned af den matematiske kompleksitet, er du nu klar til at opgradere til maskinlæring.
På dette tidspunkt er vi nødt til at stoppe med at læse og begynde at kode. . Men for faktisk at forstå ting skal du ikke downloade Tensorflow, start med at implementere grundlæggende ting (logistisk regression, SVMer, kNN, PCA, GMMer) i god ol ’python. Mange mennesker skynder sig bare at bruge biblioteker på højt niveau uden at forstå, hvordan man kode grundlæggende blokke fra bunden, og du lærer meget, hvis du gør det. For eksempel at lære, at du har brug for at standardisere dine data, før du anvender PCA, hvordan man gør softmax numerisk stabilt, hvorfor du ikke skal genbruge din softmax-funktion til at implementere log-softmax og så videre. For at komme i gang med implementeringen af disse skal du gå over til CS231n og afslutte den første opgave og bygge videre på det for at implementere SVMer og GMMer. Dette ville tage cirka 4 uger (forudsat at du starter uden kendskab til bedøvelse eller python) at implementere og debug. Nu ved du, hvordan du implementerer grundlæggende maskinindlæringsalgoritmer fra bunden.
Du er nu god til at gå videre og læse de fremragende noter på CS231n-webstedet (indtil modul-1). Brug din egen søde tid til at fordøje komplikationer ved optimering af ikke-konvekse funktioner, og ja, IMPLEMENTER alle ting, du læser. Fra momentumbaserede metoder til grundlæggende backprop er implementering nøglen, hvis du rent faktisk vil lære mekanikken. For eksempel, hvis du implementerer backprop alene, vil du indse, hvordan du har brug for at holde masser af data rundt for tilbagegangen, og denne viden kan være meget nyttig, hvis du støder på hukommelsesfejl på et tidspunkt i din DL-teknik karriere. Dette tager yderligere fire uger.
Det har været 10 uger med sindssyg DL nu. Du er nu solid på dine grundlæggende matematiske færdigheder og kan implementere feed forward-net og grundlæggende ML-algoritmer i rå python. Tillykke med det. Lad os styrke det et hak herfra og videre. Det bliver kun sværere (og dermed sjovere).
Tid til at tage vores Deep Learning-bog ud og starte fra det sted, hvor vi slap. Læs kapitel 6, 7 og 8. Kapitel 6 er nemme ting, og det har vi allerede mestret. Kapitel 7 er, hvor det begynder at blive svært – men bogen gør et fremragende stykke arbejde med at destillere matematiske tunge koncepter til let forståelig tekst.For at supplere din læring skal du se denne fantastiske forelæsning – Deep Learning Lecture 11: Max-margin learning, transfer and memory networks .
Dette vil tage yderligere 4 uger, men når dette er gjort, er vi klar til at opgradere til CNNer og RNNer. Vi følger den samme filosofi igen – læs noter fra cs231n, implementer og træn dat net, og læs derefter bogen for at forstå de finere detaljer. Denne fase vil og bør tage længere tid, fordi implementering af backprop i CNNer (med alle klokker og fløjter såsom batchnormalisering) ikke er så let. Det samme gælder LSTMer (se normen for den gradient, og klip, hvis den bliver for stor, eller trunker til kortere sekvenser, hvis den bliver for lille). Pro tip – til træning af LSTMer anbefaler jeg at tjekke PennTree Banks datasæt og træne en sprogmodel for at få en forvirring på omkring 110. Hvis du kan lave at 90ish, tillykke, du gør det rigtigt. For at træne et CNN skal du bare udføre opgave 2 fra CS231n.
Phew. den sidste fase af træning af CNNer / RNNer og derefter læsning af tilhørende materiale fra bogen, satte os tilbage med omkring 6 uger, og vi har nu kun 38 uger i vores stræben efter at blive de allerbedste.
Endelig tid til pip install tensorflow.
Tænk ikke selv på noget andet. Nej, vi laver ikke pytorch (det er dynamisk i naturen, så det er ikke godt, hvis du vil få fat i autodiff-software, men ellers godt) eller theano (ikke stor nok). Eller biblioteker på højt niveau som keras (smukt, men får det hele til at se for let ud). Gå over til dokumenterne og læs MNIST-vejledningen (for eksperter, det er det, vi er nu). Det hele vil være meget underligt i starten, ideen om en beregningsgraf, sessioner og det faktum, at der er en separat “kompilering” og “kørsel” selv inden i selve python. Men når du har fået fat i tingene, begynder du at indse, hvor smukt det er designet, og hvor let det er at udvide – for eksempel er det lige så let at skrive din egen LSTM som at udvide en base LSTM-klasse. Læs koden i selvstudierne ( Tutorials | TensorFlow ) som et sæt opvarmningsøvelser, og gå meget nøje igennem hver tutorial, og forstå hvad hver linje gør og hvorfor. Du lærer, hvordan du organiserer din tensorflowkode. Pro tip – Jeg kan altid lide at have separate abstraktioner til træning, test og forudsigelse. Og en separat build()
-funktion, der bygger hele beregningsgrafen, startende fra pladsholdere, hele vejen til at definere tabsfunktionen og toget\_op, der optimerer den tabsfunktion.
Skamløst stik – Jeg har for nylig kodet op til en model til maskinforståelse (en opgave, jeg virkelig er vild med). For at se, hvordan du samler din modelkode sammen, skal du tjekke MurtyShikhar / Question-Answering . For at teste dine tensorflow-færdigheder skal du oversætte din CNN- og LSTM-kode til tensorflow for at opnå den samme (måske bedre) nøjagtighed / forvirring.
At lære tensorflow tog omkring 8 uger med sindssyg hacking, læsning af selvstudier og frustration over dem tensorflow kompilerer fejl, men jeg håber, at rejsen var givende. Du har nu styrken ved autodiff og et rigtig sejt arsenal af funktioner til bogstaveligt talt at oprette enhver dyb læringsmodel nogensinde. Før vi går videre til nogle forsknings-ting, hvorfor ikke prøve et sjovt projekt i tensorflow? Saml ethvert køligt papir på et veldefineret problem (Machine Translation / Image Captioning / Comprehension / Question-Answering / Visual Question Answering / Style Transfer) og implementer den nyeste model i Tensorflow. Forsøg ikke GANer endnu, for vi er ikke så seje (endnu). Det tager cirka 5 uger at afslutte dit projekt og få konkurrencedygtige resultater, der efterlader cirka 5 uger til bare at læse om den aktuelle forskning.
Jeg er klar over, at 5 uger virkelig er et kort tidsrum til at dække bredden af DL forskning, så hvorfor ikke indsnævre vores anvendelsesområde? Find et problem eller en teknik – det være sig generative modeller eller seq2seq-modeller eller forstærkningslæring. Jeg ved ikke noget om forstærkningslæring (jeg prøver dog at lære), så jeg vil fokusere på de to andre.
For generative modeller, start med denne fantastiske tutorial af vores herre og frelser – NIPS 2016 – Generative kontradiktoriske netværk – Ian Goodfellow , og følg langsomt igennem, pauser og googler efter behov. Du finder disse matematiske færdigheder fra de første par uger MEGET nyttige her. Derefter opfordrer jeg dig til at læse det originale GAN papir og opfølgninger såsom DCGANs , SeqGANs, og den nyeste og sejeste WGAN .
For Seq2Seq, se denne fantastiske forelæsning af en Google Brain-videnskabsmand – Sequence to Sequence Deep Learning (Quoc Le, Google) og tjek derefter ICML 2017-tutorial af Oriol Vinyals – seq2seq icml tutorial .
END.
Det tog noget tid og indsats. Det er slutningen af uge 58, og du har nu en bred forståelse af dyb læring sammen med nogle solide matematiske og tekniske færdigheder. Det er på tide at vove sig dybere (få ordspil?) I Deep Learning-forskning eller måske opbygge en cool app. Jeg overlader beslutningen til dig, din stud DL-ingeniør.