基於 BERT 模型的自然語言處理實戰

李金洪

  • 出版商: 電子工業
  • 出版日期: 2021-07-01
  • 售價: $834
  • 貴賓價: 9.5$792
  • 語言: 簡體中文
  • 頁數: 380
  • 裝訂: 平裝
  • ISBN: 7121414082
  • ISBN-13: 9787121414084
  • 相關分類: Text-mining 文字探勘
  • 立即出貨

買這商品的人也買了...

商品描述

本書介紹如何在PyTorch框架中使用BERT模型完成自然語言處理(NLP)任務。BERT模型是當今處理自然語言任務效果最好的模型。掌握了該模型,就相當於掌握了當今主流的NLP技術。 本書共3篇。第1篇介紹了神經網絡的基礎知識、NLP的基礎知識,以及編程環境的搭建;第2篇介紹了PyTorch編程基礎,以及BERT模型的原理、應用和可解釋性;第3篇是BERT模型實戰,幫助讀者開闊思路、增長見識,使讀者能夠真正駕馭BERT模型,活學活用,完成自然語言處理任務。 通過本書,讀者可以熟練地在PyTorch框架中開發並訓練神經網絡模型,快速地使用BERT模型完成各種主流的自然語言處理任務,獨立地設計並訓練出針對特定需求的BERT模型,輕松地將BERT模型封裝成Web服務部署到雲端。 本書結構清晰、案例豐富、通俗易懂、實用性強,適合對自然語言處理、BERT模型感興趣的讀者作為自學教程。另外,本書也適合社會培訓學校作為培訓教材,還適合電腦相關專業作為教學參考書。

作者簡介

李金洪
擅長神經網絡、算法、協議分析、逆向、移動互聯網安全架構等技術
先後擔任過CAD算法工程師、手機遊戲主程、架構師、項目經理、CTO、部門經理、資深產品總監等職位
目前創業中。

目錄大綱

★★第1篇 入門——基礎知識與編程框架
第1章 BERT模型很強大,你值得擁有 /2
★1.1 **歡騰,喜迎BERT模型 /2
★1.2 為什麼BERT模型這麼強 /3
★1.3 怎麼學習BERT模型 /4
1.3.1 BERT模型的技術體系 /4
1.3.2 學好自然語言處理的4件套——神經網絡的基礎知識、NLP的基礎知識、編程框架的使用、BERT模型的原理及應用 /4
1.3.3 學習本書的前提條件 /5
★1.4 自然語言處理的技術趨勢 /5
1.4.1 基於**大規模的高精度模型 /6
1.4.2 基於**小規模的高精度模型 /6
1.4.3 基於小樣本訓練的模型 /6

第2章 神經網絡的基礎知識——可能你掌握得也沒有那麼牢 /7
★2.1 什麼是神經網絡 /7
2.1.1 神經網絡能解決哪些問題 /7
2.1.2 神經網絡的發展 /7
2.1.3 什麼是深度學習 /8
2.1.4 什麼是圖神經網絡 /8
2.1.5 什麼是圖深度學習 /9
★2.2 神經網絡的工作原理 /10
2.2.1 了解單個神經元 /10
2.2.2 生物神經元與計算機神經元模型的結構相似性 /12
2.2.3 生物神經元與計算機神經元模型的工作流程相似性 /12
2.2.4 神經網絡的形成 /13
★2.3 深度學習中包含了哪些神經網絡 /13
2.3.1 全連接神經網絡 /13
2.3.2 卷積神經網絡 /17
2.3.3 循環神經網絡 /23
2.3.4 帶有註意力機制的神經網絡 /30
2.3.5 自編碼神經網絡 /34
★2.4 圖深度學習中包含哪些神經網絡 /36
2.4.1 同構圖神經網絡 /37
2.4.2 異構圖神經網絡 /37
★2.5 激活函數——加入非線性因素,以解決線性模型的缺陷 /38
2.5.1 常用的激活函數 /38
2.5.2 更好的激活函數——Swish()與Mish() /41
2.5.3 更適合NLP任務的激活函數——GELU() /43
2.5.4 激活函數總結 /44
2.5.5 分類任務與Softmax算法 /44
★2.6 訓練模型的原理 /45
2.6.1 反向傳播與BP算法 /47
2.6.2 神經網絡模塊中的損失函數 /49
2.6.3 學習率 /50
2.6.5 優化器 /51
2.6.6 訓練模型的相關算法,會用就行 /52
★2.7 【實例】用循環神經網絡實現退位減法 /52
★2.8 訓練模型中的常見問題及優化技巧 /56
2.8.1 過擬合與欠擬合問題 /56
2.8.2 改善模型過擬合的方法 /56
2.8.3 了解正則化技巧 /57
2.8.4 了解Dropout技巧 /57
2.8.5 Targeted Dropout與Multi-sample Dropout /58
2.8.6 批量歸一化(BN)算法 /59
2.8.7 多種BN算法的介紹與選取 /64
2.8.8 全連接網絡的深淺與泛化能力的聯繫 /64

第3章 NLP的基礎知識——NLP沒那麼“玄” /65
★3.1 NLP的本質與原理 /65
3.1.1 情感分析、相似度分析等任務的本質 /65
3.1.2 完形填空、實體詞識別等任務的本質 /66
3.1.3 文章摘要任務、問答任務、翻譯任務的本質 /67
★3.2 NLP的常用工具 /68
3.2.1 自然語言處理工具包——SpaCy /68
3.2.2 中文分詞工具——Jieba /69
3.2.3 中文轉拼音工具——Pypinyin /69
3.2.4 評估翻譯質量的算法庫——SacreBLEU /70
★3.3 計算機中的字符編碼 /70
3.3.1 什麼是ASCII編碼 /71
3.3.2 為什麼會出現亂碼問題 /71
3.3.3 什麼是Unicode /71
3.3.4 借助Unicode 處理中文字符的常用操作 /73
★3.4 計算機中的詞與句 /74
3.4.1 詞表與詞向量 /75
3.4.2 詞向量的原理及意義 /75
3.4.3 多項式分佈 /76
3.4.4 什麼是依存關係分析 /77
3.4.5 什麼是TF /79
3.4.6 什麼是IDF /79
3.4.7 什麼是TF-IDF /80
3.4.8 什麼是BLEU /80
★3.5 什麼是語言模型 /81
3.5.1 統計語言模型 /81
3.5.2 CBOW與Skip-Gram語言模型 /81
3.5.3 自編碼(Auto Encoding,AE)語言模型 /82
3.5.4 自回歸(Auto Regressive,AR)語言模型 /83
★3.6 文本預處理的常用方法 /83
3.6.1 NLP數據集的獲取與清洗 /83
3.6.2 基於馬爾可夫鏈的數據增強 /84

第4章 搭建編程環境——從安裝開始,更適合零基礎入門 /87
★4.1 編程框架介紹 /87
4.1.1 PyTorch介紹 /87
4.1.2 DGL庫介紹 /88
4.1.3 支持BERT模型的常用工具庫介紹 /89
★4.2 搭建Python開發環境 /89
★4.3 搭建PyTorch開發環境 /91
★4.4 搭建DGL環境 /95
★4.5 安裝Transformers庫 /96

第2篇 基礎——神經網絡與BERT模型
第5章 PyTorch編程基礎 /100
★5.1 神經網絡中的基礎數據類型 /100
★5.2 矩陣運算的基礎 /101
5.2.1 轉置矩陣 /101
5.2.2 對稱矩陣及其特性 /101
5.2.3 對角矩陣與單位矩陣 /101
5.2.4 阿達瑪積(Hadamard Product) /102
5.2.5 點積(Dot Product) /102
5.2.6 對角矩陣的特性與操作方法 /103
★5.3 PyTorch中的張量 /104
5.3.1 定義張量的方法 /105
5.3.2 生成隨機值張量 /107
5.3.3 張量的基本操作 /108
5.3.4 在CPU和GPU控制的內存中定義張量 /112
5.3.5 張量間的數據操作 /113
★5.4 Variable類型與自動微分模塊 /118
5.4.1 Variable對象與Tensor對象之間的轉換 /118
5.4.2 控制梯度計算的方法 /119
5.4.3 Variable對象的屬性 /121
★5.5 【實例】用PyTorch實現一個簡單模型 /124
5.5.1 準備可複現的隨機數據 /124
5.5.2 實現並訓練模型 /125
5.5.3 可視化模型能力 /128
★5.6 定義模型結構的常用方法 /129
5.6.1 Module類的使用方法 /129
5.6.2 模型中的參數(Parameters變量) /131
5.6.3 為模型添加參數 /132
5.6.4 從模型中獲取參數 /133
5.6.5 激活模型接口 /135
5.6.6 L2正則化接口 /136
5.6.7 Dropout接口 /136
5.6.8 批量歸一化接口 /137
5.6.9 【實例】手動實現BN的計算方法 /139
★5.7 保存與載入模型的常用方法 /141
★5.8 訓練模型的接口與使用 /143
5.8.1 選取訓練模型中的損失函數 /143
5.8.2 【實例】Softmax接口的使用 /144
5.8.3 優化器的使用與優化參數的查看 /146
5.8.4 用退化學習率訓練模型 /147
5.8.5 為模型添加鉤子函數 /152
5.8.6 多顯卡的訓練方法 /153
5.8.7 梯度累加的訓練方法 /153
★5.9 處理數據集的接口與使用 /154
5.9.1 用DataLoader類實現自定義數據集 /155
5.9.2 DataLoader類中的多種採樣器子類 /155
5.9.3 Torchtext工具與內置數據集 /156
★5.10 【實例】訓練中文詞向量 /157
5.10.1 用Jieba庫進行中文樣本預處理 /158
5.10.2 按照Skip-Gram規則製作數據集 /159
5.10.3 搭建模型並進行訓練 /161
5.10.4 夾角餘弦值介紹 /164
★5.11 卷積神經網絡的實現 /166
5.11.1 了解卷積接口 /166
5.11.2 卷積操作的類型 /168
5.11.3 卷積參數與卷積結果的計算規則 /169
5.11.4 【實例】卷積函數的使用 /169
5.11.5 了解池化接口 /174
5.11.6 【實例】池化函數的使用 /175
★5.12 【實例】用卷積神經網絡實現文本分類任務 /177
5.12.1 了解用於文本分類的捲積網絡——TextCNN模型 /177
5.12.2 編寫代碼實現實例 /179
5.12.3 用多GPU並行訓練模型 /184
5.12.4 在多GPU的訓練過程中,保存/讀取模型文件的注意事項 /185
5.12.5 處理顯存殘留問題 /186
★5.13 RNN的實現 /187
5.13.1 LSTM與GRU接口的實現 /187
5.13.2 多項式分佈採樣接口 /188
★5.14 【實例】用RNN訓練語言模型 /189
5.14.1 實現語言模型的思路與步驟 /189
5.14.2 準備樣本與代碼實現 /189
★5.15 【實例】手動實現一個帶有自註意力機制的模型 /192
★5.16 【實例】利用帶注意力機制的循環神經網絡對文本進行分類 /194
5.16.1 製作等長數據集並實現LSTM模型 /194
5.16.2 用梯度剪輯技巧優化訓練過程 /195

第6章 BERT模型的原理 /197
★6.1 BERT模型的起源——Transformer模型 /197
6.1.1 Transformer模型出現之前的主流模型 /197
6.1.2 Transformer模型的原理 /199
6.1.3 Transformer模型的優缺點 /204
★6.2 【實例】用Transformer模型進行中/英文翻譯 /204
★6.3 BERT模型的原理 /206
6.3.1 BERT模型的訓練過程 /207
6.3.2 BERT模型的預訓練方法 /207
6.3.3 BERT模型的掩碼機制 /208
6.3.4 BERT模型的訓練參數 /210
6.3.5 BERT模型的缺點 /210
★6.4 高精度的BERTology系列模型 /211
6.4.1 適合生成文章的模型——GPT模型 /211
6.4.2 支持人機對話的模型——DialoGPT模型 /212
6.4.3 融合了BERT模型與GPT技術的模型——MASS模型 /212
6.4.4 支持長文本輸入的模型——Transformer-XL模型 /212
6.4.5 支持更長文本的模型——XLNet模型 /213
6.4.6 彌補XLNet模型不足的模型——MPNet模型 /217
6.4.7 穩健性更好的模型——RoBERTa模型 /217
6.4.8 使用了稀疏注意力的模型——Longformer、BigBird模型 /218
6.4.9 基於詞掩碼的模型——BERT-WWM、Wo BERT等模型 /220
6.4.10 基於小段文字掩碼的模型——SpanBERT模型 /220
6.4.11 適合翻譯任務的模型——T5模型 /221
6.4.12 支持多種語言的翻譯模型——XLM、XLM-Roberta模型 /222
6.4.13 既能閱讀又能寫作的模型——UniLM 2.0模型 /223
6.4.14 適用於語法糾錯任務的模型——StructBERT、Bart模型 /224
6.4.15 可以進行定向寫作的模型——CTRL模型 /225
6.4.16 適合摘要生成的模型——PEGASUS模型 /226
6.4.17 支持更多語言的模型——T-ULR V2模型 /227
★6.5 小規模的BERTology系列模型 /227
6.5.1 比RoBERTa模型訓練速度更快的模型——ELECTRA模型 /228
6.5.2 適用於文本分類的**小模型——PRADO、pQRNN模型 /229
6.5.3 比BERT模型更適合於部署場景的模型——DistillBERT模型 /231
6.5.4 比BERT模型更快的模型——FastBERT模型 /232
6.5.5 帶有通用蒸餾方案的模型——MiniLM模型 /233
6.5.6 精簡版的BERT模型——ALBERT、ALBERT_tiny、
ALBERT V2模型 /234
★6.6 BERTology系列模型的預訓練方法總結 /237
6.6.1 AE式訓練方法的常用策略 /237
6.6.2 更多的訓練經驗 /237

第7章 BERT模型的快速應用——BERT模型雖然強大,使用卻不復雜! /239
★7.1 了解Transformers庫 /239
★7.2 Transformers庫的3層應用結構 /240
★7.3 【實例】用Transformers庫的管道方式完成多種NLP任務 /241
7.3.1 在管道方式中指定NLP任務 /241
7.3.2 代碼實現:完成文本分類任務 /242
7.3.3 代碼實現:完成特徵提取任務 /243
7.3.4 代碼實現:完成完形填空任務 /244
7.3.5 代碼實現:完成閱讀理解任務 /245
7.3.6 代碼實現:完成摘要生成任務 /247
7.3.7 預訓練模型文件的組成與其加載時的固定名稱 /248
7.3.8 代碼實現:完成實體詞識別任務 /248
7.3.9 管道方式的工作原理 /249
7.3.10 在管道方式中應用指定模型 /251
★7.4 Transformers庫中的自動模型(AutoModel)類 /252
7.4.1 各種AutoModel類 /252
7.4.2 AutoModel類的模型加載機制 /253
7.4.3 Transformers庫中的其他語言模型 /254
★7.5 Transformers庫中的BERTology系列模型 /255
7.5.1 Transformers庫的文件結構 /255
7.5.2 獲取和加載預訓練模型文件 /257
7.5.3 查找Transformers庫中可以使用的模型 /260
7.5.4 【實例】用BERT模型實現完形填空任務 /261
7.5.5 【擴展實例】用自動模型類替換BertForMaskedLM類 /264
★7.6 Transformers庫中的詞表工具 /264
7.6.1 PreTrainedTokenizer類中的特殊詞 /265
7.6.2 PreTrainedTokenizer類中的特殊詞的使用 /266
7.6.3 向PreTrainedTokenizer類中添加詞 /269
7.6.4 【實例】用手動加載GPT-2模型權重的方式將句子補充完整 /270
7.6.5 子詞拆分 /274
★7.7 【實例】用遷移學習訓練BERT模型來對中文分類 /275
7.7.1 NLP中的遷移學習 /275
7.7.2 構建數據集 /277
7.7.3 構建並加載BERT模型的預訓練模型 /279
7.7.4 Transformers庫中的底層類 /280
7.7.5 用退化學習率訓練模型 /281
7.7.6 用數據增強方法訓練模型 /282

第8章 模型的可解釋性——深入模型內部,探究其工作的根源 /283
★8.1 模型的可解釋庫 /283
8.1.1 了解Captum庫 /283
8.1.2 Captum庫的可視化工具——Captum Insights /284
★8.2 什麼是梯度積分方法 /284
★8.3 【實例】對NLP模型的可解釋性分析 /284
8.3.1 分析詞嵌入模型 /284
8.3.2 拆解NLP模型的處理過程 /285
8.3.3 用Captum庫提取NLP模型的詞嵌入層 /286
8.3.4 用梯度積分的方法計算模型的可解釋性 /287
8.3.5 可視化模型的可解釋性 /289
★8.4 【實例】BERT模型的可解釋性分析 /291
8.4.1 了解BERT模型的可解釋性工具——Bertviz /291
8.4.2 用Bertviz工具可視化BERT模型的權重 /292
8.4.3 分析BERT模型的權重參數 /296
★8.5 用圖神經網絡解釋BERT模型 /300
8.5.1 點積計算與聚合計算的關係 /300
8.5.2 從圖的角度思考BERT模型 /302

★★第3篇 BERT模型實戰
第9章 圖神經網絡與BERT模型的結合 /306
★9.1 圖神經網絡基礎 /306
9.1.1 圖的相關術語和操作 /306
9.1.2 圖卷積神經網絡 /310
★9.2 DGL庫的使用方法 /314
9.2.1 創建圖結構 /314
9.2.2 DGL庫與NetWorkx庫的相互轉換 /316
9.2.3 圖的基本操作 /319
9.2.4 圖的消息傳播機制 /322
9.2.5 DGL庫中的多圖處理 /324
★9.3 【實例】用圖節點的聚合方法實現BERT模型 /325
9.3.1 基於Transformers庫的BERT模型修改方案 /325
9.3.2 實現圖節點聚合的核心代碼 /326
9.3.3 將原BERT模型的權重應用到基於圖節點聚合方法實現的BERT模型上 /327
★9.4 什麼是關係圖卷積網絡(R-GCN)模型 /329
9.4.1 R-GCN模型的原理 /329
9.4.2 基於R-GCN模型的優化 /330
9.4.3 R-GCN模型的實現 /330
★9.5 【實例】用R-GCN模型理解文本中的代詞 /332
9.5.1 代詞數據集(GAP)介紹 /332
9.5.2 將GAP數據集轉換成“圖”結構數據的思路 /333
9.5.3 用BERT模型提取代詞特徵 /335
9.5.4 用BERT模型提取其他詞特徵 /337
9.5.5 用SpaCy工具和批次圖方法構建圖數據集 /339
9.5.6 搭建多層R-GCN模型 /344
9.5.7 用5折交叉驗證方法訓練模型 /345

第10章 BERT模型的行業應用 /347
★10.1 BERT模型在文本糾錯領域的應用 /347
10.1.1 文本糾錯中的常見任務及解決辦法 /347
10.1.2 理解BERT模型的糾錯能力 /348
10.1.3 改進BERT模型使其具有更強的糾錯能力 /348
10.1.4 專用於文本糾錯的模型——Soft-Masked BERT模型 /349
10.1.5 基於圖神經網絡的文本糾錯模型——SpellGCN模型 /350
10.1.6 【實例】用Transformers和DGL庫實現SpellGCN模型 /351
★10.2 BERT技術在聊天機器人領域的應用 /352
10.2.1 聊天機器人的種類與實現技術 /353
10.2.2 基於BERT模型完成聊天任務的思路 /354
10.2.3 【實例】用累加梯度訓練支持中文的DialoGPT模型 /355
10.2.4 更強大的多輪聊天模型——Meena模型 /360
★10.3 BERT模型在服務器端部署的應用 /360
10.3.1 用transformers-cli工具快速部署BERT模型 /360
10.3.2 用torchserve庫部署BERT模型 /362