精通機器學習

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

You might also like

book

面向数据科学家的实用统计学

by Peter Bruce, Andrew Bruce

统计学方法是数据科学的重要组成部分,但极少有数据科学家接受过正规的统计学教育或培训,而关于统计学基础的课程和教材也很少从数据科学的角度进行讲解。本书专门从数据科学的角度阐释重要且实用的统计学概念,重点介绍如何将各种统计学方法应用于数据科学。 为什么探索性数据分析是数据科学关键的第一步 随机抽样如何降低偏差、生成高质量数据集 实验设计原则如何针对问题生成确定性答案 如何使用回归方法估计结果并检测异常 用于预测记录所属类别的主要分类方法 从数据中“学习”的统计机器学习方法 从未标记数据中提取有意义信息的无监督学习方法

book

下一代空间计算:AR与VR创新理论与实践

by Erin Pangilinan, Steve Lukas, Vasanth Mohan

近年来,尽管AR与VR技术渐有流行之势,但实际上整个空间计算技术仍旧处在主流应用的前沿地带。现今,渴望涉足这一领域的开发者、艺术家与设计师们能够获得的专业指导少之又少。在本书中,Erin Pangilinan、Steve Lukas与Vasanth Mohan剖析了整条AR/VR技术开发流水线,并提供了实践教程来帮助你学习AR/VR的相关知识,以提升自身的专业技能。 本书通过循序渐进的教程,以理论为基础,以行业应用案例为背景,介绍如何构建实际的应用程序与体验。在本书的每一章节中,都会有行业专家(包括Timoni West、Victor Prisacariu、Nicolas Meuleau等)加入作者的行列,他们将揭示空间计算背后的技术内幕。 本书涵盖三大主题: 艺术设计:探索空间计算与交互设计、以人为本的交互与感官设计,以及数字艺术内容创作工具。 技术开发:研究ARKit、ARCore与基于空间映射的系统之间的差异;学习如何在头戴式显示设备上进行跨平台开发。 应用案例:理解数据与机器学习可视化及AI技术是如何运用在空间计算、教育培训、体育娱乐、医疗保健和其他行业应用之中的。

book

C语言核心技术(原书第2版)

by Peter Prinz, Tony Crawford

C程序员在编写程序时手头一定要有这本书。在这本书中,C语言专家Peter Prinz和Tony Crawford为你提供大量的编程参考信息。这 本经典著作的新版对于C语言及其运行库中的每个特性给予了清晰、详细的解释,包括多线程、泛型宏,以及其他2011年C语言标准(C11)中的新功能。如果你想理解一个陌生函数的作用,以及标准链接库是如何规范它的执行,可以在本书中找到答案,并且配有经典示例进行说明。 对于有经验的C与C++编程者,这本书也相当理想,它包含了GNU 软件工具集中常用工具的使用说明。你会学到如何使用GNU make创建C程序,从C源代码编译获得执行程序,以及使用GNU调试器对程序进行测试与调试。 本书包括以下三个部分: C语言基本概念与元素,包括类型、语句、指针、内存管理、I/O等 C语言标准链接库,包括标准头综述,以及详细的标准函数参考 在GNU软件工具集中的C语言编程基本工具,并介绍了如何在 Eclipse IDE中使用它们

book

可伸缩架构:云环境下的高可用与风险管理(第2版)

by Lee Atchison

每一天,企业都面对着如何让关键应用程序可伸缩的问题。当流量和数据需求不断增加时,这些应用程序会变得更加复杂和脆弱,暴露出大量的风险并降低了可用性。随着“软件即服务”概念的流行,可伸缩性变得十分重要。 本书更新了重要的现代化架构范式,例如,微服务和云计算,通过实际案例的指导,让你了解如何在不降低客户期望的条件下,构建可以处理海量请求、数据和需求的系统。工程和运维领域的架构师、经理和总监将学习到如何构建可以更加平稳和可靠地伸缩应用程序的知识,从而满足客户的不同需求。 你会了解可伸缩性如何影响服务的可用性,为什么它很重要,以及如何改进它。 你会深入了解如何保证一个现代化的基于服务的应用程序架构的高可用性,以及降低服务故障的影响。 你会了解什么是“由独立团队负责的服务架构”,它是一种可以让你的开发团队随应用程序一起伸缩的模型。 你会学习到如何理解、测量和降低系统的风险。 你会学习到如何使用云计算来构建高可伸缩的应用程序。