Uczenie maszynowe z użyciem Scikit-Learn i TensorFlow

Book description

Pojęcia, techniki i narzędzia służące do tworzenia systemów inteligentnych
W ciągu ostatnich lat uczenie maszynowe stało się sercem wielu nowoczesnych produktów, takich jak zaawansowane techniki wyszukiwania w przeglądarkach, rozpoznawanie mowy w smartfonach czy proponowanie treści w zależności od indywidualnych preferencji użytkownika. Być może niedługo taki system inteligentny zastąpi Cię za kierownicą samochodu. Uczenie głębokie wprowadziło nową jakość do uczenia maszynowego. Daje niesamowite możliwości, jednak wymaga olbrzymiej mocy obliczeniowej i potężnych ilości danych. Programiści implementujący takie rozwiązania są poszukiwanymi specjalistami i mogą liczyć na ekscytujące oferty!

Ta książka jest praktycznym podręcznikiem tworzenia systemów inteligentnych. Przedstawiono tu najważniejsze zagadnienia teoretyczne dotyczące uczenia maszynowego i sieci neuronowych. W zrozumiały sposób zaprezentowano koncepcje i narzędzia służące do tworzenia systemów inteligentnych. Opisano Scikit-Learn i TensorFlow - środowiska produkcyjne języka Python - i pokazano krok po kroku, w jaki sposób wykorzystuje się je do implementacji sieci neuronowych. Liczne praktyczne przykłady i ćwiczenia pozwolą na pogłębienie i utrwalenie zdobytej wiedzy. Jeśli tylko potrafisz posługiwać się Pythonem, dzięki tej przystępnie napisanej książce szybko zaczniesz implementować systemy inteligentne.

W tej książce między innymi:

podstawowe koncepcje uczenia maszynowego, uczenia głębokiego i sieci neuronowych
przygotowywanie zbiorów danych i zarządzanie nimi
algorytmy uczenia maszynowego
rodzaje architektury sieci neuronowych
uczenie głębokich sieci neuronowych
olbrzymie zbiory danych i uczenie poprzez wzmacnianie
Już dziś zacznij tworzyć systemy inteligentne!

Table of contents

  1. Przedmowa
    1. Fenomen uczenia maszynowego
    2. Uczenie maszynowe w Twoich projektach
    3. Cel i sposób jego osiągnięcia
    4. Wymogi wstępne
    5. Zawartość książki
    6. Dodatkowe zasoby
    7. Konwencje stosowane w książce
    8. Korzystanie z kodu źródłowego
    9. Podziękowania
  2. Część I Podstawy uczenia maszynowego
  3. Rozdział 1. Krajobraz uczenia maszynowego
    1. Czym jest uczenie maszynowe?
    2. Dlaczego warto korzystać z uczenia maszynowego?
    3. Rodzaje systemów uczenia maszynowego
      1. Uczenie nadzorowane/nienadzorowane
        1. Uczenie nadzorowane
        2. Uczenie nienadzorowane
        3. Uczenie półnadzorowane
        4. Uczenie przez wzmacnianie
      2. Uczenie wsadowe/przyrostowe
        1. Uczenie wsadowe
        2. Uczenie przyrostowe
      3. Uczenie z przykładów/z modelu
        1. Uczenie z przykładów
        2. Uczenie z modelu
    4. Główne problemy uczenia maszynowego
      1. Niedobór danych uczących
      2. Niereprezentatywne dane uczące
      3. Dane kiepskiej jakości
      4. Nieistotne cechy
      5. Przetrenowanie danych uczących
      6. Niedotrenowanie danych uczących
      7. Podsumowanie
    5. Testowanie i ocenianie
    6. Ćwiczenia
  4. Rozdział 2. Nasz pierwszy projekt uczenia maszynowego
    1. Praca z rzeczywistymi danymi
    2. Przeanalizuj całokształt projektu
      1. Określ zakres problemu
      2. Wybierz metrykę wydajności
      3. Sprawdź założenia
    3. Zdobądź dane
      1. Stwórz przestrzeń roboczą
      2. Pobierz dane
      3. Rzut oka na strukturę danych
      4. Stwórz zbiór testowy
    4. Odkrywaj i wizualizuj dane, aby zdobywać nowe informacje
      1. Wizualizowanie danych geograficznych
      2. Poszukiwanie korelacji
      3. Eksperymentowanie z kombinacjami atrybutów
    5. Przygotuj dane pod algorytmy uczenia maszynowego
      1. Oczyszczanie danych
      2. Obsługa tekstu i atrybutów kategorialnych
      3. Niestandardowe transformatory
      4. Skalowanie cech
      5. Potoki transformujące
    6. Wybór i uczenie modelu
      1. Trenowanie i ocena modelu za pomocą zbioru uczącego
      2. Dokładniejsze ocenianie za pomocą sprawdzianu krzyżowego
    7. Wyreguluj swój model
      1. Metoda przeszukiwania siatki
      2. Metoda losowego przeszukiwania
      3. Metody zespołowe
      4. Analizuj najlepsze modele i ich błędy
      5. Oceń system za pomocą zbioru testowego
    8. Uruchom, monitoruj i utrzymuj swój system
    9. Teraz Twoja kolej!
    10. Ćwiczenia
  5. Rozdział 3. Klasyfikacja
    1. Zbiór danych MNIST
    2. Uczenie klasyfikatora binarnego
    3. Miary wydajności
      1. Pomiar dokładności za pomocą sprawdzianu krzyżowego
      2. Macierz pomyłek
      3. Precyzja i pełność
      4. Kompromis pomiędzy precyzją a pełnością
      5. Wykres krzywej ROC
    4. Klasyfikacja wieloklasowa
    5. Analiza błędów
    6. Klasyfikacja wieloetykietowa
    7. Klasyfikacja wielowyjściowa
    8. Ćwiczenia
  6. Rozdział 4. Uczenie modeli
    1. Regresja liniowa
      1. Równanie normalne
      2. Złożoność obliczeniowa
    2. Gradient prosty
      1. Wsadowy gradient prosty
      2. Stochastyczny spadek wzdłuż gradientu
      3. Schodzenie po gradiencie z minigrupami
    3. Regresja wielomianowa
    4. Krzywe uczenia
    5. Regularyzowane modele liniowe
      1. Regresja grzbietowa
      2. Regresja metodą LASSO
      3. Metoda elastycznej siatki
      4. Wczesne zatrzymywanie
    6. Regresja logistyczna
      1. Szacowanie prawdopodobieństwa
      2. Funkcje ucząca i kosztu
      3. Granice decyzyjne
      4. Regresja softmax
    7. Ćwiczenia
  7. Rozdział 5. Maszyny wektorów nośnych
    1. Liniowa klasyfikacja SVM
      1. Klasyfikacja miękkiego marginesu
    2. Nieliniowa klasyfikacja SVM
      1. Jądro wielomianowe
      2. Dodawanie cech podobieństwa
      3. Gaussowskie jądro RBF
      4. Złożoność obliczeniowa
    3. Regresja SVM
    4. Mechanizm działania
      1. Funkcja decyzyjna i prognozy
      2. Cel uczenia
      3. Programowanie kwadratowe
      4. Problem dualny
      5. Kernelizowane maszyny SVM
      6. Przyrostowe maszyny SVM
    5. Ćwiczenia
  8. Rozdział 6. Drzewa decyzyjne
    1. Uczenie i wizualizowanie drzewa decyzyjnego
    2. Wyliczanie prognoz
    3. Szacowanie prawdopodobieństw przynależności do klas
    4. Algorytm uczący CART
    5. Złożoność obliczeniowa
    6. Wskaźnik Giniego czy entropia?
    7. Hiperparametry regularyzacyjne
    8. Regresja
    9. Niestabilność
    10. Ćwiczenia
  9. Rozdział 7. Uczenie zespołowe i losowe lasy
    1. Klasyfikatory głosujące
    2. Agregacja i wklejanie
      1. Agregacja i wklejanie w module Scikit-Learn
      2. Ocena OOB
    3. Rejony losowe i podprzestrzenie losowe
    4. Losowe lasy
      1. Zespół Extra-Trees
      2. Istotność cech
    5. Wzmacnianie
      1. AdaBoost
      2. Wzmacnianie gradientowe
    6. Kontaminacja
    7. Ćwiczenia
  10. Rozdział 8. Redukcja wymiarowości
    1. Klątwa wymiarowości
    2. Główne strategie redukcji wymiarowości
      1. Rzutowanie
      2. Uczenie rozmaitościowe
    3. Analiza PCA
      1. Zachowanie wariancji
      2. Główne składowe
      3. Rzutowanie na d wymiarów
      4. Implementacja w module Scikit-Learn
      5. Współczynnik wariancji wyjaśnionej
      6. Wybór właściwej liczby wymiarów
      7. Algorytm PCA w zastosowaniach kompresji
      8. Przyrostowa analiza PCA
      9. Losowa analiza PCA
    4. Jądrowa analiza PCA
      1. Wybór jądra i strojenie hiperparametrów
    5. Algorytm LLE
    6. Inne techniki redukowania wymiarowości
    7. Ćwiczenia
  11. Część II Sieci neuronowe i uczenie głębokie
  12. Rozdział 9. Instalacja i używanie modułu TensorFlow
    1. Instalacja
    2. Tworzenie pierwszego grafu i uruchamianie go w sesji
    3. Zarządzanie grafami
    4. Cykl życia wartości w węźle
    5. Regresja liniowa przy użyciu modułu TensorFlow
    6. Implementacja metody gradientu prostego
      1. Ręczne obliczanie gradientów
      2. Automatyczne różniczkowanie
      3. Korzystanie z optymalizatora
    7. Dostarczanie danych algorytmowi uczącemu
    8. Zapisywanie i wczytywanie modeli
    9. Wizualizowanie grafu i krzywych uczenia za pomocą modułu TensorBoard
    10. Zakresy nazw
    11. Modułowość
    12. Udostępnianie zmiennych
    13. Ćwiczenia
  13. Rozdział 10. Wprowadzenie do sztucznych sieci neuronowych
    1. Od biologicznych do sztucznych neuronów
      1. Neurony biologiczne
      2. Operacje logiczne przy użyciu neuronów
      3. Perceptron
      4. Perceptron wielowarstwowy i propagacja wsteczna
    2. Uczenie sieci MLP za pomocą zaawansowanego interfejsu API modułu TensorFlow
    3. Uczenie głębokiej sieci neuronowej za pomocą standardowego interfejsu TensorFlow
      1. Faza konstrukcyjna
      2. Faza wykonawcza
      3. Korzystanie z sieci neuronowej
    4. Strojenie hiperparametrów sieci neuronowej
      1. Liczba ukrytych warstw
      2. Liczba neuronów tworzących warstwę ukrytą
      3. Funkcje aktywacji
    5. Ćwiczenia
  14. Rozdział 11. Uczenie głębokich sieci neuronowych
    1. Problemy zanikających/eksplodujących gradientów
      1. Inicjacje wag Xaviera i He
      2. Nienasycające funkcje aktywacji
      3. Normalizacja wsadowa
        1. Implementacja normalizacji wsadowej za pomocą modułu TensorFlow
      4. Obcinanie gradientu
    2. Wielokrotne stosowanie gotowych warstw
      1. Wielokrotne stosowanie modelu TensorFlow
      2. Wykorzystywanie modeli utworzonych w innych środowiskach
      3. Zamrażanie niższych warstw
      4. Zapamiętywanie warstw ukrytych
      5. Modyfikowanie, usuwanie lub zastępowanie górnych warstw
      6. Repozytoria modeli
      7. Nienadzorowane uczenie wstępne
      8. Uczenie wstępne za pomocą dodatkowego zadania
    3. Szybsze optymalizatory
      1. Optymalizacja momentum
      2. Przyśpieszony spadek wzdłuż gradientu (algorytm Nesterova)
      3. AdaGrad
      4. RMSProp
      5. Optymalizacja Adam
      6. Harmonogramowanie współczynnika uczenia
    4. Regularyzacja jako sposób unikania przetrenowania
      1. Wczesne zatrzymywanie
      2. Regularyzacja ℓ1 i ℓ2
      3. Porzucanie
      4. Regularyzacja typu max-norm
      5. Dogenerowanie danych
    5. Praktyczne wskazówki
    6. Ćwiczenia
  15. Rozdział 12. Rozdzielanie operacji TensorFlow pomiędzy urządzenia i serwery
    1. Wiele urządzeń na jednym komputerze
      1. Instalacja
      2. Zarządzanie pamięcią operacyjną karty graficznej
      3. Umieszczanie operacji na urządzeniach
        1. Proste rozmieszczanie
        2. Zapisywanie zdarzeń rozmieszczania
        3. Funkcja dynamicznego rozmieszczania
        4. Operacje i jądra
        5. „Miękkie” rozmieszczanie
      4. Przetwarzanie równoległe
      5. Zależności sterujące
    2. Wiele urządzeń na wielu serwerach
      1. Otwieranie sesji
      2. Usługi nadrzędna i robocza
      3. Przypinanie operacji w wielu zadaniach
      4. Rozdzielanie zmiennych pomiędzy wiele serwerów parametrów
      5. Udostępnianie stanu rozproszonych sesji za pomocą kontenerów zasobów
      6. Komunikacja asynchroniczna za pomocą kolejek
        1. Umieszczanie danych w kolejce
        2. Usuwanie danych z kolejki
        3. Kolejki krotek
        4. Zamykanie kolejki
        5. RandomShuffleQueue
        6. PaddingFIFOQueue
      7. Wczytywanie danych bezpośrednio z grafu
        1. Wstępne wczytanie danych do zmiennej
        2. Wczytywanie danych uczących bezpośrednio z grafu
        3. Czytniki wieloklasowe wykorzystujące klasy Coordinator i QueueRunner
        4. Inne funkcje pomocnicze
    3. Przetwarzanie równoległe sieci neuronowych w klastrze TensorFlow
      1. Jedna sieć neuronowa na każde urządzenie
      2. Replikacja wewnątrzgrafowa i międzygrafowa
      3. Zrównoleglanie modelu
      4. Zrównoleglanie danych
        1. Aktualizacje synchroniczne
        2. Aktualizacje asynchroniczne
        3. Nasycenie przepustowości
        4. Implementacja w module TensorFlow
    4. Ćwiczenia
  16. Rozdział 13. Splotowe sieci neuronowe
    1. Architektura kory wzrokowej
    2. Warstwa splotowa
      1. Filtry
      2. Stosy map cech
      3. Implementacja w module TensorFlow
      4. Zużycie pamięci operacyjnej
    3. Warstwa łącząca
    4. Architektury splotowych sieci neuronowych
      1. LeNet-5
      2. AlexNet
      3. GoogLeNet
      4. ResNet
    5. Ćwiczenia
  17. Rozdział 14. Rekurencyjne sieci neuronowe
    1. Neurony rekurencyjne
      1. Komórki pamięci
      2. Sekwencje wejść i wyjść
    2. Podstawowe sieci RSN w module TensorFlow
      1. Statyczne rozwijanie w czasie
      2. Dynamiczne rozwijanie w czasie
      3. Obsługa sekwencji wejściowych o zmiennej długości
      4. Obsługa sekwencji wyjściowych o zmiennej długości
    3. Uczenie rekurencyjnych sieci neuronowych
      1. Uczenie klasyfikatora sekwencji
      2. Uczenie w celu przewidywania szeregów czasowych
      3. Twórcza sieć rekurencyjna
    4. Głębokie sieci rekurencyjne
      1. Rozmieszczanie głębokiej sieci rekurencyjnej pomiędzy wiele kart graficznych
      2. Wprowadzanie metody porzucania
      3. Problem uczenia w sieciach wielotaktowych
    5. Komórka LSTM
      1. Połączenia przezierne
    6. Komórka GRU
    7. Przetwarzanie języka naturalnego
      1. Reprezentacje wektorowe słów
      2. Sieć typu koder-dekoder służąca do tłumaczenia maszynowego
    8. Ćwiczenia
  18. Rozdział 15. Autokodery
    1. Efektywne reprezentacje danych
    2. Analiza PCA za pomocą niedopełnionego autokodera liniowego
    3. Autokodery stosowe
      1. Implementacja w module TensorFlow
      2. Wiązanie wag
      3. Uczenie autokoderów pojedynczo
      4. Wizualizacja rekonstrukcji
      5. Wizualizowanie cech
    4. Nienadzorowane uczenie wstępne za pomocą autokoderów stosowych
    5. Autokodery odszumiające
      1. Implementacja w module TensorFlow
    6. Autokodery rzadkie
      1. Implementacja w module TensorFlow
    7. Autokodery wariacyjne
      1. Generowanie cyfr
    8. Inne autokodery
    9. Ćwiczenia
  19. Rozdział 16. Uczenie przez wzmacnianie
    1. Uczenie się optymalizowania nagród
    2. Wyszukiwanie polityki
    3. Wprowadzenie do narzędzia OpenAI gym
    4. Sieci neuronowe jako polityki
    5. Ocenianie czynności — problem przypisania zasługi
    6. Gradienty polityk
    7. Procesy decyzyjne Markowa
    8. Uczenie metodą różnic czasowych i algorytm Q-uczenia
      1. Polityki poszukiwania
      2. Przybliżający algorytm Q-uczenia
    9. Nauka gry w Ms. Pac-Man za pomocą głębokiego Q-uczenia
    10. Ćwiczenia
    11. Dziękuję!
  20. Dodatki
  21. Dodatek A Rozwiązania ćwiczeń
    1. Rozdział 1. Krajobraz uczenia maszynowego
    2. Rozdział 2. Nasz pierwszy projekt uczenia maszynowego
    3. Rozdział 3. Klasyfikacja
    4. Rozdział 4. Uczenie modeli
    5. Rozdział 5. Maszyny wektorów nośnych
    6. Rozdział 6. Drzewa decyzyjne
    7. Rozdział 7. Uczenie zespołowe i losowe lasy
    8. Rozdział 8. Redukcja wymiarowości
    9. Rozdział 9. Instalacja i używanie modułu TensorFlow
    10. Rozdział 10. Wprowadzenie do sztucznych sieci neuronowych
    11. Rozdział 11. Uczenie głębokich sieci neuronowych
    12. Rozdział 12. Rozdzielanie operacji TensorFlow pomiędzy urządzenia i serwery
    13. Rozdział 13. Splotowe sieci neuronowe
    14. Rozdział 14. Rekurencyjne sieci neuronowe
    15. Rozdział 15. Autokodery
    16. Rozdział 16. Uczenie przez wzmacnianie
  22. Dodatek B Lista kontrolna projektu uczenia maszynowego
    1. Określenie problemu i przeanalizowanie go w szerszej perspektywie
    2. Pozyskanie danych
    3. Analiza danych
    4. Przygotowanie danych
    5. Stworzenie krótkiej listy obiecujących modeli
    6. Dostrojenie modelu
    7. Zaprezentowanie rozwiązania
    8. Do dzieła!
  23. Dodatek C Problem dualny w maszynach wektorów nośnych
  24. Dodatek D Różniczkowanie automatyczne
    1. Różniczkowanie ręczne
    2. Różniczkowanie symboliczne
    3. Różniczkowanie numeryczne
    4. Różniczkowanie automatyczne
    5. Odwrotne różniczkowanie automatyczne
  25. Dodatek E Inne popularne architektury sieci neuronowych
    1. Sieci Hopfielda
    2. Maszyny Boltzmanna
    3. Ograniczone maszyny Boltzmanna
    4. Głębokie sieci przekonań
    5. Mapy samoorganizujące
    6. Informacje o autorze
    7. Kolofon

Product information

  • Title: Uczenie maszynowe z użyciem Scikit-Learn i TensorFlow
  • Author(s): Aurélien Géron
  • Release date: August 2018
  • Publisher(s): Helion
  • ISBN: 9781098125097