1. 程式人生 > >深度學習概率知識、線性代數、機器學習、深度學習、計算機視覺等熱點問題

深度學習概率知識、線性代數、機器學習、深度學習、計算機視覺等熱點問題

深度學習500問,以問答形式對常用的概率知識、線性代數、機器學習、深度學習、計算機視覺等熱點問題進行闡述,以幫助自己及有需要的讀者。

全書分為15個章節,近20萬字

第一章 數學基礎 1

1.1標量、向量、張量之間的聯絡 1 1.2張量與矩陣的區別? 1 1.3矩陣和向量相乘結果 1 1.4向量和矩陣的範數歸納 1 1.5如何判斷一個矩陣為正定? 2 1.6導數偏導計算 3 1.7導數和偏導數有什麼區別? 3 1.8特徵值分解與特徵向量 3 1.9奇異值與特徵值有什麼關係? 4 1.10機器學習為什麼要使用概率? 4 1.11變數與隨機變數有什麼區別? 4 1.12常見概率分佈? 5 1.13舉例理解條件概率 9 1.14聯合概率與邊緣概率聯絡區別? 10 1.15條件概率的鏈式法則 10 1.16獨立性和條件獨立性 11 1.17期望、方差、協方差、相關係數總結 11

第二章 機器學習基礎 14

2.1 各種常見演算法圖示 14 2.2監督學習、非監督學習、半監督學習、弱監督學習? 15 2.3 監督學習有哪些步驟 16 2.4 多例項學習? 17 2.5 分類網路和迴歸的區別? 17 2.6 什麼是神經網路? 17 2.7 常用分類演算法的優缺點? 18 2.8 正確率能很好的評估分類演算法嗎? 20 2.9 分類演算法的評估方法? 20 2.10 什麼樣的分類器是最好的? 22 2.11大資料與深度學習的關係 22 2.12 理解區域性最優與全域性最優 23 2.13 理解邏輯迴歸 24 2.14 邏輯迴歸與樸素貝葉斯有什麼區別? 24 2.15 為什麼需要代價函式? 25 2.16 代價函式作用原理  25 2.17 為什麼代價函式要非負? 26 2.18 常見代價函式? 26 2.19為什麼用交叉熵代替二次代價函式 28 2.20 什麼是損失函式? 28 2.21 常見的損失函式 28 2.22 邏輯迴歸為什麼使用對數損失函式? 30 0.00 對數損失函式是如何度量損失的? 31 2.23 機器學習中為什麼需要梯度下降? 32 2.24 梯度下降法缺點? 32 2.25 梯度下降法直觀理解? 32 2.23 梯度下降法演算法描述? 33 2.24 如何對梯度下降法進行調優? 35 2.25 隨機梯度和批量梯度區別? 35 2.26 各種梯度下降法效能比較 37 2.27計算圖的導數計算圖解? 37 2.28 線性判別分析(LDA)思想總結 39 2.29 圖解LDA核心思想 39 2.30 二類LDA演算法原理? 40 2.30 LDA演算法流程總結? 41 2.31 LDA和PCA區別? 41 2.32 LDA優缺點? 41 2.33 主成分分析(PCA)思想總結 42 2.34 圖解PCA核心思想 42 2.35 PCA演算法推理 43 2.36 PCA演算法流程總結 44 2.37 PCA演算法主要優缺點 45 2.38 降維的必要性及目的 45 2.39 KPCA與PCA的區別? 46 2.40模型評估 47 2.40.1模型評估常用方法? 47 2.40.2 經驗誤差與泛化誤差 47 2.40.3 圖解欠擬合、過擬合 48 2.40.4 如何解決過擬合與欠擬合? 49 2.40.5 交叉驗證的主要作用? 50 2.40.6 k折交叉驗證? 50 2.40.7 混淆矩陣 50 2.40.8 錯誤率及精度 51 2.40.9 查準率與查全率 51 2.40.10 ROC與AUC 52 2.40.11如何畫ROC曲線? 53 2.40.12如何計算TPR,FPR? 54 2.40.13如何計算Auc? 56 2.40.14為什麼使用Roc和Auc評價分類器? 56 2.40.15 直觀理解AUC 56 2.40.16 代價敏感錯誤率與代價曲線 57 2.40.17 模型有哪些比較檢驗方法 59 2.40.18 偏差與方差 59 2.40.19為什麼使用標準差? 60 2.40.20 點估計思想 61 2.40.21 點估計優良性原則? 61 2.40.22點估計、區間估計、中心極限定理之間的聯絡? 62 2.40.23 類別不平衡產生原因? 62 2.40.24 常見的類別不平衡問題解決方法 62 2.41 決策樹 64 2.41.1 決策樹的基本原理 64 2.41.2 決策樹的三要素? 64 2.41.3 決策樹學習基本演算法 65 2.41.4 決策樹演算法優缺點 65 2.40.5熵的概念以及理解 66 2.40.6 資訊增益的理解 66 2.40.7 剪枝處理的作用及策略? 67 2.41 支援向量機 67 2.41.1 什麼是支援向量機 67 2.25.2 支援向量機解決的問題? 68 2.25.2 核函式作用? 69 2.25.3 對偶問題 69 2.25.4 理解支援向量迴歸 69 2.25.5 理解SVM(核函式) 69 2.25.6 常見的核函式有哪些? 69 2.25.6 軟間隔與正則化 73 2.25.7 SVM主要特點及缺點? 73 2.26 貝葉斯 74 2.26.1 圖解極大似然估計 74 2.26.2 樸素貝葉斯分類器和一般的貝葉斯分類器有什麼區別? 76 2.26.4 樸素與半樸素貝葉斯分類器 76 2.26.5 貝葉斯網三種典型結構 76 2.26.6 什麼是貝葉斯錯誤率 76 2.26.7 什麼是貝葉斯最優錯誤率 76 2.27 EM演算法解決問題及實現流程 76 2.28 為什麼會產生維數災難? 78 2.29怎樣避免維數災難 82 2.30聚類和降維有什麼區別與聯絡? 82 2.31 GBDT和隨機森林的區別 83 2.32 四種聚類方法之比較 84

第三章 深度學習基礎 88

3.1基本概念 88 3.1.1神經網路組成? 88 3.1.2神經網路有哪些常用模型結構? 90 3.1.3如何選擇深度學習開發平臺? 92 3.1.4為什麼使用深層表示 92 3.1.5為什麼深層神經網路難以訓練? 93 3.1.6深度學習和機器學習有什麼不同 94 3.2 網路操作與計算 95 3.2.1前向傳播與反向傳播? 95 3.2.2如何計算神經網路的輸出? 97 3.2.3如何計算卷積神經網路輸出值? 98 3.2.4如何計算Pooling層輸出值輸出值? 101 3.2.5例項理解反向傳播 102 3.3超引數 105 3.3.1什麼是超引數? 105 3.3.2如何尋找超引數的最優值? 105 3.3.3超引數搜尋一般過程? 106 3.4啟用函式 106 3.4.1為什麼需要非線性啟用函式? 106 3.4.2常見的啟用函式及影象 107 3.4.3 常見啟用函式的導數計算? 109 3.4.4啟用函式有哪些性質? 110 3.4.5 如何選擇啟用函式? 110 3.4.6使用ReLu啟用函式的優點? 111 3.4.7什麼時候可以用線性啟用函式? 111 3.4.8怎樣理解Relu(<0時)是非線性啟用函式? 111 3.4.9 Softmax函式如何應用於多分類? 112 3.5 Batch_Size 113 3.5.1為什麼需要Batch_Size? 113 3.5.2 Batch_Size值的選擇 114 3.5.3在合理範圍內,增大 Batch_Size 有何好處? 114 3.5.4盲目增大 Batch_Size 有何壞處? 114 3.5.5調節 Batch_Size 對訓練效果影響到底如何? 114 3.6 歸一化 115 3.6.1歸一化含義? 115 3.6.2為什麼要歸一化 115 3.6.3為什麼歸一化能提高求解最優解速度? 115 3.6.4 3D圖解未歸一化 116 3.6.5歸一化有哪些型別? 117 3.6.6區域性響應歸一化作用 117 3.6.7理解區域性響應歸一化公式 117 3.6.8什麼是批歸一化(Batch Normalization) 118 3.6.9批歸一化(BN)演算法的優點 119 3.6.10批歸一化(BN)演算法流程 119 3.6.11批歸一化和群組歸一化 120 3.6.12 Weight Normalization和Batch Normalization 120 3.7 預訓練與微調(fine tuning) 121 3.7.1為什麼無監督預訓練可以幫助深度學習? 121 3.7.2什麼是模型微調fine tuning 121 3.7.3微調時候網路引數是否更新? 122 3.7.4 fine-tuning模型的三種狀態 122 3.8權重偏差初始化 122 3.8.1 全都初始化為0 122 3.8.2 全都初始化為同樣的值 123 3.8.3 初始化為小的隨機數 124 3.8.4用1/sqrt(n)校準方差 125 3.8.5稀疏初始化(Sparse Initialazation) 125 3.8.6初始化偏差 125 3.9 Softmax 126 3.9.1 Softmax定義及作用 126 3.9.2 Softmax推導 126 3.10 理解One Hot Encodeing原理及作用? 126 3.11 常用的優化器有哪些 127 3.12 Dropout 系列問題 128 3.12.1 dropout率的選擇 128 3.27 Padding 系列問題 128

第四章 經典網路 129

4.1LetNet5 129 4.1.1模型結構 129 4.1.2模型結構 129 4.1.3 模型特性 131 4.2 AlexNet 131 4.2.1 模型結構 131 4.2.2模型解讀 131 4.2.3模型特性 135 4.3 視覺化ZFNet-解卷積 135 4.3.1 基本的思想及其過程 135 4.3.2 卷積與解卷積 136 4.3.3卷積視覺化 137 4.3.4 ZFNe和AlexNet比較 139 4.4 VGG 140 4.1.1 模型結構 140 4.1.2 模型特點 140 4.5 Network in Network 141 4.5.1 模型結構 141 4.5.2 模型創新點 141 4.6 GoogleNet 143 4.6.1 模型結構 143 4.6.2 Inception 結構 145 4.6.3 模型層次關係 146 4.7 Inception 系列 148 4.7.1 Inception v1 148 4.7.2 Inception v2 150 4.7.3 Inception v3 153 4.7.4 Inception V4 155 4.7.5 Inception-ResNet-v2 157 4.8 ResNet及其變體 158 4.8.1重新審視ResNet 159 4.8.2殘差塊 160 4.8.3 ResNet架構 162 4.8.4殘差塊的變體 162 4.8.5 ResNeXt 162 4.8.6 Densely Connected CNN 164 4.8.7 ResNet作為小型網路的組合 165 4.8.8 ResNet中路徑的特點 166 4.9為什麼現在的CNN模型都是在GoogleNet、VGGNet或者AlexNet上調整的? 167

第五章 卷積神經網路(CNN) 170

5.1 卷積神經網路的組成層 170 5.2 卷積如何檢測邊緣資訊? 171 5.2 卷積的幾個基本定義? 174 5.2.1卷積核大小 174 5.2.2卷積核的步長 174 5.2.3邊緣填充 174 5.2.4輸入和輸出通道 174 5.3 卷積網路型別分類? 174 5.3.1普通卷積 174 5.3.2擴張卷積 175 5.3.3轉置卷積 176 5.3.4可分離卷積 177 5.3 圖解12種不同型別的2D卷積? 178 5.4 2D卷積與3D卷積有什麼區別? 181 5.4.1 2D 卷積 181 5.4.2 3D卷積 182 5.5 有哪些池化方法? 183 5.5.1一般池化(General Pooling) 183 5.5.2重疊池化(OverlappingPooling) 184 5.5.3空金字塔池化(Spatial Pyramid Pooling) 184 5.6 1x1卷積作用? 186 5.7卷積層和池化層有什麼區別?  187 5.8卷積核一定越大越好? 189 5.9每層卷積只能用一種尺寸的卷積核? 189 5.10怎樣才能減少卷積層引數量? 190 5.11卷積操作時必須同時考慮通道和區域嗎? 191 5.12採用寬卷積的好處有什麼?  192 5.12.1窄卷積和寬卷積 192 5.12.2 為什麼採用寬卷積? 192 5.13卷積層輸出的深度與哪個部件的個數相同?  192 5.14 如何得到卷積層輸出的深度? 193 5.15啟用函式通常放在卷積神經網路的那個操作之後?  194 5.16 如何理解最大池化層有幾分縮小? 194 5.17理解影象卷積與反捲積 194 5.17.1影象卷積 194 5.17.2影象反捲積 196 5.18不同卷積後圖像大小計算? 198 5.18.1 型別劃分 198 5.18.2 計算公式 199 5.19 步長、填充大小與輸入輸出關係總結? 199 5.19.1沒有0填充,單位步長 200 5.19.2零填充,單位步長 200 5.19.3不填充,非單位步長 202 5.19.4零填充,非單位步長 202 5.20 理解反捲積和棋盤效應 204 5.20.1為什麼出現棋盤現象? 204 5.20.2 有哪些方法可以避免棋盤效應? 205 5.21 CNN主要的計算瓶頸? 207 5.22 CNN的引數經驗設定 207 5.23 提高泛化能力的方法總結 208 5.23.1 主要方法 208 5.23.2 實驗證明 208 5.24 CNN在CV與NLP領域運用的聯絡與區別? 213 5.24.1聯絡 213 5.24.2區別 213 5.25 CNN凸顯共性的手段? 213 5.25.1 區域性連線 213 5.25.2 權值共享 214 5.25.3 池化操作 215 5.26 全卷積與Local-Conv的異同點 215 5.27 舉例理解Local-Conv的作用 215 5.28 簡述卷積神經網路進化史 216

第六章 迴圈神經網路(RNN) 218

6.1 RNNs和FNNs有什麼區別? 218 6.2 RNNs典型特點? 218 6.3 RNNs能幹什麼? 219 6.4 RNNs在NLP中典型應用? 220 6.5 RNNs訓練和傳統ANN訓練異同點? 220 6.6常見的RNNs擴充套件和改進模型 221 6.6.1 Simple RNNs(SRNs) 221 6.6.2 Bidirectional RNNs 221 6.6.3 Deep(Bidirectional) RNNs 222 6.6.4 Echo State Networks(ESNs) 222 6.6.5 Gated Recurrent Unit Recurrent Neural Networks 224 6.6.6 LSTM Netwoorks 224 6.6.7 Clockwork RNNs(CW-RNNs) 225

第七章 目標檢測 228

7.1基於候選區域的目標檢測器 228 7.1.1滑動視窗檢測器 228 7.1.2選擇性搜尋 229 7.1.3 R-CNN 230 7.1.4邊界框迴歸器 230 7.1.5 Fast R-CNN 231 7.1.6 ROI 池化 233 7.1.7 Faster R-CNN 233 7.1.8候選區域網路 234 7.1.9 R-CNN 方法的效能 236 7.2 基於區域的全卷積神經網路(R-FCN) 237 7.3 單次目標檢測器 240 7.3.1單次檢測器 241 7.3.2滑動視窗進行預測 241 7.3.3 SSD 243 7.4 YOLO系列 244 7.4.1 YOLOv1介紹 244 7.4.2 YOLOv1模型優缺點? 252 7.4.3 YOLOv2 253 7.4.4 YOLOv2改進策略 254 7.4.5 YOLOv2的訓練 261 7.4.6 YOLO9000 261 7.4.7 YOLOv3 263 7.4.8 YOLOv3改進 264

第八章 影象分割 269

8.1 傳統的基於CNN的分割方法缺點? 269 8.1 FCN 269 8.1.1 FCN改變了什麼? 269 8.1.2 FCN網路結構? 270 8.1.3全卷積網路舉例? 271 8.1.4為什麼CNN對畫素級別的分類很難? 271 8.1.5全連線層和卷積層如何相互轉化? 272 8.1.6 FCN的輸入圖片為什麼可以是任意大小? 272 8.1.7把全連線層的權重W重塑成卷積層的濾波器有什麼好處? 273 8.1.8反捲積層理解 275 8.1.9跳級(skip)結構 276 8.1.10模型訓練 277 8.1.11 FCN缺點 280 8.2 U-Net 280 8.3 SegNet 282 8.4空洞卷積(Dilated Convolutions) 283 8.4 RefineNet 285 8.5 PSPNet 286 8.6 DeepLab系列 288 8.6.1 DeepLabv1 288 8.6.2 DeepLabv2 289 8.6.3 DeepLabv3 289 8.6.4 DeepLabv3+ 290 8.7 Mask-R-CNN 293 8.7.1 Mask-RCNN 的網路結構示意圖 293 8.7.2 RCNN行人檢測框架 293 8.7.3 Mask-RCNN 技術要點 294 8.8 CNN在基於弱監督學習的影象分割中的應用 295 8.8.1 Scribble標記 295 8.8.2 影象級別標記 297 8.8.3 DeepLab+bounding box+image-level labels 298 8.8.4統一的框架 299

第九章 強化學習 301

9.1強化學習的主要特點? 301 9.2強化學習應用例項 302 9.3強化學習和監督式學習、非監督式學習的區別 303 9.4 強化學習主要有哪些演算法? 305 9.5深度遷移強化學習演算法 305 9.6分層深度強化學習演算法 306 9.7深度記憶強化學習演算法 306 9.8 多智慧體深度強化學習演算法 307 9.9深度強化學習演算法小結 307

第十章 遷移學習 309

10.1 什麼是遷移學習? 309 10.2 什麼是多工學習? 309 10.3 多工學習有什麼意義? 309 10.4 什麼是端到端的深度學習? 311 10.5 端到端的深度學習舉例? 311 10.6 端到端的深度學習有什麼挑戰? 311 10.7 端到端的深度學習優缺點? 312

第十三章 優化演算法 314

13.1 CPU和GPU 的區別? 314 13.2如何解決訓練樣本少的問題 315 13.3 什麼樣的樣本集不適合用深度學習? 315 13.4 有沒有可能找到比已知演算法更好的演算法? 316 13.5 何為共線性, 跟過擬合有啥關聯? 316 13.6 廣義線性模型是怎被應用在深度學習中? 316 13.7 造成梯度消失的原因? 317 13.8 權值初始化方法有哪些 317 13.9 啟發式優化演算法中,如何避免陷入區域性最優解? 318 13.10 凸優化中如何改進GD方法以防止陷入區域性最優解 319 13.11 常見的損失函式? 319 13.14 如何進行特徵選擇(feature selection)? 321 13.14.1 如何考慮特徵選擇 321 13.14.2 特徵選擇方法分類 321 13.14.3 特徵選擇目的 322 13.15 梯度消失/梯度爆炸原因,以及解決方法 322 13.15.1 為什麼要使用梯度更新規則? 322 13.15.2 梯度消失、爆炸原因? 323 13.15.3 梯度消失、爆炸的解決方案 324 13.16 深度學習為什麼不用二階優化 325 13.17 怎樣優化你的深度學習系統? 326 13.18為什麼要設定單一數字評估指標? 326 13.19滿足和優化指標(Satisficing and optimizing metrics) 327 13.20 怎樣劃分訓練/開發/測試集 328 13.21如何劃分開發/測試集大小 329 13.22什麼時候該改變開發/測試集和指標? 329 13.23 設定評估指標的意義? 330 13.24 什麼是可避免偏差? 331 13.25 什麼是TOP5錯誤率? 331 13.26 什麼是人類水平錯誤率? 332 13.27 可避免偏差、幾大錯誤率之間的關係? 332 13.28 怎樣選取可避免偏差及貝葉斯錯誤率? 332 13.29 怎樣減少方差? 333 13.30貝葉斯錯誤率的最佳估計 333 13.31舉機器學習超過單個人類表現幾個例子? 334 13.32如何改善你的模型? 334 13.33 理解誤差分析 335 13.34 為什麼值得花時間檢視錯誤標記資料? 336 13.35 快速搭建初始系統的意義? 336 13.36 為什麼要在不同的劃分上訓練及測試? 337 13.37 如何解決資料不匹配問題? 338 13.38 梯度檢驗注意事項? 340 13.39什麼是隨機梯度下降? 341 13.40什麼是批量梯度下降? 341 13.41什麼是小批量梯度下降? 341 13.42怎麼配置mini-batch梯度下降 342 13.43 區域性最優的問題 343 13.44提升演算法效能思路 346

第十四章 超引數調整 358

14.1 除錯處理 358 14.2 有哪些超引數 359 14.3 如何選擇除錯值? 359 14.4 為超引數選擇合適的範圍 359 14.5 如何搜尋超引數? 359

第十五章 異構計算, GPU和框架選型指南 361

15.1 什麼是異構計算? 361 15.2 什麼是GPGPU? 361 15.3 GPU架構簡介 361 15.3.1 為什麼要使用GPU? 15.3.2 CUDA 核心是什麼? 15.3.3 新圖靈架構裡的tensor core對深度學習有什麼作用? 15.3.4 GPU記憶體架構和應用效能的聯絡? 15.4 CUDA 框架 15.4.1 做CUDA程式設計難不難? 15.4.2 cuDNN 15.5 GPU硬體環境配置推薦 15.5.1 GPU主要效能指標 15.5.2 購買建議 15.6 軟體環境搭建 15.6.1 作業系統選擇? 15.6.2 本機安裝還是使用docker? 15.6.3 GPU驅動問題 15.7 框架選擇 15.7.1 主流框架比較 15.7.2 框架詳細資訊 15.7.3 哪些框架對於部署環境友好? 15.7.4 移動平臺的框架如何選擇? 15.8 其他 15.8.1 多GPU環境的配置 15.8.2 是不是可以分散式訓練? 15.8.3 可以在SPARK環境裡訓練或者部署模型嗎? 15.8.4 怎麼進一步優化效能? 15.8.5 TPU和GPU的區別? 15.8.6 未來量子計算對於深度學習等AI技術的影像?