Beste svaret
pre training in Deep learning is nothing but , trene maskinene før de begynner å utføre bestemte oppgaver.
For eksempel:
- Du vil trene et nevralt nettverk for å utføre en oppgave, ta klassifisering på en datasett med bilder. Du begynner å trene ved å initialisere vektene tilfeldig. Så snart du begynner med treningen, blir vektene endret eller varierte for å utføre oppgavene med mindre feil (optimalisert). Når du er fornøyd med treningsresultatene, sparer du vektene i nettverket ditt, slik at det trente nevrale nettverket kan utføre den samme oppgaven neste gang med god optimalisering og bedre resultater.
- Neste gang starter fra trening med tilfeldig initialiserte vekter, kan du bruke vektene du lagret fra forrige nettverk som de innledende vektverdiene for det nye eksperimentet. Å initialisere vektene på denne måten kalles å bruke et forhåndstrent nettverk ……………………….
Det første nettverket er ditt forhåndstrente nettverk. Den andre er nettverket du finjusterer.
Den grunnleggende ideen bak pre-trening er at tilfeldig initialisering av innganger er bra .. tilfeldig, verdiene til vektene har ingenting å gjøre med oppgave du prøver å løse.
Verdiene til det foregående, opplæringen må være bedre enn forrige opplæring, verdiene må initialiseres riktig for oppgaven, vi kan like godt sette dem til de optimale verdiene.
Derfor gir førtrening nettverket et forsprang. Som om den har sett dataene før.
Svar
For det første skal jeg anta at vi er på planeten Merkur hvor en uke er omtrent 58 uker. Forutsatt at du bruker omtrent 8 timer om dagen på å lære 5 dager i uken, har du 2320 timer, nok til å ha et godt nok grep om dyp læring til å gå videre som forskningsingeniør, og en nybegynnerforsker.
Så først, gjør deg selv en tjeneste og få tak i Deep Learning -boka av Goodfellow et al. Det er en ekstremt SOLID bok om dyp læring som ikke skyr noe for matematikken, mens den ikke er altfor pedantisk. For eksempel har den en flott måte å forklare hva som skjer når du optimaliserer KL-divergens den andre veien, hva L1- og L2-tap faktisk gjør med vektene dine (når det gjelder egenvektorer for tapfunksjonen), intuisjon bak LSTM og så videre. Start med den første delen av boka. Det tar omtrent to uker å fordøye materialet (YMMV) helt. Hvis du er forbi denne uken uten å kjede deg eller bli kjørt av den matematiske kompleksiteten, er du nå klar til å oppgradere til maskinlæring.
På dette tidspunktet må vi slutte å lese og begynne å kode. . Men for å faktisk forstå ting, ikke last ned Tensorflow, begynn med å implementere grunnleggende ting (Logistisk regresjon, SVM, kNN, PCA, GMM) i god ol ’python. Mange mennesker skynder seg bare å bruke biblioteker på høyt nivå uten å forstå hvordan de skal kode opp grunnleggende blokker fra bunnen av, og du vil lære mye hvis du gjør det. For eksempel å lære at du trenger å standardisere dataene dine før du bruker PCA, hvordan du gjør softmax numerisk stabilt, hvorfor du ikke bør bruke softmax-funksjonen din til å implementere log-softmax og så videre. For å komme i gang med å implementere disse, gå til CS231n og fullfør den første oppgaven, og bygg videre på den for å implementere SVM og GMM. Dette vil ta omtrent 4 uker (forutsatt at du begynner uten kunnskap om nummen eller python) å implementere og feilsøke. Nå vet du hvordan du implementerer grunnleggende maskinlæringsalgoritmer fra bunnen av.
Du er nå god til å fortsette og lese de utmerkede merknadene på CS231n-nettstedet (til modul-1). Ta din egen søte tid til å fordøye komplikasjonene ved å optimalisere ikke-konvekse funksjoner, og ja, implementer alt du leser. Fra momentumbaserte metoder til grunnleggende backprop, er implementering nøkkelen hvis du faktisk vil lære mekanikken. For eksempel, hvis du implementerer backprop på egen hånd, vil du innse hvordan du trenger å beholde massevis av data for bakoverpasset, og denne kunnskapen kan være veldig nyttig hvis du støter på minnefeil på et eller annet tidspunkt i DL-engineering. karriere. Dette vil ta ytterligere fire uker.
Det har gått ti uker med vanvittig DL nå. Du er nå solid på grunnleggende matteferdigheter, og kan implementere feed forward-nett og grunnleggende ML-algoritmer i rå python. Gratulerer med det. La oss trappe det opp et hakk herfra og videre. Det blir bare vanskeligere (og dermed morsommere).
På tide å ta ut vår Deep Learning-bok, og starte fra der vi slapp. Les kapittel 6, 7 og 8. Kapittel 6 er enkle ting, og det har vi allerede mestret. Kapittel 7 er hvor det begynner å bli vanskelig – men boka gjør en utmerket jobb med å destillere matematiske tunge konsepter til lett forståelig tekst.For å supplere læringen din, se denne fantastiske forelesningen – Deep Learning Lecture 11: Max-margin learning, transfer and memory networks .
Dette vil ta ytterligere 4 uker, men når dette er gjort, er vi klare til å oppgradere til CNN og RNN. Vi vil følge den samme filosofien igjen – lese notater fra cs231n, implementere og trene dat net, og deretter lese boka for å forstå de finere detaljene. Denne fasen vil og bør ta lengre tid fordi implementering av backprop i CNNs (med alle bjeller og fløyter som batch normalisering) ikke er så lett. Det samme gjelder LSTM (se normen for den gradienten, og klipp ut hvis den blir for stor, eller avkort til kortere sekvenser hvis den blir for liten). Pro tip – for opplæring av LSTM-er anbefaler jeg å sjekke ut PennTree Bank-datasettet og trene en språkmodell for å få en forvirring på rundt 110. Hvis du kan lage det 90ish, gratulerer, du gjør det riktig. For å trene et CNN, gjør du bare oppgave 2 fra CS231n.
Phew. den siste fasen med å trene CNNs / RNNs og deretter lese tilknyttet materiale fra boken, satte oss tilbake med omtrent 6 uker, og vi har nå bare 38 uker på jakt etter å bli de aller beste.
Endelig, tid til pip install tensorflow.
Ikke tenk engang på noe annet. Nei, vi gjør ikke pytorch (det er dynamisk i naturen, så det er ikke bra hvis du vil ha tak i autodiff-programvare, men ellers flott) eller theano (ikke stor nok). Eller biblioteker på høyt nivå som keras (vakkert, men gjør at det hele ser for lett ut). Gå til dokumentene og les MNIST-veiledningen (for eksperter, det er det vi er nå). Det hele kommer til å være veldig rart i starten, ideen om en beregningsgraf, økter, og det faktum at det er en egen «kompilere» og «løpe» selv i selve python. Men når du har fått tak i ting, begynner du å innse hvor vakkert det er designet og hvor enkelt det er å utvide – for eksempel er det like enkelt å skrive din egen LSTM som å utvide en base LSTM-klasse. Som et sett med oppvarmingsøvelser, les koden i veiledningen ( Opplæringsprogrammer | TensorFlow ), og gå gjennom hver opplæring veldig nøye, og forstå hva hver linje gjør og hvorfor. Du lærer hvordan du organiserer tensorflow-koden. Pro tip – Jeg liker alltid å ha separate abstraksjoner for trening, testing og forutsigelse. Og en egen build()
-funksjon som bygger hele beregningsgrafen, med utgangspunkt i plassholdere, hele veien for å definere tapsfunksjonen og train\_op som optimaliserer den tapsfunksjonen.
Skamløs plugg – Jeg kodet nylig opp en modell for maskinforståelse (en oppgave jeg har vokst til å like). For å se hvordan du setter sammen modellkoden din, kan du sjekke ut MurtyShikhar / Question-Answering . For å teste tensorflow-ferdighetene dine, oversett CNN- og LSTM-koden din til tensorflow for å oppnå samme (kanskje bedre) nøyaktighet / forvirring. tensorflow kompilerer feil, men jeg håper reisen var givende. Du har nå kraften til autodiff og et veldig kult arsenal av funksjoner for å koble bokstavelig talt ALLE dyp læringsmodeller noensinne. Før vi går videre til noen undersøkelser, hvorfor ikke prøve et morsomt prosjekt i tensorflow? Plukk opp noe kult papir på et veldefinert problem (maskinoversettelse / bildeteksting / forståelse / spørsmålsbesvarelse / visuell spørsmålsvarsling / stiloverføring) og implementer den nyeste modellen i Tensorflow. Ikke prøv GAN-er ennå, for vi er ikke så kule (ennå). Det tar omtrent fem uker å avslutte prosjektet ditt og får konkurransedyktige resultater som gir omtrent 5 uker for bare å lese om gjeldende forskning. forskning, så hvorfor ikke begrense omfanget vårt? Plukk opp ett problem eller en teknikk – det være seg generative modeller, eller seq2seq-modeller eller forsterkningslæring. Jeg vet ingenting om forsterkningslæring (jeg prøver å lære skjønt), så jeg vil fokusere på de to andre.
For generative modeller, start med denne fantastiske opplæringen av vår herre og frelser – NIPS 2016 – Generative Adversarial Networks – Ian Goodfellow , og følg sakte gjennom, pauser og googler etter behov. Du vil finne disse matteferdighetene fra de første ukene veldig nyttige her. Jeg ber deg da om å lese det originale GAN papiret , og oppfølging som DCGANs , SeqGANs, og den nyeste og kuleste WGAN .
For Seq2Seq, se denne fantastiske forelesningen av en Google Brain-forsker – Sequence to Sequence Deep Learning (Quoc Le, Google) og sjekk deretter ICML-opplæringen 2017 av Oriol Vinyals – seq2seq icml tutorial .
SLUTTET.
Det tok litt tid og innsats. Det er slutten på uke 58, og du har nå en bred forståelse av Deep Learning, sammen med noen solide matte- og ingeniørferdigheter. Det er på tide å gå dypere (få ordspillet?) I Deep Learning-forskning, eller kanskje bygge en kul app. Jeg overlater avgjørelsen til deg, din stud-DL-ingeniør.