隨著AI技術(shù)的普及,如何快速理解、掌握并應(yīng)用AI技術(shù),成為絕大多數(shù)程序員亟需解決的問題。本書基于Keras框架并以代碼實現(xiàn)為核心,詳細解答程序員學(xué)習(xí)AI算法時的常見問題,對機器學(xué)習(xí)、深度神經(jīng)網(wǎng)絡(luò)等概念在實際項目中的應(yīng)用建立清晰的邏輯體系。本書分為上下兩篇,上篇(第1~4章)可幫助讀者理解并獨立開發(fā)較簡單的機器學(xué)習(xí)應(yīng)用,下篇(第5~9章)則聚焦于AI技術(shù)的三大熱點領(lǐng)域:推薦系統(tǒng)、自然語言處理(NLP)及圖像處理。其中,第1章通過具體實例對Keras的機器學(xué)習(xí)實現(xiàn)進行快速介紹并給出整體概念;第2章從簡單的神經(jīng)元開始,以實際問題和代碼實現(xiàn)為引導(dǎo),逐步過渡到多層神經(jīng)網(wǎng)絡(luò)的具體實現(xiàn)上,從代碼層面講解神經(jīng)網(wǎng)絡(luò)的工作模式;第3章講解Keras的核心概念和使用方法,幫助讀者快速入門Keras;第4章講解機器學(xué)習(xí)中的常見概念、定義及算法;第5章介紹推薦系統(tǒng)的常見方案,包括協(xié)同過濾的不同實現(xiàn)及Wide&Deep模型等;第6章講解循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的原理及Seq2Seq、Attention等技術(shù)在自然語言處理中的應(yīng)用;第7~8章針對圖像處理的分類及目標識別進行深度討論,從代碼層面分析Faster RCNN及YOLO v3這兩種典型識別算法;第9章針對AI模型的工程部署問題,引入TensorFlow Serving并進行介紹。本書主要面向希望學(xué)習(xí)AI開發(fā)或者轉(zhuǎn)型算法的程序員,也可以作為Keras教材,幫助讀者學(xué)習(xí)Keras在不同領(lǐng)域的具體應(yīng)用。
張力柯騰訊某AI實驗室負責(zé)人、AI系統(tǒng)設(shè)計專家。在操作系統(tǒng)內(nèi)核、網(wǎng)絡(luò)安全、搜索引擎、推薦系統(tǒng)、大規(guī)模分布式系統(tǒng)、圖像處理、數(shù)據(jù)分析等領(lǐng)域具有豐富的實踐經(jīng)驗。于美國德克薩斯大學(xué)圣安東尼奧分校獲得計算機科學(xué)博士學(xué)位,曾先后在美國微軟、BCG、Uber及硅谷其他創(chuàng)業(yè)公司擔任研發(fā)工程師及項目負責(zé)人等。 潘 暉阿里巴巴某算法中心小組負責(zé)人。在推薦系統(tǒng)、自然語言處理、圖像處理、數(shù)據(jù)分析等領(lǐng)域具有豐富的實踐經(jīng)驗。于美國佛羅里達理工大學(xué)獲得計算機科學(xué)博士學(xué)位,曾先后在中國微軟、美團、騰訊從事算法研發(fā)和管理工作。發(fā)表過多篇論文,擁有多項專利,曾獲得2018年騰訊互動娛樂事業(yè)群技術(shù)突破獎等獎項。
上篇
第1章 機器學(xué)習(xí)的HELLO WORLD 2
1.1 機器學(xué)習(xí)簡介 2
1.2 機器學(xué)習(xí)應(yīng)用的核心開發(fā)流程 3
1.3 從代碼開始 6
1.3.1 搭建環(huán)境 6
1.3.2 一段簡單的代碼 7
1.4 本章小結(jié) 9
1.5 本章參考文獻 9
第2章 手工實現(xiàn)神經(jīng)網(wǎng)絡(luò) 10
2.1 感知器 10
2.1.1 從神經(jīng)元到感知器 10
2.1.2 實現(xiàn)簡單的感知器 12
2.2 線性回歸、梯度下降及實現(xiàn) 15
2.2.1 分類的原理 15
2.2.2 損失函數(shù)與梯度下降 16
2.2.3 神經(jīng)元的線性回歸實現(xiàn) 18
2.3 隨機梯度下降及實現(xiàn) 21
2.4 單層神經(jīng)網(wǎng)絡(luò)的Python實現(xiàn) 23
2.4.1 從神經(jīng)元到神經(jīng)網(wǎng)絡(luò) 23
2.4.2 單層神經(jīng)網(wǎng)絡(luò):初始化 25
2.4.3 單層神經(jīng)網(wǎng)絡(luò):核心概念 27
2.4.4 單層神經(jīng)網(wǎng)絡(luò):前向傳播 28
2.4.5 單層神經(jīng)網(wǎng)絡(luò):反向傳播 29
2.4.6 網(wǎng)絡(luò)訓(xùn)練及調(diào)整 34
2.5 本章小結(jié) 38
2.6 本章參考文獻 38
第3章 上手KERAS 39
3.1 Keras簡介 39
3.2 Keras開發(fā)入門 40
3.2.1 構(gòu)建模型 40
3.2.2 訓(xùn)練與測試 42
3.3 Keras的概念說明 44
3.3.1 Model 44
3.3.2 Layer 48
3.3.3 Loss 65
3.4 再次代碼實戰(zhàn) 70
3.4.1 XOR運算 70
3.4.2 房屋價格預(yù)測 73
3.5 本章小結(jié) 75
3.6 本章參考文獻 76
第4章 預(yù)測與分類:簡單的機器學(xué)習(xí)應(yīng)用 77
4.1 機器學(xué)習(xí)框架之sklearn簡介 77
4.1.1 安裝sklearn 78
4.1.2 sklearn中的常用模塊 78
4.1.3 對算法和模型的選擇 79
4.1.4 對數(shù)據(jù)集的劃分 80
4.2 初識分類算法 80
4.2.1 分類算法的性能度量指標 81
4.2.2 樸素貝葉斯分類及案例實現(xiàn) 86
4.3 決策樹 90
4.3.1 算法介紹 90
4.3.2 決策樹的原理 91
4.3.3 實例演練 96
4.3.4 決策樹優(yōu)化 99
4.4 線性回歸 101
4.4.1 算法介紹 101
4.4.2 實例演練 101
4.5 邏輯回歸 102
4.5.1 算法介紹 102
4.5.2 多分類問題與實例演練 107
4.6 神經(jīng)網(wǎng)絡(luò) 108
4.6.1 神經(jīng)網(wǎng)絡(luò)的歷史 108
4.6.2 實例演練 114
4.6.3 深度學(xué)習(xí)中的一些算法細節(jié) 117
4.7 本章小結(jié) 120
4.8 本章參考文獻 120
下篇
第5章 推薦系統(tǒng)基礎(chǔ) 122
5.1 推薦系統(tǒng)簡介 122
5.2 相似度計算 124
5.3 協(xié)同過濾 125
5.3.1 基于用戶的協(xié)同過濾 126
5.3.2 基于物品的協(xié)同過濾 128
5.3.3 算法實現(xiàn)與案例演練 129
5.4 LR模型在推薦場景下的應(yīng)用 131
5.5 多模型融合推薦模型:Wide&Deep模型 135
5.5.1 探索-利用困境的問題 135
5.5.2 Wide&Deep模型 137
5.5.3 交叉特征 137
5.6 本章小結(jié) 145
5.7 本章參考文獻 145
第6章 項目實戰(zhàn):聊天機器人 146
6.1 聊天機器人的發(fā)展歷史 146
6.2 循環(huán)神經(jīng)網(wǎng)絡(luò) 148
6.2.1 Slot Filling 148
6.2.2 NLP中的單詞處理 150
6.2.3 循環(huán)神經(jīng)網(wǎng)絡(luò)簡介 153
6.2.4 LSTM網(wǎng)絡(luò)簡介 154
6.3 Seq2Seq原理介紹及實現(xiàn) 157
6.3.1 Seq2Seq原理介紹 157
6.3.2 用Keras實現(xiàn)Seq2Seq算法 158
6.4 Attention 173
6.4.1 Seq2Seq的問題 174
6.4.2 Attention的工作原理 175
6.4.3 Attention在Keras中的實現(xiàn) 178
6.4.4 Attention示例 180
6.5 本章小結(jié) 185
6.6 本章參考文獻 185
第7章 圖像分類實戰(zhàn) 187
7.1 圖像分類與卷積神經(jīng)網(wǎng)絡(luò) 187
7.1.1 卷積神經(jīng)網(wǎng)絡(luò)的歷史 187
7.1.2 圖像分類的3個問題 188
7.2 卷積神經(jīng)網(wǎng)絡(luò)的工作原理 190
7.2.1 卷積運算 191
7.2.2 傳統(tǒng)圖像處理中的卷積運算 193
7.2.3 Pooling 195
7.2.4 為什么卷積神經(jīng)網(wǎng)絡(luò)能達到較好的效果 197
7.3 案例實戰(zhàn):交通圖標分類 200
7.3.1 交通圖標數(shù)據(jù)集 200
7.3.2 卷積神經(jīng)網(wǎng)絡(luò)的Keras實現(xiàn) 202
7.4 優(yōu)化策略 209
7.4.1 數(shù)據(jù)增強 210
7.4.2 ResNet 214
7.5 本章小結(jié) 216
7.6 本章參考文獻 217
第8章 目標識別 218
8.1 CNN的演化 218
8.1.1 CNN和滑動窗口 218
8.1.2 RCNN 220
8.1.3 從Fast RCNN到Faster RCNN 223
8.1.4 Faster RCNN核心代碼解析 228
8.2 YOLO 242
8.2.1 YOLO v1 242
8.2.2 YOLO v2 248
8.2.3 YOLO v3 251
8.3 YOLO v3的具體實現(xiàn) 253
8.3.1 數(shù)據(jù)預(yù)處理 253
8.3.2 模型訓(xùn)練 260
8.4 本章小結(jié) 293
8.5 本章參考文獻 294
第9章 模型部署與服務(wù) 296
9.1 生產(chǎn)環(huán)境中的模型服務(wù) 296
9.2 TensorFlow Serving的應(yīng)用 299
9.2.1 轉(zhuǎn)換Keras模型 299
9.2.2 TensorFlow Serving部署 302
9.2.3 接口驗證 303
9.3 本章小結(jié) 307
9.4 本章參考文獻 308