Paras vastaus
Syväoppimisen esikoulutus ei ole muuta kuin , kouluttamalla koneita, ennen kuin he alkavat tehdä tiettyjä tehtäviä.
Esimerkiksi:
- Haluat kouluttaa hermoverkon suorittamaan tehtävää, ottamaan luokituksen aloitat harjoittelun alustamalla painot satunnaisesti. Heti kun aloitat harjoituksen, painot muuttuvat tai vaihtelevat tehtävien suorittamiseksi vähemmän virheillä (optimoitu). Kun olet tyytyväinen harjoittelutuloksiin, säästät verkon painot, jotta koulutettu hermoverkko voi suorittaa samanlaisen tehtävän ensi kerralla hyvällä optimoinnilla ja paremmilla tuloksilla.
- Seuraava kerta alkaa harjoittelemalla satunnaisesti alustetuilla painoilla, voit käyttää edellisestä verkosta tallentamiasi painoja uuden kokeilun alkuperäisinä painoarvoina. Painojen alustamista tällä tavalla kutsutaan käyttämään ennalta koulutettua verkkoa.
Ensimmäinen verkko on valmiiksi koulutettu verkko. Toinen on hienosäätöverkko.
Esikoulutuksen perusajatuksena on, että syötteiden satunnainen alustaminen on hyvin .. satunnaista, painojen arvoilla ei ole mitään tekemistä tehtävä, jonka yrität ratkaista.
Edellisen, harjoituksen arvojen on oltava parempia kuin edellisen harjoituksen, arvot on alustettava tehtävää varten oikein, voimme myös asettaa ne optimaalisiin arvoihin.
Esikoulutus antaa verkolle etumatkan. Ikään kuin se olisi nähnyt tiedot aikaisemmin.
Vastaus
Ensinnäkin oletan, että olemme planeetalla Mercury, jossa viikko on noin 58 viikkoa. Olettaen, että vietät noin 8 tuntia päivässä oppimiseen viiden päivän ajan viikossa, sinulla on 2320 tuntia riittävästi, jotta sinulla on riittävän hyvä käsitys syvällisestä oppimisesta, jotta voit siirtyä tutkimusinsinöörinä ja aloittelijan tutkijana.
Joten aluksi tee itsellesi palvelus ja pidä kiinni Goodfellowin ym. Deep Learning -kirjasta. Se on erittäin SOLID-kirja syvällisestä oppimisesta, joka ei poikkea matematiikasta, vaikka ei olekaan liian pedanttinen. Esimerkiksi sillä on loistava tapa selittää, mitä tapahtuu, kun optimoidaan KL-divergenssi toisella tavalla, mitä L1- ja L2-häviöt todella tekevät painollesi (häviöfunktion ominaisvektorien suhteen), intuitio LSTM: ien takana ja niin edelleen. Aloita kirjan ensimmäisestä osasta. Materiaalin pilkkominen (YMMV) kestää noin 2 viikkoa. Jos olet ohi tämän viikon ilman, että matemaattinen monimutkaisuus kyllästyy tai takertuu, olet nyt valmis siirtymään koneoppimiseen.
Tässä vaiheessa meidän on lopetettava lukeminen ja aloitettava koodaus . Mutta ymmärtääkseen asioita, älä lataa Tensorflow-ohjelmaa. Aloita perusasioiden (logistinen regressio, SVM: t, kNN, PCA, GMM) toteuttamisesta hyvässä ol ’pythonissa. Monet ihmiset vain kiirehtivät käyttämään korkean tason kirjastoja ymmärtämättä, miten peruslohkot koodataan tyhjästä, ja opit paljon, jos teet niin. Esimerkiksi oppiminen siitä, että sinun on standardoitava tietosi ennen PCA: n käyttöönottoa, kuinka tehdä softmaxista numeerisesti vakaa, miksi sinun ei pitäisi käyttää softmax-toimintoa uudelleen log-softmaxin toteuttamiseen ja niin edelleen. Aloita näiden käyttöönotto siirtymällä CS231n -sivulle ja viimeistelemällä ensimmäinen tehtävä, rakentamalla se käyttöön SVM: ien ja GMM: ien käyttöönotossa. Tämä vie noin 4 viikkoa (olettaen, että aloitat tietämättäsi Numpy: sta tai Pythonista) käyttöönotto ja virheenkorjaus. Nyt tiedät, miten koneen oppimisalgoritmit otetaan käyttöön tyhjästä.
Sinulla on nyt hyvä mennä eteenpäin ja lukea erinomaiset muistiinpanot CS231n-verkkosivustolta (moduuliin 1 asti). Ota oma suloinen aika sulataksesi kuperien toimintojen optimoinnin yksityiskohdat, ja kyllä, TOTEUTA jokainen lukemaasi asiaa. Momenttipohjaisista menetelmistä peruskokoonpanoon toteutus on avain, jos haluat todella oppia mekaniikan. Esimerkiksi, jos otat backpropin käyttöön itse, huomaat, kuinka sinun on pidettävä paljon dataa taaksepäin siirtämistä varten, ja tästä tiedosta voi olla apua, jos kohtaat muistivirheitä jossakin DL-suunnittelusi vaiheessa ura. Tämä kestää vielä 4 viikkoa.
Nyt on kulunut 10 viikkoa hullua DL: tä. Olet nyt perillä matematiikan perustaidoistasi ja pystyt toteuttamaan eteenpäin syötettävät verkot ja ML-perusalgoritmit raakapythonissa. Onnittelut siitä. Tehostetaan sitä eteenpäin. Se tulee vain vaikeutumaan (ja siten hauskemmaksi).
Aika ottaa Deep learning -kirja ja aloittaa siitä, mihin jäimme. Lue luvut 6, 7 ja 8. Luku 6 on helppoa, ja olemme jo oppineet sen. Luku 7 on paikka, josta se alkaa vaikeutua, mutta kirja tekee erinomaisen työn tislaamalla matematiikan raskaat käsitteet helposti ymmärrettäväksi tekstiksi.Täydennä oppimistasi katsomalla tämä hämmästyttävä luento – Syväoppimisluento 11: Maksimimarginaalin oppiminen, siirtäminen ja muistiverkot .
Tämä kestää vielä 4 viikkoa, mutta kun tämä on tehty, olemme valmiita siirtymään CNN: iin ja RNN: iin. Noudatamme samaa filosofiaa uudelleen – luemme muistiinpanoja cs231n: stä, toteutamme ja koulennamme dataverkkoa ja luemme sitten kirjan ymmärtämään tarkempia yksityiskohtia. Tämä vaihe kestää ja sen pitäisi kestää kauemmin, koska backpropin käyttöönotto CNN-verkoissa (kaikki kellot ja pillit, kuten erän normalisointi) ei ole niin helppoa. Sama pätee LSTM: iin (katso kyseisen gradientin normi ja leikkaa, jos se tulee liian suureksi, tai katkaise lyhyemmiksi jaksoiksi, jos se tulee liian pieneksi). Pro-vinkki – LSTM: ien kouluttamiseksi suosittelen tutustumaan PennTree Bank -tietojoukkoon ja kouluttamaan kielimallin noin 110: n hämmennyksen saamiseksi. Jos pystyt tekemään tuo 90-vuotias, onnittelut, teet sen oikein. Voit kouluttaa CNN: ää tekemällä tehtävän 2 CS231n: stä.
Phew. CNN: n / RNN: n viimeinen koulutusvaihe ja sitten kirjan aiheeseen liittyvän materiaalin lukeminen asettivat meidät takaisin noin 6 viikossa ja meillä on nyt vain 38 viikkoa pyrkimyksissämme tulla parhaimmaksi.
Lopuksi aika pip install tensorflow.
Älä edes ajattele mitään muuta. Ei, emme tee pytorchia (se on luonteeltaan dynaamista, joten se ei ole hienoa, jos haluat ripustaa autodiff-ohjelmistoa, mutta muuten loistava) tai theanoa (ei tarpeeksi suuri). Tai korkean tason kirjastot, kuten keras (kaunis, mutta tekee kaiken näyttävän liian helpolta). Siirry asiakirjoihin ja lue MNIST-opetusohjelma (asiantuntijoille, coz sellaisia olemme nyt). Se on kaikki aluksi erittäin outoa, ajatus laskentakaaviosta, istunnoista ja se, että myös erillisessä ”käännöksessä” ja ”ajossa” on oma python. Mutta kun sinulla on paljon asioita, alat ymmärtää, kuinka kauniisti se on suunniteltu ja kuinka helppoa on laajentaa – esimerkiksi oman LSTM: n kirjoittaminen on yhtä helppoa kuin LSTM-perusluokan laajentaminen. Lue lämmitystehtävinä joukko opetusohjelmien koodia ( Tutorials | TensorFlow ) ja käy läpi jokainen opetusohjelma erittäin huolellisesti ymmärtämällä, mitä kukin rivi tekee ja miksi. Opit järjestämään tensorflow-koodisi. Pro-vinkki – Haluan aina pitää erilliset abstraktit koulutusta, testausta ja ennustamista varten. Ja erillinen build()
-funktio, joka rakentaa koko laskentakaavion, alkaen paikkamerkkeistä aina häviöfunktion määrittelemiseen ja train\_op, joka optimoi kyseisen menetysfunktion.
Häpeämätön pistoke – koodasin äskettäin mallin koneiden ymmärtämiseen (tehtävä, josta olen todella kiinnostunut). Jos haluat nähdä mallikoodin kokoamisen yhdessä, tutustu kohtaan MurtyShikhar / Question-Answering . Testataksesi tensorflow-taitosi käännä CNN- ja LSTM-koodisi tensorflow-muotoon saavuttaaksesi saman (ehkä paremman) tarkkuuden / hämmennyksen.
Tensorflow-oppiminen kesti noin 8 viikkoa hullua hakkerointia, opetusohjelmien lukemista, turhautumista demin kautta tensorflow-kääntövirheet, mutta toivon, että matka oli palkitseva. Sinulla on nyt automaattisen modifikaation voima ja todella hieno toimintojen arsenaali, jotta saat kirjaimellisesti minkä tahansa syvällisen oppimismallin. Ennen kuin siirrymme joihinkin tutkimuksellisiin asioihin, miksi emme kokeile hauskaa projektia tensorflowssa? Ota kaikki hienot paperit hyvin määritellystä ongelmasta (konekäännös / kuvansiirto / ymmärtäminen / kysymyksiin vastaaminen / visuaalisiin kysymyksiin vastaaminen / tyylinsiirto) ja ota uusin malli käyttöön Tensorflowssa. Älä kokeile vielä GAN-verkkoja, sillä me emme ole niin hienoja (vielä). Projektin loppuun saattaminen vie noin 5 viikkoa ja saa kilpailukykyisiä tuloksia. Jätä noin 5 viikkoa vain lukemaan nykyistä tutkimusta.
Ymmärrän, että 5 viikkoa on todella lyhyt jakso kattamaan DL: n laajuus tutkimusta, joten miksi et supistaisi toimintaamme? Valitse yksi ongelma tai tekniikka – olkoon se sitten generatiivisia malleja, seq2seq-malleja tai vahvistusoppimista. En tiedä mitään vahvistamisen oppimisesta (yritän kuitenkin oppia), joten keskityn kahteen muuhun.
Aloita generatiivisissa malleissa tästä hämmästyttävästä lordamme ja pelastajamme opetusohjelmasta. – NIPS 2016 – Generatiiviset kontradiktoriset verkostot – Ian Goodfellow , ja seuraa hitaasti, keskeyttämällä ja googeldamalla tarpeen mukaan. Löydät nämä matematiikkataidot ensimmäisiltä viikoilta erittäin hyödyllisiä täältä. Sitten kehotan sinua lukemaan alkuperäisen GAN -paperin ja jatkotoimet, kuten DCGAN-tiedostot , SeqGAN, ja uusin ja siistein WGAN .
Katso Seq2Seq: lle tämä hämmästyttävä Google Brain -tutkijan luento – Sequence to Sequence Deep Learning (Quoc Le, Google) ja tarkista sitten Oriol Vinyalsin ICML 2017 -opetusohjelma – seq2seq icml -opetusohjelma .
LOPPU.
Se kesti jonkin aikaa ja vaivaa. On viikon 58 loppu, ja sinulla on nyt laaja ymmärrys syvällisestä oppimisesta sekä vankat matematiikka- ja insinööritaidot. On aika mennä syvemmälle (saada sanaleikki?) Deep Learning -tutkimukseen tai ehkä rakentaa hieno sovellus. Jätän päätöksen sinulle, sinä opiskelet DL-insinööriä.