Mi az előképzés a mély tanulásban hogyan működik?

Legjobb válasz

A mély tanulás előtti képzés nem más, mint , a gépek betanítása, mielőtt elkezdenének egy adott feladatot elvégezni.

Például:

  1. Neuronhálózatot szeretne kiképezni egy feladat végrehajtására, osztályozásra képkészlet. Az edzést úgy kezdi meg, hogy véletlenszerűen inicializálja a súlyokat. Amint elkezdi a tréninget, a súlyok megváltoznak vagy változnak annak érdekében, hogy a feladatokat kevesebb hibával (optimalizálva) hajtsák végre. Miután elégedett volt az edzés eredményeivel, elmenti hálózatának súlyát, hogy a betanított ideghálózat legközelebb jó optimalizálással és jobb eredménnyel végezhesse el a hasonló feladatot.
  2. A következő alkalom véletlenszerűen inicializált súlyokkal végzett edzés során az előző hálózatból mentett súlyokat használhatja új kísérletének kezdeti súlyértékeként. A súlyok ilyen módon történő inicializálására úgy hivatkozunk, mint egy előre betanított hálózat használatára ……………………….

Az első hálózat az előre betanított hálózat. A második az a hálózat, amelyet finomhangol.

Az előképzés alapgondolata az, hogy a bemenetek véletlenszerű inicializálása jó .. véletlenszerű, a súlyok értékeinek semmi köze a feladat, amelyet megpróbál megoldani.

Az előző, edzés értékeinek jobbaknak kell lenniük, mint az előző edzésnek, az értékeket megfelelően kell inicializálni a feladathoz, mi is beállíthatjuk őket az optimális értékekre.

Ezért az előképzés előnyt jelent a hálózat számára. Mintha korábban látta volna az adatokat.

Válasz

Először azt feltételezem, hogy a Merkúr bolygón vagyunk, ahol egy hét nagyjából 58 hét. Ha feltételezzük, hogy napi körülbelül 8 órát töltesz heti 5 napos tanulással, akkor 2320 órád van, ami elegendő ahhoz, hogy elég mélyen megértsd a mély tanulást, hogy kutatómérnökként és kezdő szintű kutatóként távozzon.

Tehát először is tegyen magának egy szívességet, és vegye kézbe Goodfellow és munkatársai Mély tanulás könyvét. Ez egy rendkívül SZOLID könyv a mély tanulásról, amely nem zárkózik el a matematika egyikétől sem, ugyanakkor nem túl pedáns. Például nagyszerű módja annak, hogy elmagyarázza, mi történik, ha a KL divergenciát más módon optimalizálja, mit jelentenek az L1 és L2 veszteségek a súlyaival (a veszteségfüggvény sajátvektorait tekintve), az LSTM mögött meghúzódó intuíció stb. Kezdje a könyv első részével. Körülbelül 2 hétbe telik az anyag teljes megemésztése (YMMV). Ha túl van ezen a héten anélkül, hogy unatkozna vagy elakadna a matematikai bonyolultságtól, készen áll a gépi tanulásra.

Ezen a ponton le kell állítanunk az olvasást és el kell kezdenünk a kódolást . De ahhoz, hogy valóban megértsük a dolgokat, ne töltsük le a Tensorflow szoftvert, kezdjük az alapvető dolgok (logisztikai regresszió, SVM-ek, kNN, PCA, GMM-ek) megvalósításával jó ol ’pythonban. Sokan csak a magas szintű könyvtárak használatába sietnek, anélkül, hogy megértenék, hogyan kell az alapblokkokat a semmiből kódolni, és akkor sokat megtanul, ha ezt megteszi. Például megtanulja, hogy a PCA alkalmazása előtt szabványosítania kell adatait, hogyan lehet a softmaxot számszerűen stabilá tenni, miért ne használhatja újra a softmax funkciót a log-softmax megvalósítására és így tovább. Ezeknek a megvalósításának megkezdéséhez lépjen a CS231n oldalra, és fejezze be az első hozzárendelést, építve erre az SVM-ek és GMM-ek megvalósításához. Ez körülbelül 4 hetet vesz igénybe (feltételezve, hogy a numpy vagy a python ismerete nélkül indul el) a megvalósítás és a hibakeresés. Most már tudja, hogyan kell a semmiből megvalósítani az alapvető gépi tanulási algoritmusokat.

Most már jó, ha folytatja, és elolvassa a CS231n webhely kiváló megjegyzéseit (az 1. modulig). Szánjon rá kedves időt arra, hogy megemtse a nem konvex funkciók optimalizálásának bonyolultságait, és igen, VÉGREHAJTSon minden olvasott dolgot. A lendületalapú módszerektől kezdve az alapvető backpropig a megvalósítás a kulcs, ha valóban meg akarja tanulni a mechanikát. Például, ha önállóan hajtja végre a backprop programot, akkor rájön, hogy rengeteg adatot kell tartania a visszafelé történő továbbításhoz, és ez a tudás nagyon hasznos lehet, ha a DL tervezésének valamely szakaszában memóriahibákba ütközik karrier. Ez további 4 hétbe fog telni.

Ez már 10 hét őrült DL. Most már jól elsajátította az alapvető matematikai készségeit, és megvalósíthatja a továbbító hálózatokat és az alapvető ML algoritmusokat a nyers pythonban. Gratulálok ehhez. Fokozzunk innentől kezdve egy fokozatot. Csak nehezebb lesz (és ezáltal szórakoztatóbb lesz).

Ideje elővenni a Mély tanulási könyvünket, és onnan indulunk, ahol abbahagytuk. Olvassa el a 6., 7. és 8. fejezetet. A 6. fejezet egyszerű dolog, és ezt már elsajátítottuk. A 7. fejezetben kezd nehézkessé válni – de a könyv kiváló munkát végez a matematika nehéz fogalmainak könnyen érthető szöveggé történő lepárlásában.A tanulásod kiegészítése érdekében nézd meg ezt a csodálatos előadást – 11. mély tanulási előadás: Maximális margójú tanulási, átviteli és memóriahálózatok .

Ez még 4 hétbe telik, de ezzel készen állunk a CNN és ​​RNN megszerzésére. Újra ugyanazt a filozófiát fogjuk követni – olvassuk el a cs231n jegyzeteit, valósítsuk meg és tanítsuk meg a dat netet, majd olvassuk el a könyvet a finomabb részletek megértése érdekében. Ez a szakasz hosszabb ideig tart és kell, mert a backprop bevezetése a CNN-ekben (minden haranggal és síppal, például a köteg normalizálásával) nem is olyan egyszerű. Ugyanez vonatkozik az LSTM-ekre is (nézze meg az adott gradiens normáját, és klipelje meg, ha túl nagy lesz, vagy rövidítse meg rövidebb szekvenciákra, ha túl kicsi lesz). Pro tipp – az LSTM-ek képzéséhez azt javaslom, hogy nézze meg a PennTree Bank adatkészletét, és képezzen ki egy nyelvi modellt, hogy 110 körüli zavart kapjon. ez a 90-es, gratulálok, jól csinálod. CNN képzéséhez egyszerűen hajtsa végre a 2. feladatot a CS231n-től.

Phew. hogy a CNN / RNN képzés utolsó szakasza, majd a könyv kapcsolódó anyagainak elolvasása körülbelül 6 héttel hátráltatott minket, és most már csak 38 hét áll rendelkezésünkre, hogy a legjobbak legyünk.

Végül az idő hogy pip install tensorflow. Ne gondoljon másra sem. Nem, nem pytorch-ot (dinamikus jellegű, ezért nem nagyszerű, ha autodiff szoftvereket akarsz lógni, de egyébként nagyszerű) vagy theanót (nem elég nagy). Vagy olyan magas szintű könyvtárak, mint a kerák (szépek, de mindez túl könnyűnek tűnik). Menjen át a dokumentumokhoz, és olvassa el az MNIST oktatóanyagot (szakértőknek coz ez az, ami most vagyunk). Először nagyon furcsa lesz az egész, a számítási grafikon ötlete, a munkamenetek, és az a tény, hogy külön “fordítás” és “futtatás” van, még magában a pythonban is. De ha van egy csomó dolga, akkor kezdi rájönni, milyen szépen lett megtervezve és mennyire könnyű kiterjeszteni – például saját LSTM-et írni ugyanolyan egyszerű, mint egy alap LSTM-osztályt kibővíteni. Bemelegítő gyakorlatokként olvassa el az oktatóanyagok kódját ( oktatóanyagok | TensorFlow ), és nagyon körültekintően járjon végig minden egyes oktatóanyagon, megértve az egyes sorok műveletét és miért. Megtudhatja, hogyan rendezheti a tensorflow kódot. Pro tipp – Mindig szeretek külön absztrakciókat készíteni a képzéshez, a teszteléshez és az előrejelzéshez. És egy külön build() függvény, amely felépíti a teljes számítási gráfot, a helyőrzőktől kezdve egészen a veszteségfüggvény és az a veszteségfüggvényt optimalizáló train\_op meghatározásáig.

Szégyentelen dugó – Nemrég kódoltam egy modellt a gépi megértéshez (egy olyan feladathoz, amely nagyon megkedveltem). Ha meg szeretné tudni, hogyan állíthatja össze a modellkódját, nézze meg a MurtyShikhar / Kérdés-válasz oldalt. Tensorflow képességeinek teszteléséhez fordítsa le a CNN és ​​az LSTM kódot tensorflow-ra, hogy elérje ugyanazt a (talán jobb) pontosságot / zavartságot.

A tensorflow megtanulása körülbelül 8 hét őrült hackelést, oktatóanyagok olvasását, csalódást okozott a dem miatt tensorflow fordítási hibák, de remélem, hogy az út kifizetődő volt. Mostantól megvan az automatikus váltás hatalma és egy igazán jó funkció-arzenál, hogy szó szerint BÁRMILYEN BÁRMILYEN BÁRMILYEN mély tanulási modellt bekapcsoljon. Mielőtt rátérnénk néhány kutatásra, miért nem próbálhat ki egy szórakoztató projektet a tensorflow-ban? Vegyen fel bármilyen jól kidolgozott problémát egy jól meghatározott problémáról (gépi fordítás / képfelvétel / szövegértés / kérdések megválaszolása / vizuális kérdések megválaszolása / stílusátadás), és valósítsa meg a korszerű modellt a Tensorflow-ban. Még ne próbálja ki a GAN-okat, mert még nem vagyunk olyan klasszak (még). Körülbelül 5 hétre van szüksége a projekt befejezéséhez, és versenyképes eredményeket érhet el, így körülbelül 5 hét marad a jelenlegi kutatások elolvasására.

Tudomásul veszem, hogy az 5 hét valóban rövid időtartam a DL terjedelmének lefedésére. kutatás, akkor miért ne szűkítenénk a hatókörünket? Válasszon ki egy problémát vagy technikát – legyen szó generatív modellekről vagy seq2seq modellekről vagy megerősítő tanulásról. Nem tudok semmit a megerősítéses tanulásról (mégis megpróbálok tanulni), ezért a másik kettőre fogok koncentrálni.

A generatív modelleknél kezdje urunk és megmentőnk ezzel a csodálatos oktatóanyaggal. – NIPS 2016 – Generatív Adversarial Networks – Ian Goodfellow , és lassan kövesse végig, szükség szerint szüneteltetve és guglizva. Az első hetek matematikai készségeit NAGYON hasznosnak találja itt. Ezután arra kérlek benneteket, hogy olvassák el az eredeti GAN dokumentumot , és kövessék például a DCGAN-okat , SeqGAN, és a legújabb és legmenőbb WGAN .

A Seq2Seq esetében nézze meg a Google Brain tudósának ezt a csodálatos előadását – Sequence to Sequence Deep Learning (Quoc Le, Google) , majd ellenőrizze az ICML 2017 oktatóanyag, Oriol Vinyals – seq2seq icml oktatóanyag .

A VÉGE.

Ez eltartott egy ideig, és erőfeszítés. Az 58. hét vége van, és most már széles körű ismerete van a mély tanulásról, néhány szilárd matematikai és mérnöki készség mellett. Itt az ideje elmélyülni (kapni a szójátékot) a Deep Learning kutatásba, vagy építeni egy jó alkalmazást. Rád bízom ezt a döntést, te DL mérnök.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük