Deep learning dla
programistów
Budowanie
aplikacji AI za pomocą fastai i PyTorch
Uczenie
głębokie zmienia oblicze wielu branż. Ta rewolucja już się zaczęła,
jednak potencjał AI i sieci neuronowych jest znacznie większy.
Korzystamy więc dziś z osiągnięć komputerowej analizy obrazu i języka
naturalnego, wspierania badań naukowych czy budowania skutecznych
strategii biznesowych - wchodzimy do świata, który do
niedawna był dostępny głównie dla naukowców. W
konsekwencji trudno o źródła wiedzy, które
równocześnie byłyby przystępne dla zwykłych
programistów i miały wysoką wartość merytoryczną. Problem
polega na tym, że bez dogłębnego zrozumienia działania
algorytmów uczenia głębokiego trudno tworzyć dobre aplikacje.
Oto praktyczny i
przystępny przewodnik po koncepcjach uczenia głębokiego, napisany tak,
aby ułatwić zrozumienie najnowszych technik w tej dziedzinie bez
znajomości wyższej matematyki.
Książka
daje znakomite podstawy uczenia głębokiego, a następnie stopniowo
wprowadza zagadnienia sposobu działania modeli, ich budowy i
trenowania. Pokazano w niej również praktyczne techniki
przekształcania modeli w działające aplikacje. Znalazło się tu
mnóstwo wskazówek ułatwiających poprawianie
dokładności, szybkości i niezawodności modeli. Nie zabrakło też
informacji o najlepszych sposobach wdrażania od podstaw
algorytmów uczenia głębokiego i stosowaniu ich w
najnowocześniejszych rozwiązaniach.
W książce między innymi:
- gruntownie i przystępnie
omówione podstawy uczenia głębokiego
- najnowsze techniki uczenia
głębokiego i ich praktyczne zastosowanie
- działanie modeli oraz
zasady ich treningu
- praktyczne tworzenie
aplikacji korzystających z uczenia głębokiego
- wdrażanie
algorytmów uczenia głębokiego
- etyczne implikacje AI
Opinie
o książce
Wstęp
Dla kogo jest przeznaczona ta książka?
Co musisz wiedzieć?
Czego się nauczysz dzięki tej książce?
Przedmowa
Część I.
Uczenie głębokie w praktyce
Rozdział 1.
Podróż
po świecie uczenia głębokiego
Uczenie głębokie jest dla każdego
Sieci neuronowe krótka historia
Kim jesteśmy?
Jak zdobyć wiedzę o uczeniu głębokim?
Twoje projekty i Twój sposób myślenia
Oprogramowanie: PyTorch, fastai i Jupyter (i dlaczego nie ma to
znaczenia)
Twój pierwszy model
Uzyskanie dostępu do serwera z procesorem graficznym i możliwością
realizowania uczenia głębokiego
Uruchomienie pierwszego notatnika
Co to jest uczenie maszynowe?
Co to jest sieć neuronowa?
Trochę słownictwa związanego z uczeniem głębokim
Ograniczenia związane z uczeniem maszynowym
Jak działa nasz program do rozpoznawania obrazów
Czego nauczył się program do rozpoznawania obrazów?
Systemy do rozpoznawania obrazów mogą radzić sobie z
zadaniami innymi niż analiza obrazów
Podsumowanie słownictwa
Uczenie głębokie to nie tylko klasyfikowanie obrazów
Zbiory walidacyjne i testowe
Użycie oceny w definiowaniu zbiorów testowych
Moment, w którym wybierasz swoją własną przygodę
Pytania
Dalsze badania
Rozdział 2.
Od modelu do produkcji
Praktyczne zastosowanie uczenia głębokiego
Rozpoczęcie projektu
Stan uczenia głębokiego
Widzenie komputerowe
Dokumenty tekstowe (przetwarzanie języka naturalnego)
Łączenie tekstu z obrazami
Dane tabelaryczne
Systemy rekomendacji
Inne typy danych
Metoda układu napędowego
Gromadzenie danych
Od danych do obiektu DataLoaders
Generowanie sztucznych danych
Trenowanie modelu i używanie go do czyszczenia danych
Przekształcanie modelu w aplikację internetową
Korzystanie z modelu do wnioskowania
Tworzenie w notatniku aplikacji na podstawie modelu
Zamień notatnik w prawdziwą aplikację
Wdrażanie aplikacji
Jak uniknąć katastrofy
Nieprzewidziane konsekwencje i pętle sprzężenia zwrotnego
Zapisuj!
Pytania
Dalsze badania
Rozdział 3. Etyka danych
Kluczowe przykłady etyki danych
Błędy i regresja: wadliwy algorytm używany do świadczeń opieki
zdrowotnej
Pętle sprzężenia zwrotnego: system rekomendacji YouTube
Uprzedzenie: wykładowca Latanya Sweeney aresztowana
Dlaczego ma to znaczenie?
Integracja uczenia maszynowego z projektowaniem produktu
Zagadnienia związane z etyką danych
Regres i odpowiedzialność
Pętle sprzężenia zwrotnego
Uprzedzenie
Uprzedzenie historyczne
Uprzedzenie pomiarowe
Uprzedzenie agregacyjne
Uprzedzenie reprezentacyjne
Rozwiązywanie problemów związanych z różnymi
rodzajami uprzedzeń
Dezinformacja
Identyfikowanie i rozwiązywanie problemów etycznych
Przeanalizuj projekt, nad którym pracujesz
Procesy do zaimplementowania
Pryzmat etyczny
Potęga różnorodności
Uczciwość, odpowiedzialność i przejrzystość
Rola polityki
Skuteczność przepisów
Prawa i polityka
Samochody historyczny precedens
Wnioski
Pytania
Dalsze badania
Uczenie głębokie w praktyce to wszystko!
Część II.
Zrozumienie aplikacji
fastai
Rozdział 4.
Jak
to wygląda od środka trenowanie klasyfikatora cyfr
Piksele podstawa widzenia komputerowego
Podejście pierwsze: podobieństwo pikseli
Tablice NumPy i tensory PyTorch
Wyznaczanie wskaźników z wykorzystaniem rozgłaszania
Stochastyczny spadek wzdłuż gradientu
Wyznaczanie gradientów
Stopniowanie ze współczynnikiem uczenia
Kompleksowy przykład użycia stochastycznego spadku wzdłuż gradientu
Etap 1.: inicjalizacja parametrów
Etap 2.: obliczanie prognoz
Etap 3.: obliczanie straty
Etap 4.: obliczanie gradientów
Etap 5.: stopniowanie wag
Etap 6.: powtórzenie procesu
Etap 7.: koniec
Podsumowanie procesu stochastycznego spadku wzdłuż gradientu
Funkcja straty MNIST
Sigmoida
Stochastyczny spadek wzdłuż gradientu i minipaczki
Złożenie wszystkiego w całość
Tworzenie optymalizatora
Wprowadzanie nieliniowości
Bardziej rozbudowane modele
Podsumowanie słownictwa
Pytania
Dalsze badania
Rozdział 5.
Klasyfikowanie
obrazów
Od psów i kotów do ras zwierząt domowych
Dobór wstępny
Sprawdzanie i debugowanie obiektu DataBlock
Entropia krzyżowa
Przeglądanie aktywacji i etykiet
Softmax
Logarytm prawdopodobieństwa
Obliczanie logarytmu
Interpretacja modelu
Poprawianie modelu
Wyszukiwarka współczynnika uczenia
Odmrażanie i uczenie transferowe
Dyskryminatywne współczynniki uczenia
Wybór liczby epok
Bardziej złożone architektury
Podsumowanie
Pytania
Dalsze badania
Rozdział 6.
Inne zagadnienia związane z widzeniem komputerowym
Klasyfikacja wieloetykietowa
Dane
Tworzenie obiektu DataBlock
Binarna entropia krzyżowa
Regresja
Gromadzenie danych
Trenowanie modelu
Podsumowanie
Pytania
Dalsze badania
Rozdział 7.
Trenowanie
supernowoczesnego modelu
Imagenette
Normalizacja
Progresywna zmiana rozmiaru
Wydłużenie czasu testu
Mixup
Wygładzanie etykiet
Podsumowanie
Pytania
Dalsze badania
Rozdział 8.
Szczegółowa
analiza filtrowania zespołowego
Pierwszy kontakt z danymi
Czynniki ukryte
Tworzenie obiektu DataLoaders
Filtrowanie zespołowe od podstaw
Wygaszanie wag
Tworzenie własnego modułu osadzania
Interpretacja osadzeń i przesunięć
Użycie aplikacji fastai.collab
Odległość osadzania
Uruchamianie modelu filtrowania zespołowego
Uczenie głębokie w filtrowaniu zespołowym
Podsumowanie
Pytania
Dalsze badania
Rozdział 9.
Szczegółowa analiza modelowania tabelarycznego
Osadzenia skategoryzowane
Poza uczeniem głębokim
Zbiór danych
Konkursy Kaggle
Sprawdzenie danych
Drzewa decyzyjne
Obsługa dat
Użycie obiektów TabularPandas i TabularProc
Tworzenie drzewa decyzyjnego
Zmienne skategoryzowane
Lasy losowe
Tworzenie lasu losowego
Błąd out-of-bag
Interpretacja modelu
Wariancja drzewa dla pewności prognozy
Ważności cech
Usuwanie zmiennych o niskiej ważności
Usuwanie zbędnych cech
Częściowa zależność
Wyciek danych
Interpreter drzewa
Ekstrapolacja i sieci neuronowe
Problem ekstrapolacji
Wyszukiwanie danych spoza domeny
Użycie sieci neuronowej
Łączenie w zespoły
Wzmacnianie
Łączenie osadzeń z innymi metodami
Podsumowanie
Pytania
Dalsze badania
Rozdział 10.
Szczegółowa
analiza przetwarzania języka naturalnego rekurencyjne sieci neuronowe
Wstępne przetwarzanie tekstu
Tokenizacja
Tokenizacja słów przy użyciu biblioteki fastai
Tokenizacja podłańcuchów
Zamiana na liczby przy użyciu biblioteki fastai
Umieszczanie tekstu w paczkach dla modelu językowego
Trenowanie klasyfikatora tekstu
Użycie klasy DataBlock w modelu językowym
Dostrajanie modelu językowego
Zapisywanie i wczytywanie modeli
Generowanie tekstu
Tworzenie klasyfikatora DataLoaders
Dostrajanie klasyfikatora
Dezinformacja i modele językowe
Podsumowanie
Pytania
Dalsze badania
Rozdział 11.
Przygotowywanie danych dla modeli za pomocą interfejsu API pośredniego
poziomu z biblioteki fastai
Szczegółowa analiza warstwowego interfejsu programistycznego
biblioteki fastai
Transformacje
Tworzenie własnej transformacji
Klasa Pipeline potoku transformacji
TfmdLists i Datasets kolekcje przekształcone
TfmdLists
Datasets
Zastosowanie interfejsu API pośredniego poziomu SiamesePair
Podsumowanie
Pytania
Dalsze badania
Zrozumienie aplikacji fastai podsumowanie
Część III.
Podstawy uczenia
głębokiego
Rozdział 12.
Tworzenie od podstaw
modelu językowego
Dane
Tworzenie od podstaw pierwszego modelu językowego
Obsługa modelu językowego w bibliotece PyTorch
Pierwsza rekurencyjna sieć neuronowa
Ulepszanie sieci RNN
Obsługa stanu sieci RNN
Tworzenie większej liczby sygnałów
Wielowarstwowe rekurencyjne sieci neuronowe
Model
Eksplodujące lub zanikające aktywacje
Architektura LSTM
Tworzenie modelu LSTM od podstaw
Trenowanie modelu językowego wykorzystującego architekturę LSTM
Regularyzacja modelu LSTM
Dropout
Regularyzacja aktywacji i czasowa regularyzacja aktywacji
Trening regularyzowanego modelu LSTM z wiązanymi wagami
Podsumowanie
Pytania
Dalsze badania
Rozdział 13.
Konwolucyjne sieci
neuronowe
Magia konwolucji
Odwzorowywanie jądra splotu
Konwolucje w bibliotece PyTorch
Kroki i dopełnienie
Zrozumienie równań konwolucji
Pierwsza konwolucyjna sieć neuronowa
Tworzenie konwolucyjnej sieci neuronowej
Zrozumienie arytmetyki konwolucji
Pola receptywne
Kilka uwag o Twitterze
Obrazy kolorowe
Ulepszanie stabilności trenowania
Prosty model bazowy
Zwiększenie wielkości paczki
Trenowanie jednocykliczne
Normalizacja wsadowa
Podsumowanie
Pytania
Dalsze badania
Rozdział 14.
Sieci ResNet
Powrót do Imagenette
Tworzenie nowoczesnej konwolucyjnej sieci neuronowej ResNet
Pomijanie połączeń
Model sieci ResNet na poziomie światowym
Warstwy z wąskim gardłem
Podsumowanie
Pytania
Dalsze badania
Rozdział 15.
Szczegółowa
analiza architektur aplikacji
Widzenie komputerowe
Funkcja cnn_learner
Funkcja unet_learner
Model syjamski
Przetwarzanie języka naturalnego
Dane tabelaryczne
Podsumowanie
Pytania
Dalsze badania
Rozdział 16.
Proces trenowania
Tworzenie modelu bazowego
Ogólny optymalizator
Momentum
RMSProp
Adam
Dwie metody wygaszania wag
Wywołania zwrotne
Tworzenie wywołania zwrotnego
Kolejność wywołań zwrotnych i wyjątki
Podsumowanie
Pytania
Dalsze badania
Podstawy uczenia głębokiego podsumowanie
Część IV.
Uczenie
głębokie od podstaw
Rozdział 17.
Sieć neuronowa od podstaw
Tworzenie od podstaw warstwy sieci neuronowej
Modelowanie neuronu
Mnożenie macierzy od podstaw
Arytmetyka składowych
Rozgłaszanie
Rozgłaszanie wartości skalarnej
Rozgłaszanie wektora na macierz
Zasady rozgłaszania
Konwencja sumacyjna Einsteina
Przejścia w przód i wstecz
Definiowanie i inicjalizowanie warstwy
Gradienty i przejście wstecz
Modyfikowanie modelu
Implementacja przy użyciu biblioteki PyTorch
Podsumowanie
Pytania
Dalsze badania
Rozdział 18.
Interpretacja sieci CNN
przy użyciu mapy aktywacji klas
Mapa aktywacji klas i punkty zaczepienia
Gradientowa mapa aktywacji klas
Podsumowanie
Pytania
Dalsze badania
Rozdział 19.
Klasa Learner biblioteki fastai od podstaw
Dane
Klasa Dataset
Klasy Module i Parameter
Prosta konwolucyjna sieć neuronowa
Funkcja straty
Klasa Learner
Wywołania zwrotne
Harmonogram modyfikowania współczynnika uczenia
Podsumowanie
Pytania
Dalsze badania
Rozdział 20.
Uwagi końcowe
Dodatek A.
Tworzenie bloga
Blogowanie przy użyciu usługi GitHub Pages
Tworzenie repozytorium
Konfigurowanie strony głównej
Tworzenie wpisów
Synchronizowanie GitHuba z własnym komputerem
Tworzenie bloga za pomocą notatnika Jupytera
Dodatek B.
Lista
kontrolna projektu dotyczącego danych
Analitycy danych
Strategia
Dane
Analityka
Implementacja
Utrzymywanie
Ograniczenia
O autorach
Podziękowania
Kolofon
544
stron, Format: 16.6x23.5cm, oprawa miękka