Najlepsza odpowiedź
Trening wstępny w uczeniu głębokim to nic innego jak , ucząc maszyny, zanim zaczną wykonywać określone zadania.
Na przykład:
- Chcesz wyszkolić sieć neuronową, aby wykonać zadanie, podejmij klasyfikację na zestaw danych obrazów. Trening rozpoczyna się od losowej inicjalizacji wag. Gdy tylko rozpoczniesz trening, ciężary zostaną zmienione lub zróżnicowane, aby wykonać zadania z mniejszą liczbą błędów (zoptymalizowane). Gdy wyniki szkolenia są zadowalające, zapisujesz wagi swojej sieci, aby wytrenowana sieć neuronowa mogła następnym razem wykonać podobne zadanie z dobrą optymalizacją i lepszymi wynikami.
- Następnym razem zacznij od trenując z losowo zainicjowanymi wagami, możesz użyć wag zapisanych z poprzedniej sieci jako początkowych wartości wagi dla nowego eksperymentu. Inicjalizacja wag w ten sposób jest nazywana wykorzystaniem wstępnie wytrenowanej sieci ……………………….
Pierwsza sieć to sieć wstępnie wyszkolona. Drugi to sieć, którą dostosowujesz.
Podstawową ideą stojącą za wstępnym treningiem jest to, że losowa inicjalizacja danych wejściowych jest dobra … losowa, wartości wag nie mają nic wspólnego z zadanie, które próbujesz rozwiązać.
Wartości poprzedniego treningu muszą być lepsze niż poprzedniego treningu, wartości muszą być odpowiednio zainicjowane dla zadania, równie dobrze możemy ustawić je na wartości optymalne.
Dlatego szkolenie wstępne daje sieci przewagę. Jakby widział dane już wcześniej.
Odpowiedź
Po pierwsze, zamierzam założyć, że jesteśmy na planecie Merkury, gdzie tydzień ma mniej więcej 58 tygodni. Zakładając, że spędzasz około 8 godzin dziennie ucząc się przez 5 dni w tygodniu, masz 2320 godzin, czyli wystarczająco dużo, aby opanować głębokie uczenie się, aby uchodzić za inżyniera badawczego i początkującego badacza.
Więc po pierwsze, zrób sobie przysługę i zdobądź książkę Deep Learning autorstwa Goodfellow et al. To niezwykle SOLIDNA książka o głębokim uczeniu się, która nie stroni od żadnej matematyki, a jednocześnie nie jest przesadnie pedantyczna. Na przykład, ma świetny sposób na wyjaśnienie, co się dzieje, gdy optymalizujesz dywergencję KL w inny sposób, co straty L1 i L2 faktycznie robią z twoimi wagami (pod względem wektorów własnych funkcji straty), intuicją stojącą za LSTM i tak dalej. Zacznij od pierwszej części książki. Całkowite strawienie tego materiału (YMMV) zajmie około 2 tygodni. Jeśli minął już tydzień i nie znudziłeś się ani nie ugrzęzłeś w matematycznej złożoności, możesz teraz przejść do uczenia maszynowego.
W tym momencie musimy przestać czytać i zacząć kodować . Jednak aby zrozumieć rzeczy, nie pobieraj Tensorflow, zacznij od implementacji podstawowych rzeczy (regresja logistyczna, SVM, kNN, PCA, GMM) w starym dobrym Pythonie. Wiele osób po prostu spieszy się do korzystania z bibliotek wysokiego poziomu, nie rozumiejąc, jak kodować podstawowe bloki od zera, a jeśli to zrobisz, wiele się nauczysz. Na przykład dowiesz się, że musisz ustandaryzować dane przed zastosowaniem PCA, jak uczynić softmax stabilnym liczbowo, dlaczego nie powinieneś ponownie używać funkcji softmax do implementacji log-softmax i tak dalej. Aby rozpocząć wdrażanie ich, przejdź do CS231n i zakończ pierwsze zadanie, budując na nim, aby wdrożyć maszyny SVM i GMM. Wdrożenie i debugowanie zajęłoby około 4 tygodni (zakładając, że zaczynasz bez znajomości numpy lub Python). Teraz wiesz, jak zaimplementować podstawowe algorytmy uczenia maszynowego od zera.
Teraz możesz już przejść dalej i przeczytać doskonałe uwagi w witrynie CS231n (do modułu 1). Poświęć swój własny słodki czas, aby przetrawić zawiłości optymalizacji funkcji nie wypukłych i tak, WDRAŻAJ wszystko, co przeczytasz. Od metod opartych na momentum po podstawowe backprop, implementacja jest kluczem, jeśli chcesz faktycznie nauczyć się mechaniki. Na przykład, jeśli sam zaimplementujesz backprop, zdasz sobie sprawę, jak musisz przechowywać mnóstwo danych do przejścia wstecz, a ta wiedza może być bardzo pomocna, jeśli napotkasz błędy braku pamięci na pewnym etapie inżynierii DL kariera. To zajmie kolejne 4 tygodnie.
Minęło 10 tygodni szalonego DL. Masz teraz solidne podstawowe umiejętności matematyczne i możesz zaimplementować sieci feed forward i podstawowe algorytmy ML w surowym Pythonie. Gratulacje. Podnieśmy to od teraz. Będzie tylko trudniej (a przez to przyjemniej).
Czas wyjąć naszą książkę o głębokim uczeniu się i zacząć od miejsca, w którym skończyliśmy. Przeczytaj rozdziały 6, 7 i 8. Rozdział 6 to łatwa sprawa i już to opanowaliśmy. Rozdział 7 zaczyna być trudny – ale książka świetnie radzi sobie z przekształcaniem ciężkich pojęć matematycznych w łatwy do zrozumienia tekst.Aby uzupełnić swoją naukę, obejrzyj ten niesamowity wykład – Wykład o głębokim uczeniu 11: uczenie się z maksymalnymi marginesami, sieci transferu i pamięci .
To zajmie kolejne 4 tygodnie, ale po wykonaniu tej czynności jesteśmy gotowi do przejścia na CNN i RNN. Ponownie będziemy postępować zgodnie z tą samą filozofią – czytać notatki z cs231n, wdrażać i trenować sieć danych, a następnie czytać książkę, aby zrozumieć najdrobniejsze szczegóły. Ta faza potrwa i powinna potrwać dłużej, ponieważ implementacja backprop w CNN (ze wszystkimi dzwonkami i gwizdkami, takimi jak normalizacja partii) nie jest wcale taka łatwa. To samo dotyczy LSTM (obserwuj normę tego gradientu i przycinaj, jeśli stanie się zbyt duży, lub skróć do krótszych sekwencji, jeśli stanie się zbyt mały). Porada dla profesjonalistów – jeśli chodzi o szkolenie LSTM, polecam sprawdzenie zestawu danych PennTree Bank i wyszkolenie modelu językowego, aby uzyskać zakłopotanie około 110. Jeśli możesz Gratulacje, robisz to dobrze. Aby wytrenować CNN, po prostu wykonaj zadanie 2 z CS231n.
Uff. ta ostatnia faza szkolenia CNN / RNN, a następnie przeczytanie powiązanych materiałów z książki, cofnęła nas o około 6 tygodni i mamy teraz tylko 38 tygodni na dążenie do zostania najlepszym.
Wreszcie czas do pip install tensorflow.
Nie myśl o niczym innym. Nie, nie robimy pytorcha (jest z natury dynamiczny, więc nie jest świetny, jeśli chcesz zdobyć oprogramowanie autodiff, ale poza tym świetnie) lub theano (nie jest wystarczająco duży). Lub biblioteki wysokiego poziomu, takie jak keras (piękne, ale sprawiają, że wszystko wygląda na zbyt łatwe). Przejdź do dokumentacji i przeczytaj samouczek MNIST (dla ekspertów, bo tym właśnie jesteśmy teraz). Na początku wszystko będzie bardzo dziwne, pomysł na wykres obliczeniowy, sesje i fakt, że istnieje oddzielne „kompilowanie” i „uruchamianie” nawet w samym Pythonie. Ale kiedy już opanujesz sprawę, zaczniesz zdawać sobie sprawę, jak pięknie został zaprojektowany i jak łatwo można go rozszerzyć – na przykład napisanie własnego LSTM jest tak samo łatwe, jak rozszerzenie podstawowej klasy LSTM. Jako zestaw ćwiczeń na rozgrzewkę przeczytaj kod w samouczkach ( Samouczki | TensorFlow ) i bardzo uważnie przejrzyj każdy samouczek, rozumiejąc, co robi każdy wiersz i dlaczego. Dowiesz się, jak uporządkować kod tensorflow. Porada dla profesjonalistów – zawsze lubię mieć osobne abstrakcje do treningu, testowania i przewidywania. I osobna funkcja build()
, która buduje cały wykres obliczeniowy, zaczynając od symboli zastępczych, aż po zdefiniowanie funkcji straty i train\_op, który optymalizuje tę funkcję straty.
Bezwstydna wtyczka – niedawno stworzyłem model rozumienia maszynowego (zadanie, które bardzo mi się podobało). Aby zobaczyć, jak złożyć razem kod modelu, odwiedź stronę MurtyShikhar / Question-Answering . Aby przetestować swoje umiejętności tensorflow, przetłumacz kod CNN i LSTM na tensorflow, aby osiągnąć taką samą (może lepszą) dokładność / zakłopotanie.
Nauka tensorflow zajęła około 8 tygodni szalonego hakowania, czytania samouczków i frustracji z powodu tensorflow błędy kompilacji, ale mam nadzieję, że podróż była satysfakcjonująca. Masz teraz moc autodiff i naprawdę fajny arsenał funkcji, aby połączyć dosłownie KAŻDY model głębokiego uczenia się. Zanim przejdziemy do pewnych zagadnień badawczych, dlaczego nie wypróbować ciekawego projektu w tensorflow? Podnieś dowolny fajny artykuł dotyczący dobrze zdefiniowanego problemu (tłumaczenie maszynowe / napisy do obrazów / rozumienie / odpowiadanie na pytania / wizualne odpowiadanie na pytania / transfer stylów) i zaimplementuj najnowocześniejszy model w Tensorflow. Nie próbuj jeszcze GAN, bo nie jesteśmy (jeszcze) fajni. Ukończenie projektu i uzyskanie konkurencyjnych wyników zajmie około 5 tygodni, pozostawiając około 5 tygodni na przeczytanie o bieżących badaniach.
Zdaję sobie sprawę, że 5 tygodni to naprawdę krótki okres na pokrycie zakresu DL badania, dlaczego więc nie zawęzić naszego zakresu? Wybierz jeden problem lub technikę – czy to modele generatywne, modele seq2seq, czy uczenie się ze wzmocnieniem. Nie wiem nic o uczeniu się przez wzmacnianie (chociaż próbuję się nauczyć), więc skupię się na dwóch pozostałych.
W przypadku modeli generatywnych zacznij od tego niesamowitego samouczka naszego Pana i Zbawiciela – NIPS 2016 – Generative Adversarial Networks – Ian Goodfellow i powoli postępuj zgodnie z nimi, wstrzymując i przeglądając google w razie potrzeby. Znajdziesz tutaj BARDZO przydatne umiejętności matematyczne z pierwszych kilku tygodni. W takim razie zachęcam do przeczytania oryginalnego dokumentu GAN i uzupełnień, takich jak DCGAN , div id = „d1aa751d51”> SeqGANs oraz najnowsze i najfajniejsze WGAN .
W przypadku Seq2Seq obejrzyj ten niesamowity wykład naukowca z Google Brain – Sequence to Sequence Deep Learning (Quoc Le, Google) , a następnie sprawdź samouczek ICML 2017 autorstwa Oriol Vinyals – samouczek seq2seq icml .
KONIEC.
Zajęło to trochę czasu i wysiłek. Jest koniec 58 tygodnia, a teraz masz szeroką wiedzę na temat uczenia głębokiego, a także solidne umiejętności matematyczne i inżynierskie. Nadszedł czas, aby zagłębić się (zdobyć kalambur?) W badania Deep Learning lub może stworzyć fajną aplikację. Decyzję pozostawiam Tobie, ty inżynier DL.