Szczegóły ebooka

Deep Learning. Praca z językiem Python i biblioteką Keras

Deep Learning. Praca z językiem Python i biblioteką Keras

Francois Chollet

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!

 

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

  • Tytuł: Deep Learning. Praca z językiem Python i biblioteką Keras
  • Autor: Francois Chollet
  • Tytuł oryginału: Deep Learning with Python
  • Tłumaczenie: Konrad Matuk
  • ISBN: 978-83-283-4779-3, 9788328347793
  • Data wydania: 2019-03-19
  • Format: Ebook
  • Identyfikator pozycji: delepy
  • Wydawca: Helion