预购商品
书目分类
特别推荐
本書通過深度學習實例,從可解釋性角度出發,闡述深度學習的原理,並將圖神經網路與深度學習結合,介紹圖神經網路的實現技術。本書分為6章,主要內容包括:圖片分類模型、機器視覺的 應用、自然語言處理的相關應用、神經網路的可解釋性、識別未知分類的方法——零次學習、異構圖神經網路。本書中的實例是在PyTorch框架上完成的,具有較高的實用價值。 本書適合人工智慧從業者、程式師進階學習,也適合作為大專院校相關專業師生的教學和學習用書,以及培訓學校的教材。
第1章 圖片分類模型 1 1.1 深度神經網路起源 2 1.2 Inception系列模型 2 1.2.1 多分支結構 2 1.2.2 全域均值池化 3 1.2.3 Inception V1模型 3 1.2.4 Inception V2模型 4 1.2.5 Inception V3模型 5 1.2.6 Inception V4模型 6 1.2.7 Inception-ResNet V2模型 6 1.3 ResNet模型 6 1.3.1 殘差連接的結構 7 1.3.2 殘差連接的原理 8 1.4 DenseNet模型 8 1.4.1 DenseNet模型的網路結構 8 1.4.2 DenseNet模型的特點 9 1.4.3 稠密塊 9 1.5 PNASNet模型 9 1.5.1 組卷積 10 1.5.2 深度可分離卷積 11 1.5.3 空洞卷積 12 1.6 EfficientNet模型 14 1.6.1 MBConv卷積塊 15 1.6.2 DropConnect層 16 1.7 實例:使用預訓練模型識別圖片內容 16 1.7.1 瞭解torchvision庫中的預訓練模型 16 1.7.2 代碼實現:下載並載入預訓練模型 17 1.7.3 代碼實現:載入標籤並對輸入資料進行預處理 18 1.7.4 代碼實現:使用模型進行預測 19 1.7.5 代碼實現:預測結果視覺化 20 1.8 實例:使用遷移學習識別多種鳥類 21 1.8.1 什麼是遷移學習 21 1.8.2 樣本介紹:鳥類資料集CUB-200 22 1.8.3 代碼實現:用torch.utils.data介面封裝資料集 22 1.8.4 代碼實現:獲取並改造ResNet模型 27 1.8.5 代碼實現:微調模型 一層 28 1.8.6 代碼實現:使用退化學習率對 模型進行全域微調 29 1.8.7 擴展實例:使用亂數據增強方法訓練模型 30 1.8.8 擴展:分類模型中常用的3種損失函數 31 1.8.9 擴展實例:樣本均衡 31 1.9 從深度卷積模型中提取視覺特徵 33 1.9.1 使用鉤子函數的方式提取視覺特徵 33 1.9.2 使用重組結構的方式提取視覺特徵 34 第2章 機器視覺的 應用 37 2.1 基於圖片內容的處理任務 38 2.1.1 目標檢測任務 38 2.1.2 圖片分割任務 38 2.1.3 非極大值抑制演算法 39 2.1.4 Mask R-CNN模型 39 2.2 實例:使用Mask R-CNN模型進行目標檢測與語義分割 41 2.2.1 代碼實現:瞭解PyTorch中目標檢測的內置模型 41 2.2.2 代碼實現:使用PyTorch中目標檢測的內置模型 42 2.2.3 擴展實例:使用內置的預訓練模型進行語義分割 43 2.3 基於視頻內容的處理任務 47 2.4 實例:用GaitSet模型分析人走路的姿態,並進行身份識別 47 2.4.1 步態識別的做法和思路 47 2.4.2 GaitSet模型 48 2.4.3 多層全流程管線 50 2.4.4 水準金字塔池化 51 2.4.5 三元損失 52 2.4.6 樣本介紹:CASIA-B資料集 53 2.4.7 代碼實現:用torch.utils.data介面封裝資料集 54 2.4.8 代碼實現:用torch.utils.data.sampler類創建含多標籤批次數據的採樣器 60 2.4.9 代碼實現:搭建 GaitSet模型 64 2.4.10 代碼實現:自訂三元損失類 67 2.4.11 代碼實現:訓練模型並保存模型權重檔 69 2.4.12 代碼實現:測試模型 72 2.4.13 擴展實例:用深度卷積和 池化 優化模型 77 2.4.14 擴展實例:視頻採樣並提取 輪廓 78 2.4.15 步態識別模型的局限性 79 2.5 調試技巧 79 2.5.1 解決顯存過滿損失值為0問題 80 2.5.2 跟蹤PyTorch顯存並查找顯存洩露點 81 第3章 自然語言處理的相關應用 83 3.1 BERT模型與NLP任務的發展階段 84 3.1.1 基礎的神經網路階段 84 3.1.2 BERTology階段 84 3.2 NLP中的常見任務 84 3.2.1 基於文章處理的任務 85 3.2.2 基於句子處理的任務 85 3.2.3 基於句子中詞的處理任務 86 3.3 實例:訓練中文詞向量 87 3.3.1 CBOW和Skip-Gram模型 87 3.3.2 代碼實現:樣本預處理並生成字典 88 3.3.3 代碼實現:按照Skip-Gram模型的規則製作資料集 90 3.3.4 代碼實現:搭建模型並進行 訓練 92 3.3.5 夾角余弦 95 3.3.6 代碼實現:詞嵌入視覺化 96 3.3.7 詞向量的應用 97 3.4 常用文本處理工具 98 3.4.1 spaCy庫的介紹和安裝 98 3.4.2 與PyTorch深度結合的文本 處理庫torchtext 99 3.4.3 torchtext庫及其內置資料集與 調用庫的安裝 99 3.4.4 torchtext庫中的內置預訓練詞 向量 100 3.5 實例:用TextCNN模型分析評論者是否滿意 100 3.5.1 瞭解用於文本分類的卷積神經網路模型——TextCNN 101 3.5.2 樣本介紹:瞭解電影評論 資料集IMDB 102 3.5.3 代碼實現:引入基礎庫 102 3.5.4 代碼實現:用torchtext載入 IMDB並拆分為資料集 103 3.5.5 代碼實現:載入預訓練詞向量並進行樣本資料轉化 105 3.5.6 代碼實現:定義帶有Mish啟動 函數的TextCNN模型 107 3.5.7 代碼實現:用資料集參數產生實體 模型 109 3.5.8 代碼實現:用預訓練詞向量 初始化模型 109 3.5.9 代碼實現:用Ranger優化器訓練模型 109 3.5.10 代碼實現:使用模型進行預測 112 3.6 瞭解Transformers庫 113 3.6.1 Transformers庫的定義 113 3.6.2 Transformers庫的安裝方法 114 3.6.3 查看Transformers庫的版本資訊 115 3.6.4 Transformers庫的3層應用 結構 115 3.7 實例: 使用Transformers庫的管道方式完成多種NLP任務 116 3.7.1 在管道方式中 NLP任務 116 3.7.2 代碼實現:完成文本分類任務 117 3.7.3 代碼實現:完成特徵提取任務 119 3.7.4 代碼實現:完成完形填空任務 120 3.7.5 代碼實現:完成閱讀理解任務 121 3.7.6 代碼實現:完成摘要生成任務 123 3.7.7 預訓練模型檔的組成及其載入時的固定檔案名稱 124 3.7.8 代碼實現:完成實體詞識別任務 124 3.7.9 管道方式的工作原理 125 3.7.10 在管道方式中載入 模型 127 3.8 Transformers庫中的AutoModel類 128 3.8.1 各種AutoModel類 128 3.8.2 AutoModel類的模型載入機制 129 3.8.3 Transformers庫中 多的預訓練 模型 130 3.9 Transformers庫中的BERTology系列模型 131 3.9.1 Transformers庫的檔結構 131 3.9.2 查找Transformers庫中可以使用的模型 135 3.9.3 實例:用BERT模型實現完形填空任務 136 3.9.4 擴展實例:用 AutoModelWithMHead類 替換BertForMaskedLM類 138 3.10 Transformers庫中的詞表工具 139 3.10.1 PreTrainedTokenizer類中的 特殊詞 139 3.10.2 PreTrainedTokenizer類的 特殊詞使用 140 3.10.3 向PreTrainedTokenizer類中 添加詞 144 3.10.4 實例:用手動載入GPT-2模型 權重的方式將句子補充完整 145 3.10.5 子詞的拆分 148 3.11 BERTology系列模型 149 3.11.1 Transformer之前的主流模型 149 3.11.2 Transformer模型 151 3.11.3 BERT模型 153 3.11.4 GPT-2模型 157 3.11.5 Transformer-XL模型 157 3.11.6 XLNet模型 158 3.11.7 XLNet模型與AE模型和AR 模型間的關係 161 3.11.8 RoBERTa模型 161 3.11.9 SpanBERT模型 162 3.11.10 ELECTRA模型 162 3.11.11 T5模型 163 3.11.12 ALBERT模型 164 3.11.13 DistillBERT模型與知識蒸餾 166 3.12 實例: 用遷移學習訓練BERT模型來對中文分類 167 3.12.1 樣本介紹 167 3.12.2 代碼實現:構建資料集 168 3.12.3 代碼實現:構建並載入BERT預訓練模型 169 3.12.4 BERT模型類的內部邏輯 170 3.12.5 代碼實現:用退化學習率訓練模型 172 3.12.6 擴展: 多的中文預訓練模型 175 3.13 實例:用R-GCN模型理解文本中的代詞 175 3.13.1 代詞資料集 175 3.13.2 R-GCN模型的原理與實現 176 3.13.3 將GAP資料集轉化成圖結構資料的思路 179 3.13.4 代碼實現:用BERT模型提取代詞特徵 181 3.13.5 代碼實現:用BERT模型提取 其他詞特徵 183 3.13.6 用spaCy工具對句子依存 分析 185 3.13.7 代碼實現:使用spaCy和批次 圖方法構建圖資料集 187 3.13.8 代碼實現:搭建多層R-GCN 模型 192 3.13.9 代碼實現:搭建神經網路 分類層 193 3.13.10 使用 交叉驗證方法訓練 模型 196 第4章 神經網路的可解釋性 197 4.1 瞭解模型解釋庫 198 4.1.1 瞭解Captum工具 198 4.1.2 視覺化可解釋性工具Captum Insights 198 4.2 實例:用可解釋性理解數值分析神經網路模型 199 4.2.1 代碼實現:載入模型 199 4.2.2 代碼實現:用梯度積分演算法分析模型的敏感屬性 200 4.2.3 代碼實現:用Layer Conductance方法查看單個網路層中的神經元 202 4.2.4 代碼實現:用Neuron Conductance方法查看每個神經元所關注的屬性 204 4.3 實例:用可解釋性理解NLP相關的神經網路模型 205 4.3.1 詞嵌入模型的可解釋性方法 205 4.3.2 代碼實現:載入模型類並將其處理 過程拆開 206 4.3.3 代碼實現:產生實體並載入模型權重,提取模型的詞嵌入層 207 4.3.4 代碼實現:用梯度積分演算法計算模型的可解釋性 208 4.3.5 代碼實現:輸出模型可解釋性的視覺化圖像 210 4.4 實例:用Bertviz工視覺化BERT模型權重 211 4.4.1 什麼是Bertviz工具 212 4.4.2 代碼實現:載入BERT模型並視覺化其權重 212 4.4.3 解讀BERT模型的權重視覺化結果 216 4.5 實例:用可解釋性理解影像處理相關的神經網路模型 219 4.5.1 代碼實現:載入模型並進行圖像分類 219 4.5.2 代碼實現:用4種可解釋性演算法對模型進行可解釋性計算 220 4.5.3 代碼實現:視覺化模型的4種可解釋性演算法結果 221 4.6 實例:用可解釋性理解圖片分類相關的神經網路模型 222 4.6.1 瞭解Grad-CAM方法 223 4.6.2 代碼實現:載入ResNet18模型並註冊鉤子函數提取特徵資料 225 4.6.3 代碼實現:調用模型提取中間層特徵資料和輸出層權重 226 4.6.4 代碼實現:視覺化模型的識別區域 227 第5章 識別未知分類的方法——零次 學習 229 5.1 瞭解零次學習 230 5.1.1 零次學習的思想與原理 230 5.1.2 與零次學習有關的常用資料集 232 5.1.3 零次學習的基本做法 233 5.1.4 直推式學習 233 5.1.5 泛化的零次學習任務 233 5.2 零次學習中的常見問題 233 5.2.1 領域漂移問題 234 5.2.2 原型稀疏性問題 235 5.2.3 語義間隔問題 235 5.3 帶有視覺結構約束的VSC模型 236 5.3.1 分類模型中視覺特徵的本質 236 5.3.2 VSC模型的原理 237 5.3.3 基於視覺中心點學習的約束方法 238 5.3.4 基於倒角距離的視覺結構約束方法 239 5.3.5 什麼是對稱的倒角距離 239 5.3.6 基於二分匹配的視覺結構約束方法 239 5.3.7 什麼是指派問題與耦合矩陣 240 5.3.8 基於W距離的視覺結構約束方法 240 5.3.9 什麼是 傳輸 241 5.3.10 什麼是 傳輸中的熵 正則化 242 5.4 詳解Sinkhorn 演算法 244 5.4.1 Sinkhorn演算法的求解轉換 244 5.4.2 Sinkhorn演算法的原理 245 5.4.3 Sinkhorn演算法中參數ε的 原理 246 5.4.4 舉例Sinkhorn演算法過程 246 5.4.5 Sinkhorn演算法中的品質守恆 248 5.4.6 Sinkhorn演算法的代碼實現 250 5.5 實例:使用VSC模型來識別未知類別的鳥類圖片 252 5.5.1 樣本介紹:用於ZSL任務的鳥類資料集 252 5.5.2 代碼實現:用遷移學習的方式獲得 訓練資料集分類模型 253 5.5.3 使用分類模型提取圖片視覺 特徵 254 5.5.4 代碼實現:用多層圖卷積神經 網路實現VSC模型 255 5.5.5 代碼實現:基於W距離的損失 函數 256 5.5.6 載入資料並進行訓練 257 5.5.7 代碼實現:根據特徵距離對圖片 進行分類 258 5.6 針對零次學習的性能分析 259 5.6.1 分析視覺特徵的品質 259 5.6.2 分析直推式學習的效果 260 5.6.3 分析直推模型的能力 261 5.6.4 分析未知類別的聚類效果 262 5.6.5 清洗測試集 263 5.6.6 利用視覺化方法進行輔助分析 264 第6章 異構圖神經網路 267 6.1 異構圖的基礎知識 268 6.1.1 同構圖與異構圖 268 6.1.2 什麼是異構圖神經網路 268 6.1.3 二分圖 268 6.1.4 局部圖卷積 270 6.2 二分圖的實現方式 270 6.2.1 用NetworkX實現二分圖 270 6.2.2 使用DGL構建二分圖 272 6.2.3 二分圖物件的調試技巧 275 6.3 異構圖的實現方式 276 6.3.1 創建異構圖 276 6.3.2 設置異構圖的節點個數 277 6.3.3 異構圖結構的查看方式 278 6.3.4 異構圖與同構圖的相互轉化 280 6.3.5 異構圖與同構圖的屬性操作方式 281 6.4 隨機行走採樣 282 6.4.1 什麼是隨機行走 283 6.4.2 普通隨機行走 283 6.4.3 帶停止概率的隨機行走 284 6.4.4 帶路徑概率的隨機行走 284 6.4.5 基於原圖的隨機行走 285 6.4.6 在基於異構圖的隨機行走中設置停止概率 286 6.4.7 基於隨機行走採樣的資料處理 287 6.4.8 以隨機行走的方式對鄰居節點採樣 287 6.5 DGL庫中的塊圖結構 289 6.5.1 設計塊圖的動機 289 6.5.2 將同構圖轉化成塊圖 290 6.5.3 塊圖的屬性操作 290 6.5.4 將二分圖轉化成塊圖 291 6.6 實例:使用PinSAGE模型搭建 系統 292 6.6.1 準備MoiveLens資料集 292 6.6.2 代碼實現:用Panadas庫載入數據 293 6.6.3 Categories與category 類型 294 6.6.4 代碼實現:生成異構圖 295 6.6.5 代碼實現:用邊分組方法拆分並保存資料集 296 6.6.6 PinSAGE模型 299 6.6.7 代碼實現:構建帶有鄰居節點採樣功能的資料載入器 300 6.6.8 代碼實現:PinSAGE模型的採樣 過程 305 6.6.9 代碼實現:搭建PinSAGE模型 309 6.6.10 代碼實現:產生實體PinSAGE模型類並進行訓練 315 6.6.11 代碼實現:用PinSAGE模型為 使用者 電影 315 6.6.12 擴展:在PinSAGE模型中融合 多的特徵資料 317 6.7 總結 317
李金洪 精通C、Python、Java語言,擅長神經網路、算法、協定分析、移動互聯網安全架構等技術,先後擔任過CAD算法工程師、架構師、專案經理、部門經理等職位。參與過深度學習領域某移動互聯網後臺的OCR項目,某娛樂節目機器人的語音辨識、聲紋識別專案,金融領域的若干分類專案。
客服公告
热门活动
订阅电子报