-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Python與神經網絡實戰

( 簡體 字)
作者:何宇健類別:1. -> 程式設計 -> Python
譯者:
出版社:電子工業出版社Python與神經網絡實戰 3dWoo書號: 49528
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:7/1/2018
頁數:400
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121342387
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

我在寫完前一本書—《Python與機器學習實戰》之后,承蒙出版社青睞,被寄予了在某個領域深入剖析并再寫一本書的希望。而當時(2017年年中)恰好是一個非常特殊的時間點—那正是人工智能概念席卷全球,成為當之無愧的“引爆點”的前夕。我在上一本書的前言里曾經說過,自從AlphaGo在2016年3月戰勝人類圍棋頂尖高手李世石后,“人工智能”“深度學習”這一類詞匯就進入了大眾的視野;而作為更加寬泛的一個概念—“機器學習”則多少順勢成為從學術界到工業界都相當火熱的話題,這也正是我上一本書的主題為機器學習的重要原因之一。而在2017年年中時,由于我從方方面面的資料與新聞中都隱隱約約地感受到了深度學習的巨大潛力,所以就和出版社定好了這本書的主題—神經網絡。神經網絡本身是一個非常寬泛的概念,它既能代指最基礎的“全連接神經網絡(DNN)”(需要指出的是,DNN原本泛指Deep Neural Network,即泛指深層神經網絡,不過簡潔起見,在本書中我們統一認定它特指全連接神經網絡),也能代指當今在各種領域大放異彩的“卷積神經網絡(CNN)”和“循環神經網絡(RNN)”。本書將主要敘述的是“全連接神經網絡(DNN)”及其變體,且其中涉及的技術也能應用在“卷積神經網絡(CNN)”和“循環神經網絡(RNN)”中。也正因此,在本書的正文中,我們會統一認定“神經網絡”代指的是DNN;但是大家需要知道的是,在前言這里我們會用“神經網絡”代指DNN、CNN與RNN的集合,而在本書以外的場合,雖然說起“神經網絡”大家一般都會認為說的是DNN,但也有可能不單單代指DNN。
那么,為什么我選擇了“神經網絡”這個主題呢?簡單來說,神經網絡是深度學習的“前身”或說“基礎”,因為深度學習往簡單里說的話,其實就是“比較深的神經網絡”。此外,對于本書將主要敘述的DNN來說,它和我上一本書中介紹的諸多傳統機器學習算法也有千絲萬縷的關系;通過兩者之間的相互對比,想必大家能對它們都有更深刻的理解,同時也能打下更堅實的基礎。
那么,為什么我選擇了這種偏基礎的主題而不是一些更具體的主題(比如說圖像識別、自然語言處理、推薦系統、強化學習)呢?畢竟在有了各種深度學習工具之后,DNN作為“老前輩”一般的存在,基本只能解決一些結構化數據的問題,而且解決得通常可能還沒有傳統的機器學習模型好。這主要出于兩個考慮:一是我做的研究本身普遍偏基礎,落實到具體的應用時也只是基礎方法的具體應用,而非針對具體的應用做的優化;另一方面則是我個人認為,深度學習一旦興旺起來,各種技術的迭代速度必定是極快的。這是因為深度學習之所以沒能獲得發展,相當大的原因是受了硬件設備與數據量的制約,一旦這兩個制約被打破,那么至少在我看來,它就會以一個月甚至一周的迭代周期來“優勝劣汰”。在這種情況下,即使我花了比較大的力氣去介紹我寫書時最流行、最有效的技術,等到讀者們拿到書時,這些技術很有可能已經沒那么流行甚至過時了。總而言之,由于深度學習在我期望中的發展速度過快,所以我沒敢向具體的技術下手。
有意思的是,時至今日(2018年年初),深度學習果然如我所料,幾乎可以算是進入了“一周一個新技術”的發展階段,各大公司的新產品日新月異、層出不窮,這讓我為當初選擇了基礎性的主題而感到慶幸。因為無論具體領域的具體應用技術如何發展,它們背后最本質、最基礎的知識都是不會變的。如果能掌握這些基礎性的知識,那么在接受各種蜂擁而至的新技術時,想必也會輕松不少吧。
當然,由于我們的目的還是想讓讀者能夠學以致用,所以雖然本書的主題偏基礎,但是我們也會花篇幅來介紹如何將這些基礎性的知識進行具體的應用。事實上,我們只會在前5章介紹理論上的知識,而第6章和第7章,則都是在介紹如何編寫能夠應用于現實任務中的框架。此外,本書的代碼實現都是偏工程化的,所以大部分核心代碼可能會比較長。這是因為我們想要傳達的是一種大規模編程下的優良習慣,比如可拓展性、可遷移性、用戶友好性等,所以有些地方的實現相比起純算法實現而言可能會顯得略微冗長。不過在我看來,在實際任務中,其實一般很少能夠僅僅編寫純算法實現,大部分情況下都需要融合進其他內容,所以相信本書的實現方式能夠幫助大家適應今后現實中的情景。
此外需要指出的是,囿于篇幅,本書無法將所有代碼悉數放出(事實上這樣做的意義也不是很大),所以我們會適當地略去一些相對枯燥且和相應算法的核心思想關系不大、又或是測試代碼的實現。對于這些代碼以及本書展示的所有代碼,我都把它們放在了GitHub上,大家可以參見https://github.com/carefree0910/MachineLearning/tree/Book/_Dist/NeuralNetworks這個目錄中的相應代碼。我個人的建議是,在閱讀本書之前先把這個鏈接里面的內容都下載下來作為參照,并在需要的時候通過Ctrl+F組合鍵進行相應的檢索。同時,在本書寫完之后,由于我會把收筆時的代碼保留在Book這個Branch中,并把后續的更新統一放在master Branch中,所以也可以參見https://github.com/carefree0910/MachineLearning/tree/master/_Dist/NeuralNetworks這個根目錄中的代碼以獲取無法反映在本書中的、最新的更新。
最后想要說的是,與我寫的上一本書類似,雖然本書會盡量避免羅列枯燥的數學公式,但是一些比較重要的公式與證明還是不可或缺的。不過考慮到數學基礎因人而異,我把一些額外的、類似于“附加證明”的章節打上星號(*)。對于之前學過機器學習、基礎比較扎實的讀者,閱讀這些帶星號的章節是比較有益的,因為它們有助于更深刻地理解一些知識背后的理論;而對于零基礎或僅想通過本書入門的讀者,這些章節可能稍顯困難,所以直接把它們跳過也是不錯的選擇,因為跳過它們不看并不會對理解主要內容造成很大的影響。
本書特點
. 注重基礎:本書不僅介紹了神經網絡的基礎知識(比如前向傳導算法、反向傳播算法、Dropout、Batch Normalization等),還涵蓋了傳統的、經典的、基礎的機器學習算法(樸素貝葉斯、決策樹、支持向量機)的大意以及這些算法與神經網絡在本質上的聯系。

. 注重創新:本書將會介紹許多屬于新穎的、有效的技術。比如第4章中的轉換算法,目前市面上的圖書中基本沒有類似的、面面俱到的介紹;而第5章介紹的神經網絡中的軟剪枝技術,則更是筆者個人的研究,可以說是“只此一家”。

. 注重應用:本書最后兩章將會著重介紹如何搭建在現實任務中確實能拿來應用的神經網絡框架,該框架不僅兼顧了可擴展性,也兼顧了用戶友好性,能在各個領域中發揮作用。

. 注重基礎:本書中的所有代碼實現沿襲了上一本書的傳統,基本都是“從零開始”。也正因此,所涉及的核心實現大多僅僅基于一些基礎的第三方庫(如numpy、TensorFlow)而沒有依賴更高級的第三方庫,這使得我們能夠通過代碼實現來輔助理解算法細節。


本書的內容安排
第1章 緒論
本章介紹了一些基本概念與基礎術語,這些內容雖然可能略顯乏味,但卻是跨入業界必須掌握的知識。本章的篇幅很短,內容相對濃縮,對于零基礎的讀者可能會需要花一些時間去消化,對于有基礎的讀者則是比較好的知識喚醒。
第2章 經典傳統機器學習算法簡介
本章將會精要介紹5個經典的傳統機器學習算法—樸素貝葉斯、決策樹、感知機、支持向量機和Logistic回歸,介紹的方式偏向于直觀敘述,旨在讓大家更好地從原理而不是從細節上去理解這些算法。雖然本書的主題是(全連接)神經網絡,但是了解這些傳統的機器學習算法是有必要的,它們不僅能給我們解決實際問題的思維,也能佐證神經網絡的強大。
第3章 神經網絡入門
本章是神經網絡的入門章節,旨在全面且較為深刻地敘述神經網絡的各項技術要點,包括神經網絡的結構、激活函數、損失函數、前向傳導算法、反向傳播算法、梯度下降法的各式變體、搭建TensorFlow模型基本框架的諸多注意事項等。如果能夠將本章的所有內容都深刻理解的話,相信不僅能對神經網絡有比較扎實的認知,也能對TensorFlow這個深度學習框架有更好的認知,這對今后的各種實際應用是大有裨益的。
第4章 從傳統算法走向神經網絡
本章通過將神經網絡與第2章所介紹的各式傳統機器學習算法做對比,以此來幫助大家加深對這些傳統機器學習算法和神經網絡的理解。我們將會看到,即使是最樸素的神經網絡,就已經能夠自然地表達出感知機、支持向量機和Logistic回歸這三種模型,而且只要通過定制它的權值矩陣與偏置量,甚至還能夠表達出幾乎任意的樸素貝葉斯模型與決策樹模型。此外,這種表達還有著一定的現實意義,并不僅僅是理論上的技巧。
第5章 神經網絡進階
本章是神經網絡的進階章節,旨在介紹一些能夠提升樸素神經網絡性能的技術,包括Dropout、Batch Normalization、Wide and Deep、Deep Neural Decision Forest、Dynamic Network Surgery以及軟剪枝技術等。這些技術并不是一個個獨立的技術,在經過適當整合之后,從理論和實驗效果來看都會擁有許多有趣且有用的性質。
第6章 半自動化機器學習框架
本章旨在介紹如何將前5章介紹過的技術應用到實際問題中。雖然在介紹技術理論時我們可以做出許多很強的假設,比如數據都是連續型數據、各個特征的取值都很合理,以及訓練步數可以控制在最優等,但對于真實世界中的數據集而言,我們往往需要做很多預處理工作之后,才能夠應用諸多(神經網絡的)技術;而且由梯度下降法的特性可知,訓練步數是一個理論上不可知的、但是又非常重要的超參數,究竟何時停止訓練甚至是模型表現優秀與否的最關鍵的環節。本章會較為全面地給出針對這些問題的一套解決方案,這套解決方案能夠直接應用于絕大多數非結構化數據上,實現了機器學習的“半自動化”。
第7章 工程化機器學習框架
前6章的內容已經使我們能夠用同一個模型端到端地解決許多問題,但是在現實任務中,我們不僅常常需要進行多次重復實驗來更好地驗證模型,而且還常常需要同時對很多模型做實驗并選出其中最好的模型,這就要求我們在前6章的基礎上進一步自動化這些功能。本章將會介紹如何利用前6章實現的框架來進行多次實驗與參數搜索,前者可以更合理地評估特定模型在特定數據集上的性能,而后者則能夠挑選出最適合特定數據集的模型。
適合閱讀本書的讀者
. 想要轉行AI、投身AI的程序員

. 想要知道TensorFlow編程技巧的程序員

. 想要打好基礎并入門深度學習的學生、老師、在職員工等

. 想要使用神經網絡來解決(非結構化數據分類預測的)實際問題的從業者
內容簡介:

人工智能已成發展趨勢,而深度學習則是其中最有用的工具之一。雖然科技發展速度迅猛,現在實用技術更新換代的頻率已經迅速到以周來計算,但是其背后最為基礎的知識卻是共通的。本書較為全面地介紹了神經網絡的諸多基礎與進階的技術,同時還介紹了如何利用神經網絡來解決真實世界中的現實任務。本書各章的內容不僅包括經典的傳統機器學習算法與神經網絡的方方面面,還對它們進行了對比與創新。如果能夠掌握本書所講述的知識,相信即使具體的技術更新得再快,讀者也能根據本書所介紹的知識來快速理解、上手與改進它們。 本書兼顧了理論與實踐,不僅從公式上推導出神經網絡的各種性質,也從實驗上對它們進行了驗證,比較適合初學者進行學習。同時,本書所給出的框架更能直接、簡單、快速地應用在實際任務中,適合相關從業人員使用。

目錄:

第1章 緒論 ........................ 1
1.1 機器學習簡介 ......................... 2
1.1.1 什么是機器學習 ........ 2
1.1.2 機器學習常用術語 .... 3
1.2 Python簡介 ............................. 9
1.2.1 Python的優勢 .......... 10
1.2.2 scikit-learn和TensorFlow....................................... 11
1.3 前期準備 ............................... 13
1.3.1 訓練、交叉驗證與測試 .......................................... 13
1.3.2 簡易數據預處理 ...... 14
1.4 本章小結 ............................... 15
第2章 經典傳統機器學習算法簡介 ................................. 17
2.1 樸素貝葉斯 ........................... 17
2.1.1 條件獨立性假設 ...... 18
2.1.2 貝葉斯思維 .............. 19
2.1.3 模型算法 .................. 20
2.1.4 實例演示 .................. 23
2.1.5* 參數估計 .................. 25
2.1.6* 樸素貝葉斯的改進 .. 28
2.2 決策樹 ................................... 33
2.2.1 決策的方法 .............. 33
2.2.2 決策樹的生成 .......... 34
2.2.3 決策樹的剪枝 .......... 39
2.2.4 實例演示 .................. 40
2.2.5* 決策樹的三大算法 .. 40
2.2.6* 數據集的劃分 .......... 45
2.2.7* 決策樹與回歸 .......... 48
2.3 支持向量機 ........................... 50
2.3.1 分離超平面與幾何間隔 .......................................... 50
2.3.2* 感知機與SVM的原始形式 ................................... 58
2.3.3 梯度下降法 .............. 62
2.3.4* 核技巧 ...................... 70
2.3.5 實例演示 .................. 75
2.4 Logistic回歸 ......................... 75
2.5 本章小結 ............................... 76
第3章 神經網絡入門 ........ 77
3.1 神經網絡的結構 ................... 78
3.2 前向傳導算法 ....................... 80
3.2.1 算法概述 .................. 81
3.2.2 算法內涵 .................. 83
3.2.3 激活函數 .................. 85
3.2.4 損失函數 .................. 90
3.3* 反向傳播算法 ....................... 92
3.3.1 算法概述 .................. 92
3.3.2 損失函數的選擇 ...... 94
3.4 參數的更新 ........................... 98
3.4.1 Vanilla Update........... 99
3.4.2 Momentum Update ... 99
3.4.3 Nesterov Momentum Update ................................. 100
3.4.4 AdaGrad .................. 100
3.4.5 RMSProp ................ 101
3.4.6 Adam....................... 101
3.5 TensorFlow模型的基本框架 ............................................ 101
3.5.1 TensorFlow的組成單元與基本思想 .................... 102
3.5.2 TensorFlow模型的基本元素 ................................ 104
3.5.3 TensorFlow元素的整合方法 ................................ 114
3.5.4 TensorFlow模型的save & load ........................... 125
3.6 樸素神經網絡的實現與評估 ............................................ 130
3.7 本章小結 ............................. 138
第4章 從傳統算法走向神經網絡 .................................. 139
4.1 樸素貝葉斯的線性形式 ..... 139
4.2 決策樹生成算法的本質 ..... 145
4.2.1 第1隱藏層→決策超平面 .................................... 147
4.2.2 第2隱藏層→決策路徑 ........................................ 148
4.2.3 輸出層→葉節點 ..... 150
4.2.4 具體實現 ................ 151
4.3 模型轉換的實際意義 ......... 158
4.3.1 利用Softmax來賦予概率意義 ............................ 159
4.3.2 利用Tanh+Softmax來“軟化”模型 ................. 160
4.3.3 通過微調來緩解“條件獨立性假設” ................ 165
4.3.4 通過微調來豐富超平面的選擇 ............................ 165
4.3.5 模型逆轉換的可能性............................................ 171
4.4 模型轉換的局限性 ............. 172
4.5 本章小結 ............................. 172
第5章 神經網絡進階 ...... 174
5.1 層結構內部的額外工作 ..... 175
5.1.1 Dropout ................... 175
5.1.2 Batch Normalization .............................................. 176
5.1.3 具體實現 ................ 180
5.2 “淺”與“深”的結合 ..... 181
5.2.1 離散型特征的處理方式 ........................................ 181
5.2.2 Wide and Deep模型概述 ...................................... 183
5.2.3 Wide and Deep的具體實現 .................................. 185
5.2.4 WnD的重要思想與優缺點 .................................. 194
5.3 神經網絡中的“決策樹” . 195
5.3.1 DNDF結構概述 ..... 195
5.3.2* DNDF的具體實現 . 199
5.3.3 DNDF的應用場景 . 210
5.3.4* DNDF的結構內涵 . 213
5.4 神經網絡中的剪枝 ............. 216
5.4.1 Surgery算法概述 ... 216
5.4.2 Surgery算法改進 ... 218
5.4.3 軟剪枝的具體實現 221
5.4.4* 軟剪枝的算法內涵 223
5.5 AdvancedNN的結構設計 .. 237
5.5.1 AdvancedNN的實現補足 ..................................... 237
5.5.2 WnD與DNDF ....... 239
5.5.3 DNDF與剪枝......... 241
5.5.4 剪枝與Dropout ...... 242
5.5.5 沒有免費的午餐 .... 242
5.6 AdvancedNN的實際性能 .. 243
5.7 本章小結 ............................. 251
第6章 半自動化機器學習框架 ...................................... 253
6.1 數據的準備 ......................... 254
6.1.1 數據預處理的流程 254
6.1.2 數據準備的流程 .... 256
6.2 數據的轉換 ......................... 264
6.2.1 數據的數值化 ........ 264
6.2.2 冗余特征的去除 .... 266
6.2.3 缺失值處理 ............ 269
6.2.4 連續型特征的數據預處理 .................................... 272
6.2.5 特殊類型數據的處理............................................ 274
6.3 AutoBase的實現補足 ........ 277
6.4 AutoMeta的實現 ................ 281
6.5 訓練過程的監控 ................. 288
6.5.1 監控訓練過程的原理............................................ 288
6.5.2 監控訓練的實現思路............................................ 292
6.5.3 監控訓練的具體代碼............................................ 293
6.6 本章小結 ............................. 299
第7章 工程化機器學習框架 .......................................... 301
7.1 輸出信息的管理 ................. 301
7.2 多次實驗的管理 ................. 309
7.2.1 多次實驗的框架 .... 312
7.2.2 多次實驗的初始化 314
7.2.3 多次實驗中的數據劃分 ........................................ 316
7.2.4 多次實驗中的模型評估 ........................................ 318
7.2.5 多次實驗的收尾工作............................................ 321
7.3 參數搜索的管理 ................. 321
7.3.1 參數搜索的框架 .... 322
7.3.2* 隨機搜索與網格搜索............................................ 329
7.3.3 參數的選取 ............ 334
7.3.4 參數搜索的收尾工作............................................ 335
7.3.5 具體的搜索方案 .... 335
7.4 DistAdvanced的性能 ......... 337
7.5 本章小結 ............................. 344
附錄A SVM的TensorFlow實現 .................................. 345
附錄B numba的基本應用 ............................................ 352
附錄C 裝飾器的基本應用 ............................................. 359
附錄D 可視化 ................ 363
附錄E 模型的評估指標 .. 370
附錄F 實現補足 ............. 377
序: