Python. Machine learning i deep learning. Biblioteki scikit-learn i TensorFlow 2. Wydanie III - ebook
Python. Machine learning i deep learning. Biblioteki scikit-learn i TensorFlow 2. Wydanie III - ebook
Uczenie maszynowe jest jedną z najbardziej fascynujących technologii naszych czasów - rozwojem jego najróżniejszych zastosowań zajmują się tacy giganci jak Google, Facebook, Apple, Amazon czy IBM. Uczenie maszynowe otwiera zupełnie nowe możliwości i powoli staje się nieodzowne: wystarczy wymienić asystenty głosowe w smartfonach, chatboty ułatwiające klientom wybór produktu, a także sieci ułatwiające podejmowanie decyzji o inwestycjach giełdowych, filtrujące niechciane wiadomości e-mail czy wspomagające diagnostykę medyczną.
Oto obszerny przewodnik po uczeniu maszynowym i uczeniu głębokim w Pythonie. Zawiera dokładne omówienie najważniejszych technik uczenia maszynowego oraz staranne wyjaśnienie zasad rządzących tą technologią. Poszczególne zagadnienia zilustrowano mnóstwem wyjaśnień, wizualizacji i przykładów, co znakomicie ułatwia zrozumienie materiału i sprawne rozpoczęcie samodzielnego budowania aplikacji i modeli, takich jak te służące do klasyfikacji obrazów, odkrywania ukrytych wzorców czy wydobywania dodatkowych informacji z danych. Wydanie trzecie zostało zaktualizowane - znalazł się w nim opis biblioteki TensorFlow 2 i najnowszych dodatków do biblioteki scikit-learn. Dodano również wprowadzenie do dwóch nowatorskich technik: uczenia przez wzmacnianie i budowy generatywnych sieci przeciwstawnych (GAN).
W książce między innymi:
- platformy, modele i techniki uczenia maszynowego
- wykorzystywanie biblioteki scikit-learn i TensorFlow
- sieci neuronowe, sieci GAN i inne
- przygotowywanie danych dla modeli uczenia maszynowego
- ocena i strojenie modeli
- analizy: regresyjna, skupień i sentymentów
Uczenie głębokie z Pythonem: zrozum i zastosuj!
Spis treści
Informacje o autorach 13
Informacje o recenzentach 15
Wstęp 17
Rozdział 1. Umożliwianie komputerom uczenia się z danych 27
- Tworzenie inteligentnych maszyn służących do przekształcania danych w wiedzę 28
- Trzy różne rodzaje uczenia maszynowego 28
- Przewidywanie przyszłości za pomocą uczenia nadzorowanego 29
- Rozwiązywanie problemów interaktywnych za pomocą uczenia przez wzmacnianie 32
- Odkrywanie ukrytych struktur za pomocą uczenia nienadzorowanego 33
- Wprowadzenie do podstawowej terminologii i notacji 35
- Notacja i konwencje używane w niniejszej książce 35
- Terminologia uczenia maszynowego 37
- Strategia tworzenia systemów uczenia maszynowego 38
- Wstępne przetwarzanie - nadawanie danym formy 38
- Trenowanie i dobór modelu predykcyjnego 39
- Ewaluacja modeli i przewidywanie wystąpienia nieznanych danych 40
- Wykorzystywanie środowiska Python do uczenia maszynowego 40
- Instalacja środowiska Python i pakietów z repozytorium Python Package Index 41
- Korzystanie z platformy Anaconda i menedżera pakietów 41
- Pakiety przeznaczone do obliczeń naukowych, analizy danych i uczenia maszynowego 42
- Podsumowanie 42
Rozdział 2. Trenowanie prostych algorytmów uczenia maszynowego w celach klasyfikacji 45
- Sztuczne neurony - rys historyczny początków uczenia maszynowego 46
- Definicja formalna sztucznego neuronu 47
- Reguła uczenia perceptronu 49
- Implementacja algorytmu uczenia perceptronu w Pythonie 51
- Obiektowy interfejs API perceptronu 51
- Trenowanie modelu perceptronu na zestawie danych Iris 54
- Adaptacyjne neurony liniowe i zbieżność uczenia 60
- Minimalizacja funkcji kosztu za pomocą metody gradientu prostego 61
- Implementacja algorytmu Adaline w Pythonie 63
- Usprawnianie gradientu prostego poprzez skalowanie cech 67
- Wielkoskalowe uczenie maszynowe i metoda stochastycznego spadku wzdłuż gradientu 69
- Podsumowanie 73
Rozdział 3. Stosowanie klasyfikatorów uczenia maszynowego za pomocą biblioteki scikit-learn 75
- Wybór algorytmu klasyfikującego 76
- Pierwsze kroki z biblioteką scikit-learn - uczenie perceptronu 76
- Modelowanie prawdopodobieństwa przynależności do klasy za pomocą regresji logistycznej 82
- Regresja logistyczna i prawdopodobieństwo warunkowe 82
- Wyznaczanie wag logistycznej funkcji kosztu 86
- Przekształcanie implementacji Adaline do postaci algorytmu regresji logistycznej 88
- Uczenie modelu regresji logistycznej za pomocą biblioteki scikit-learn 92
- Zapobieganie przetrenowaniu za pomocą regularyzacji 94
- Wyznaczanie maksymalnego marginesu za pomocą maszyn wektorów nośnych 97
- Teoretyczne podłoże maksymalnego marginesu 98
- Rozwiązywanie przypadków nieliniowo rozdzielnych za pomocą zmiennych uzupełniających 99
- Alternatywne implementacje w interfejsie scikit-learn 101
- Rozwiązywanie nieliniowych problemów za pomocą jądra SVM 102
- Metody jądrowe dla danych nierozdzielnych liniowo 102
- Stosowanie sztuczki z funkcją jądra do znajdowania przestrzeni rozdzielających w przestrzeni wielowymiarowej 104
- Uczenie drzew decyzyjnych 107
- Maksymalizowanie przyrostu informacji - osiąganie jak największych korzyści 108
- Budowanie drzewa decyzyjnego 112
- Łączenie wielu drzew decyzyjnych za pomocą modelu losowego lasu 115
- Algorytm k-najbliższych sąsiadów - model leniwego uczenia 119
- Podsumowanie 122
Rozdział 4. Tworzenie dobrych zestawów danych uczących - wstępne przetwarzanie danych 125
- Kwestia brakujących danych 126
- Wykrywanie brakujących wartości w danych tabelarycznych 126
- Usuwanie przykładów uczących lub cech niezawierających wartości 127
- Wstawianie brakujących danych 128
- Estymatory interfejsu scikit-learn 129
- Przetwarzanie danych kategorialnych 130
- Kodowanie danych kategorialnych za pomocą biblioteki pandas 131
- Mapowanie cech porządkowych 131
- Kodowanie etykiet klas 132
- Kodowanie "gorącojedynkowe" cech nominalnych (z użyciem wektorów własnych) 133
- Rozdzielanie zestawu danych na oddzielne podzbiory uczący i testowy 136
- Skalowanie cech 138
- Dobór odpowiednich cech 140
- Regularyzacje L1 i L2 jako kary ograniczające złożoność modelu 141
- Interpretacja geometryczna regularyzacji L2 141
- Rozwiązania rzadkie za pomocą regularyzacji L1 143
- Algorytmy sekwencyjnego wyboru cech 146
- Ocenianie istotności cech za pomocą algorytmu losowego lasu 151
- Podsumowanie 154
Rozdział 5. Kompresja danych poprzez redukcję wymiarowości 155
- Nienadzorowana redukcja wymiarowości za pomocą analizy głównych składowych 156
- Podstawowe etapy analizy głównych składowych 156
- Wydobywanie głównych składowych krok po kroku 158
- Wyjaśniona wariancja całkowita 160
- Transformacja cech 161
- Analiza głównych składowych w interfejsie scikit-learn 164
- Nadzorowana kompresja danych za pomocą liniowej analizy dyskryminacyjnej 167
- Porównanie analizy głównych składowych z liniową analizą dyskryminacyjną 167
- Wewnętrzne mechanizmy działania liniowej analizy dyskryminacyjnej 169
- Obliczanie macierzy rozproszenia 169
- Dobór dyskryminant liniowych dla nowej podprzestrzeni cech 171
- Rzutowanie przykładów na nową przestrzeń cech 173
- Implementacja analizy LDA w bibliotece scikit-learn 174
- Jądrowa analiza głównych składowych jako metoda odwzorowywania nierozdzielnych liniowo klas 176
- Funkcje jądra oraz sztuczka z funkcją jądra 177
- Implementacja jądrowej analizy głównych składowych w Pythonie 181
- Rzutowanie nowych punktów danych 188
- Algorytm jądrowej analizy głównych składowych w bibliotece scikit-learn 191
- Podsumowanie 192
Rozdział 6. Najlepsze metody oceny modelu i strojenie parametryczne 195
- Usprawnianie cyklu pracy za pomocą kolejkowania 195
- Wczytanie zestawu danych Breast Cancer Wisconsin 196
- Łączenie funkcji transformujących i estymatorów w kolejce czynności 197
- Stosowanie k-krotnego sprawdzianu krzyżowego w ocenie skuteczności modelu 198
- Metoda wydzielania 199
- K-krotny sprawdzian krzyżowy 200
- Sprawdzanie algorytmów za pomocą krzywych uczenia i krzywych walidacji 204
- Diagnozowanie problemów z obciążeniem i wariancją za pomocą krzywych uczenia 204
- Rozwiązywanie problemów przetrenowania i niedotrenowania za pomocą krzywych walidacji 208
- Dostrajanie modeli uczenia maszynowego za pomocą metody przeszukiwania siatki 209
- Strojenie hiperparametrów przy użyciu metody przeszukiwania siatki 210
- Dobór algorytmu poprzez zagnieżdżony sprawdzian krzyżowy 211
- Przegląd wskaźników oceny skuteczności 213
- Odczytywanie macierzy pomyłek 213
- Optymalizacja precyzji i pełności modelu klasyfikującego 215
- Wykres krzywej ROC 217
- Wskaźniki zliczające dla klasyfikacji wieloklasowej 220
- Kwestia dysproporcji klas 220
- Podsumowanie 223
Rozdział 7. Łączenie różnych modeli w celu uczenia zespołowego 225
- Uczenie zespołów 225
- Łączenie klasyfikatorów za pomocą algorytmu głosowania większościowego 229
- Implementacja prostego klasyfikatora głosowania większościowego 230
- Stosowanie reguły głosowania większościowego do uzyskiwania prognoz 235
- Ewaluacja i strojenie klasyfikatora zespołowego 237
- Agregacja - tworzenie zespołu klasyfikatorów za pomocą próbek początkowych 242
- Agregacja w pigułce 243
- Stosowanie agregacji do klasyfikowania przykładów z zestawu Wine 244
- Usprawnianie słabych klasyfikatorów za pomocą wzmocnienia adaptacyjnego 248
- Wzmacnianie - mechanizm działania 248
- Stosowanie algorytmu AdaBoost za pomocą biblioteki scikit-learn 252
- Podsumowanie 255
Rozdział 8. Wykorzystywanie uczenia maszynowego w analizie sentymentów 257
- Przygotowywanie zestawu danych IMDb movie review do przetwarzania tekstu 258
- Uzyskiwanie zestawu danych IMDb 258
- Przetwarzanie wstępne zestawu danych IMDb do wygodniejszego formatu 259
- Wprowadzenie do modelu worka słów 260
- Przekształcanie słów w wektory cech 261
- Ocena istotności wyrazów za pomocą ważenia częstości termów - odwrotnej częstości w tekście 262
- Oczyszczanie danych tekstowych 264
- Przetwarzanie tekstu na znaczniki 266
- Uczenie modelu regresji logistycznej w celu klasyfikowania tekstu 268
- Praca z większą ilością danych - algorytmy sieciowe i uczenie pozardzeniowe 270
- Modelowanie tematyczne za pomocą alokacji ukrytej zmiennej Dirichleta 273
- Rozkładanie dokumentów tekstowych za pomocą analizy LDA 274
- Analiza LDA w bibliotece scikit-learn 274
- Podsumowanie 277
Rozdział 9. Wdrażanie modelu uczenia maszynowego do aplikacji sieciowej 279
- Serializacja wyuczonych estymatorów biblioteki scikit-learn 280
- Konfigurowanie bazy danych SQLite 283
- Tworzenie aplikacji sieciowej za pomocą środowiska Flask 285
- Nasza pierwsza aplikacja sieciowa 285
- Sprawdzanie i wyświetlanie formularza 287
- Przekształcanie klasyfikatora recenzji w aplikację sieciową 293
- Pliki i katalogi - wygląd drzewa katalogów 295
- Implementacja głównej części programu w pliku app.py 296
- Konfigurowanie formularza recenzji 298
- Tworzenie szablonu strony wynikowej 299
- Umieszczanie aplikacji sieciowej na publicznym serwerze 301
- Tworzenie konta w serwisie PythonAnywhere 301
- Przesyłanie aplikacji klasyfikatora filmowego 302
- Aktualizowanie klasyfikatora recenzji filmowych 303
- Podsumowanie 305
Rozdział 10. Przewidywanie ciągłych zmiennych docelowych za pomocą analizy regresywnej 307
- Wprowadzenie do regresji liniowej 308
- Prosta regresja liniowa 308
- Wielowymiarowa regresja liniowa 308
- Zestaw danych Housing 310
- Wczytywanie zestawu danych Housing do obiektu DataFrame 310
- Wizualizowanie ważnych elementów zestawu danych 312
- Analiza związków za pomocą macierzy korelacji 313
- Implementacja modelu regresji liniowej wykorzystującego zwykłą metodę najmniejszych kwadratów 315
- Określanie parametrów regresywnych za pomocą metody gradientu prostego 316
- Szacowanie współczynnika modelu regresji za pomocą biblioteki scikit-learn 319
- Uczenie odpornego modelu regresywnego za pomocą algorytmu RANSAC 321
- Ocenianie skuteczności modeli regresji liniowej 324
- Stosowanie regularyzowanych metod regresji 327
- Przekształcanie modelu regresji liniowej w krzywą - regresja wielomianowa 329
- Dodawanie członów wielomianowych za pomocą biblioteki scikit-learn 329
- Modelowanie nieliniowych zależności w zestawie danych Housing 331
- Analiza nieliniowych relacji za pomocą algorytmu losowego lasu 334
- Regresja przy użyciu drzewa decyzyjnego 334
- Regresja przy użyciu losowego lasu 336
- Podsumowanie 339
Rozdział 11. Praca z nieoznakowanymi danymi - analiza skupień 341
- Grupowanie obiektów na podstawie podobieństwa przy użyciu algorytmu centroidów 342
- Algorytm centroidów w bibliotece scikit-learn 342
- Inteligentniejszy sposób dobierania pierwotnych centroidów za pomocą algorytmu k-means++ 346
- Twarda i miękka analiza skupień 347
- Stosowanie metody łokcia do wyszukiwania optymalnej liczby skupień 349
- Ujęcie ilościowe jakości analizy skupień za pomocą wykresu profilu 351
- Organizowanie skupień do postaci drzewa skupień 355
- Oddolne grupowanie skupień 356
- Przeprowadzanie hierarchicznej analizy skupień na macierzy odległości 357
- Dołączanie dendrogramów do mapy cieplnej 360
- Aglomeracyjna analiza skupień w bibliotece scikit-learn 361
- Wyznaczanie rejonów o dużej gęstości za pomocą algorytmu DBSCAN 363
- Podsumowanie 368
Rozdział 12. Implementowanie wielowarstwowej sieci neuronowej od podstaw 369
- Modelowanie złożonych funkcji przy użyciu sztucznych sieci neuronowych 370
- Jednowarstwowa sieć neuronowa - powtórzenie 371
- Wstęp do wielowarstwowej architektury sieci neuronowych 373
- Aktywacja sieci neuronowej za pomocą propagacji w przód 376
- Klasyfikowanie pisma odręcznego 379
- Zestaw danych MNIST 379
- Implementacja perceptronu wielowarstwowego 385
- Trenowanie sztucznej sieci neuronowej 395
- Obliczanie logistycznej funkcji kosztu 395
- Wyjaśnienie algorytmu wstecznej propagacji 398
- Uczenie sieci neuronowych za pomocą algorytmu propagacji wstecznej 399
- Zbieżność w sieciach neuronowych 402
- Jeszcze słowo o implementacji sieci neuronowej 404
- Podsumowanie 404
Rozdział 13. Równoległe przetwarzanie sieci neuronowych za pomocą biblioteki TensorFlow 407
- Biblioteka TensorFlow a skuteczność uczenia 408
- Wyzwania związane z wydajnością 408
- Czym jest biblioteka TensorFlow? 409
- W jaki sposób będziemy poznawać bibliotekę TensorFlow? 411
- Pierwsze kroki z biblioteką TensorFlow 411
- Instalacja modułu TensorFlow 411
- Tworzenie tensorów w TensorFlow 412
- Manipulowanie typem danych i rozmiarem tensora 413
- Przeprowadzanie operacji matematycznych na tensorach 414
- Dzielenie, nawarstwianie i łączenie tensorów 415
- Tworzenie potoków wejściowych za pomocą tf.data, czyli interfejsu danych TensorFlow 416
- Tworzenie obiektów Dataset z istniejących tensorów 417
- Łączenie dwóch tensorów we wspólny zestaw danych 418
- Potasuj, pogrupuj, powtórz 419
- Tworzenie zestawu danych z plików umieszczonych w lokalnym magazynie dyskowym 422
- Pobieranie dostępnych zestawów danych z biblioteki tensorflow_datasets 425
- Tworzenie modelu sieci neuronowej za pomocą modułu TensorFlow 430
- Interfejs Keras (tf.keras) 430
- Tworzenie modelu regresji liniowej 431
- Uczenie modelu za pomocą metod .compile() i .fit() 435
- Tworzenie perceptronu wielowarstwowego klasyfikującego kwiaty z zestawu danych Iris 436
- Ocena wytrenowanego modelu za pomocą danych testowych 439
- Zapisywanie i wczytywanie wyuczonego modelu 440
- Dobór funkcji aktywacji dla wielowarstwowych sieci neuronowych 440
- Funkcja logistyczna - powtórzenie 441
- Szacowanie prawdopodobieństw przynależności do klas w klasyfikacji wieloklasowej za pomocą funkcji softmax 443
- Rozszerzanie zakresu wartości wyjściowych za pomocą funkcji tangensa hiperbolicznego 444
- Aktywacja za pomocą prostowanej jednostki liniowej (ReLU) 446
- Podsumowanie 448
Rozdział 14. Czas na szczegóły - mechanizm działania biblioteki TensorFlow 449
- Cechy kluczowe TensorFlow 450
- Grafy obliczeniowe TensorFlow: migracja do wersji TensorFlow 2 451
- Grafy obliczeniowe 451
- Tworzenie grafu w wersji TensorFlow 1.x 452
- Migracja grafu do wersji TensorFlow 2 453
- Wczytywanie danych wejściowych do modelu: TensorFlow 1.x 453
- Wczytywanie danych wejściowych do modelu: TensorFlow 2 454
- Poprawianie wydajności obliczeniowej za pomocą dekoratorów funkcji 455
- Obiekty Variable służące do przechowywania i aktualizowania parametrów modelu 456
- Obliczanie gradientów za pomocą różniczkowania automatycznego i klasy GradientTape 460
- Obliczanie gradientów funkcji straty w odniesieniu do zmiennych modyfikowalnych 460
- Obliczanie gradientów w odniesieniu do tensorów niemodyfikowalnych 462
- Przechowywanie zasobów na obliczanie wielu gradientów 462
- Upraszczanie implementacji popularnych struktur za pomocą interfejsu Keras 463
- Rozwiązywanie problemu klasyfikacji XOR 466
- Zwiększenie możliwości budowania modeli za pomocą interfejsu funkcyjnego Keras 471
- Implementowanie modeli bazujących na klasie Model 472
- Pisanie niestandardowych warstw Keras 473
- Estymatory TensorFlow 476
- Praca z kolumnami cech 477
- Uczenie maszynowe za pomocą gotowych estymatorów 481
- Stosowanie estymatorów w klasyfikacji zestawu pisma odręcznego MNIST 484
- Tworzenie niestandardowego estymatora z istniejącego modelu Keras 486
- Podsumowanie 488
Rozdział 15. Klasyfikowanie obrazów za pomocą głębokich splotowych sieci neuronowych 489
- Podstawowe elementy splotowej sieci neuronowej 490
- Splotowe sieci neuronowe i hierarchie cech 490
- Splot dyskretny 492
- Warstwy podpróbkowania 501
- Implementowanie sieci CNN 502
- Praca z wieloma kanałami wejściowymi/barw 503
- Regularyzowanie sieci neuronowej metodą porzucania 506
- Funkcje straty w zadaniach klasyfikacji 509
- Implementacja głębokiej sieci splotowej za pomocą biblioteki TensorFlow 511
- Architektura wielowarstwowej sieci CNN 511
- Wczytywanie i wstępne przetwarzanie danych 512
- Implementowanie sieci CNN za pomocą interfejsu Keras 513
- Klasyfikowanie płci na podstawie zdjęć twarzy za pomocą sieci splotowej 518
- Wczytywanie zestawu danych CelebA 519
- Przekształcanie obrazów i dogenerowanie danych 520
- Uczenie modelu CNN jako klasyfikatora płci 525
- Podsumowanie 530
Rozdział 16. Modelowanie danych sekwencyjnych za pomocą rekurencyjnych sieci neuronowych 533
- Wprowadzenie do danych sekwencyjnych 534
- Modelowanie danych sekwencyjnych - kolejność ma znaczenie 534
- Przedstawianie sekwencji 535
- Różne kategorie modelowania sekwencji 536
- Sieci rekurencyjne służące do modelowania sekwencji 537
- Mechanizm zapętlania w sieciach rekurencyjnych 537
- Obliczanie aktywacji w sieciach rekurencyjnych 539
- Rekurencja w warstwie ukrytej a rekurenacja w warstwie wyjściowej 542
- Problemy z uczeniem długofalowych oddziaływań 544
- Jednostki LSTM 546
- Implementowanie wielowarstwowej sieci rekurencyjnej przy użyciu biblioteki TensorFlow do modelowania sekwencji 548
- Pierwszy projekt - przewidywanie sentymentów na recenzjach z zestawu danych IMDb 548
- Drugi projekt - modelowanie języka na poziomie znaków w TensorFlow 561
- Przetwarzanie języka za pomocą modelu transformatora 572
- Wyjaśnienie mechanizmu samouwagi 573
- Wieloblokowy mechanizm uwagi i komórka transformatora 575
- Podsumowanie 577
Rozdział 17. Generatywne sieci przeciwstawne w zadaniach syntetyzowania nowych danych 579
- Wprowadzenie do generatywnych sieci przeciwstawnych 580
- Autokodery 580
- Modele generatywne syntetyzujące nowe dane 582
- Generowanie nowych prób za pomocą sieci GAN 584
- Funkcje straty generatora i dyskryminatora w modelu GAN 585
- Implementowanie sieci GAN od podstaw 587
- Uczenie modeli GAN w środowisku Google Colab 587
- Implementacja sieci generatora i dyskryminatora 590
- Definiowanie zestawu danych uczących 593
- Uczenie modelu GAN 595
- Poprawianie jakości syntetyzowanych obrazów za pomocą sieci GAN: splotowej i Wassersteina 603
- Splot transponowany 603
- Normalizacja wsadowa 605
- Implementowanie generatora i dyskryminatora 607
- Wskaźniki odmienności dwóch rozkładów 613
- Praktyczne stosowanie odległości EM w sieciach GAN 616
- Kara gradientowa 617
- Implementacja sieci WGAN-DP służącej do uczenia modelu DCGAN 617
- Załamanie modu 622
- Inne zastosowania modeli GAN 623
- Podsumowanie 624
Rozdział 18. Uczenie przez wzmacnianie jako mechanizm podejmowania decyzji w skomplikowanych środowiskach 625
- Wprowadzenie: uczenie z doświadczenia 626
- Filozofia uczenia przez wzmacnianie 626
- Definicja interfejsu agent-środowisko w systemie uczenia przez wzmacnianie 628
- Podstawy teoretyczne uczenia przez wzmacnianie 629
- Procesy decyzyjne Markowa 629
- Wyjaśnienie matematyczne procesów decyzyjnych Markowa 630
- Terminologia uczenia przez wzmacnianie: zwrot, strategia i funkcja wartości 633
- Programowanie dynamiczne za pomocą równania Bellmana 636
- Algorytmy uczenia przez wzmacnianie 637
- Programowanie dynamiczne 638
- Uczenie przez wzmacnianie metodą Monte Carlo 641
- Uczenie metodą różnic czasowych 643
- Implementacja naszego pierwszego algorytmu uczenia przez wzmacnianie 646
- Wprowadzenie do pakietu OpenAI Gym 646
- Rozwiązywanie problemu świata blokowego za pomocą Q-uczenia 654
- Krótko o algorytmie Q-uczenia głębokiego 658
- Podsumowanie rozdziału i książki 665
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-7002-9 |
Rozmiar pliku: | 24 MB |