Deep Learning. Praca z językiem Python i biblioteką Keras - ebook
Deep Learning. Praca z językiem Python i biblioteką Keras - ebook
W skrócie uczenie maszynowe polega na wyodrębnianiu informacji z surowych danych i budowie modelu, który służy do przetwarzania kolejnych surowych danych. Technologia ta od kilku lat intensywnie się rozwija, a w miarę wzrostu jej możliwości rosną również zainteresowanie i oczekiwania architektów i użytkowników. Niektórzy widzą w głębokim uczeniu poważne zagrożenie, jednak obietnice, jakie daje ten rodzaj sztucznej inteligencji, są fascynujące. Narzędzia służące do programowania uczenia maszynowego, takie jak zaimplementowana w Pythonie biblioteka Keras, są dostępne dla każdego, kto chce wykorzystać tę technologię do własnych celów.
Niniejsza książka jest praktycznym przewodnikiem po uczeniu głębokim. Znalazły się tu dokładne informacje o istocie uczenia głębokiego, o jego zastosowaniach i ograniczeniach. Wyjaśniono zasady rozwiązywania typowych problemów uczenia maszynowego. Pokazano, jak korzystać z pakietu Keras przy implementacji rozpoznawania obrazu, przetwarzania języka naturalnego, klasyfikacji obrazów, przewidywania danych szeregu czasowego, analizy sentymentu, generowania tekstu i obrazu. Nawet dość skomplikowane zagadnienia, włączając w to koncepcje i dobre praktyki, zostały wyjaśnione w sposób bardzo przystępny i zrozumiały, tak aby umożliwić samodzielne stosowanie technik uczenia głębokiego w kolejnych projektach.
W tej książce między innymi:
- kontekst i ogólne koncepcje sztucznej inteligencji, uczenia maszynowego i uczenia głębokiego
- sieci neuronowe i pakiet Keras
- typowe sposoby pracy nad projektami uczenia głębokiego
- rozbudowane modele uczenia głębokiego oraz modele generatywne
- perspektywy i ograniczenia technologii
Uczenie głębokie. Nikt nie zna granic tej technologii!
Spis treści
Przedmowa 9
Podziękowania 11
O książce 13
O autorze 17
CZĘŚĆ I. PODSTAWY UCZENIA GŁĘBOKIEGO 19
Rozdział 1. Czym jest uczenie głębokie? 21
- 1.1. Sztuczna inteligencja, uczenie maszynowe i uczenie głębokie 22
- 1.1.1. Sztuczna inteligencja 22
- 1.1.2. Uczenie maszynowe 23
- 1.1.3. Formy danych umożliwiające uczenie 24
- 1.1.4. "Głębia" uczenia głębokiego 26
- 1.1.5. Działanie uczenia głębokiego przedstawione na trzech rysunkach 28
- 1.1.6. Co dotychczas osiągnięto za pomocą uczenia głębokiego? 29
- 1.1.7. Nie wierz w tymczasową popularność 30
- 1.1.8. Nadzieje na powstanie sztucznej inteligencji 31
- 1.2. Zanim pojawiło się uczenie głębokie: krótka historia uczenia maszynowego 32
- 1.2.1. Modelowanie probabilistyczne 33
- 1.2.2. Wczesne sieci neuronowe 33
- 1.2.3. Metody jądrowe 33
- 1.2.4. Drzewa decyzyjne, lasy losowe i gradientowe wzmacnianie maszyn 35
- 1.2.5. Powrót do sieci neuronowych 36
- 1.2.6. Co wyróżnia uczenie głębokie? 36
- 1.2.7. Współczesne uczenie maszynowe 37
- 1.3. Dlaczego uczenie głębokie? Dlaczego teraz? 38
- 1.3.1. Sprzęt 38
- 1.3.2. Dane 39
- 1.3.3. Algorytmy 40
- 1.3.4. Nowa fala inwestycji 41
- 1.3.5. Demokratyzacja uczenia głębokiego 41
- 1.3.6. Co dalej? 42
Rozdział 2. Matematyczne podstawy sieci neuronowych 43
- 2.1. Pierwszy przykład sieci neuronowej 44
- 2.2. Reprezentacja danych sieci neuronowych 47
- 2.2.1. Skalary (tensory zerowymiarowe) 47
- 2.2.2. Wektory (tensory jednowymiarowe) 48
- 2.2.3. Macierze (tensory dwuwymiarowe) 48
- 2.2.4. Trójwymiarowe tensory i tensory o większej liczbie wymiarów 48
- 2.2.5. Główne atrybuty 49
- 2.2.6. Obsługa tensorów w bibliotece Numpy 50
- 2.2.7. Wsad danych 51
- 2.2.8. Prawdziwe przykłady tensorów danych 51
- 2.2.9. Dane wektorowe 52
- 2.2.10. Dane szeregu czasowego i dane sekwencyjne 52
- 2.2.11. Dane w postaci obrazów 53
- 2.2.12. Materiały wideo 53
- 2.3. Koła zębate sieci neuronowych: operacje na tensorach 54
- 2.3.1. Operacje wykonywane element po elemencie 54
- 2.3.2. Rzutowanie 55
- 2.3.3. Iloczyn tensorowy 56
- 2.3.4. Zmiana kształtu tensora 59
- 2.3.5. Geometryczna interpretacja operacji tensorowych 59
- 2.3.6. Interpretacja geometryczna uczenia głębokiego 60
- 2.4. Silnik sieci neuronowych: optymalizacja gradientowa 61
- 2.4.1. Czym jest pochodna? 62
- 2.4.2. Pochodna operacji tensorowej: gradient 63
- 2.4.3. Stochastyczny spadek wzdłuż gradientu 64
- 2.4.4. Łączenie pochodnych: algorytm propagacji wstecznej 67
- 2.5. Ponowna analiza pierwszego przykładu 68
Rozdział 3. Rozpoczynamy korzystanie z sieci neuronowych 71
- 3.1. Anatomia sieci neuronowej 72
- 3.1.1. Warstwy: podstawowe bloki konstrukcyjne uczenia głębokiego 72
- 3.1.2. Modele: sieci warstw 74
- 3.1.3. Funkcja straty i optymalizatory: najważniejsze elementy konfiguracji procesu uczenia 74
- 3.2. Wprowadzenie do pakietu Keras 75
- 3.2.1. Keras, TensorFlow, Theano i CNTK 76
- 3.2.2. Praca z pakietem Keras: krótkie wprowadzenie 77
- 3.3. Przygotowanie stacji roboczej do uczenia głębokiego 78
- 3.3.1. Notatniki Jupyter: najlepszy sposób na eksperymentowanie z uczeniem głębokim 79
- 3.3.2. Dwie opcje uruchamiania pakietu Keras 79
- 3.3.3. Wady i zalety uruchamiania uczenia głębokiego w chmurze 80
- 3.3.4. Jaki procesor graficzny najlepiej nadaje się do uczenia głębokiego? 80
- 3.4. Przykład klasyfikacji binarnej: klasyfikacja recenzji filmów 81
- 3.4.1. Zbiór danych IMDB 81
- 3.4.2. Przygotowywanie danych 82
- 3.4.3. Budowa sieci neuronowej 83
- 3.4.4. Walidacja modelu 85
- 3.4.5. Używanie wytrenowanej sieci do generowania przewidywań dotyczących nowych danych 89
- 3.4.6. Dalsze eksperymenty 90
- 3.4.7. Wnioski 90
- 3.5. Przykład klasyfikacji wieloklasowej: klasyfikacja krótkich artykułów prasowych 90
- 3.5.1. Zbiór danych Agencji Reutera 91
- 3.5.2. Przygotowywanie danych 92
- 3.5.3. Budowanie sieci 93
- 3.5.4. Walidacja modelu 94
- 3.5.5. Generowanie przewidywań dotyczących nowych danych 96
- 3.5.6. Inne sposoby obsługi etykiet i funkcji straty 96
- 3.5.7. Dlaczego warto tworzyć odpowiednio duże warstwy pośrednie? 97
- 3.5.8. Dalsze eksperymenty 98
- 3.5.9. Wnioski 98
- 3.6. Przykład regresji: przewidywanie cen mieszkań 98
- 3.6.1. Zbiór cen mieszkań w Bostonie 98
- 3.6.2. Przygotowywanie danych 99
- 3.6.3. Budowanie sieci 100
- 3.6.4. K-składowa walidacja krzyżowa 100
- 3.6.5. Wnioski 104
Rozdział 4. Podstawy uczenia maszynowego 107
- 4.1. Cztery rodzaje uczenia maszynowego 108
- 4.1.1. Uczenie nadzorowane 108
- 4.1.2. Uczenie nienadzorowane 108
- 4.1.3. Uczenie częściowo nadzorowane 109
- 4.1.4. Uczenie przez wzmacnianie 109
- 4.2. Ocena modeli uczenia maszynowego 109
- 4.2.1. Zbiory treningowe, walidacyjne i testowe 111
- 4.2.2. Rzeczy, o których warto pamiętać 114
- 4.3. Wstępna obróbka danych, przetwarzanie cech i uczenie cech 114
- 4.3.1. Przygotowywanie danych do przetwarzania przez sieci neuronowe 115
- 4.3.2. Przetwarzanie cech 116
- 4.4. Nadmierne dopasowanie i zbyt słabe dopasowanie 118
- 4.4.1. Redukcja rozmiaru sieci 118
- 4.4.2. Dodawanie regularyzacji wag 121
- 4.4.3. Porzucanie - technika dropout 123
- 4.5. Uniwersalny przepływ roboczy uczenia maszynowego 124
- 4.5.1. Definiowanie problemu i przygotowywanie zbioru danych 125
- 4.5.2. Wybór miary sukcesu 126
- 4.5.3. Określanie techniki oceny wydajności modelu 126
- 4.5.4. Przygotowywanie danych 127
- 4.5.5. Tworzenie modeli lepszych od linii bazowej 127
- 4.5.6. Skalowanie w górę: tworzenie modelu, który ulega nadmiernemu dopasowaniu 128
- 4.5.7. Regularyzacja modelu i dostrajanie jego hiperparametrów 129
CZĘŚĆ II. UCZENIE GŁĘBOKIE W PRAKTYCE 131
Rozdział 5. Uczenie głębokie i przetwarzanie obrazu 133
- 5.1. Wprowadzenie do konwolucyjnych sieci neuronowych 134
- 5.1.1. Działanie sieci konwolucyjnej 136
- 5.1.2. Operacja max-pooling 141
- 5.2. Trenowanie konwolucyjnej sieci neuronowej na małym zbiorze danych 143
- 5.2.1. Stosowanie uczenia głębokiego w problemach małych zbiorów danych 143
- 5.2.2. Pobieranie danych 144
- 5.2.3. Budowa sieci neuronowej 147
- 5.2.4. Wstępna obróbka danych 148
- 5.2.5. Stosowanie techniki augmentacji danych 152
- 5.3. Korzystanie z wcześniej wytrenowanej konwolucyjnej sieci neuronowej 156
- 5.3.1. Ekstrakcja cech 157
- 5.3.2. Dostrajanie 165
- 5.3.3. Wnioski 171
- 5.4. Wizualizacja efektów uczenia konwolucyjnych sieci neuronowych 172
- 5.4.1. Wizualizacja pośrednich aktywacji 172
- 5.4.2. Wizualizacja filtrów konwolucyjnych sieci neuronowych 179
- 5.4.3. Wizualizacja map ciepła aktywacji klas 184
Rozdział 6. Uczenie głębokie w przetwarzaniu tekstu i sekwencji 189
- 6.1. Praca z danymi tekstowymi 190
- 6.1.1. Kodowanie słów i znaków metodą gorącej jedynki 191
- 6.1.2. Osadzanie słów 194
- 6.1.3. Łączenie wszystkich technik: od surowego tekstu do osadzenia słów 198
- 6.1.4. Wnioski 205
- 6.2. Rekurencyjne sieci neuronowe 205
- 6.2.1. Warstwa rekurencyjna w pakiecie Keras 208
- 6.2.2. Warstwy LSTM i GRU 211
- 6.2.3. Przykład warstwy LSTM zaimplementowanej w pakiecie Keras 214
- 6.2.4. Wnioski 216
- 6.3. Zaawansowane zastosowania rekurencyjnych sieci neuronowych 216
- 6.3.1. Problem prognozowania temperatury 217
- 6.3.2. Przygotowywanie danych 219
- 6.3.3. Punkt odniesienia w postaci zdrowego rozsądku 222
- 6.3.4. Podstawowe rozwiązanie problemu przy użyciu techniki uczenia maszynowego 223
- 6.3.5. Punkt odniesienia w postaci pierwszego modelu rekurencyjnego 224
- 6.3.6. Stosowanie rekurencyjnego porzucania w celu zmniejszenia nadmiernego dopasowania 225
- 6.3.7. Tworzenie stosów warstw rekurencyjnych 227
- 6.3.8. Korzystanie z dwukierunkowych rekurencyjnych sieci neuronowych 228
- 6.3.9. Kolejne rozwiązania 232
- 6.3.10. Wnioski 233
- 6.4. Konwolucyjne sieci neuronowe i przetwarzanie sekwencji 234
- 6.4.1. Przetwarzanie sekwencji za pomocą jednowymiarowej sieci konwolucyjnej 234
- 6.4.2. Jednowymiarowe łączenie danych sekwencyjnych 235
- 6.4.3. Implementacja jednowymiarowej sieci konwolucyjnej 235
- 6.4.4. Łączenie sieci konwolucyjnych i rekurencyjnych w celu przetworzenia długich sekwencji 238
- 6.4.5. Wnioski 241
Rozdział 7. Zaawansowane najlepsze praktyki uczenia głębokiego 243
- 7.1. Funkcjonalny interfejs programistyczny pakietu Keras: wykraczanie poza model sekwencyjny 244
- 7.1.1. Wprowadzenie do funkcjonalnego interfejsu API 246
- 7.1.2. Modele z wieloma wejściami 248
- 7.1.3. Modele z wieloma wyjściami 250
- 7.1.4. Skierowane acykliczne grafy warstw 252
- 7.1.5. Udostępnianie wag warstwy 255
- 7.1.6. Modele pełniące funkcję warstw 257
- 7.1.7. Wnioski 257
- 7.2. Monitorowanie modeli uczenia głębokiego przy użyciu wywołań zwrotnych pakietu Keras i narzędzia TensorBoard 258
- 7.2.1. Używanie wywołań zwrotnych w celu sterowania procesem trenowania modelu 258
- 7.2.2. Wprowadzenie do TensorBoard - platformy wizualizacji danych pakietu TensorFlow 261
- 7.2.3. Wnioski 267
- 7.3. Korzystanie z pełni możliwości modeli 267
- 7.3.1. Konstrukcja zaawansowanych architektur 267
- 7.3.2. Optymalizacja hiperparametru 271
- 7.3.3. Składanie modeli 272
- 7.3.4. Wnioski 274
Rozdział 8. Stosowanie uczenia głębokiego w celu generowania danych 277
- 8.1. Generowanie tekstu za pomocą sieci LSTM 279
- 8.1.1. Krótka historia generatywnych sieci rekurencyjnych 279
- 8.1.2. Generowanie danych sekwencyjnych 280
- 8.1.3. Dlaczego strategia próbkowania jest ważna? 281
- 8.1.4. Implementacja algorytmu LSTM generującego tekst na poziomie liter 282
- 8.1.5. Wnioski 287
- 8.2. DeepDream 287
- 8.2.1. Implementacja algorytmu DeepDream w pakiecie Keras 289
- 8.2.2. Wnioski 293
- 8.3. Neuronowy transfer stylu 295
- 8.3.1. Strata treści 296
- 8.3.2. Strata stylu 296
- 8.3.3. Implementacja neuronowego transferu stylu przy użyciu pakietu Keras 297
- 8.3.4. Wnioski 302
- 8.4. Generowanie obrazów przy użyciu wariacyjnych autoenkoderów 302
- 8.4.1. Próbkowanie z niejawnej przestrzeni obrazów 304
- 8.4.2. Wektory koncepcyjne używane podczas edycji obrazu 305
- 8.4.3. Wariacyjne autoenkodery 306
- 8.4.4. Wnioski 311
- 8.5. Wprowadzenie do generatywnych sieci z przeciwnikiem 312
- 8.5.1. Schematyczna implementacja sieci GAN 313
- 8.5.2. Zbiór przydatnych rozwiązań 314
- 8.5.3. Generator 315
- 8.5.4. Dyskryminator 316
- 8.5.5. Sieć z przeciwnikiem 317
- 8.5.6. Trenowanie sieci DCGAN 317
- 8.5.7. Wnioski 319
Rozdział 9. Wnioski 321
- 9.1. Przypomnienie najważniejszych koncepcji 322
- 9.1.1. Sztuczna inteligencja 322
- 9.1.2. Co sprawia, że uczenie głębokie to wyjątkowa dziedzina uczenia maszynowego? 322
- 9.1.3. Jak należy traktować uczenie głębokie? 323
- 9.1.4. Najważniejsze technologie 324
- 9.1.5. Uniwersalny przepływ roboczy uczenia maszynowego 325
- 9.1.6. Najważniejsze architektury sieci 326
- 9.1.7. Przestrzeń możliwości 330
- 9.2. Ograniczenia uczenia głębokiego 332
- 9.2.1. Ryzyko antropomorfizacji modeli uczenia maszynowego 332
- 9.2.2. Lokalne uogólnianie a ekstremalne uogólnianie 334
- 9.2.3. Wnioski 335
- 9.3. Przyszłość uczenia głębokiego 336
- 9.3.1. Modele jako programy 337
- 9.3.2. Wykraczanie poza algorytm propagacji wstecznej i warstwy różniczkowalne 339
- 9.3.3. Zautomatyzowane uczenie maszynowe 340
- 9.3.4. Nieustanne uczenie się i wielokrotne używanie modułowych procedur składowych 341
- 9.3.5. Przewidywania dotyczące dalekiej przyszłości 342
- 9.4. Bycie na bieżąco z nowościami związanymi z szybko rozwijającą się dziedziną 343
- 9.4.1. Zdobywaj wiedzę praktyczną, pracując z prawdziwymi problemami przedstawianymi w serwisie Kaggle 343
- 9.4.2. Czytaj o nowych rozwiązaniach w serwisie arXiv 344
- 9.4.3. Eksploruj ekosystem związany z pakietem Keras 344
- 9.5. Ostatnie słowa 345
Dodatek A. Instalowanie pakietu Keras i innych bibliotek niezbędnych do jego działania w systemie Ubuntu 347
Dodatek B. Uruchamianie kodu notatników Jupyter przy użyciu zdalnej instancji procesora graficznego EC2 353
Skorowidz 361
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-4779-3 |
Rozmiar pliku: | 9,8 MB |