作為一名在人工智能領(lǐng)域搬磚了十幾年的老工匠,我非常高興與大家共同學(xué)習(xí)和探討深度學(xué)習(xí)的那些事兒。書中闡述的很多觀點和實踐,都是我多年來的教學(xué)經(jīng)驗和項目經(jīng)驗累積,是入門深度學(xué)習(xí)必須要掌握的基本功。感謝讀者朋友們選擇本書作為開啟深度學(xué)習(xí)實踐的教材,期待閱讀本書后,大家可以領(lǐng)悟并掌握深度學(xué)習(xí)的“套路”,并舉一反三,輕松駕馭學(xué)業(yè)和工作中與深度學(xué)習(xí)相關(guān)的任務(wù)。
2020年,COVID19席卷全球、國際形勢瞬息萬變,加速了中國產(chǎn)業(yè)政策和基礎(chǔ)教育的變革,同時也加快了走出“舒適區(qū)”的步伐。不難想象,未來20年,中國的人工智能必將進入高速發(fā)展階段,機遇與挑戰(zhàn)并存!俺孙L(fēng)破浪會有時,直掛云帆濟滄!保液芷诖乱淮斯ぶ悄艿念I(lǐng)航人能在中國誕生,能在本書的讀者中產(chǎn)生。
特色一: 理論和代碼結(jié)合、實踐與平臺結(jié)合,幫助讀者快速掌握深度學(xué)習(xí)基本功
目前在市面上,關(guān)于人工智能和深度學(xué)習(xí)的圖書已經(jīng)汗牛充棟,但大多偏重理論,對于AI實踐應(yīng)用的介紹涉獵較少。但以我多年的經(jīng)驗來看,作為深度學(xué)習(xí)的初學(xué)者,應(yīng)該更需要一本理論和代碼結(jié)合、實踐與平臺結(jié)合的書,因為多數(shù)開發(fā)者更習(xí)慣通過實踐代碼來理解模型背后的原理。本書介紹的內(nèi)容和相關(guān)代碼,都配有在線課程,讀者可掃描封底的二維碼獲取。在線課程以Jupyter notebook的方式呈現(xiàn),代碼可以在線運行。
建議本書最佳的閱讀方式: 閱讀本書時,讀者可以觀看視頻課程,同時在線運行實踐代碼,觀察打印結(jié)果。通過紙質(zhì)圖書、線上課程視頻和交互式的編程平臺三位一體的設(shè)計策略,可以幫助讀者在最短的時間內(nèi),輕松愉悅地掌握深度學(xué)習(xí)的基本功,這就是本書撰寫的初衷。
■圖理論知識講解和可運行代碼演示一體化
特色二: 工業(yè)實踐案例和作業(yè)結(jié)合,幫助讀者快速具備深度學(xué)習(xí)應(yīng)用的能力
很多接觸深度學(xué)習(xí)時間不是很長的開發(fā)者都會面臨一個困惑,雖然系統(tǒng)學(xué)習(xí)了很多相關(guān)課程,能獨立實踐經(jīng)典的學(xué)術(shù)問題,并追平領(lǐng)先的效果,但在產(chǎn)業(yè)應(yīng)用時,仍然信心不足,感覺自己和在工業(yè)界摸爬滾打多年的工程師們有很大的差距。因此本書在撰寫時,除了選取一些經(jīng)典的學(xué)術(shù)問題,作為介紹深度學(xué)習(xí)知識的案例外,還選取了一些真實的工業(yè)實踐項目,作為比賽題和作業(yè)題。這些項目都來源于百度工程師正在研發(fā)的與人工智能相關(guān)的工業(yè)應(yīng)用。
在這些真實的工業(yè)實踐項目中,讀者會接觸到很多獨有的數(shù)據(jù)集和有趣的問題,并和成千上萬的讀者們共同較量模型優(yōu)化的效果。如果您能在這些實踐中獨占鰲頭,那么恭喜您,與在人工智能前端沖浪已久的工程師們相比,您已經(jīng)毫不遜色。如果愿意,您甚至可以嘗試面試頂級科技公司,從事與人工智能相關(guān)的研發(fā)工作。
特色三: 深度學(xué)習(xí)全流程工具支撐,幫助讀者武裝到牙齒
在人工智能應(yīng)用飛速落地的今天,如何實現(xiàn)快速建模,如何提升模型的訓(xùn)練和部署效率,已經(jīng)成為工業(yè)界普遍關(guān)注的課題。因此本書在介紹深度學(xué)習(xí)的各種“生存技巧”之后,還為讀者配備了飛槳“最先進武器”,內(nèi)容由“武器”的制造者——飛槳產(chǎn)品架構(gòu)師們共同撰寫。高超生存技巧,配以先進的武器,相信可以讓讀者更加自信地駕馭這場轟轟烈烈的AI浪潮,并大放異彩。
全書共8章,可分為3部分: 第1部分包括第1~2章,以最基礎(chǔ)的深度學(xué)習(xí)任務(wù)(房價預(yù)測和手寫數(shù)字識別)為例,內(nèi)容由淺入深,層層剖析,幫助讀者入門深度學(xué)習(xí)的編程并掌握深度學(xué)習(xí)各環(huán)節(jié)的優(yōu)化方法; 第2部分包括第3~7章,以計算機視覺、自然語言處理和推薦系統(tǒng)三個深度學(xué)習(xí)最常用領(lǐng)域的典型任務(wù)為例,介紹各領(lǐng)域的基礎(chǔ)知識和應(yīng)用深度學(xué)習(xí)解決實際問題的方案及實踐過程,幫助讀者對深度學(xué)習(xí)模型有更深刻的理解; 第3部分為第8章,系統(tǒng)化地介紹飛槳提供的各種武器,包括模型資源、工業(yè)化訓(xùn)練和部署工具,以及如何基于飛槳進行二次研發(fā)。
特別感謝王海峰老師在百忙中給本書作序,您對人工智能發(fā)展趨勢的深刻理解為我們提供了方向指引; 感謝吳甜女士的指導(dǎo)和幫助,您對人工智能技術(shù)的熱愛、對AI人才的重視和培育讓本書的誕生成為可能; 感謝馬艷軍、于佃海、李軒涯、周奇在本書撰寫過程中的大力支持,讓其更匹配深度學(xué)習(xí)讀者的需求; 感謝飛槳研發(fā)工程師們?yōu)楸緯膶懽魈峁┗A(chǔ)素材和提供簡潔、高效、易用的實踐代碼; 最后還要感謝遲愷、吳蕾、聶浪、張克明、錢芳、鄭子禾等同學(xué)對于本書細(xì)致入微的編輯和校對。
如果通過本書的學(xué)習(xí),能夠讓讀者得到開悟,并激發(fā)大家在深度學(xué)習(xí)領(lǐng)域持續(xù)深耕的興趣,那將是本書作者的最大的榮幸。由于本書作者學(xué)識有限,深度學(xué)習(xí)方法也還在不斷完善,書中難免存在疏漏,希望讀者朋友不吝賜教,共同將這本書打造得更完美。
百度杰出架構(gòu)師、飛槳產(chǎn)品負(fù)責(zé)人
2020年11月于北京
第1章零基礎(chǔ)入門深度學(xué)習(xí)
1.1機器學(xué)習(xí)和深度學(xué)習(xí)綜述
1.1.1人工智能、機器學(xué)習(xí)、深度學(xué)習(xí)的關(guān)系
1.1.2機器學(xué)習(xí)
1.1.3深度學(xué)習(xí)
1.1.4作業(yè)
1.2使用Python和NumPy構(gòu)建神經(jīng)網(wǎng)絡(luò)模型
1.2.1波士頓房價預(yù)測任務(wù)
1.2.2構(gòu)建波士頓房價預(yù)測任務(wù)的神經(jīng)網(wǎng)絡(luò)模型
1.2.3小結(jié)
1.2.4作業(yè)
1.3飛槳開源深度學(xué)習(xí)平臺介紹
1.3.1深度學(xué)習(xí)框架
1.3.2飛槳開源深度學(xué)習(xí)平臺
1.3.3作業(yè)
1.4使用飛槳重寫房價預(yù)測模型
1.4.1飛槳深度學(xué)習(xí)平臺設(shè)計之“道”
1.4.2使用飛槳構(gòu)建波士頓房價預(yù)測模型
1.4.3作業(yè)
1.5NumPy介紹
1.5.1概述
1.5.2基礎(chǔ)數(shù)據(jù)類型: ndarray數(shù)組
1.5.3隨機數(shù)np.random
1.5.4線性代數(shù)
1.5.5NumPy保存和導(dǎo)入文件
1.5.6NumPy應(yīng)用舉例
1.5.7作業(yè)
第2章一個案例帶你吃透深度學(xué)習(xí)
2.1使用飛槳完成手寫數(shù)字識別模型
2.1.1手寫數(shù)字識別任務(wù)
2.1.2構(gòu)建手寫數(shù)字識別的神經(jīng)網(wǎng)絡(luò)模型
2.1.3飛槳各模型代碼結(jié)構(gòu)一致,大大降低了用戶的編碼難度
2.1.4采用“橫縱式”教學(xué)法,適用于深度學(xué)習(xí)初學(xué)者
2.2通過極簡方案快速構(gòu)建手寫數(shù)字識別模型
2.2.1通過極簡方案構(gòu)建手寫數(shù)字識別模型
2.2.2作業(yè)
2.3“手寫數(shù)字識別”之?dāng)?shù)據(jù)處理
2.3.1概述
2.3.2讀入數(shù)據(jù)并劃分?jǐn)?shù)據(jù)集
2.3.3訓(xùn)練樣本亂序并生成批次數(shù)據(jù)
2.3.4校驗數(shù)據(jù)有效性
2.3.5封裝數(shù)據(jù)讀取與處理函數(shù)
2.3.6異步數(shù)據(jù)讀取
2.4“手寫數(shù)字識別”之網(wǎng)絡(luò)結(jié)構(gòu)
2.4.1概述
2.4.2經(jīng)典的全連接神經(jīng)網(wǎng)絡(luò)
2.4.3卷積神經(jīng)網(wǎng)絡(luò)
2.5“手寫數(shù)字識別”之損失函數(shù)
2.5.1概述
2.5.2分類任務(wù)的損失函數(shù)
2.5.3作業(yè)
2.6“手寫數(shù)字識別”之優(yōu)化算法
2.6.1概述
2.6.2設(shè)置學(xué)習(xí)率
2.6.3學(xué)習(xí)率的主流優(yōu)化算法
2.6.4作業(yè)
2.7“手寫數(shù)字識別”之資源配置
2.7.1概述
2.7.2單GPU訓(xùn)練
2.7.3分布式訓(xùn)練
2.8“手寫數(shù)字識別”之訓(xùn)練調(diào)試與優(yōu)化
2.8.1概述
2.8.2計算模型的分類準(zhǔn)確率
2.8.3檢查模型訓(xùn)練過程,識別潛在訓(xùn)練問題
2.8.4加入校驗或測試,更好評價模型效果
2.8.5加入正則化項,避免模型過擬合
2.8.6可視化分析
2.8.7作業(yè)
2.9“手寫數(shù)字識別”之恢復(fù)訓(xùn)練
2.9.1概述
2.9.2恢復(fù)訓(xùn)練
2.10完整掌握深度學(xué)習(xí)建模小結(jié)
第3章計算機視覺
3.1卷積神經(jīng)網(wǎng)絡(luò)基礎(chǔ)
3.1.1概述
3.1.2卷積神經(jīng)網(wǎng)絡(luò)
3.1.3作業(yè)
3.2卷積的四種操作
3.2.1概述
3.2.2池化
3.2.3ReLU激活函數(shù)
3.2.4批歸一化
3.2.5丟棄法
3.2.6作業(yè)
3.3圖像分類
3.3.1概述
3.3.2LeNet
3.3.3AlexNet
3.3.4VGG
3.3.5GoogLeNet
3.3.6ResNet
3.3.7小結(jié)
3.3.8作業(yè)
第4章目標(biāo)檢測YOLOv3
4.1目標(biāo)檢測基礎(chǔ)概念
4.1.1概述
4.1.2目標(biāo)檢測發(fā)展歷程
4.1.3目標(biāo)檢測基礎(chǔ)概念
4.2目標(biāo)檢測數(shù)據(jù)處理
4.3目標(biāo)檢測YOLOv3
4.3.1YOLOv3模型設(shè)計思想
4.3.2產(chǎn)生候選區(qū)域
4.3.3對候選區(qū)域進行標(biāo)注
4.3.4圖形特征提取
4.3.5計算預(yù)測框位置和類別
4.3.6定義損失函數(shù)
4.3.7多尺度檢測
4.3.8網(wǎng)絡(luò)訓(xùn)練
4.3.9模型預(yù)測
4.3.10模型效果及可視化展示
4.4AI識蟲比賽
4.4.1AI識蟲比賽
4.4.2實現(xiàn)參考
4.4.3更多思路參考
第5章自然語言處理
5.1自然語言處理
5.1.1概述
5.1.2自然語言處理的發(fā)展歷程
5.1.3自然語言處理技術(shù)面臨的挑戰(zhàn)
5.1.4自然語言處理的常見任務(wù)
5.1.5使用深度學(xué)習(xí)解決自然語言處理任務(wù)的套路
5.1.6使用飛槳探索自然語言處理
5.1.7作業(yè)
5.2詞向量Word Embedding
5.2.1概述
5.2.2如何將詞轉(zhuǎn)換為向量
5.2.3如何讓向量具有語義信息
5.3使用飛槳實現(xiàn)Skipgram
5.3.1概述
5.3.2數(shù)據(jù)處理
5.3.3網(wǎng)絡(luò)定義
5.3.4網(wǎng)絡(luò)訓(xùn)練
5.3.5詞向量的有趣使用
5.3.6作業(yè)
第6章情感分析
6.1自然語言情感分析
6.1.1概述
6.1.2使用深度神經(jīng)網(wǎng)絡(luò)完成情感分析任務(wù)
6.1.3作業(yè)
6.2循環(huán)神經(jīng)網(wǎng)絡(luò)RNN和長短時記憶網(wǎng)絡(luò)LSTM
6.2.1RNN和LSTM網(wǎng)絡(luò)的設(shè)計思考
6.2.2循環(huán)神經(jīng)網(wǎng)絡(luò)RNN
6.2.3長短時記憶網(wǎng)絡(luò)LSTM
6.2.4作業(yè)
6.3使用LSTM完成情感分析任務(wù)
6.3.1概述
6.3.2使用飛槳實現(xiàn)基于LSTM的情感分析模型
6.4AI文本分類比賽
6.4.1中文新聞標(biāo)題分類比賽
6.4.2更多思路參考
第7章推薦系統(tǒng)
7.1推薦系統(tǒng)介紹
7.1.1推薦系統(tǒng)的產(chǎn)生背景
7.1.2推薦系統(tǒng)的基本概念
7.1.3思考有哪些信息可以用于推薦
7.1.4使用飛槳探索電影推薦
7.1.5作業(yè)
7.2數(shù)據(jù)處理與讀取
7.2.1數(shù)據(jù)集回顧
7.2.2數(shù)據(jù)處理流程
7.2.3構(gòu)建數(shù)據(jù)讀取器
7.2.4小結(jié)
7.3電影推薦模型設(shè)計
7.3.1模型設(shè)計介紹
7.3.2Embedding介紹
7.3.3電影特征提取網(wǎng)絡(luò)
7.3.4相似度計算
7.3.5小結(jié)
7.4模型訓(xùn)練與特征保存
7.4.1模型訓(xùn)練
7.4.2保存特征
7.4.3作業(yè)
7.5電影推薦
7.5.1根據(jù)用戶喜好推薦電影
7.5.2幾點思考收獲
7.5.3在工業(yè)實踐中的推薦系統(tǒng)
7.5.4作業(yè)
第8章精通深度學(xué)習(xí)的高級內(nèi)容
8.1精通深度學(xué)習(xí)的高級內(nèi)容
8.1.1為什么要精通深度學(xué)習(xí)的高級內(nèi)容
8.1.2高級內(nèi)容包含哪些武器
8.1.3飛槳開源組件使用場景概覽
8.2模型資源之一: 預(yù)訓(xùn)練模型應(yīng)用工具PaddleHub
8.2.1概述
8.2.2預(yù)訓(xùn)練模型的應(yīng)用背景
8.2.3快速使用PaddleHub
8.2.4PaddleHub提供的預(yù)訓(xùn)練模型
8.2.5使用自己的數(shù)據(jù)Finetune PaddleHub預(yù)訓(xùn)練模型
8.2.6PaddleHub創(chuàng)意賽
8.2.7往屆優(yōu)秀學(xué)員作品展示
8.3模型資源之二: 各領(lǐng)域的開發(fā)套件
8.3.1概述
8.3.2PaddleSeg用于解決圖像分割的問題
8.3.3PaddleSeg是開發(fā)套件,不僅是模型庫
8.3.4PaddleSeg實戰(zhàn)
8.3.5作業(yè)
8.3.6相關(guān)參考
8.3.7往屆優(yōu)秀學(xué)員作品展示
8.4模型資源之三: 模型庫介紹
8.4.1概述
8.4.2從模型庫中篩選自己需要的模型
8.4.3使用飛槳模型庫或在其基礎(chǔ)上二次研發(fā)的優(yōu)勢
8.4.4一個案例掌握Models的使用方法
8.4.5相關(guān)參考
8.5設(shè)計思想、靜態(tài)圖、動態(tài)圖和二次研發(fā)
8.5.1飛槳設(shè)計思想的核心概念
8.5.2飛槳聲明式編程(靜態(tài)圖)與命令式編程(動態(tài)圖)
8.5.3飛槳二次研發(fā)
8.6工業(yè)部署
8.6.1概述
8.6.2飛槳模型部署組件介紹
8.6.3飛槳原生推理庫Paddle Inference
8.6.4飛槳服務(wù)化部署框架Paddle Serving
8.6.5飛槳輕量化推理引擎Paddle Lite
8.6.6飛槳模型壓縮工具PaddleSlim
8.6.7往屆優(yōu)秀學(xué)員作品展示
8.7飛槳全流程開發(fā)工具PaddleX
8.7.1飛槳全流程開發(fā)工具PaddleX
8.7.2PaddleX圖形化開發(fā)界面
8.7.3PaddleX 快速使用方法
8.7.4PaddleX客戶端使用方法
8.7.5往屆優(yōu)秀學(xué)員作品展示
8.8應(yīng)用啟發(fā): 行業(yè)應(yīng)用與項目案例
8.8.1人工智能在中國的發(fā)展和落地概況
8.8.2傳統(tǒng)行業(yè)有AI應(yīng)用空間嗎
8.8.3項目案例: 飛槳助力國網(wǎng)山東進行輸電通道可視化巡檢
8.8.4作業(yè)
8.8.5往屆優(yōu)秀學(xué)員作品展示