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