深度學習500問——AI工程師面試寶典 ( 簡體 字) |
作者:談繼勇 | 類別:1. -> 程式設計 -> 深度學習 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 53948 詢問書籍請說出此書號!【有庫存】 NT售價: 545 元 |
出版日:12/1/2020 |
頁數:484 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121389375 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:推薦序一
計算機技術的加速發展推動了人工智能領域的進步。這幾年,人工智能技術蓬勃發展,相信多數人都會思考人工智能技術是否會對自己的工作產生影響。人們關心人工智能什么時候以什么方式改變我們現在的工作。這些問題的答案取決于人工智能技術本身的發展。
從1956年人工智能元年開始算起,這項技術至今已有64年的歷史。不同于以前采用的技術,現在的人工智能是以模擬人類大腦工作方式的人工神經網絡和海量數據為驅動力而發展起來的。
這些創新性的人工智能技術的發展給我們帶來了新的機遇,但同時也對這個行業的從業者提出了新的挑戰。用計算機科學家艾茲格·迪科斯徹的話來說:“機器是否能夠思考,與潛水艇是否能夠游泳的問題很像。”識別人臉的人工智能不需要和人類采用相同的方法,卻會以我們永遠無法達到的速度、準確率,以及更低的成本來完成相同的工作。
以人工神經網絡為主的技術路線相當于授機器以“漁”,人類工作的主要目的是教會機器如何從數據(經驗)中學習,形成機器判斷、處理的邏輯,并且從學習中不斷進步。相比之下,從前的技術采用的是授機器以“魚”的方法,直接用編程的方式將判斷的邏輯教授給機器。
授機器以“漁”無疑要比授機器以“魚”困難很多。我們不僅要確保機器能夠像人類一樣進行判斷,還要確保機器能夠根據環境變化不斷學習。這意味著人工智能從業者不僅要對數據和其背后的行業知識有深刻的理解,同時還要對人工智能技術相關的各種知識有全面的了解。只有這樣,才能針對具體問題,選擇和開發解決問題的工具。
本書給廣大讀者提供了系統地學習人工智能相關技術的平臺。從必須具備的數學基礎、機器學習基礎、深度學習基礎開始,逐步深入到人工智能技術中各種熱門的人工神經網絡算法,然后結合實際問題,介紹目標檢測、圖像分割等使用的具體技術。不僅如此,本書還深入講解了在模型創建和訓練過程中,算法優化和參數調整的細節。可以說,本書囊括了深度學習所需要的所有知識體系,是一本行業從業者必備的百科全書。
本書作者談繼勇是南方科技大學和哈爾濱工業大學聯合培養的博士。他從2011年就開始對人工智能進行研究,是這個領域的一員老兵。他在深圳瀚維智能醫療科技公司帶領團隊研發的多款智能機器人及人工智能產品都已經或即將進入量產階段。從這些成績中可以看出作者扎實的理論基礎和實現技術轉化的能力。相信閱讀本書的小伙伴在實際工作中可以從本書獲得許多幫助,讓我們一同為人工智能技術的發展做貢獻。
周德標
IBM Watson健康大中華區首席運營官
推薦序二
春秋戰國時期,思想家荀子就在《荀子·正名》中提出了智能的概念。今天,在快速發展的數據、算法和算力驅動下,以深度學習為代表的人工智能技術在很多方面都取得了巨大的突破,人工智能技術的應用隨處可見。通過語音助手,我們能夠進行預約服務;通過攝像頭人臉識別,我們能夠進行身份的安全驗證;通過增強現實游戲,我們能夠與虛擬世界中的物體進行互動;通過對采集的圖像視頻進行智能選擇與美化,我們能夠進行更為友好的網絡社交。人們不禁會問,是什么在推動著人工智能技術的發展呢?毫無疑問,其根本是人。歷史上每個階段的每個突破都要歸功于眾多優秀的學者和研發人員的不懈努力。
當前,人工智能技術的普及和教育已經引起社會各界的極大重視。2017年,國務院印發了《新一代人工智能發展規劃》,明確指出:人工智能成為國際競爭的新焦點,應逐步開展全民智能教育項目,培養復合型人才。
《深度學習500問——AI工程師面試寶典》一書的問世無疑能給廣大人工智能從業者和技術研發人員帶來福祉。本書全面、系統地對深度學習技術進行了講解,從深度學習涉及的數學基礎和機器學習基礎開始,到基礎的卷積神經網絡、循環神經網絡和當前熱門的生成對抗網絡,再到以目標檢測、圖像分割兩類常用任務來介紹深度學習的應用,內容非常豐富。另外,本書還從面向實際部署的角度,系統講解了模型遷移、開發工具、網絡優化和調參、模型壓縮與加速等技術。
希望本書的讀者能夠學有所成!
葛仕明
中國科學院博士生導師
前 言
為什么要寫這本書
人工智能學科自誕生以來,技術理論不斷發展,應用領域不斷延伸。深度學習是機器學習和人工智能研究的最新趨勢之一,可以使具有多個處理層的計算模型實現對多層次抽取數據表征的學習,在智能機器人、圖像處理、自然語言處理及語音識別等領域產生了眾多應用成果。
隨著人工智能技術的發展及國家政策的支持,人工智能人才需求井噴。大量的研究者將深度學習方法作為首要的研究內容。從事與深度學習相關的工作是一件令人自豪的事情,同時,理解深度學習也是一件神秘和令人興奮的事情。但深度學習的理論性較強、門檻較高,要理解該領域的知識,讀者需要具有一定的數學基礎,需要學習統計分析、模式識別等專業領域的知識。很多讀者想深入研究又望而卻步,因為他們缺乏必要的知識,在知識的深入及遷移上有難以跨越的鴻溝。
在學習深度學習相關知識的時候,我經常通過反復思考某個問題來指導自己,查閱資料并且記錄成文,經過一段時間后發現整理的內容越來越豐富,從問題集開始,逐漸形成了有序且關聯的篇章,我將其命名為《深度學習500問》。2018年6月,我陸續將整理的內容上傳到GitHub,方便自己遠程更新。意外的是,在2018年10月的時候,這些內容突然引起眾多閱讀者的極大反響,在CSDN、AI科技大本營、量子位、知乎、雷鋒網、知識星球等眾多一線人工智能類公眾號及網站上相互傳開。在最開始的兩周內,累計星標就超過1萬,在GitHub趨勢榜的全球月、周排名中多次居首,這些內容成為一份火爆的深度學習方面的資料,可以作為面試秘籍,也可以作為工程實踐的輔助查詢手冊。隨后全球有超過萬名的老師、學生、研究者及工程師參與到項目中來,通過廣大研究者的集思廣益,這些內容最終形成了一個更充實、更全面的AI相關知識庫。截至2020年7月,《深度學習500問》在GitHub上的累計星標超過4萬。我們本著將內容統一化、精細化、準確化的初衷,聯合眾多讀者一起將其完善、修改并成書。參與成書的很多朋友基本都素未謀面,正是對知識的渴望和堅持技術開源的精神,讓我們走到了一起,也正是大家的共同努力,才有了本書的出版。
在本書的撰寫過程中,我們力求深入淺出,從基礎到入門,從進階到拓展,盡量定性地進行描述,并較為全面地給出思路和闡釋。本書旨在向讀者介紹知識的同時培養讀者的思維方法,通過不斷地刨根問底,使讀者在實際的研究與開發過程中快速定點、查漏補缺。書中給出了很多經驗性的總結,希望可以幫助讀者快速解決問題。
讀者反饋
為了盡可能滿足讀者的需要,本書的電子版同步在GitHub上免費發布,感謝在GitHub上提交內容和建議的朋友們。本書的內容參考了大量的論文、博客,感謝這些開源貢獻者。由于本書涉及的數學公式比較復雜、內容涵蓋面廣且編者水平有限,如發現任何問題,歡迎讀者通過以下方式聯系編者,以便做出改進。
致謝
首先要感謝中科院葛仕明教授、香港中文大學(深圳)張家銘研究員及四川大學佃松宜教授,他們引導我進入深度學習、計算機視覺研究領域。感謝鴻海科技集團首席技術官及首席投資官陳杰良博士及富士康機器人與人工智能實驗室負責人蔣祖力博士,他們為我提供了很多在外交流學習的機會,寫這本書的最初想法是在富士康機器人與人工智能實驗室里萌生的。
同時,感謝CSDN的創始人蔣濤,感謝謝工、谷磊、周翔、許愛艷、王金許等,感謝電子工業出版社的符隆美和其他編輯老師們,他們在我寫作的過程中給予我的指點和教誨確保了本書的權威性和嚴謹性。感謝電子工業出版社組織的作譯者交流活動,讓我得以認識各領域的專家,例如IBM Watson健康大中華區首席運營官周德標、阿里巴巴高級專家阮威等,我向他們學習了許多專業知識和職業發展的成功奧秘。感謝順豐科技計算機視覺總工程師宋翔及熊君君等前輩在工作中曾給予我技術指導。
感謝四川大學的師弟師妹們,馬叢俊、楊沐杰、覃寓媛、王秋爽、張月齡、稅懿、李振陽、何貴為本書制作了很多圖表;感謝高日強、劉帥偉、孫洪衛、劉元德、黃欽建、劉暢、李驍丹、楊國峰、梁志成、程澤華、張達峰、喬成磊、徐武民、劉鵬、崔永明、白德乾、袁笛、熊楚原、周迎威、明杰、何建宏、盛泳潘、鐘申俊、廖文彤、琚兆學等眾多碩士、博士及很多在GitHub上默默貢獻的科研工作者和工程師為本書的編寫提出了很多寶貴的意見和建議。
感謝每一位為本書做出貢獻的朋友,我謹以此書作為回禮。
談繼勇 |
內容簡介:本書系統地描述了深度學習的基本理論算法及應用。全書共14章,第1~3章論述了數學基礎、機器學習基礎和深度學習基礎;第4~7章介紹了一些經典網絡及計算機視覺領域中常用的CNN、RNN、GAN等網絡結構技術;第8~9章介紹了深度學習在計算機視覺領域的目標檢測及圖像分割兩大應用;第10~14章介紹了計算機視覺領域主要的優化方法及思路等,包括遷移學習、網絡架構及訓練、網絡優化技巧、超參數調整及模型的壓縮和加速等。本書凝聚了眾多一線科研人員及工程師的經驗,旨在培養讀者發現問題、解決問題、擴展問題的能力。本書內容取材于編者在日常學習過程中總結的知識點及各大公司常見的筆試、面試題。本書可為高等院校計算機科學、信息科學、人工智能、控制科學與工程、電子科學與技術等領域的研究及教學人員提供參考,也可為相關專業本科生及研究生提供思考方向,還可為深度學習及計算機視覺領域的初、中級研究人員和工程技術人員提供參考,尤其適合需要查漏補缺的應聘者及提供相關崗位的面試官閱讀。 |
目錄:第1章 數學基礎 1
1.1 向量和矩陣 1
1.1.1 標量、向量、矩陣和張量 1
1.1.2 張量與矩陣的區別 2
1.1.3 矩陣和向量相乘的結果 2
1.1.4 向量和矩陣的范數歸納 2
1.1.5 判斷一個矩陣是否為正定矩陣 4
1.2 導數和偏導數 5
1.2.1 導數偏導計算 5
1.2.2 導數和偏導數的區別 6
1.3 特征值和特征向量 6
1.3.1 特征值分解 6
1.3.2 奇異值和特征值的關系 6
1.4 概率分布與隨機變量 7
1.4.1 機器學習為什么要使用概率 7
1.4.2 變量與隨機變量的區別 7
1.4.3 隨機變量與概率分布的聯系 8
1.4.4 離散型隨機變量和概率質量函數 8
1.4.5 連續型隨機變量和概率密度函數 8
1.4.6 舉例理解條件概率 9
1.4.7 聯合概率與邊緣概率的區別和聯系 9
1.4.8 條件概率的鏈式法則 10
1.4.9 獨立性和條件獨立性 10
1.5 常見概率分布 11
1.5.1 伯努利分布 11
1.5.2 高斯分布 11
1.5.3 何時采用正態分布 12
1.5.4 指數分布 12
1.5.5 Laplace分布 13
1.5.6 Dirac分布和經驗分布 13
1.6 期望、方差、協方差、相關系數 13
1.6.1 期望 13
1.6.2 方差 14
1.6.3 協方差 14
1.6.4 相關系數 15
第2章 機器學習基礎 16
2.1 基本概念 16
2.1.1 大話機器學習本質 16
2.1.2 什么是神經網絡 16
2.1.3 各種常見算法圖示 17
2.1.4 計算圖的導數計算 17
2.1.5 理解局部最優與全局最優 18
2.1.6 大數據與深度學習之間的關系 19
2.2 機器學習的學習方式 20
2.2.1 監督學習 20
2.2.2 非監督學習 20
2.2.3 半監督學習 20
2.2.4 弱監督學習 20
2.2.5 監督學習模型的搭建步驟 21
2.3 分類算法 22
2.3.1 常用分類算法的優缺點 22
2.3.2 分類算法的評估方法 23
2.3.3 正確率能否很好地評估分類算法 25
2.3.4 什么樣的分類器是最好的 26
2.4 邏輯回歸 26
2.4.1 回歸的種類 26
2.4.2 邏輯回歸適用性 27
2.4.3 邏輯回歸與樸素貝葉斯的區別 27
2.4.4 線性回歸與邏輯回歸的區別 27
2.5 代價函數 28
2.5.1 為什么需要代價函數 28
2.5.2 代價函數作用原理 28
2.5.3 常見代價函數 30
2.5.4 為什么代價函數要非負 31
2.5.5 為什么用交叉熵代替二次代價函數 31
2.6 損失函數 32
2.6.1 什么是損失函數 32
2.6.2 常見的損失函數 32
2.6.3 邏輯回歸為什么使用對數損失函數 34
2.6.4 對數損失函數如何度量損失 34
2.7 梯度下降法 35
2.7.1 梯度下降法的作用 36
2.7.2 梯度下降法的直觀理解 36
2.7.3 梯度下降法算法描述 37
2.7.4 梯度下降法的缺點 38
2.7.5 如何對梯度下降法進行調優 38
2.7.6 隨機梯度下降和批量梯度下降的區別 38
2.7.7 各種梯度下降法性能比較 40
2.8 線性判別分析 40
2.8.1 LDA思想總結 40
2.8.2 圖解LDA核心思想 41
2.8.3 二類LDA算法原理 41
2.8.4 LDA算法流程總結 42
2.8.5 LDA和PCA的異同 43
2.8.6 LDA的優缺點 43
2.9 主成分分析 43
2.9.1 圖解PCA核心思想 43
2.9.2 PCA算法推理 44
2.9.3 PCA算法流程總結 45
2.9.4 PCA思想總結 46
2.9.5 PCA算法的優缺點 46
2.9.6 降維的必要性及目的 46
2.9.7 KPCA與PCA的區別 47
2.10 模型評估 47
2.10.1 模型評估常用方法 48
2.10.2 誤差、偏差和方差的區別和聯系 48
2.10.3 為什么使用標準差 49
2.10.4 經驗誤差與泛化誤差 50
2.10.5 圖解欠擬合與過擬合 50
2.10.6 如何解決欠擬合與過擬合 52
2.10.7 交叉驗證的主要作用 52
2.10.8 理解K折交叉驗證 53
2.10.9 理解混淆矩陣 53
2.10.10 理解查準率與查全率 53
2.10.11 理解ROC與AUC 54
2.10.12 如何繪制ROC曲線 55
2.10.13 如何計算TPR和FPR 56
2.10.14 如何計算AUC 58
2.10.15 直觀理解AUC 58
2.10.16 ROC評估分類器 60
2.10.17 代價敏感錯誤率與代價曲線 60
2.10.18 比較檢驗方法 61
2.11 決策樹 61
2.11.1 決策樹的基本原理 62
2.11.2 決策樹的生成過程 62
2.11.3 決策樹學習基本算法步驟 62
2.11.4 決策樹算法的優缺點 63
2.11.5 決策樹和熵的聯系 63
2.11.6 熵的概念及定義 63
2.11.7 理解信息增益 64
2.11.8 決策樹中熵、條件熵和信息增益的聯系 64
2.11.9 決策樹算法中剪枝的作用及策略 65
2.12 支持向量機(SVM) 65
2.12.1 什么是SVM 65
2.12.2 SVM能解決的問題 66
2.12.3 核函數特點及其作用 67
2.12.4 SVM為什么引入對偶問題 67
2.12.5 如何理解SVM中的對偶問題 67
2.12.6 常見的核函數 69
2.12.7 SVM的主要特點 69
2.12.8 SVM的主要缺點 70
2.12.9 邏輯回歸與SVM的異同 70
2.13 貝葉斯分類器 72
2.13.1 貝葉斯分類器的基本原理 72
2.13.2 樸素貝葉斯分類器 72
2.13.3 舉例理解樸素貝葉斯分類器 73
2.13.4 半樸素貝葉斯分類器 75
2.13.5 極大似然估計和貝葉斯估計的聯系與區別 75
2.13.6 極大似然估計原理 76
2.13.7 圖解極大似然估計 76
2.14 EM算法 77
2.14.1 EM算法的基本思想 77
2.14.2 EM算法推導 77
2.14.3 圖解EM算法 78
2.14.4 EM算法流程 79
2.15 降維和聚類 79
2.15.1 圖解為什么會產生維數災難 79
2.15.2 怎樣避免維數災難 83
2.15.3 聚類和降維 83
2.15.4 聚類算法優劣的衡量標準 84
2.15.5 聚類和分類 85
2.15.6 聚類算法的性能比較 85
2.15.7 4種常用聚類方法比較 85
第3章 深度學習基礎 89
3.1 基本概念 89
3.1.1 神經網絡的類型 89
3.1.2 神經網絡的常用模型結構 92
3.1.3 深度學習和機器學習的區別與聯系 93
3.1.4 為什么使用深層表示 93
3.1.5 深度學習架構分類 94
3.1.6 如何選擇深度學習開發平臺 94
3.2 神經網絡計算 95
3.2.1 前向傳播和反向傳播 95
3.2.2 如何計算神經網絡的輸出 96
3.2.3 如何計算卷積神經網絡輸出值 97
3.2.4 如何計算池化層輸出值 100
3.2.5 反向傳播實例 101
3.2.6 神經網絡更“深”的意義 104
3.3 激活函數 104
3.3.1 為什么需要激活函數 104
3.3.2 為什么激活函數需要非線性函數 105
3.3.3 常見的激活函數及其圖像 105
3.3.4 常見激活函數的導數計算 107
3.3.5 激活函數有哪些性質 108
3.3.6 如何選擇激活函數 108
3.3.7 為什么tanh收斂速度比sigmoid快 109
3.3.8 Relu激活函數的優點 109
3.3.9 理解Relu激活函數的稀疏激活性 109
3.3.10 什么時候可以用線性激活函數 109
3.3.11 softmax函數的定義及作用 110
3.3.12 softmax函數如何應用于多分類 110
3.4 BATCH SIZE 112
3.4.1 為什么需要Batch Size 112
3.4.2 如何選擇Batch Size值 112
3.4.3 調節Batch Size對訓練效果的影響 113
3.4.4 在合理范圍內增大Batch Size的好處 113
3.4.5 盲目增大Batch Size的壞處 114
3.5 歸一化 114
3.5.1 理解歸一化含義 114
3.5.2 歸一化和標準化的聯系與區別 114
3.5.3 為什么要歸一化或標準化 115
3.5.4 圖解為什么要歸一化 115
3.5.5 為什么歸一化能提高求最優解速度 115
3.5.6 歸一化有哪些類型 116
3.5.7 局部響應歸一化作用 116
3.5.8 局部響應歸一化原理 117
3.5.9 什么是批歸一化 118
3.5.10 批歸一化的優點 118
3.5.11 批歸一化算法流程 118
3.5.12 批歸一化和組歸一化比較 119
3.5.13 權重歸一化和批歸一化比較 119
3.5.14 批歸一化適用范圍 120
3.5.15 BN、LN、IN和GN的對比 120
3.6 參數初始化 121
3.6.1 參數初始化應滿足的條件 121
3.6.2 常用的幾種初始化方式 121
3.6.3 全0初始化帶來的問題 121
3.6.4 全都初始化為同樣的值 122
3.6.5 初始化為小的隨機數 123
3.6.6 用 校準方差 123
3.7 預訓練與微調 123
3.7.1 什么是預訓練和微調 123
3.7.2 預訓練和微調的作用 124
3.7.3 預訓練模型的復用 124
3.7.4 預訓練和遷移學習 125
3.7.5 微調時網絡參數是否更新 125
3.7.6 微調模型的三種狀態 125
3.7.7 為什么深層神經網絡難以訓練 125
3.8 超參數 127
3.8.1 超參數有哪些 127
3.8.2 參數和模型的關系 127
3.8.3 參數和超參數的區別 127
3.8.4 如何尋找超參數的最優值 128
3.8.5 超參數搜索的一般過程 128
3.9 學習率 129
3.9.1 學習率的作用 129
3.9.2 學習率衰減的常用參數 129
3.9.3 常用的學習率衰減方法 129
3.10 正則化 133
3.10.1 為什么要正則化 133
3.10.2 常見正則化方法 133
3.10.3 圖解L1和L2正則化 134
3.10.4 Dropout具體工作流程 135
3.10.5 為什么Dropout可以解決過擬合問題 137
3.10.6 Dropout的缺點 137
第4章 卷積神經網絡的經典網絡 138
4.1 LENET-5 138
4.1.1 模型介紹 138
4.1.2 模型結構 138
4.1.3 模型特性 139
4.2 ALEXNET 140
4.2.1 模型介紹 140
4.2.2 模型結構 140
4.2.3 模型特性 141
4.3 ZFNET 142
4.3.1 模型介紹 142
4.3.2 模型結構 142
4.3.3 模型特性 143
4.4 NIN 144
4.4.1 模型介紹 144
4.4.2 模型結構 144
4.4.3 模型特點 145
4.5 VGGNET 145
4.5.1 模型介紹 145
4.5.2 模型結構 146
4.5.3 模型特性 147
4.6 GOOGLENET 147
4.6.1 模型介紹 147
4.6.2 模型結構 148
4.6.3 模型特性 152
4.7 RESNET 152
4.7.1 模型介紹 152
4.7.2 模型結構 152
4.7.3 模型特性 154
4.8 DENSENET 155
4.8.1 模型介紹 155
4.8.2 模型結構 156
4.8.3 模型特性 157
4.9 CNN模型在GOOGLENET、VGGNET或ALEXNET上調整的原因 157
第5章 卷積神經網絡 159
5.1 CNN的結構 159
5.1.1 CNN和人類視覺的關系 159
5.1.2 CNN的結構組成 160
5.2 輸入層 160
5.2.1 輸入層作用 160
5.2.2 數據預處理 160
5.3 卷積層 161
5.3.1 卷積原理 161
5.3.2 卷積在圖像中的作用 162
5.3.3 卷積層的基本參數 163
5.3.4 卷積核的類型 164
5.3.5 1×1卷積的作用 165
5.3.6 卷積核是否越大越好 166
5.3.7 每層卷積是否只能用一種尺寸的卷積核 167
5.3.8 如何減少卷積層參數量 167
5.3.9 在標準卷積中同時考慮通道和區域的優缺點 167
5.3.10 采用寬卷積的好處 169
5.4 激活層 169
5.4.1 激活層的作用 169
5.4.2 BN層和激活層的位置順序選擇 170
5.5 池化層 170
5.5.1 池化層作用 170
5.5.2 池化方法 171
5.5.3 卷積層和池化層的區別 171
5.5.4 NetVLAD池化 172
5.6 全連接層 172
5.6.1 全連接如何把二維特征圖轉化成一個一維向量 172
5.6.2 全卷積神經網絡取代全連接層 173
5.6.3 圖像分類中全連接層對卷積神經網絡性能的影響 173
5.7 二維卷積與三維卷積 174
5.7.1 二維卷積與三維卷積的區別 174
5.7.2 圖解三維卷積 175
5.7.3 RGB圖不使用三維卷積的原因 176
5.8 理解轉置卷積與棋盤效應 176
5.8.1 標準卷積 176
5.8.2 轉置卷積 177
5.8.3 棋盤效應 178
5.9 卷積神經網絡凸顯共性的方法 179
5.9.1 局部連接 179
5.9.2 權重共享 180
5.9.3 池化操作 181
5.10 局部卷積 181
5.10.1 全連接、局部連接、全卷積與局部卷積對比 182
5.10.2 局部卷積的應用 182
5.11 CNN可視化 183
5.11.1 特征層學到了什么 183
5.11.2 特征層隨訓練而演化 184
5.11.3 消融分析 185
5.11.4 常見的網絡可視化方法 185
5.12 卷積神經網絡的優化及應用 186
5.12.1 卷積神經網絡的參數設置 186
5.12.2 如何提高卷積神經網絡的泛化能力 186
5.12.3 卷積神經網絡的區域不變性和組合性 187
5.12.4 卷積神經網絡在不同領域的應用 188
第6章 循環神經網絡 189
6.1 為什么需要RNN 189
6.2 圖解RNN基本結構 189
6.2.1 基本的單層網絡結構 189
6.2.2 圖解經典RNN結構 190
6.2.3 Vector-to-Sequence結構 191
6.2.4 Sequence-to-Vector結構 192
6.2.5 Encoder-Decoder結構 192
6.2.6 3種基本結構的應用場景 193
6.2.7 圖解RNN中的注意機制 194
6.3 RNN的性質 195
6.3.1 RNN的典型特點 195
6.3.2 CNN和RNN的區別 196
6.3.3 RNN和FNN的異同 196
6.3.4 為什么RNN訓練的時候損失值波動很大 197
6.4 RNN的后向傳播 197
6.4.1 BPTT算法推導 197
6.4.2 RNN中為什么會出現梯度消失 198
6.4.3 如何解決RNN中的梯度消失問題 199
6.5 長短期記憶網絡(LSTM) 199
6.5.1 LSTM的產生原因 199
6.5.2 標準的RNN和LSTM的區別 199
6.5.3 LSTM核心思想 200
6.5.4 LSTM流行的變體 203
6.5.5 LSTM與GRU的區別 204
6.6 常見的RNN結構上的擴展和改進 205
6.6.1 簡單循環神經網絡(SRN) 205
6.6.2 雙向循環神經網絡(BRNN) 205
6.6.3 深度循環神經網絡(Deep RNN) 206
6.6.4 回聲狀態網絡(ESN) 206
6.6.5 時鐘頻率驅動 RNN(CW-RNN) 207
6.6.6 包含時間間隔的RNN 208
6.7 RNN在NLP中的典型應用舉例 209
6.8 RNN與圖像領域的結合舉例 210
6.8.1 卷積循環神經網絡 210
6.8.2 網格循環神經網絡 211
6.8.3 像素循環神經網絡 211
6.9 RNN與條件隨機場的結合 212
第7章 生成對抗網絡 213
7.1 GAN的基本概念 213
7.1.1 如何通俗地理解GAN 213
7.1.2 GAN的形式化表達 213
7.1.3 GAN的目標函數 214
7.1.4 GAN的目標函數和交叉熵損失的聯系和區別 214
7.1.5 GAN的損失值為什么降不下去 215
7.1.6 生成式模型和判別式模型的區別 215
7.1.7 模式崩塌和模式丟棄 216
7.1.8 為什么會出現模式崩塌 217
7.1.9 如何解決模式崩塌問題 217
7.2 GAN的生成模型評價 219
7.2.1 Inception Score 219
7.2.2 Mode Score 220
7.2.3 Kernel MMD 220
7.2.4 Wasserstein Distance 220
7.2.5 Frechet Inception Distance(FID) 221
7.2.6 1-NN分類器(1-Nearest Neighbor Classifier) 221
7.2.7 其他評價方法 221
7.3 其他常見的生成模型 221
7.3.1 自回歸模型:pixelRNN與pixelCNN 221
7.3.2 變分自動編碼器(VAE)原理 222
7.4 GAN的改進與優化 223
7.4.1 如何生成指定類型的圖像(CGAN) 223
7.4.2 CNN與GAN的結合(DCGAN) 224
7.4.3 GAN為什么容易訓練崩潰 224
7.4.4 WGAN如何解決訓練崩潰問題 225
7.4.5 帶有梯度正則的WGAN(WGAN-GP) 225
7.4.6 最小二乘GAN(LSGAN) 226
7.4.7 如何盡量避免GAN的訓練崩潰問題 227
7.5 GAN的應用:圖像翻譯 227
7.5.1 什么是圖像翻譯 227
7.5.2 有監督圖像翻譯(pix2pix) 228
7.5.3 有監督圖像翻譯的缺點 229
7.5.4 無監督圖像翻譯(CycleGAN) 230
7.5.5 多領域的無監督圖像翻譯(StarGAN) 231
7.6 GAN的應用:文本生成 232
7.6.1 傳統GAN為什么不適合文本任務 232
7.6.2 SeqGAN用于文本生成 232
7.7 GAN在其他領域的應用 233
7.7.1 數據增廣 233
7.7.2 圖像超分辨與圖像補全 234
7.7.3 語音領域 234
第8章 目標檢測 235
8.1 基本概念 235
8.1.1 目標檢測 235
8.1.2 目標檢測要解決的核心問題 236
8.1.3 目標檢測的算法分類 236
8.1.4 目標檢測的應用領域 237
8.2 TWO-STAGE目標檢測算法 237
8.2.1 R-CNN 237
8.2.2 Fast R-CNN 239
8.2.3 Faster R-CNN 242
8.2.4 R-FCN 245
8.2.5 FPN 248
8.2.6 Mask R-CNN 251
8.3 ONE-STAGE目標檢測算法 254
8.3.1 YOLO 254
8.3.2 YOLOv2 257
8.3.3 YOLO9000 261
8.3.4 YOLOv3 262
8.3.5 YOLOv4 263
8.3.6 SSD 264
8.3.7 DSSD 267
8.3.8 RetinaNet 269
8.3.9 RFBNet 271
8.3.10 M2Det 273
8.4 目標檢測的常用數據集 275
8.4.1 PASCAL VOC 275
8.4.2 Microsoft COCO 275
8.4.3 谷歌Open Image 276
8.4.4 ImageNet 276
8.5 目標檢測常用標注工具 276
8.5.1 LabelImg 276
8.5.2 LabelMe 276
8.5.3 Labelbox 277
8.5.4 RectLabel 277
8.5.5 CVAT 277
8.5.6 VIA 277
8.5.7 其他標注工具 278
第9章 圖像分割 279
9.1 常見的圖像分割算法 279
9.1.1 基于閾值的分割算法 279
9.1.2 基于邊緣檢測的分割算法 279
9.1.3 基于區域的分割算法 280
9.1.4 基于神經網絡技術的圖像分割算法 280
9.1.5 基于深度學習的圖像分割算法分類 280
9.1.6 常見的深度學習圖像分割算法 281
9.2 FCN 282
9.2.1 為什么CNN對像素級別的分類很難 282
9.2.2 FCN有哪些改變 282
9.2.3 FCN的結構 283
9.2.4 全連接層和卷積層如何相互轉化 283
9.2.5 為什么傳統CNN的輸入圖片大小是固定的 284
9.2.6 把全連接層的權重重塑成卷積層的濾波器的好處 284
9.2.7 FCN如何進行逐個像素點預測分類 285
9.2.8 反卷積層理解 286
9.2.9 跳級(skip)結構 288
9.2.10 模型訓練 289
9.2.11 FCN的優缺點 292
9.3 U-NET 292
9.4 U-NET++ 295
9.5 SEGNET 296
9.6 LINKNET 297
9.7 REFINENET 299
9.8 PSPNET 300
9.9 DEEPLAB系列 302
9.9.1 DeepLabv1 303
9.9.2 DeepLabv2 305
9.9.3 DeepLabv3 306
9.9.4 DeepLabv3+ 307
9.10 MASK R-CNN作為目標分割的介紹 310
9.10.1 Mask R-CNN框架 310
9.10.2 Mask R-CNN損失函數 310
9.10.3 Mask R-CNN 算法步驟 311
9.10.4 RoI池化與RoI Align 311
9.10.5 Mask R-CNN代碼實現總體框架 311
9.10.6 Mask R-CNN訓練和推導過程的區別 312
9.10.7 Mask R-CNN擴展 312
9.11 基于弱監督學習的圖像分割 313
9.11.1 涂鴉標記(ScribbleSup) 314
9.11.2 圖像級別標記(CCNN) 315
9.11.3 期望最大化估計像素類別 316
9.11.4 圖像、邊框與涂鴉標記融合框架 317
第10章 遷移學習 318
10.1 遷移學習基礎知識 318
10.1.1 什么是遷移學習 318
10.1.2 為什么需要遷移學習 319
10.1.3 遷移學習與已有學習方式的區別和聯系 320
10.1.4 負遷移 321
10.2 遷移學習的研究領域 322
10.2.1 按目標域標簽分類 323
10.2.2 按學習方法分類 323
10.2.3 按特征分類 323
10.2.4 按離線與在線形式分類 324
10.3 遷移學習的應用 324
10.3.1 計算機視覺 325
10.3.2 文本分類 325
10.3.3 時間序列 326
10.3.4 醫療健康 327
10.4 遷移學習的基本方法 327
10.4.1 基于實例的遷移學習方法 328
10.4.2 基于特征的遷移學習方法 328
10.4.3 基于模型的遷移學習方法 329
10.4.4 基于關系的遷移學習方法 330
10.5 分布對齊的常用方法 331
10.5.1 數據分布自適應方法 331
10.5.2 特征選擇方法 333
10.5.3 子空間學習方法 334
10.6 深度遷移學習方法 338
10.6.1 深度網絡的可遷移性 338
10.6.2 微調 342
10.6.3 深度網絡自適應 342
10.6.4 深度對抗網絡遷移 347
10.7 遷移學習研究前沿 350
10.7.1 機器智能與人類經驗結合的遷移學習 350
10.7.2 傳遞遷移學習 350
10.7.3 終身遷移學習 351
10.7.4 在線遷移學習 352
10.7.5 遷移強化學習 353
10.7.6 遷移學習的可解釋性 353
第11章 網絡構架介紹及訓練 354
11.1 TENSORFLOW 354
11.1.1 TensorFlow的設計理念 354
11.1.2 TensorFlow的特點 355
11.1.3 TensorFlow的系統架構 356
11.1.4 TensorFlow的編程模型 357
11.1.5 基于TensorFlow搭建VGG16 360
11.2 CAFFE 361
11.2.1 Caffe的特性 362
11.2.2 Caffe2的特性 362
11.2.3 Caffe2和PyTorch的區別 362
11.3 PYTORCH 362
11.3.1 為什么選擇PyTorch 363
11.3.2 PyTorch的架構 363
11.3.3 PyTorch 1.0三大重要更新 364
11.4 常見的深度學習分布式框架 364
11.4.1 PaddlePaddle 365
11.4.2 Deeplearning4j 366
11.4.3 Mahout 367
11.4.4 Spark MLlib 368
11.4.5 Spark Stream 369
11.4.6 Ray 370
11.4.7 Horovod 370
11.4.8 BigDL 371
11.4.9 Petastorm 371
11.4.10 TensorFlowOnSpark 372
11.5 網絡搭建原則及訓練技巧 372
11.5.1 網絡搭建原則 372
11.5.2 網絡訓練技巧 373
第12章 網絡優化技巧 376
12.1 數據集和樣本優化 376
12.1.1 如何解決訓練樣本少的問題 376
12.1.2 深度學習能否勝任所有數據集 377
12.1.3 訓練集、驗證集、測試集的定義及劃分 377
12.1.4 類別不平衡的產生原因 378
12.1.5 常見的類別不平衡問題的解決方法 378
12.1.6 常用的數據增強方法 379
12.2 數據不匹配問題 380
12.2.1 如何定位數據不匹配問題 380
12.2.2 常見的數據不匹配的場景 380
12.2.3 如何解決數據不匹配問題 380
12.3 網絡構建和初始化 381
12.3.1 權重的初始化方法 381
12.3.2 激活函數的特點 382
12.3.3 卷積核設計尺寸都是奇數的原因 383
12.3.4 在網絡設計中要權重共享的原因 383
12.4 特征選擇 383
12.4.1 特征的類型 383
12.4.2 如何考慮特征選擇 384
12.4.3 特征選擇方法分類 384
12.4.4 特征選擇的目的 384
12.5 梯度消失和梯度爆炸 384
12.5.1 使用梯度更新規則的原因 384
12.5.2 梯度消失和梯度爆炸產生的原因 385
12.5.3 如何解決梯度消失和梯度爆炸問題 386
12.5.4 防止梯度下降陷入局部最優困境 386
12.6 評價指標 387
12.6.1 設置單一數字評價指標的原因 387
12.6.2 Top5錯誤率 387
12.6.3 理解泛化誤差、方差和偏差 388
12.7 模型和系統優化 388
12.7.1 是否存在比已知算法更好的算法 388
12.7.2 判斷和解決共線性問題 389
12.7.3 深度學習不用二階優化的原因 389
12.7.4 提升模型的穩定性 389
12.7.5 改善模型的思路 390
12.7.6 快速構建有效初始模型 391
12.7.7 通過模型重新觀察數據 391
12.7.8 提高深度學習系統的性能 392
第13章 超參數調整 393
13.1 超參數的概念 393
13.1.1 參數和超參數的區別 393
13.1.2 超參數的類別 393
13.1.3 進行超參數調優的原因 394
13.1.4 超參數的重要性排序 394
13.1.5 部分超參數如何影響模型性能 395
13.1.6 部分超參數的合適范圍 396
13.2 網絡訓練中的超參數調整策略 397
13.2.1 超參數優化的一般過程 397
13.2.2 如何調試模型 397
13.2.3 學習率調整的原因 398
13.2.4 學習率調整的策略 398
13.2.5 在極端批樣本數量下訓練網絡 402
13.3 合理使用預訓練網絡 403
13.3.1 什么是微調 403
13.3.2 微調的方式 403
13.3.3 微調先凍結底層而訓練頂層的原因 404
13.3.4 在不同的數據集下如何進行微調 404
13.3.5 在目標檢測中使用預訓練模型的優劣 404
13.3.6 目標檢測如何從零開始訓練 405
13.4 自動化超參數搜索方法 405
13.4.1 網格搜索 405
13.4.2 隨機搜索 406
13.4.3 基于模型的超參數優化 406
13.5 自動機器學習AUTOML 406
13.5.1 為什么需要AutoML 406
13.5.2 AutoML的問題構成 407
13.5.3 常見的AutoML框架 407
13.5.4 神經架構搜索(NAS) 408
第14章 模型壓縮、加速和移動端部署 410
14.1 模型壓縮 410
14.2 為什么需要模型壓縮和加速 410
14.3 模型壓縮方法 411
14.3.1 前端壓縮和后端壓縮對比 411
14.3.2 網絡剪枝 411
14.3.3 典型剪枝方法的對比 413
14.3.4 網絡蒸餾 413
14.3.5 前端壓縮 413
14.3.6 后端壓縮 414
14.3.7 低秩分解 416
14.3.8 總體壓縮效果評價指標 416
14.4 網絡壓縮的未來研究方向 417
14.5 模型優化加速方法 418
14.5.1 模型優化加速方法類別 418
14.5.2 TensorRT加速原理 418
14.5.3 TensorRT如何優化重構模型 420
14.5.4 TensorRT的加速效果 420
14.6 如何選擇壓縮和加速方法 420
14.7 高效CNN網絡設計的準則 421
14.7.1 分組卷積 421
14.7.2 深度可分離卷積 422
14.7.3 當輸入/輸出的通道數相等時,MAC最小 424
14.7.4 減少分組卷積的數量 424
14.7.5 降低網絡碎片化程度(分支數量) 425
14.7.6 減少元素級操作 426
14.8 常用的輕量級網絡 426
14.8.1 SequeezeNet 426
14.8.2 MobileNet 429
14.8.3 MobileNet-v2 432
14.8.4 MobileNet-v1和MobileNet-v2微結構比較 433
14.8.5 ResNet和MobileNet-v2微結構比較 434
14.8.6 Xception 434
14.8.7 ShuffleNet-v1 436
14.8.8 ShuffleNet-v2 438
14.9 現有的移動端開源框架及其特點 440
14.9.1 NCNN 440
14.9.2 QNNPACK 441
14.9.3 Prestissimo 443
14.9.4 MDL 445
14.9.5 Paddle-Mobile 446
14.9.6 MACE 446
14.9.7 FeatherCNN 448
14.9.8 TensorFlow Lite 449
14.9.9 PocketFlow 450
14.9.10 MDL、NCNN和TFLite對比 452
14.10 移動端開源框架部署 453 |
序: |