◆ 前言◆
譯者序
深度神經(jīng)網(wǎng)絡(luò)是一種層數(shù)更多、規(guī)模更大的人工神經(jīng)網(wǎng)絡(luò),較傳統(tǒng)神經(jīng)網(wǎng)絡(luò)在處理能力上有大幅的提升。2006年,加拿大多倫多大學(xué)的教授杰弗里·辛頓(Geoffrey Hinton)在深度信念網(wǎng)絡(luò)方面進(jìn)行了卓越的工作,開辟了深度學(xué)習(xí)這個(gè)新的技術(shù)領(lǐng)域。目前,深度學(xué)習(xí)技術(shù)已經(jīng)成為新一代人工智能技術(shù)的研究與開發(fā)熱點(diǎn),得到了全球的普遍關(guān)注,每天都有相關(guān)的報(bào)道,每年有大量的論文發(fā)表,不斷刷新著語音識(shí)別、圖像分類、商品推薦等各應(yīng)用領(lǐng)域智能處理水平的紀(jì)錄。與此同時(shí),深度學(xué)習(xí)模型難以解釋、參數(shù)調(diào)優(yōu)困難、參數(shù)規(guī)模大、訓(xùn)練周期長等問題也困擾著研究和開發(fā)人員。
如何讓深度學(xué)習(xí)模型設(shè)計(jì)更加簡潔高效,如何處理模型參數(shù)調(diào)試中遇到的困擾和難題,如何將深度學(xué)習(xí)快速地應(yīng)用到具體的業(yè)務(wù)領(lǐng)域,這些都是深度學(xué)習(xí)技術(shù)研究與開發(fā)者需要掌握的內(nèi)容。本書作為一本聚焦深度學(xué)習(xí)實(shí)際應(yīng)用的開發(fā)指南,很好地解決了這些問題。本書的作者是一位資深的軟件工程師,有著豐富的軟件開發(fā)和調(diào)試經(jīng)驗(yàn)。本書記錄了作者從實(shí)際工作中總結(jié)出來的很多開發(fā)技巧,非常適合開發(fā)實(shí)際應(yīng)用的深度學(xué)習(xí)工程師閱讀和參考。
本書的第1章從深度學(xué)習(xí)相關(guān)的基本概念開始,介紹了典型的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和各種層的設(shè)計(jì)特點(diǎn),然后對(duì)深度學(xué)習(xí)中常見的數(shù)據(jù)集進(jìn)行了介紹,最后對(duì)數(shù)據(jù)預(yù)處理和數(shù)據(jù)集的劃分進(jìn)行了細(xì)致的闡述。第2章是與深度神經(jīng)網(wǎng)絡(luò)調(diào)試相關(guān)的通用技巧,主要涉及如何解決遇到的問題,包括排查錯(cuò)誤、檢查結(jié)果、選擇激活函數(shù)、正則化和Dropout、設(shè)置訓(xùn)練參數(shù)等技巧。第3~15章以實(shí)際例子,介紹了深度學(xué)習(xí)在文本處理、圖像處理、音樂處理等方面的技巧,涵蓋了深度學(xué)習(xí)主要應(yīng)用的領(lǐng)域和數(shù)據(jù)類型,內(nèi)容非常豐富。最后一章作者從實(shí)際使用的角度告訴讀者如何在生產(chǎn)系統(tǒng)中部署機(jī)器學(xué)習(xí)應(yīng)用,使得本書的內(nèi)容更加貼近實(shí)際。
深度學(xué)習(xí)的技術(shù)還處在不斷迭代更新的階段,每天都有新的研究進(jìn)展發(fā)布,新的開發(fā)工具開源,以及新的技術(shù)挑戰(zhàn)出現(xiàn)。本書的內(nèi)容是當(dāng)前深度學(xué)習(xí)設(shè)計(jì)開發(fā)技巧的總結(jié),需要讀者在實(shí)踐中不斷嘗試,進(jìn)而提升自己的技術(shù)水平,這樣才會(huì)不斷加深對(duì)深度學(xué)習(xí)技術(shù)的理解和把握,創(chuàng)造出更加優(yōu)秀的算法、模型和應(yīng)用。希望讀者朋友在深度學(xué)習(xí)的實(shí)踐中不斷總結(jié)提煉,貢獻(xiàn)出更多優(yōu)秀的圖書作品。
每一次翻譯工作都是一次難忘的學(xué)習(xí)之旅,我們非常珍惜這個(gè)機(jī)會(huì)。非常感謝本書的作者和機(jī)械工業(yè)出版社華章公司的編輯,是他們辛勤的工作為我們創(chuàng)造了難得的機(jī)會(huì),讓我們能夠和廣大讀者一起走進(jìn)深度學(xué)習(xí)的世界,領(lǐng)略新一代人工智能技術(shù)的風(fēng)采。這里還要感謝公司同事和家人的大力支持,他們的鼓勵(lì)給了我們不斷前進(jìn)的動(dòng)力。本書翻譯過程中,我們努力表達(dá)作者的真知灼見,但因水平有限,難免有詞不達(dá)意的地方和疏漏之處,敬請(qǐng)讀者朋友不吝賜教。
譯者
2018年12月
譯者簡介
李君婷 國家電網(wǎng)有限公司信息通信分公司,主要從事電力信息通信運(yùn)維數(shù)據(jù)統(tǒng)計(jì)分析、項(xiàng)目管理等工作,研究興趣包括深度學(xué)習(xí)、數(shù)據(jù)科學(xué)、顛覆性創(chuàng)新等。
閆龍川 國家電網(wǎng)有限公司信息通信分公司,主要從事電力信息通信技術(shù)研究工作,研究興趣包括深度學(xué)習(xí)、強(qiáng)化學(xué)習(xí)、云計(jì)算、數(shù)據(jù)中心等。
俞學(xué)豪 國家電網(wǎng)有限公司信息通信分公司,主要從事電力信息通信技術(shù)研究與管理工作,研究興趣包括人工智能、云計(jì)算、綠色數(shù)據(jù)中心等。
高德荃 國家電網(wǎng)有限公司信息通信分公司,主要從事電力信息通信技術(shù)研究工作,研究興趣包括數(shù)據(jù)科學(xué)與人工智能、地理空間分析等。
目錄
前言1
第1章 工具與技術(shù)9
1.1 神經(jīng)網(wǎng)絡(luò)的類型9
1.2 數(shù)據(jù)獲取19
1.3 數(shù)據(jù)預(yù)處理27
第2章 擺脫困境34
2.1 確定我們遇到的問題34
2.2 解決運(yùn)行過程中的錯(cuò)誤36
2.3 檢查中間結(jié)果38
2.4 為最后一層選擇正確的激活函數(shù)39
2.5 正則化和Dropout40
2.6 網(wǎng)絡(luò)結(jié)構(gòu)、批尺寸和學(xué)習(xí)率42
第3章 使用詞嵌入計(jì)算文本相似性44
3.1 使用預(yù)訓(xùn)練的詞嵌入發(fā)現(xiàn)詞的相似性45
3.2 Word2vec數(shù)學(xué)特性47
3.3 可視化詞嵌入49
3.4 在詞嵌入中發(fā)現(xiàn)實(shí)體類51
3.5 計(jì)算類內(nèi)部的語義距離55
3.6 在地圖上可視化國家數(shù)據(jù)57
第4章 基于維基百科外部鏈接構(gòu)建推薦系統(tǒng)58
4.1 收集數(shù)據(jù)58
4.2 訓(xùn)練電影嵌入62
4.3 構(gòu)建電影推薦系統(tǒng)66
4.4 預(yù)測簡單的電影屬性67
第5章 按照示例文本的風(fēng)格生成文本69
5.1 獲取公開領(lǐng)域書籍文本69
5.2 生成類似莎士比亞的文本70
5.3 使用RNN編寫代碼74
5.4 控制輸出溫度76
5.5 可視化循環(huán)神經(jīng)網(wǎng)絡(luò)的活躍程度78
第6章 問題匹配80
6.1 從Stack Exchange網(wǎng)站獲取數(shù)據(jù)80
6.2 使用Pandas探索數(shù)據(jù)82
6.3 使用Keras對(duì)文本進(jìn)行特征化83
6.4 構(gòu)建問答模型84
6.5 用Pandas訓(xùn)練模型86
6.6 檢查相似性88
第7章 推薦表情符號(hào)90
7.1 構(gòu)建一個(gè)簡單的情感分類器90
7.2 檢驗(yàn)一個(gè)簡單的分類器93
7.3 使用卷積網(wǎng)絡(luò)進(jìn)行情感分析95
7.4 收集Twitter數(shù)據(jù)97
7.5 一個(gè)簡單的表情符號(hào)預(yù)測器99
7.6 Dropout和多層窗口100
7.7 構(gòu)建單詞級(jí)模型102
7.8 構(gòu)建你自己的嵌入104
7.9 使用循環(huán)神經(jīng)網(wǎng)絡(luò)進(jìn)行分類106
7.10 可視化一致性/不一致性108
7.11 組合模型111
第8章 Sequence-to-Sequence映射113
8.1 訓(xùn)練一個(gè)簡單的Sequence-to-Sequence模型113
8.2 從文本中提取對(duì)話115
8.3 處理開放詞匯表117
8.4 訓(xùn)練seq2seq 聊天機(jī)器人119
第9章 復(fù)用預(yù)訓(xùn)練的圖像識(shí)別網(wǎng)絡(luò)123
9.1 加載預(yù)訓(xùn)練網(wǎng)絡(luò)124
9.2 圖像預(yù)處理124
9.3 推測圖像內(nèi)容126
9.4 使用Flickr API收集一組帶標(biāo)簽的圖像128
9.5 構(gòu)建一個(gè)分辨貓狗的分類器129
9.6 改進(jìn)搜索結(jié)果131
9.7 復(fù)訓(xùn)圖像識(shí)別網(wǎng)絡(luò)133
第10章 構(gòu)建反向圖像搜索服務(wù)137
10.1 從維基百科中獲取圖像137
10.2 向N維空間投影圖像140
10.3 在高維空間中尋找最近鄰141
10.4 探索嵌入中的局部鄰域143
第11章 檢測多幅圖像145
11.1 使用預(yù)訓(xùn)練的分類器檢測多個(gè)圖像145
11.2 使用Faster RCNN進(jìn)行目標(biāo)檢測149
11.3 在自己的圖像上運(yùn)行Faster RCNN152
第12章 圖像風(fēng)格155
12.1 可視化卷積神經(jīng)網(wǎng)絡(luò)激活值156
12.2 尺度和縮放159
12.3 可視化神經(jīng)網(wǎng)絡(luò)所見161
12.4 捕捉圖像風(fēng)格164
12.5 改進(jìn)損失函數(shù)以提升圖像相干性168
12.6 將風(fēng)格遷移至不同圖像169
12.7 風(fēng)格內(nèi)插171
第13章 用自編碼器生成圖像173
13.1 從Google Quick Draw中導(dǎo)入繪圖174
13.2 為圖像創(chuàng)建自編碼器176
13.3 可視化自編碼器結(jié)果178
13.4 從正確的分布中采樣圖像180
13.5 可視化變分自編碼器空間183
13.6 條件變分編碼器185
第14章 使用深度網(wǎng)絡(luò)生成圖標(biāo)189
14.1 獲得訓(xùn)練用的圖標(biāo)190
14.2 將圖標(biāo)轉(zhuǎn)換為張量表示193
14.3 使用變分自編碼器生成圖標(biāo)194
14.4 使用數(shù)據(jù)擴(kuò)充提升自編碼器的性能196
14.5 構(gòu)建生成式對(duì)抗網(wǎng)絡(luò)198
14.6 訓(xùn)練生成式對(duì)抗網(wǎng)絡(luò)200
14.7 顯示GAN生成的圖標(biāo)202
14.8 將圖標(biāo)編碼成繪圖指令204
14.9 訓(xùn)練RNN繪制圖標(biāo)205
14.10 使用RNN生成圖標(biāo)207
第15章 音樂與深度學(xué)習(xí)210
15.1 為音樂分類器創(chuàng)建訓(xùn)練數(shù)據(jù)集211
15.2 訓(xùn)練音樂風(fēng)格檢測器213
15.3 對(duì)混淆情況進(jìn)行可視化215
15.4 為已有的音樂編制索引217
15.5 設(shè)置Spotify API219
15.6 從Spotify中收集播放列表和歌曲221
15.7 訓(xùn)練音樂推薦系統(tǒng)224
15.8 使用Word2vec模型推薦歌曲225
第16章 生產(chǎn)化部署機(jī)器學(xué)習(xí)系統(tǒng)228
16.1 使用scikit-learn最近鄰計(jì)算嵌入229
16.2 使用Postgres存儲(chǔ)嵌入230
16.3 填充和查詢Postgres存儲(chǔ)的嵌入231
16.4 在Postgres中存儲(chǔ)高維模型233
16.5 使用Python編寫微服務(wù)234
16.6 使用微服務(wù)部署Keras模型236
16.7 從Web框架中調(diào)用微服務(wù)237
16.8 Tensorflow
seq2seq模型238
16.9 在瀏覽器中執(zhí)行深度學(xué)習(xí)模型240
16.10 使用TensorFlow服務(wù)執(zhí)行Keras模型243
16.11 在iOS中使用Keras模型245