基于BERT模型的自然語言處理實戰 版權信息
- ISBN:9787121414084
- 條形碼:9787121414084 ; 978-7-121-41408-4
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
基于BERT模型的自然語言處理實戰 本書特色
BERT模型是當今處理自然語言任務效果*好的模型。掌握了該模型,就相當于掌握了當今主流的NLP技術。
通過本書,讀者可以:
- 熟練地在PyTorch框架中開發并訓練神經網絡模型,
- 快速地使用BERT模型完成各種主流的自然語言處理任務,
- 獨立地設計并訓練出針對特定需求的BERT模型,
- 輕松地將BERT模型封裝成Web服務部署到云端。
基于BERT模型的自然語言處理實戰 內容簡介
本書介紹如何在PyTorch框架中使用BERT模型完成自然語言處理(NLP)任務。BERT模型是當今處理自然語言任務效果優選的模型。掌握了該模型,就相當于掌握了當今主流的NLP技術。 本書共3篇。篇介紹了神經網絡的基礎知識、NLP的基礎知識,以及編程環境的搭建;第2篇介紹了PyTorch編程基礎,以及BERT模型的原理、應用和可解釋性;第3篇是BERT模型實戰,幫助讀者開闊思路、增長見識,使讀者能夠真正駕馭BERT模型,活學活用,完成自然語言處理任務。 通過本書,讀者可以熟練地在PyTorch框架中開發并訓練神經網絡模型,快速地使用BERT模型完成各種主流的自然語言處理任務,獨立地設計并訓練出針對特定需求的BERT模型,輕松地將BERT模型封裝成Web服務部署到云端。 本書結構清晰、案例豐富、通俗易懂、實用性強,適合對自然語言處理、BERT模型感興趣的讀者作為自學教程。另外,本書也適合社會培訓學校作為培訓教材,還適合計算機相關專業作為教學參考書。
基于BERT模型的自然語言處理實戰 目錄
目 錄
第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
展開全部
基于BERT模型的自然語言處理實戰 作者簡介
李金洪
擅長神經網絡、算法、協議分析、逆向、移動互聯網安全架構等技術
先后擔任過CAD算法工程師、手機游戲主程、架構師、項目經理、CTO、部門經理、資深產品總監等職位
目前創業中。