Wat is pretraining in deep learning hoe werkt het?

Beste antwoord

pre-training in deep learning is niets anders , de machines trainen voordat ze een bepaalde taak gaan uitvoeren.

Bijvoorbeeld:

  1. U wilt een neuraal netwerk trainen om een ​​taak uit te voeren, neem classificatie op een gegevensset met afbeeldingen. U begint met trainen door de gewichten willekeurig te initialiseren. Zodra je met de training begint, worden de gewichten veranderd of gevarieerd om de taken met minder fouten uit te voeren (geoptimaliseerd). Als u eenmaal tevreden bent met de trainingsresultaten, slaat u de gewichten van uw netwerk op, zodat het getrainde neurale netwerk de volgende keer dezelfde taak kan uitvoeren met een goede optimalisatie en betere resultaten.
  2. De volgende keer start u vanaf Als u met willekeurig geïnitialiseerde gewichten traint, kunt u de gewichten die u uit het vorige netwerk hebt opgeslagen, gebruiken als de initiële gewichtswaarden voor uw nieuwe experiment. Het op deze manier initialiseren van de gewichten wordt aangeduid als het gebruik van een voorgetraind netwerk ……………………….

Het eerste netwerk is uw voorgetrainde netwerk. De tweede is het netwerk dat je aan het finetunen bent.

Het basisidee achter pre-training is dat willekeurige initialisatie van invoer goed is .. willekeurig, de waarden van de gewichten hebben niets te maken met de taak die u probeert op te lossen.

De waarden van de voorgaande training moeten beter zijn dan de vorige training, de waarden moeten correct worden geïnitialiseerd voor de taak, we kunnen ze net zo goed instellen op de optimale waarden.

Pre-training geeft het netwerk daarom een ​​voorsprong. Alsof het de gegevens eerder heeft gezien.

Antwoord

Ten eerste ga ik ervan uit dat we ons op de planeet Mercurius bevinden, waar een week ongeveer 58 weken duurt. Ervan uitgaande dat je ongeveer 8 uur per dag besteedt aan leren gedurende 5 dagen per week, heb je 2320 uur, genoeg om voldoende grip te hebben op diep leren om door te gaan als onderzoekingenieur en als onderzoeker op beginnersniveau.

Doe jezelf dus eerst een plezier en bemachtig het boek Deep Learning van Goodfellow et al. Het is een buitengewoon SOLID boek over diep leren dat geen enkele wiskunde uit de weg gaat, terwijl het niet overdreven pedant is. Het heeft bijvoorbeeld een geweldige manier om uit te leggen wat er gebeurt als je KL-divergentie op de andere manier optimaliseert, wat L1- en L2-verliezen eigenlijk met je gewichten doen (in termen van eigenvectoren van de verliesfunctie), intuïtie achter LSTMs enzovoort. Begin met het eerste deel van het boek. Het duurt ongeveer 2 weken om dat materiaal volledig te verteren (YMMV). Als je deze week voorbij bent zonder je te vervelen of vastgelopen te worden door de wiskundige complexiteit, ben je nu klaar om over te stappen op machine learning.

Op dit punt moeten we stoppen met lezen en beginnen met coderen . Maar om dingen echt te begrijpen, download Tensorflow niet, begin met het implementeren van basisdingen (Logistische regressie, SVMs, kNN, PCA, GMMs) in goede oude python. Veel mensen haasten zich gewoon om bibliotheken van hoog niveau te gebruiken zonder te begrijpen hoe ze basisblokken helemaal opnieuw kunnen coderen, en u zult veel leren als u dat doet. U leert bijvoorbeeld dat u uw gegevens moet standaardiseren voordat u PCA toepast, hoe u softmax numeriek stabiel kunt maken, waarom u uw softmax-functie niet opnieuw moet gebruiken om log-softmax te implementeren, enzovoort. Om aan de slag te gaan met het implementeren van deze, ga je naar CS231n en voltooi je de eerste opdracht en bouw je daarop voort om SVMs en GMMs te implementeren. Dit zou ongeveer 4 weken duren (ervan uitgaande dat u begint zonder kennis van numpy of python) om te implementeren en te debuggen. Nu weet u hoe u basisalgoritmen voor machine learning helemaal opnieuw kunt implementeren.

U bent nu klaar om de uitstekende opmerkingen op de CS231n-website te lezen (tot module-1). Neem uw eigen zoete tijd om de fijne kneepjes van het optimaliseren van niet-convexe functies te verwerken, en ja, IMPLEMENTeer alles wat u leest. Van op momentum gebaseerde methoden tot eenvoudige backprop, implementatie is de sleutel als je de mechanica echt wilt leren. Als u bijvoorbeeld zelf backprop implementeert, realiseert u zich hoe u een hoop gegevens moet bewaren voor de backward pass en deze kennis kan erg handig zijn als u op een bepaald moment in uw DL-engineering te maken krijgt met geheugenfouten. carrière. Dit duurt nog 4 weken.

Het is nu 10 weken krankzinnig DL. U bent nu solide op uw basiswiskundige vaardigheden en kunt feed-forward-netten en basis-ML-algoritmen implementeren in onbewerkte python. Gefeliciteerd. Laten we vanaf nu nog een stapje verder gaan. Het wordt alleen maar moeilijker (en dus leuker).

Tijd om ons Deep Learning-boek tevoorschijn te halen en te beginnen waar we waren gebleven. Lees de hoofdstukken 6, 7 en 8. Hoofdstuk 6 is eenvoudig, en dat hebben we al onder de knie. Hoofdstuk 7 is waar het moeilijk begint te worden – maar het boek levert uitstekend werk bij het distilleren van wiskundige begrippen tot gemakkelijk te begrijpen tekst.Om je leerproces aan te vullen, bekijk deze geweldige lezing – Deep Learning Lecture 11: Max-margin learning, transfer and memory networks .

Dit duurt nog 4 weken, maar als dit klaar is, zijn we klaar om over te stappen naar CNNs en RNNs. We volgen dezelfde filosofie opnieuw – lees notities van cs231n, implementeer en train datnet, en lees dan het boek om de fijnere details te begrijpen. Deze fase zal en zou langer moeten duren omdat het implementeren van backprop in CNNs (met alle toeters en bellen zoals batch-normalisatie) niet zo eenvoudig is. Hetzelfde geldt voor LSTMs (let op de norm van dat verloop, en clip als het te groot wordt, of verkort tot kortere reeksen als het te klein wordt). Pro tip – voor het trainen van LSTMs raad ik je aan de PennTree Bank-dataset te bekijken en een taalmodel te trainen om een ​​verwarring van ongeveer 110 te krijgen. Als je kunt die negentig, gefeliciteerd, je doet het goed. Om een ​​CNN te trainen, doe je gewoon opdracht 2 van CS231n.

Oef. die laatste fase van het trainen van CNNs / RNNs en het lezen van bijbehorend materiaal uit het boek, kostte ons ongeveer 6 weken en we hebben nu slechts 38 weken in ons streven om de allerbeste te worden.

Eindelijk, tijd naar pip install tensorflow. Denk zelfs niet aan iets anders. Nee, we doen geen pytorch (het is dynamisch van aard, dus niet geweldig als je autodiff-software onder de knie wilt krijgen, maar anders geweldig) of theano (niet groot genoeg). Of bibliotheken op hoog niveau zoals keras (mooi, maar het ziet er allemaal te gemakkelijk uit). Ga naar de documenten en lees de MNIST-zelfstudie (voor experts, want dat is wat we nu zijn). In het begin zal het allemaal heel raar worden, het idee van een berekeningsgrafiek, sessies en het feit dat er een aparte “compilatie” en “run” is, zelfs binnen Python zelf. Maar als je het eenmaal onder de knie hebt, zul je beginnen te beseffen hoe mooi het is ontworpen en hoe gemakkelijk het is om uit te breiden – het schrijven van je eigen LSTM is bijvoorbeeld net zo eenvoudig als het uitbreiden van een basis LSTM-les. Als een set van opwarmoefeningen, lees de code in de tutorials ( Tutorials | TensorFlow ), en stap heel zorgvuldig door elke tutorial en begrijp wat elke regel doet en waarom. U leert hoe u uw tensorflow-code organiseert. Pro-tip – Ik heb altijd graag aparte abstracties voor training, testen en voorspellen. En een aparte build() functie die de hele berekeningsgrafiek opbouwt, beginnend met plaatshouders, helemaal tot aan het definiëren van de verliesfunctie en de train\_op die die verliesfunctie optimaliseert.

Schaamteloze plug – Ik heb onlangs een model voor machinebegrip gecodeerd (een taak die ik echt leuk vind). Om te zien hoe u uw modelcode samenstelt, gaat u naar MurtyShikhar / Vraag beantwoorden . Om je tensorflow-vaardigheden te testen, vertaal je je CNN- en LSTM-code naar tensorflow om dezelfde (misschien betere) nauwkeurigheid / verwarring te bereiken.

Het leren van tensorflow duurde ongeveer 8 weken van krankzinnig hacken, tutorials lezen, gefrustreerd raken tensorflow compileerfouten, maar ik hoop dat de reis lonend was. Je hebt nu de kracht van autodiff en een echt gaaf arsenaal aan functies om letterlijk ELK deep learning-model ooit aan te sluiten. Voordat we verder gaan met wat research-y-dingen, kun je een leuk project in tensorflow uitproberen. Pak een cool paper op over een goed gedefinieerd probleem (machinevertaling / bijschrift / begrip / vraag beantwoorden / visuele vraag beantwoorden / stijloverdracht) en implementeer het state-of-the-art model in Tensorflow. Probeer GANs nog niet, want zo cool zijn we (nog) niet. Je zult ongeveer 5 weken nodig hebben om je project af te ronden en competitieve resultaten te krijgen, waardoor je ongeveer 5 weken overhoudt om alleen over huidig ​​onderzoek te lezen.

Ik realiseer me dat 5 weken echt een korte periode zijn om de breedte van DL te dekken onderzoek, dus waarom zou u ons bereik niet beperken? Pak een probleem of techniek op – of het nu gaat om generatieve modellen, seq2seq-modellen of bekrachtigingsleren. Ik weet niets van leren van bekrachtiging (ik probeer het echter te leren), dus ik zal me concentreren op de andere twee.

Voor generatieve modellen, begin met deze geweldige tutorial door onze heer en redder – NIPS 2016 – Generative Adversarial Networks – Ian Goodfellow , en volg ze langzaam op, pauzeer en googlen als en wanneer nodig. Je zult die wiskundige vaardigheden van de eerste paar weken hier HEEL nuttig vinden. Ik verzoek u dan dringend om de originele GAN paper te lezen, en vervolgacties zoals DCGANs , SeqGANs, en de nieuwste en coolste WGAN .

Bekijk voor Seq2Seq deze geweldige lezing door een Google-hersenwetenschapper – Sequence to Sequence Deep Learning (Quoc Le, Google) en controleer vervolgens de ICML 2017-tutorial door Oriol Vinyals – seq2seq icml-tutorial .

The END.

Dat kostte wat tijd en inspanning. Het is het einde van week 58 en je hebt nu een breed begrip van Deep Learning, samen met een aantal solide wiskundige en technische vaardigheden. Het is tijd om dieper te gaan (begrijp de woordspeling?) In Deep Learning-onderzoek, of misschien om een coole app te bouwen. Ik laat die beslissing aan jou over, jij stud DL-ingenieur.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *