精通機器學習

Book description

建立智慧系統的概念、工具與技術

“這是一本卓越的機器學習資源,有清楚、直觀的解說,以及大量實用技巧。” —François Chollet Keras作者,《Deep Learning with Python》作者

“這本書詳細介紹以神經網路解決問題的理論與做法;建議想要實際運用ML的人都要看這本書。” —Pete Warden TensorFlow行動主管

深度學習經歷了一系列的突破之後,已經大幅推動了整個機器學習領域,如今,即使你對這項技術一無所知,也可以使用簡單、高效的工具,製作可從資料中學習的程式。這本暢銷書新版本使用具體的案例、精簡的理論,以及Python準生產框架,協助你直觀地認識智慧系統的概念與建構工具。

你將學到可快速上手的技術,只要具備程式編寫經驗,就可以藉由各章的習題來學習。你可以在GitHub取得本書的所有程式碼,這些程式已經更新為TensorFlow 2,以及最新版的Scikit-Learn。

  • 使用Scikit-Learn與pandas,透過端對端專案建立機器學習基礎
  • 用TensorFlow 2建構與訓練許多神經網路架構,以進行分類及回歸
  • 探索物體偵測、語義分割、專注機制、語言模型、GAN等
  • 探索TensorFlow 2的官方高階API—Keras API
  • 使用TensorFlow的Data API、分散式策略API、TF Transform及TF-Serving將TensorFlow模型生產化
  • 在Google Cloud AI Platform或行動裝置上部署
  • 瞭解降維、分群及異常檢測等非監督學習技術
  • 用強化學習來建立自主學習代理程式(agent),包括使用TF-Agents程式庫

Table of contents

  1. 前言 (1/2)
  2. 前言 (2/2)
  3. 第一部分
    1. 機器學習基本知識
  4. 第一章
    1. 機器學習領域
      1. 什麼是機器學習?
      2. 為何使用機器學習?
      3. 應用範例
      4. 機器學習系統的種類 (1/4)
      5. 機器學習系統的種類 (2/4)
      6. 機器學習系統的種類 (3/4)
      7. 機器學習系統的種類 (4/4)
        1. 監督/無監督學習
        2. 批次與線上學習
        3. 基於實例vs. 基於模型
      8. 機器學習的主要挑戰 (1/2)
      9. 機器學習的主要挑戰 (2/2)
        1. 訓練資料不足
        2. 訓練資料無代表性
        3. 低品質的資料
        4. 無關的特徵
        5. 過擬訓練資料
        6. 欠擬訓練資料
        7. 後退一步
      10. 測試與驗證
        1. 超參數調整與模型選擇
        2. 資料不匹配
      11. 習題
  5. 第二章
    1. 端對端機器學習專案
      1. 使用真實的資料
      2. 瞭解大局
        1. 制定問題
        2. 選擇性能指標
        3. 檢查假設
      3. 取得資料 (1/3)
      4. 取得資料 (2/3)
      5. 取得資料 (3/3)
        1. 建立工作區
        2. 下載資料
        3. 快速地看一下資料結構
        4. 建立測試組
      6. 發現資料並將它視覺化來取得見解 (1/2)
      7. 發現資料並將它視覺化來取得見解 (2/2)
        1. 將地理資料視覺化
        2. 尋找相關性
        3. 用屬性組合進行實驗
      8. 準備資料供機器學習演算法使用 (1/2)
      9. 準備資料供機器學習演算法使用 (2/2)
        1. 清理資料
        2. 處理文件與分類屬性
        3. 自訂轉換器
        4. 特徵縮放
        5. 轉換pipeline
      10. 選擇與訓練模型
        1. 用訓練組來訓練與評估
        2. 使用交叉驗證來做更好的評估
      11. 微調模型
        1. 網格搜尋
        2. 隨機搜尋
        3. 整體方法
        4. 分析最佳模型與它們的誤差
        5. 用測試組來評估系統
      12. 發表、監視與維護系統
      13. 盡情嘗試!
      14. 習題
  6. 第三章
    1. 分類
      1. MNIST
      2. 訓練二元分類器
      3. 評量績效
        1. 用交叉驗證評估準確度
        2. 混淆矩陣
        3. precision與recall
        4. precision/recall取捨
        5. ROC曲線
      4. 多類別分類
      5. 誤差分析
      6. 多標籤分類
      7. 多輸出分類
      8. 習題
  7. 第四章
    1. 訓練模型
      1. 線性回歸
        1. 正規方程式
        2. 計算複雜度
      2. 梯度下降 (1/2)
      3. 梯度下降 (2/2)
        1. 批次梯度下降
        2. 隨機梯度下降
        3. 小批次梯度下降
      4. 多項式回歸
      5. 學習曲線
      6. 含正則化的線性模型 (1/2)
      7. 含正則化的線性模型 (2/2)
        1. 山嶺回歸
        2. Lasso回歸
        3. 彈性網路
        4. 提前停止
      8. Logistic回歸 (1/2)
      9. Logistic回歸 (2/2)
        1. 估計機率
        2. 訓練與代價函數
        3. 決策邊界
        4. Softmax回歸
      10. 習題
  8. 第五章
    1. 支援向量機
      1. 線性SVM分類
        1. 軟邊距分類
      2. 非線性SVM分類
        1. 多項式kernel
        2. 相似的特徵
        3. 高斯RBF kernel
        4. 計算複雜度
      3. SVM回歸
      4. 引擎蓋下 (1/2)
      5. 引擎蓋下 (2/2)
        1. 決策函數與預測
        2. 訓練目標
        3. 二次規劃
        4. 對偶問題
        5. kernelized SVM
        6. 線上SVM
      6. 習題
  9. 第六章
    1. 決策樹
      1. 訓練與視覺化決策樹
      2. 進行預測
      3. 估計類別機率
      4. CART訓練演算法
      5. 計算複雜度
      6. 使用Gini不純度還是熵?
      7. 正則化參數
      8. 回歸
      9. 不穩定性
      10. 習題
  10. 第七章
    1. 整體學習與隨機森林
      1. 投票分類器
      2. bagging與pasting
        1. Scikit-Learn的bagging與pasting
        2. Out-of-Bag評估
      3. 隨機補丁與隨機子空間
      4. 隨機森林
        1. Extra-Trees
        2. 特徵重要性
      5. boosting (1/2)
      6. boosting (2/2)
        1. AdaBoost
        2. 梯度增強
      7. stacking
      8. 習題
  11. 第八章
    1. 降維
      1. 維數災難
      2. 主要的降維法
        1. 投射
        2. Manifold學習
      3. PCA (1/2)
      4. PCA (2/2)
        1. 保留變異度
        2. 主成分
        3. 往下投射至d維
        4. 使用Scikit-Learn
        5. 已解釋變異比
        6. 選擇正數的維數
        7. 用PCA來壓縮
        8. Randomized PCA
        9. Incremental PCA
      5. Kernel PCA
        1. 選擇kernel與調整超參數
      6. LLE
      7. 其他的降維技術
      8. 習題
  12. 第九章
    1. 無監督學習技術
      1. 分群法(clustering) (1/5)
      2. 分群法(clustering) (2/5)
      3. 分群法(clustering) (3/5)
      4. 分群法(clustering) (4/5)
      5. 分群法(clustering) (5/5)
        1. K-Means
        2. K-Means的限制
        3. 用分群來做圖像分割
        4. 用分群法來進行前置作業
        5. 使用分群法來做半監督學習
        6. DBSCAN
        7. 其他的分群演算法
      6. 高斯混合 (1/3)
      7. 高斯混合 (2/3)
      8. 高斯混合 (3/3)
        1. 使用高斯混合進行異常檢測
        2. 選擇群聚數量
        3. 貝氏高斯混合模型
        4. 其他的異常與新穎檢測演算法
      9. 習題
  13. 第二部分
    1. 神經網路與深度學習
  14. 第十章
    1. 以Keras介紹人工神經網路
      1. 從生物神經元到人工神經元 (1/3)
      2. 從生物神經元到人工神經元 (2/3)
      3. 從生物神經元到人工神經元 (3/3)
        1. 生物神經元
        2. 以神經元進行邏輯計算
        3. 感知器
        4. 多層感知器與反向傳播
        5. 回歸MLP
        6. 分類MLP
      4. 用Keras來實作MLP (1/5)
      5. 用Keras來實作MLP (2/5)
      6. 用Keras來實作MLP (3/5)
      7. 用Keras來實作MLP (4/5)
      8. 用Keras來實作MLP (5/5)
        1. 安裝TensorFlow 2
        2. 使用Sequential API來製作圖像分類器
        3. 使用Sequential API來建立回歸MLP
        4. 用Functional API來建立複雜的模型
        5. 使用Subclassing API來建立動態模型
        6. 儲存和取回模型
        7. 使用回呼
        8. 使用TensorBoard來進行視覺化
      9. 微調神經網路超參數 (1/2)
      10. 微調神經網路超參數 (2/2)
        1. 隱藏層的數量
        2. 每一個隱藏層的神經元數量
        3. 學習速度、批次大小,以及其他超參數
      11. 習題
  15. 第十一章
    1. 訓練深度神經網路
      1. 梯度消失/爆炸問題 (1/3)
      2. 梯度消失/爆炸問題 (2/3)
      3. 梯度消失/爆炸問題 (3/3)
        1. Glorot與He初始化
        2. 不飽和觸發函數
        3. 批次正規化
        4. 梯度修剪
      4. 重複使用訓練好的階層 (1/2)
      5. 重複使用訓練好的階層 (2/2)
        1. 用Keras進行遷移學習
        2. 無監督預先訓練
        3. 在輔助任務中預先訓練
      6. 更快速的優化法 (1/3)
      7. 更快速的優化法 (2/3)
      8. 更快速的優化法 (3/3)
        1. 動量優化
        2. Nesterov加速梯度法
        3. AdaGrad
        4. RMSProp
        5. Adam與Nadam優化法
        6. 學習速度排程
      9. 用正則化來避免過擬 (1/2)
      10. 用正則化來避免過擬 (2/2)
        1. ℓ1與ℓ2正則化
        2. Dropout
        3. Monte Carlo(MC)Dropout
        4. Max-Norm正則化
      11. 總結與實作指南
      12. 習題
  16. 第十二章
    1. 用TensorFlow來自製模型和進行訓練
      1. TensorFlow簡介
      2. 像NumPy一樣使用TensorFlow
        1. tensor和操作
        2. Tensor與NumPy
        3. 型態轉換
        4. 變數
        5. 其他的資料結構
      3. 自製模型和訓練演算法 (1/4)
      4. 自製模型和訓練演算法 (2/4)
      5. 自製模型和訓練演算法 (3/4)
      6. 自製模型和訓練演算法 (4/4)
        1. 自製損失函數
        2. 儲存和載入包含自訂元件的模型
        3. 自製觸發函數、初始化、正則化和約束
        4. 自訂評量標準
        5. 自訂階層
        6. 自製模型
        7. 用模型的內在來定義loss和評量標準
        8. 使用autodiff來計算梯度
        9. 自訂訓練迴圈
      7. TensorFlow函式與圖
        1. AutoGraph與描繪
        2. TF Function規則
      8. 習題
  17. 第十三章
    1. 使用TensorFlow來載入和預先處理資料
      1. Data API (1/2)
      2. Data API (2/2)
        1. 串接轉換方法
        2. 將資料洗亂
        3. 預先處理資料
        4. 整合
        5. 預取
        6. 以tf.keras使用資料組
      3. TFRecord格式 (1/2)
      4. TFRecord格式 (2/2)
        1. 壓縮TFRecord檔案
        2. 協定緩衝區(Protocol Buffer)簡介
        3. TensorFlow Protobuf
        4. 載入與解析Example
        5. 使用SequenceExample Protobuf來處理串列的串列
      5. 預先處理輸入特徵 (1/2)
      6. 預先處理輸入特徵 (2/2)
        1. 使用one-hot向量來編碼分類特徵
        2. 使用embedding來編碼分類特徵
        3. Keras前置作業層
      7. TF Transform
      8. TensorFlow Datasets(TFDS)專案
      9. 習題
  18. 第十四章
    1. 使用摺積神經網路來製作深度電腦視覺
      1. 視覺皮層的結構
      2. 摺積層 (1/2)
      3. 摺積層 (2/2)
        1. 過濾器
        2. 堆疊多張特徵圖
        3. TensorFlow實作
        4. 記憶體需求
      4. 池化層
        1. TensorFlow實作
      5. CNN結構 (1/4)
      6. CNN結構 (2/4)
      7. CNN結構 (3/4)
      8. CNN結構 (4/4)
        1. LeNet-5
        2. AlexNet
        3. GoogLeNet
        4. VGGNet
        5. ResNet
        6. Xception
        7. SENet
      9. 用Keras實作ResNet-34 CNN
      10. 使用Keras訓練好的模型
      11. 用訓練好的模型來進行遷移學習
      12. 分類和定位
      13. 物體偵測 (1/2)
      14. 物體偵測 (2/2)
        1. 全摺積網路
        2. You Only Look Once(YOLO)
      15. 語義分割
      16. 習題
  19. 第十五章
    1. 使用RNN和CNN來處理序列
      1. 遞迴神經與階層
        1. 記憶細胞
        2. 輸入與輸出序列
      2. 訓練RNN
      3. 預測時間序列
        1. 基準指標
        2. 實作簡單RNN
        3. 深度RNN
        4. 提前幾個時步預測未來
      4. 處理很長的序列 (1/2)
      5. 處理很長的序列 (2/2)
        1. 對抗梯度不穩定問題
        2. 處理短期記憶問題
      6. 習題
  20. 第十六章
    1. 用RNN與Attention處理自然語言
      1. 用Character RNN產生莎翁文章 (1/2)
      2. 用Character RNN產生莎翁文章 (2/2)
        1. 建立訓練資料組
        2. 如何拆開循序的資料組
        3. 將循序資料組分成多個窗口
        4. 建立與訓練Char-RNN模型
        5. 使用Char-RNN模型
        6. 產生假的莎翁文章
        7. stateful RNN
      3. 情緒分析 (1/2)
      4. 情緒分析 (2/2)
        1. 遮罩
        2. 重複使用訓練好的embedding
      5. 用於神經機器翻譯的Encoder–Decoder網路 (1/2)
      6. 用於神經機器翻譯的Encoder–Decoder網路 (2/2)
        1. 雙向RNN
        2. 集束搜尋
      7. 專注機制 (1/3)
      8. 專注機制 (2/3)
      9. 專注機制 (3/3)
        1. 視覺專注
        2. 你需要的只是專注:Transformer結構
      10. 最近在語言模型領域的創新
      11. 習題
  21. 第十七章
    1. 使用自動編碼網路與GAN來進行表徵學習與生成學習
      1. 高效的資料表示法
      2. 使用undercomplete線性自動編碼網路來執行PCA
      3. 自動編碼網路堆疊 (1/2)
      4. 自動編碼網路堆疊 (2/2)
        1. 使用Keras實作堆疊式自動編碼網路
        2. 將重建結果視覺化
        3. 將Fashion MNIST資料組視覺化
        4. 用堆疊式自動編碼網路來進行無監督預先訓練
        5. 綁定權重
        6. 一次訓練一個自動編碼網路
      5. 摺積自動編碼網路
      6. 遞迴自動編碼網路
      7. 去雜訊自動編碼網路
      8. 稀疏自動編碼網路
      9. 變分自動編碼網路 (1/2)
      10. 變分自動編碼網路 (2/2)
        1. 產生Fashion MNIST圖像
      11. 生成對抗網路 (1/3)
      12. 生成對抗網路 (2/3)
      13. 生成對抗網路 (3/3)
        1. 訓練GAN的挑戰
        2. 深度摺積GAN
        3. 逐漸建構GAN
        4. StyleGANs
      14. 習題
  22. 第十八章
    1. 強化學習
      1. 藉由學習來優化獎勵
      2. 策略搜尋
      3. OpenAI Gym簡介
      4. 神經網路策略
      5. 評估行動:歸功問題
      6. 策略梯度
      7. 馬可夫決策過程
      8. 時序差分學習
      9. Q-Learning
        1. 探索策略
        2. Approximate Q-Learning與Deep Q-Learning
      10. 實作Deep Q-Learning
      11. Deep Q-Learning的變體
        1. 固定Q值目標
        2. Double DQN
        3. 經驗重播優先排序
        4. Dueling DQN
      12. TF-Agents程式庫 (1/4)
      13. TF-Agents程式庫 (2/4)
      14. TF-Agents程式庫 (3/4)
      15. TF-Agents程式庫 (4/4)
        1. 安裝TF-Agents
        2. TF-Agents環境
        3. 環境規格
        4. 環境包裝與Atari前置作業
        5. 訓練結構
        6. 建立Deep Q-Network
        7. 建立DQN Agent
        8. 建立重播緩衝區和相應的觀察器
        9. 建立訓練評量標準
        10. 建立收集驅動程式
        11. 建立資料組
        12. 建立訓練迴圈
      16. 一些熱門的RL演算法概要
      17. 習題
  23. 第十九章
    1. 大規模訓練與部署TensorFlow模型
      1. 讓TensorFlow模型提供服務 (1/4)
      2. 讓TensorFlow模型提供服務 (2/4)
      3. 讓TensorFlow模型提供服務 (3/4)
      4. 讓TensorFlow模型提供服務 (4/4)
        1. 使用TensorFlow Serving
        2. 在GCP AI Platform上建立預測服務
        3. 使用預測服務
      5. 在行動或嵌入式裝置中部署模型
      6. 使用GPU來加快計算速度 (1/3)
      7. 使用GPU來加快計算速度 (2/3)
      8. 使用GPU來加快計算速度 (3/3)
        1. 購買自己的GPU
        2. 使用裝備GPU的虛擬機器
        3. Colaboratory
        4. 管理GPU RAM
        5. 將操作與變數傳給裝置
        6. 在多台裝置上平行執行
      9. 用多個裝置訓練模型 (1/3)
      10. 用多個裝置訓練模型 (2/3)
      11. 用多個裝置訓練模型 (3/3)
        1. 模型平行化
        2. 資料平行化
        3. 使用Distribution Strategies API來進行大規模訓練
        4. 用TensorFlow叢集來訓練模型
        5. 在Google Cloud AI Platform運行大型訓練工作
        6. 在AI Platform進行黑箱超參數調整
      12. 習題
      13. 感謝您!
  24. 附錄A
    1. 習題解答
  25. 附錄B
    1. 機器學習專案檢核表
  26. 附錄C
    1. SVM對偶問題
  27. 附錄D
    1. Autodiff
  28. 附錄E
    1. 其他流行的ANN結構
  29. 附錄F
    1. 特殊資料結構
  30. 附錄G
    1. TensorFlow圖
    2. 索引 (1/5)
    3. 索引 (2/5)
    4. 索引 (3/5)
    5. 索引 (4/5)
    6. 索引 (5/5)

Product information

  • Title: 精通機器學習
  • Author(s): Aurélien Géron
  • Release date: April 2020
  • Publisher(s): GoTop Information, Inc.
  • ISBN: None