本書以深度學習算法入門為主要內容,通過系統介紹Python、NumPy、SciPy等科學計算庫,深度學習主流算法,深度學習前沿研究,深度學習服務云平臺構建四大主線,向讀者系統地介紹了深度學習的主要內容和研究進展。本書介紹了Python、NumPy、SciPy的使用技巧,面向谷歌推出的開源深度學習框架TensorFlow,向讀者展示了利用TensorFlow和Theano框架實現線性回歸、邏輯回歸、多層感知器、卷積神經網絡、遞歸神經網絡、長短時記憶網絡、去噪自動編碼機、堆疊自動編碼機、受限玻爾茲曼機、深度信念網絡等,并將這些技術用于MNIST手寫數字識別任務。本書不僅講述了深度學習算法本身,而且重點講述了如何將這些深度學習算法包裝成Web服務。本書旨在幫助廣大工程技術人員快速掌握深度學習相關理論和實踐,并將這些知識應用到實際工作中。
閆濤,網名“最老程序員”。中科院蘇州生物醫學工程技術研究所副研究員(兼),科技部重點專項:帕金森癥早期預防、“十三五”出生缺陷預防系統研究課題組成員,專注于深度學習在醫學影像學診斷、醫學圖像分割、醫學圖像診斷性標注等應用方向的技術開發。CSDN博客重度使用者,博客地址http://blog.csdn.net/yt7589。北京動維康科技有限公司聯合創始人、首席技術官,主持開發了移動醫療系統隨診醫生。專注于移動互聯網軟件開發20年,精通主流開發技術,尤其擅長處理大容量、高并發系統的設計與實現。開源軟件倡導者,本書部分代碼的GitHub網址為https://github.com/yt7589/dlp/tree/master/book。
目 錄
第一部分 深度學習算法概述
第1章 深度學習算法簡介 2
1.1 神經網絡發展簡史 2
1.1.1 神經網絡第一次興起 3
1.1.2 神經網絡沉寂期(20世紀80年代—21世紀) 4
1.1.3 神經網絡技術積累期(20世紀90年代—2006年) 5
1.1.4 深度學習算法崛起(2006年至今) 8
1.2 深度學習現狀 10
1.2.1 傳統神經網絡困境 10
1.2.2 深度多層感知器 12
1.2.3 深度卷積神經網絡 14
1.2.4 深度遞歸神經網絡 15
1.3 深度學習研究前瞻 16
1.3.1 自動編碼機 17
1.3.2 深度信念網絡 18
1.3.3 生成式網絡最新進展 19
1.4 深度學習框架比較 20
1.4.1 TensorFlow 20
1.4.2 Theano 21
1.4.3 Torch 22
1.4.4 DeepLearning4J 23
1.4.5 Caffe 23
1.4.6 MXNet 24
1.4.7 CNTK 27
1.4.8 深度學習框架造型指導原則 27
1.5 深度學習入門路徑 28
1.5.1 運行MNIST 28
1.5.2 深度學習框架的選擇 29
1.5.3 小型試驗網絡 33
1.5.4 訓練生產網絡 33
1.5.5 搭建生產環境 34
1.5.6 持續改進 35
第二部分 深度學習算法基礎
第2章 搭建深度學習開發環境 38
2.1 安裝Python開發環境 38
2.1.1 安裝最新版本Python 38
2.1.2 Python虛擬環境配置 39
2.1.3 安裝科學計算庫 40
2.1.4 安裝最新版本Theano 40
2.1.5 圖形繪制 40
2.2 NumPy簡易教程 43
2.2.1 Python基礎 43
2.2.2 多維數組的使用 51
2.2.3 向量運算 58
2.2.4 矩陣運算 60
2.2.5 線性代數 62
2.3 TensorFlow簡易教程 68
2.3.1 張量定義 69
2.3.2 變量和placeholder 69
2.3.3 神經元激活函數 71
2.3.4 線性代數運算 72
2.3.5 操作數據集 74
2.4 Theano簡易教程 77
2.4.1 安裝Theano 77
2.4.2 Theano入門 78
2.4.3 Theano矩陣相加 79
2.4.4 變量和共享變量 80
2.4.5 隨機數的使用 84
2.4.6 Theano求導 84
2.5 線性回歸 86
2.5.1 問題描述 86
2.5.2 線性模型 88
2.5.3 線性回歸學習算法 89
2.5.4 解析法 90
2.5.5 Theano實現 93
第3章 邏輯回歸 100
3.1 邏輯回歸數學基礎 100
3.1.1 邏輯回歸算法的直觀解釋 100
3.1.2 邏輯回歸算法數學推導 101
3.1.3 牛頓法解邏輯回歸問題 103
3.1.4 通用學習模型 106
3.2 邏輯回歸算法簡單應用 113
3.3 MNIST手寫數字識別庫簡介 124
3.4 邏輯回歸MNIST手寫數字識別 126
第4章 感知器模型和MLP 139
4.1 感知器模型 139
4.1.1 神經元模型 139
4.1.2 神經網絡架構 143
4.2 數值計算形式 144
4.2.1 前向傳播 144
4.2.2 誤差反向傳播 145
4.2.3 算法推導 147
4.3 向量化表示形式 152
4.4 應用要點 153
4.4.1 輸入信號模型 154
4.4.2 權值初始化 155
4.4.3 早期停止 155
4.4.4 輸入信號調整 156
4.5 TensorFlow實現MLP 156
第5章 卷積神經網絡 174
5.1 卷積神經網絡原理 174
5.1.1 卷積神經網絡的直觀理解 174
5.1.2 卷積神經網絡構成 177
5.1.3 卷積神經網絡設計 191
5.1.4 遷移學習和網絡微調 193
5.2 卷積神經網絡的TensorFlow實現 195
5.2.1 模型搭建 197
5.2.2 訓練方法 203
5.2.3 運行方法 208
第6章 遞歸神經網絡 212
6.1 遞歸神經網絡原理 212
6.1.1 遞歸神經網絡表示方法 213
6.1.2 數學原理 214
6.1.3 簡單遞歸神經網絡應用示例 219
6.2 圖像標記 226
6.2.1 建立開發環境 226
6.2.2 圖像標記數據集處理 227
6.2.3 單步前向傳播 229
6.2.4 單步反向傳播 231
6.2.5 完整前向傳播 234
6.2.6 完整反向傳播 236
6.2.7 單詞嵌入前向傳播 239
6.2.8 單詞嵌入反向傳播 241
6.2.9 輸出層前向/反向傳播 243
6.2.10 輸出層代價函數計算 245
6.2.11 圖像標注網絡整體架構 248
6.2.12 代價函數計算 249
6.2.13 生成圖像標記 255
6.2.14 網絡訓練過程 258
6.2.15 網絡持久化 265
第7章 長短時記憶網絡 269
7.1 長短時記憶網絡原理 269
7.1.1 網絡架構 269
7.1.2 數學公式 272
7.2 MNIST手寫數字識別 274
第三部分 深度學習算法進階
第8章 自動編碼機 286
8.1 自動編碼機概述 286
8.1.1 自動編碼機原理 287
8.1.2 去噪自動編碼機 287
8.1.3 稀疏自動編碼機 288
8.2 去噪自動編碼機TensorFlow實現 291
8.3 去噪自動編碼機的Theano實現 298
第9章 堆疊自動編碼機 307
9.1 堆疊去噪自動編碼機 308
9.2 TensorFlow實現 322
9.3 Theano實現 341
第10章 受限玻爾茲曼機 344
10.1 受限玻爾茲曼機原理 344
10.1.1 網絡架構 344
10.1.2 能量模型 346
10.1.3 CD-K算法 351
10.2 受限玻爾茲曼機TensorFlow實現 353
10.3 受限玻爾茲曼機Theano實現 362
第11章 深度信念網絡 381
11.1 深度信念網絡原理 381
11.2 深度信念網絡TensorFlow實現 382
11.3 深度信念網絡Theano實現 403
第四部分 機器學習基礎
第12章 生成式學習 420
12.1 高斯判別分析 422
12.1.1 多變量高斯分布 422
12.1.2 高斯判決分析公式 423
12.2 樸素貝葉斯 436
12.2.1 樸素貝葉斯分類器 436
12.2.2 拉普拉斯平滑 439
12.2.3 多項式事件模型 441
第13章 支撐向量機 444
13.1 支撐向量機概述 444
13.1.1 函數間隔和幾何間隔 445
13.1.2 最優距離分類器 448
13.2 拉格朗日對偶 448
13.3 最優分類器算法 450
13.4 核方法 453
13.5 非線性可分問題 455
13.6 SMO算法 457
13.6.1 坐標上升算法 458
13.6.2 SMO算法詳解 458
第五部分 深度學習平臺API
第14章 Python Web編程 462
14.1 Python Web開發環境搭建 462
14.1.1 CherryPy框架 463
14.1.2 CherryPy安裝 463
14.1.3 測試CherryPy安裝是否成功 464
14.2 最簡Web服務器 465
14.2.1 程序啟動 465
14.2.2 顯示HTML文件 466
14.2.3 靜態內容處理 468
14.3 用戶認證系統 471
14.4 AJAX請求詳解 473
14.4.1 添加數據 474
14.4.2 修改數據 476
14.4.3 刪除數據 478
14.4.4 REST服務實現 479
14.5 數據持久化技術 487
14.5.1 環境搭建 487
14.5.2 數據庫添加操作 488
14.5.3 數據庫修改操作 489
14.5.4 數據庫刪除操作 490
14.5.5 數據庫查詢操作 491
14.5.6 數據庫事務操作 492
14.5.7 數據庫連接池 494
14.6 任務隊列 499
14.7 媒體文件上傳 502
14.8 Redis操作 504
14.8.1 Redis安裝配置 504
14.8.2 Redis使用例程 505
第15章 深度學習云平臺 506
15.1 神經網絡持久化 506
15.1.1 數據庫表設計 506
15.1.2 整體目錄結構 511
15.1.3 訓練過程及模型文件保存 512
15.2 神經網絡運行模式 528
15.3 AJAX請求調用神經網絡 531
15.3.1 顯示靜態網頁 531
15.3.2 上傳圖片文件 540
15.3.3 AJAX接口 543
15.4 請求合法性驗證 545
15.4.1 用戶注冊和登錄 546
15.4.2 客戶端生成請求 553
15.4.3 服務器端驗證請求 555
15.5 異步結果處理 557
15.5.1 網頁異步提交 557
15.5.2 應用隊列管理模塊 559
15.5.3 任務隊列 560
15.5.4 結果隊列 561
15.5.5 異步請求處理流程 562
15.6 神經網絡持續改進 563
15.6.1 應用遺傳算法 563
15.6.2 重新訓練 564
15.6.3 生成式對抗網絡 565
后 記 567
參考文獻 568