Vad är förutbildning i djupinlärning hur fungerar det?

Bästa svaret

förutbildning i djupinlärning är inget annat än , träna maskinerna innan de börjar utföra vissa uppgifter.

Till exempel:

  1. Du vill träna ett neuralt nätverk för att utföra en uppgift, ta klassificering på en datauppsättning av bilder. Du börjar träna genom att initiera vikterna slumpmässigt. Så fort du börjar med träningen ändras vikterna eller varieras för att utföra uppgifterna med mindre misstag (optimerad). När du är nöjd med träningsresultaten sparar du vikterna i ditt nätverk så att det utbildade neurala nätverket kan utföra samma uppgift nästa gång med en bra optimering och bättre resultat.
  2. Nästa gång börjar från träning med slumpmässigt initierade vikter kan du använda vikterna som du sparade från det tidigare nätverket som initialviktvärden för ditt nya experiment. Att initiera vikterna på detta sätt kallas för att använda ett förutbildat nätverk ……………………….

Det första nätverket är ditt förutbildade nätverk. Den andra är nätverket du finjusterar.

Grundidén bakom förutbildningen är att, slumpmässig initialisering av ingångar är bra .. slumpmässigt, värdena på vikterna har inget att göra med uppgift du försöker lösa.

Värdena från föregående, träningen måste vara bättre än den tidigare träningen, värdena måste initialiseras ordentligt för uppgiften, vi kan lika gärna ställa dem till de optimala värdena.

Förträning ger därför nätverket ett försprång. Som om den sett data tidigare.

Svar

För det första ska jag anta att vi är på planeten Merkurius där en vecka är ungefär 58 veckor. Om du antar att du spenderar cirka 8 timmar om dagen för att lära dig fem dagar i veckan, har du 2320 timmar, tillräckligt för att du ska ha tillräckligt bra grepp om djupinlärning för att försvinna som forskningsingenjör och forskare på nybörjare.

Så först och främst, gör dig själv en tjänst och ta tag i Deep Learning -boken av Goodfellow et al. Det är en extremt SOLID bok om djupinlärning som inte skämmer bort matten, utan att vara alltför pedantisk. Det har till exempel ett bra sätt att förklara vad som händer när du optimerar KL-avvikelsen tvärtom, vad L1- och L2-förluster faktiskt gör för dina vikter (när det gäller egenvektorer för förlustfunktionen), intuition bakom LSTM och så vidare. Börja med den första delen av boken. Det tar cirka två veckor att helt smälta det materialet (YMMV). Om du har gått den här veckan utan att bli uttråkad eller fastnat av den matematiska komplexiteten är du nu redo att ta examen till maskininlärning. . Men för att faktiskt förstå saker, ladda inte ner Tensorflow, börja med att implementera grundläggande saker (logistisk regression, SVM, kNN, PCA, GMM) i bra ol ’python. Många människor rusar bara för att använda bibliotek på hög nivå utan att förstå hur man kodar grundläggande block från grunden, och du lär dig mycket om du gör det. Till exempel att lära dig att du behöver standardisera dina data innan du använder PCA, hur man gör softmax numeriskt stabilt, varför du inte ska återanvända din softmax-funktion för att implementera log-softmax och så vidare. För att komma igång med att implementera dessa, gå över till CS231n och avsluta det första uppdraget, bygga vidare på det för att implementera SVM och GMM. Det tar cirka fyra veckor (förutsatt att du börjar utan kunskap om domningar eller python) att implementera och felsöka. Nu vet du hur man implementerar grundläggande maskininlärningsalgoritmer från grunden.

Nu är det bra att läsa de utmärkta anteckningarna på CS231n-webbplatsen (till modul-1). Ta din egen söta tid för att smälta komplicerade funktioner för att optimera icke-konvexa funktioner, och ja, implementera allt du läser. Från momentumbaserade metoder till grundläggande bakgrund är implementering nyckeln om du faktiskt vill lära dig mekaniken. Till exempel, om du implementerar backprop på egen hand, kommer du att inse hur du behöver behålla massor av data för bakåtpasset och denna kunskap kan vara till stor hjälp om du stöter på minnesfel någon gång i din DL-teknik karriär. Det tar ytterligare fyra veckor.

Det har gått tio veckor med galen DL nu. Du är nu solid på dina grundläggande matematiska färdigheter och kan implementera matningsnät och grundläggande ML-algoritmer i rå python. Grattis till det. Låt oss förstärka det härifrån. Det kommer bara att bli svårare (och därmed roligare).

Dags att ta ut vår Deep Learning-bok och börja från där vi slutade. Läs kapitel 6, 7 och 8. Kapitel 6 är enkla saker, och det har vi redan behärskat. Kapitel 7 är där det börjar bli svårt – men boken gör ett utmärkt jobb för att destillera matematiska tunga koncept till lättförståelig text.För att komplettera ditt lärande, titta på den här fantastiska föreläsningen – Deep Learning Lecture 11: Max-margin learning, transfer and memory networks .

Detta tar ytterligare fyra veckor men med detta gjort är vi redo att ta examen till CNN och RNN. Vi följer samma filosofi igen – läs anteckningar från cs231n, implementera och träna dat net och läs sedan boken för att förstå de finare detaljerna. Den här fasen kommer och bör ta längre tid eftersom det inte är så enkelt att implementera backprop i CNN (med alla klockor och visselpipor som batchnormalisering). Samma sak gäller LSTM (se normen för den lutningen och klipp om den blir för stor, eller trunkeras till kortare sekvenser om den blir för liten). Pro tip – för utbildning av LSTM rekommenderar jag att du tittar i PennTree Banks dataset och tränar en språkmodell för att få en förvirring på cirka 110. Om du kan göra så 90ish, grattis, du gör det rätt. För att träna ett CNN, gör bara uppgift 2 från CS231n.

Phew. den sista fasen av att utbilda CNN / RNN och sedan läsa tillhörande material från boken, satte oss tillbaka med cirka 6 veckor och vi har nu bara 38 veckor i vår strävan att bli de allra bästa.

Slutligen, tiden till pip install tensorflow. Tänk inte ens på något annat. Nej, vi gör inte pytorch (det är dynamiskt till sin natur så inte bra om du vill få tag på autodiff-programvara, men bra annars) eller theano (inte tillräckligt stor). Eller bibliotek på hög nivå som keras (vackert, men gör att allt ser för enkelt ut). Gå över till dokumenten och läs MNIST-handledningen (för experter, det är vad vi är nu). Allt kommer att bli väldigt konstigt först, tanken på en beräkningsgraf, sessioner och det faktum att det finns en separat ”kompilera” och ”köra” även inom själva python. Men när du har tagit på saker och ting kommer du att inse hur vackert det har utformats och hur enkelt det är att förlänga – till exempel att skriva din egen LSTM är lika enkelt som att förlänga en bas-LSTM-klass. Som en uppsättning uppvärmningsövningar, läs koden i självstudierna ( Självstudier | TensorFlow ) och gå igenom varje självstudie väldigt noggrant och förstå vad varje rad gör och varför. Du lär dig hur du organiserar din tensorflödeskod. Pro tip – Jag gillar alltid att ha separata abstraktioner för träning, testning och förutsägelse. Och en separat build() -funktion som bygger hela beräkningsdiagrammet, med start från platshållare, hela vägen för att definiera förlustfunktionen och train\_op som optimerar den förlustfunktionen.

Skamlös plugg – Jag kodade nyligen upp en modell för maskinförståelse (en uppgift som jag verkligen har gillat). För att se hur du monterar din modellkod tillsammans, kolla in MurtyShikhar / Question-Answering . För att testa dina tensorflow-färdigheter översätter du din CNN- och LSTM-kod till tensorflow för att uppnå samma (kanske bättre) noggrannhet / förvirring.

Att lära sig tensorflow tog ungefär 8 veckor av galen hacking, läste självstudier, blev frustrerad över dem tensorflow kompilerar fel men jag hoppas att resan var givande. Du har nu kraften i autodiff och en riktigt cool arsenal av funktioner för att skapa bokstavligen NÅGON djupinlärningsmodell någonsin. Innan vi går vidare till några forsknings-saker, varför inte prova ett roligt projekt i tensorflow? Plocka upp något coolt papper på ett väldefinierat problem (maskinöversättning / bildtextning / förståelse / frågesvar / visuell frågesvar / stilöverföring) och implementera den senaste tekniska modellen i Tensorflow. Försök inte GANs än, coz vi är inte så coola (ännu). Det tar ungefär fem veckor att avsluta ditt projekt och få konkurrenskraftiga resultat som lämnar cirka fem veckor för att bara läsa om aktuell forskning.

Jag inser att fem veckor verkligen är en kort tidsrymd för att täcka bredden på DL forskning, så varför inte begränsa vårt omfång? Plocka upp ett problem eller en teknik – vare sig det är generativa modeller eller seq2seq-modeller eller förstärkningslärande. Jag vet ingenting om förstärkningslärande (jag försöker dock lära mig), så jag kommer att fokusera på de andra två.

För generativa modeller, börja med denna fantastiska handledning av vår herre och frälsare – NIPS 2016 – Generativa kontroversiella nätverk – Ian Goodfellow , och följ långsamt, pausa och googla efter behov. Du hittar de matematiska färdigheterna från de första veckorna MYCKET användbara här. Jag uppmanar dig då att läsa originalet GAN papper och uppföljningar som DCGAN , SeqGANs, och det nyaste och coolaste WGAN .

För Seq2Seq, se denna fantastiska föreläsning av en Google Brain Scientist – Sequence to Sequence Deep Learning (Quoc Le, Google) och kolla sedan ICML-handboken 2017 av Oriol Vinyals – seq2seq icml-handledning .

SLUTET.

Det tog lite tid och ansträngning. Det är slutet på vecka 58 och du har nu en bred förståelse för Deep Learning, tillsammans med några gedigna matematiska och tekniska färdigheter. Det är dags att gå djupare (få ordet?) I Deep Learning-forskning eller kanske bygga en cool app. Jag lämnar beslutet åt dig, din stud-DL-ingenjör.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *