Dariusz Brzeziński Instytut Informatyki, Politechnika Poznańska
Podstawowe architektury sieci neuronowych Generowanie sztucznych danych Jak się nie przemęczyć Korzystanie z istniejących wag Zamrażanie i odmrażanie warstw PyTorch i fast.ai Uczenie głębokie cz. II 2
Feed Forward Neural Networks (FFNN) Unsupervised Pretrained Networks (UPNs) Convolutional Neural Networks (CNNs) Recurrent Neural Networks (RNN*) Uczenie głębokie cz. II 3
W uproszczeniu tradycyjne sztuczne sieci neuronowe do uczenia nadzorowanego Dane przechodzą w jednym kierunku od warstwy wejściowej do wyjściowej Typowo wszystkie neurony między sąsiadującymi warstwami są połączone Multilayer Perceptron (MLP) Rysunki za http://www.asimovinstitute.org/neural-network-zoo/ Uczenie głębokie cz. II 4
Sieci do automatycznej ekstrakcji cech Podstawowym elementem jest Auto Encoder Oprócz automatycznej ekstrakcji cech wykorzystywane również do generowania danych Uczenie głębokie cz. II 5
Automatycznie wygenerowane zdjęcia sypialni https://github.com/newmu/dcgan_code Uczenie głębokie cz. II 6
Sieci neuronowe do obrazów Ciąg filtrów (konwolucji) i operacji zmniejszania Szereg podarchitektur: LeNet AlexNet ZF Net GoogLeNet VGGNet ResNet ResNext Uczenie głębokie cz. II 7
Sieci z cyklami (pamięcią) Zapamiętują informacje między przykładami Sprawdzają się przy przewidywaniu sekwencji i przebiegów czasowych Potrafią przyjmować i zwracać ciągi danych Uczenie głębokie cz. II 8
Najpopularniejsza odmiana RNN Wprowadza bramki pamięci i zapominania chroniące przed zanikiem/eksplozją gradientu Kosztowne pamięciowo i obliczeniowo Wykorzystywane do Generowania tekstu Rozpoznawania mowy Komponowania muzyki Analizy przebiegów czasowych Przewidywania sekwencji zdjęć pogodowych Uczenie głębokie cz. II 9
FFNN: Uczenie głębokie cz. II 10
FFNN: LSTM: Uczenie głębokie cz. II 11
FFNN: LSTM: Uczenie głębokie cz. II 12
Fragmenty architektur są często łączone Wartym odnotowania przykładem są RCNN, które sprawdzają się przy etykietowaniu fragmentów obrazów Połączenie analizy tekstu i obrazów Uczenie głębokie cz. II 13
Dane relacyjne MLP (DFFN) Ekstrakcja cech AE, RBM Rozpoznawanie obrazów DBN, CNN, RCNN Generowanie danych VAE, GAN, RNN Modelowanie sekwencji RNN, LSTM Uczenie głębokie cz. II 14
Do uczenia głębokiego potrzeba sporo danych W celu osiągnięcia odpowiedniej liczby danych oraz aby uniknąć przeuczenia generuje się sztuczne dane Po angielsku: data augmentation Przykłady: Losowe przesuwanie i obcinanie zdjęć ludzi i przedmiotów Losowe obracanie zdjęć satelitarnych Losowe powiększanie zdjęć (zoom) Losowe zmienianie rozmiaru okna analizowanego tekstu Losowy szum Uczenie głębokie cz. II 15
datagen = ImageDataGenerator( featurewise_center=true, featurewise_std_normalization=true, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=true, zoom_range=[1.0,1.1]) datagen.fit(x_train) model.fit_generator(datagen.flow(x_train, y_train, batch_size=32), steps_per_epoch=len(x_train) / 32, epochs=epochs) Uczenie głębokie cz. II 16
Jeżeli już ktoś wymyślił sieć dla Twojego problemu - spróbuj wykorzystać jej architekturę Jeżeli dodatkowo istnieje model wyuczony na danych podobnych do Twoich spróbuj wykorzystać wagi Na koniec doucz sieć na swoich danych Powyższe podejście nosi nazwę transfer learning Uczenie głębokie cz. II 17
Dział uczenia maszynowego zajmujący się zapamiętywaniem wiedzy odkrytej podczas rozwiązywania jednego problemu/danych w celu zastosowania do innego problemu/danych W przypadku sieci można wykorzystać istniejącą architekturę i wagi neuronów Im bardziej podobne dane w obu problemach, tym lepiej Uczenie głębokie cz. II 18
Po zaimportowaniu istniejącej architektury wraz wagami chcemy nauczyć ostatnie warstwy nowych klas W tym celu należy 1. Dodać/dostosować ostatnie warstwy sieci do naszego problemu (np. określić odpowiednią liczbę klas) 2. Zamrozić wagi wcześniejszych warstw 3. Przepuścić nasze dane przez częściowo zamrożoną sieć 4. Odmrozić wcześniejsze warstwy 5. Ponownie przepuścić nasze dane przez sieć Uczenie głębokie cz. II 19
Biblioteka do obliczeń tensorowych od Facebooka Świetne wsparcie obliczeń na GPU Częsty wybór wśród naukowców Prawdopodobnie najszybsza obecnie biblioteka do uczenia głębokich sieci Uczenie głębokie cz. II 20
Wrapper na PyTorch (obecnie w wersji alfa) Idea: uczenie głębokie dla laików Da się tworzyć własne architektury, ale to nie cel Zestaw gotowych architektur do szybkiego wykorzystania Uczenie głębokie cz. II 21
1. Pobierz notatnik ze strony prowadzącego 2. Uruchom notatnik i wykonuj po kolei zadania Uczenie głębokie cz. II 22