Ce este preinstruirea în învățarea profundă cum funcționează?

Cel mai bun răspuns

pregătirea în învățarea profundă nu este altceva decât , instruirea mașinilor, înainte ca acestea să înceapă să îndeplinească anumite sarcini.

De exemplu:

  1. Doriți să instruiți o rețea neuronală pentru a efectua o sarcină, luați clasificarea pe o set de date de imagini. Începeți antrenamentul inițializând greutățile la întâmplare. De îndată ce începeți antrenamentul, greutățile se schimbă sau variază pentru a îndeplini sarcinile cu mai puține greșeli (optimizate). Odată ce sunteți mulțumit de rezultatele antrenamentului, salvați greutățile rețelei dvs., astfel încât rețeaua neuronală antrenată să poată îndeplini sarcina similară data viitoare cu o optimizare bună și rezultate mai bune.
  2. Data viitoare începe de la antrenament cu greutăți inițializate aleatoriu, puteți utiliza greutățile salvate din rețeaua anterioară ca valori inițiale ale greutății pentru noul dvs. experiment. Inițializarea ponderilor în acest mod este denumită folosirea unei rețele pre-instruite ……………………….

Prima rețea este rețeaua dvs. pre-instruită. A doua este rețeaua pe care o reglați bine.

Ideea de bază din spatele pregătirii preliminare este că inițializarea aleatorie a intrărilor este bună .. aleatorie, valorile greutăților nu au nimic de-a face cu sarcina pe care încercați să o rezolvați.

Valorile antrenamentului precedent trebuie să fie mai bune decât antrenamentul anterior, valorile trebuie inițializate corect pentru sarcină, la fel de bine le-am putea seta la valorile optime.

Prin urmare, pregătirea prealabilă oferă rețelei un început. Ca și cum ar fi văzut datele înainte.

Răspuns

În primul rând, voi presupune că suntem pe planeta Mercur, unde o săptămână este de aproximativ 58 de săptămâni. Presupunând că petreceți aproximativ 8 ore pe zi învățând 5 zile pe săptămână, aveți 2320 de ore, suficient pentru a înțelege suficient de bine învățarea profundă pentru a trece ca inginer de cercetare și cercetător la nivel de începători. > Deci, întâi, faceți-vă o favoare și obțineți cartea Deep Learning de Goodfellow și colab. Este o carte extrem de SOLIDĂ despre învățarea profundă, care nu se îndepărtează de matematică, deși nu este prea pedantă. De exemplu, are o modalitate excelentă de a explica ce se întâmplă atunci când optimizați divergența KL în sens invers, ce pierderi de L1 și L2 fac efectiv greutăților dvs. (în ceea ce privește vectorii proprii ai funcției de pierdere), intuiția din spatele LSTM-urilor și așa mai departe. Începeți cu prima secțiune a cărții. Va dura aproximativ 2 săptămâni pentru a digera complet materialul respectiv (YMMV). Dacă ați trecut săptămâna aceasta fără să vă plictisiți sau să vă loviți de complexitatea matematică, sunteți acum gata să absolviți o anumită învățare automată.

În acest moment, trebuie să nu mai citiți și să începeți codarea . Dar, pentru a înțelege lucrurile, nu descărcați Tensorflow, începeți cu implementarea lucrurilor de bază (regresie logistică, SVM-uri, kNN, PCA, GMM-uri) în Python bun. Mulți oameni se grăbesc să folosească biblioteci de nivel înalt, fără a înțelege cum să codificați blocurile de bază de la zero și veți învăța multe dacă faceți acest lucru. De exemplu, învățând că trebuie să vă standardizați datele înainte de a aplica PCA, cum să faceți softmax stabil numeric, de ce nu ar trebui să reutilizați funcția softmax pentru a implementa log-softmax și așa mai departe. Pentru a începe cu implementarea acestora, mergeți la CS231n și finalizați prima misiune, bazându-vă pe aceea pentru a implementa SVM și GMM. Acest lucru ar dura aproximativ 4 săptămâni (presupunând că începeți fără cunoștințe despre numpy sau python) pentru a implementa și depana. Acum știți cum să implementați algoritmi de învățare automată de bază de la zero.

Acum sunteți bine să continuați și să citiți notele excelente de pe site-ul web CS231n (până la modulul 1). Luați-vă propriul timp dulce pentru a digera complexitățile optimizării funcțiilor non-convexe și, da, IMPLEMENTAȚI fiecare lucru pe care îl citiți. De la metode bazate pe impuls până la backprop de bază, implementarea este cheia dacă doriți să învățați efectiv mecanica. De exemplu, dacă implementați backprop pe cont propriu, veți realiza cum trebuie să păstrați o grămadă de date pentru trecerea înapoi și aceste cunoștințe ar putea fi foarte utile dacă întâmpinați erori de memorie la un moment dat în ingineria DL Carieră. Acest lucru va dura încă 4 săptămâni.

Acum au trecut 10 săptămâni de DL nebun. Acum sunteți solid cu abilitățile dvs. de matematică de bază și puteți implementa rețele feed forward și algoritmi ML de bază în piton brut. Felicitări pentru asta. Să intensificăm o crestătură de aici înainte. Va fi doar mai greu (și, prin urmare, mai distractiv).

E timpul să scoatem cartea noastră Deep Learning și să începem de unde am rămas. Citiți capitolele 6, 7 și 8. Capitolul 6 este un lucru ușor și deja am însușit asta. Capitolul 7 este locul unde începe să devină greu – dar cartea face o treabă excelentă la distilarea conceptelor grele de matematică într-un text ușor de înțeles.Pentru a vă completa învățarea, urmăriți această prelegere uimitoare – Lectura de învățare profundă 11: Rețele de învățare, transfer și memorie cu marjă maximă .

va dura încă 4 săptămâni, dar, după ce am făcut acest lucru, suntem gata să absolvim CNN și RNN. Vom urma din nou aceeași filozofie – citiți notele de la cs231n, implementați și instruiți netul de date, apoi citiți cartea pentru a înțelege detaliile mai fine. Această fază va și ar trebui să dureze mai mult, deoarece implementarea backprop în CNN (cu toate clopotele și fluierele, cum ar fi normalizarea lotului) nu este atât de ușoară. Același lucru este valabil și pentru LSTM (urmăriți norma gradientului respectiv și fixați dacă devine prea mare sau trunchiați la secvențe mai scurte dacă devine prea mic). Sfat Pro – pentru instruirea LSTM-urilor, vă recomand să verificați setul de date PennTree Bank și să instruiți un model de limbă pentru a obține o perplexitate de aproximativ 110. Dacă puteți face 90 de ani, felicitări, o faci bine. Pentru a instrui o CNN, trebuie doar să efectuați misiunea 2 din CS231n.

Uf. ultima fază de instruire CNN / RNN și apoi citirea materialului asociat din carte ne-a făcut să ne întoarcem cu aproximativ 6 săptămâni și acum avem doar 38 de săptămâni în căutarea noastră pentru a deveni cel mai bun.

În sfârșit, timpul la pip install tensorflow. Nu măcar gândiți-vă la altceva. Nu, nu facem pirtorch (are o natură dinamică, deci nu este grozav dacă doriți să obțineți un software de autodiff, dar excelent în caz contrar) sau theano (nu suficient de mare). Sau biblioteci de nivel înalt precum keras (frumos, dar face totul să pară prea ușor). Mergeți la documente și citiți tutorialul MNIST (pentru experți, vă rog, asta suntem acum). La început, totul va fi foarte ciudat, ideea unui grafic de calcul, a sesiunilor și a faptului că există o „compilație” și „rulare” separate chiar și în Python. Însă, odată ce ați reușit, veți începe să vă dați seama cât de frumos a fost proiectat și cât de ușor este să extindeți – de exemplu, scrierea propriului LSTM este la fel de ușoară ca extinderea unei clase LSTM de bază. Ca set de exerciții de încălzire, citiți codul din tutoriale ( Tutoriale | TensorFlow ) și parcurgeți fiecare tutorial foarte atent, înțelegând ce face fiecare linie și de ce. Veți afla cum să vă organizați codul tensorflow. Sfat Pro – Îmi place întotdeauna să am abstracții separate pentru antrenament, testare și prezicere. Și o funcție separată build() care construiește întregul grafic de calcul, începând de la substituenți, până la definirea funcției de pierdere și a train\_op care optimizează această funcție de pierdere.

Plug fără rușine – Am codificat recent un model pentru înțelegerea mașinii (o sarcină pe care am crescut-o foarte mult). Pentru a vedea cum să asamblați codul modelului împreună, consultați MurtyShikhar / Question-Answering . Pentru a vă testa abilitățile de tensorflow, traduceți codul CNN și LSTM în tensorflow pentru a obține aceeași (poate mai bună) acuratețe / perplexitate.

Învățarea tensorflow-ului a durat aproximativ 8 săptămâni de hacking nebun, citind tutoriale, frustrându-vă pe dem tensorflow compilează erori, dar sper că călătoria a fost plină de satisfacții. Acum aveți puterea de autodiff și un arsenal de funcții foarte cool pentru a conecta literalmente ORICE model de învățare profundă vreodată. Înainte de a trece la câteva lucruri de cercetare, de ce să nu încercăm un proiect distractiv în tensorflow? Ridicați orice hârtie interesantă pentru o problemă bine definită (Traducere automată / Subtitrare imagine / Înțelegere / Răspuns la întrebări / Răspuns vizual la întrebări / Transfer de stil) și implementați modelul de ultimă generație în Tensorflow. Nu încercați GAN-urile încă, pentru că nu suntem atât de cool (încă). Veți dura aproximativ 5 săptămâni pentru a vă finaliza proiectul și veți obține rezultate competitive, lăsând aproximativ 5 săptămâni doar pentru a citi despre cercetările actuale.

Îmi dau seama că 5 săptămâni sunt într-adevăr o perioadă scurtă pentru a acoperi lățimea DL cercetare, deci de ce să nu ne restrângem sfera? Ridicați o problemă sau o tehnică – fie că este vorba de modele generative, fie de modele seq2seq sau învățare cu întărire. Nu știu nimic despre învățarea prin întărire (totuși încerc să învăț), așa că mă voi concentra asupra celorlalte două.

Pentru modelele Generative, începeți cu acest tutorial uimitor al lordului și salvatorului nostru – NIPS 2016 – Rețele contradictorii generative – Ian Goodfellow și urmăriți încet, întrerupându-vă și urmărind Google după cum este necesar. Aici veți găsi foarte utile aceste abilități matematice din primele câteva săptămâni. Vă îndemn apoi să citiți GAN-ul original hârtie și urmări precum DCGAN , SeqGANs, și cel mai nou și mai tare WGAN .

Pentru Seq2Seq, urmăriți această uimitoare prelegere a unui om de știință Google Brain – Secvență de învățare profundă (Quoc Le, Google) și apoi tutorialul ICML 2017 de Oriol Vinyals – tutorial seq2seq icml .

END.

A durat ceva timp și efort. Este sfârșitul săptămânii 58 și acum aveți o înțelegere largă a învățării profunde, împreună cu câteva abilități solide de matematică și inginerie. Este timpul să vă aventurați mai adânc (obțineți jocul de cuvinte?) În cercetarea Deep Learning sau poate creați o aplicație interesantă. Las această decizie la voi, inginer DL.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *