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