TensorFlow 知識圖譜實戰
內容描述
大數據時代的到來,為人工智能的飛速發展帶來前所未有的數據紅利。在大數據的“喂養”下,大量知識不斷涌現,如何有效地發掘這些知識呢?知識圖譜橫空出世。本書是一本講解如何使用TensorFlow 2構建知識圖譜的入門教程,引導讀者掌握基於深度學習的知識圖譜構建概念、理論和方法。 本書分為13章:第1章從搭建環境開始,包含TensorFlow CPU 版本和GPU版本的安裝,並通過一個知識圖譜的例子引導讀者開始學習;第2~4章介紹TensorFlow API的使用;第5章是Dataset API,學習使用原生API處理數據的方法;第6~8章是實戰準備部分,介紹ResNet模型、詞嵌入(word embedding)模型、情感分類;第9 ~10章在“註意力模型”基礎上搭建了“編碼器模型”;第11~13章搭建了知識圖譜聯合抽取模型,利用本書所學知識實戰知識圖譜的搭建過程和性能提升方案。 本書內容詳盡、示例豐富,適合作為知識圖譜和深度學習讀者的參考書,同時也適合開設人工智能專業的大中專院校師生閱讀,還可作為高等院校電腦及相關專業教材使用。
目錄大綱
1章 知識圖譜的前世今生 1
1.1 何謂自然語言處理 1
1.1.1 自然語言處理是門技術 1
1.1.2 傳統的自然語言處理 2
1.2 自然語言處理為什麼難—以簡單的情感分析為例 3
1.2.1 自然語言處理的難點 3
1.2.2 自然語言處理小練習:酒店評論的情感分類 5
1.3 知識圖譜到底是什麼 8
1.3.1 知識圖譜的應用 9
1.3.2 知識圖譜中的三元組 10
1.4 搭建環境1:安裝Python 11
1.4.1 Anaconda的下載與安裝 12
1.4.2 PyCharm的下載與安裝 14
1.4.3 Python代碼小練習:計算softma函數 17
1.5 搭建環境2:安裝TensorFlow 2.X的GPU版本 18
1.5.1 10/20/30系列顯卡選擇的GPU版本 18
1.5.2 TensorFlow 2.4 GPU版本基礎顯卡推薦和前置軟件安裝 19
1.5.3 TensorFlow小練習:Hello TensorFlow 22
1.6 實戰—知識圖譜的展示 22
1.6.1 一步:數據的準備 22
1.6.2 二步:數據的處理 23
1.6.3 三步:知識圖譜的展示 24
1.6.4 步:更多的連線 25
1.6.5 一個需要解決的小問題 25
1.7 本章小結 26
2章 TensorFlow和Keras快速入門 27
2.1 Keras讓一切變簡單 27
2.1.1 深度學習,始於模型 28
2.1.2 使用Keras API實現鳶尾花分類的例子(順序模型) 28
2.1.3 使用Keras函數式編程實現鳶尾花分類的例子(重點) 31
2.1.4 使用保存的Keras模式對模型進行複用 34
2.1.5 使用TensorFlow 標準化編譯對iris模型進行擬合 34
2.1.6 多輸入單一輸出TensorFlow 編譯方法(選學) 38
2.1.7 多輸入多輸出TensorFlow 編譯方法(選學) 42
2.2 全連接層詳解 43
2.2.1 全連接層的定義與實現 43
2.2.2 使用TensorFlow 自帶的API實現全連接層 45
2.2.3 打印顯示已設計的model結構和參數 48
2.3 懶人的福音—Keras模型庫 49
2.3.1 ResNet50模型和參數的載入 50
2.3.2 使用ResNet作為特徵提取層建立模型 52
2.4 本章小結 54
3章 深度學習的理論基礎 55
3.1 BP神經網絡簡介 56
3.2 BP神經網絡兩個基礎算法詳解 59
3.2.1 小二乘法(LS算法)詳解 59
3.2.2 道士下山的故事—梯度下降算法 61
3.2.3 小二乘法的梯度下降算法及其Python實現 64
3.3 反饋神經網絡反向傳播算法介紹 70
3.3.1 深度學習基礎 70
3.3.2 鍊式求導法則 71
3.3.3 反饋神經網絡原理與公式推導 72
3.3.4 反饋神經網絡原理的激活函數 78
3.3.5 反饋神經網絡原理的Python實現 79
3.4 本章小結 83
4章 卷積神經網絡實戰 84
4.1 卷積運算基本概念 84
4.1.1 卷積運算 85
4.1.2 TensorFlow 中卷積函數實現詳解 86
4.1.3 池化運算 88
4.1.4 softma激活函數 89
4.1.5 卷積神經網絡原理 90
4.2 卷積實戰:MNIST手寫體識別 93
4.2.1 MNIST數據集 93
4.2.2 MNIST數據集特徵和標籤介紹 95
4.2.3 TensorFlow 2.X編程實戰:MNIST數據集 97
4.2.4 使用自定義的捲積層實現MNIST識別 101
4.3 本章小結 104
5章 Datasets數據集和TensorBoard可視化 105
5.1 TensorFlow Datasets簡介 105
5.1.1 Datasets 數據集的安裝 107
5.1.2 Datasets 數據集的使用 107
5.2 Datasets 數據集的使用—FashionMNIST 109
5.2.1 FashionMNIST數據集下載與展示 110
5.2.2 模型的建立與訓練 111
5.3 使用Keras對FashionMNIST數據集進行處理 113
5.3.1 獲取數據集 113
5.3.2 數據集的調整 114
5.3.3 使用Python類函數建立模型 114
5.3.4 Model的查看和參數打印 115
5.3.5 模型的訓練和評估 117
5.4 使用TensorBoard可視化訓練過程 119
5.4.1 TensorBoard文件夾設置 119
5.4.2 TensorBoard的顯式調用(推薦使用Chrome或Edge瀏覽器) 120
5.4.3 TensorBoard的使用 122
5.5 本章小結 126
6章 ResNet實現神經網絡的飛躍 127
6.1 ResNet基礎原理與程序設計基礎 127
6.1.1 ResNet誕生的背景 127
6.1.2 模塊工具的TensorFlow 實現—不要重複造輪子 130
6.1.3 TensorFlow 高級模塊layers用法簡介 131
6.2 ResNet實戰:CIFAR100數據集分類 138
6.2.1 CIFAR100數據集簡介 138
6.2.2 ResNet殘差模塊的實現 141
6.2.3 ResNet網絡的實現 143
6.2.4 使用ResNet對CIFAR100數據集進行分類 146
6.3 本章小結 147
7章 有趣的詞嵌入——word embedding 148
7.1 文本數據處理 148
7.1.1 數據集介紹和數據清洗 149
7.1.2 停用詞的使用 151
7.1.3 詞向量訓練模型word2vec使用介紹 153
7.1.4 文本主題的提取:基於TF-IDF(選學) 156
7.1.5 文本主題的提取:基於TetRank(選學) 160
7.2 更多的word embedding方法—fastTet和 預訓練詞向量 163
7.2.1 fastTet的原理與基礎算法 163
7.2.2 fastTet訓練以及與TensorFlow 2.X的協同使用 164
7.2.3 使用其他預訓練參數做TensorFlow詞嵌入矩陣(中文) 170
7.3 針對文本的捲積神經網絡模型簡介—字符卷積 171
7.3.1 字符(非單詞)文本的處理 172
7.3.2 卷積神經網絡文本分類模型的實現—conv1d(一維卷積) 179
7.4 針對文本的捲積神經網絡模型—詞卷積 180
7.4.1 單詞的文本處理 181
7.4.2 卷積神經網絡文本分類模型的實現—conv2d(二維卷積) 183
7.5 使用卷積對文本分類的補充內容 186
7.5.1 漢字的文本處理 186
7.5.2 其他的一些細節 188
7.6 本章小結 189
8章 情感分類 190
8.1 GRU與情感分類 190
8.1.1 使用GRU的情感分類 190
8.1.2 什麼是GRU 191
8.1.3 TensorFlow 中的GRU層詳解 193
8.1.4 單向不行就雙向 194
8.2 實戰:情感分類 195
8.2.1 使用TensorFlow 自帶的模型做文本分類 195
8.2.2 使用自定義的DPCNN做模型分類 199
8.3 本章小結 203
9章 編碼器—自然語言處理的歸宿 204
9.1 編碼器的核心—注意力模型 205
9.1.1 輸入層—初始詞向量層和位置編碼器層 205
9.1.2 自註意力層 207
9.1.3 ticks和Layerrmalization 212
9.1.4 多頭自註意力 213
9.2 編碼器的實現 216
9.2.1 前饋層的實現 216
9.2.2 編碼器的實現 218
9.3 實戰編碼器:漢字拼音轉化模型 221
9.3.1 漢字拼音數據集處理 222
9.3.2 漢字拼音轉化模型的確定 223
9.3.3 模型訓練部分的編寫 226
9.3.4 推斷函數的編寫 228
9.4 本章小結 229
10章 BERT—站在巨人肩膀上的預訓練模型 230
10.1 預訓練模型BERT 230
10.1.1 BERT基本架構與應用 231
10.1.2 BERT預訓練任務與Fine-Tuning 232
10.2 實戰BERT:中文文本分類 235
10.2.1 使用Hugging face獲取BERT預訓練模型 235
10.2.2 BERT實戰文本分類 236
10.3 更多的預訓練模型 241
10.4 本章小結 244
11章 知識圖譜實戰1:多標籤文本分類 245
11.1 多標籤文本基本內容 245
11.1.1 多標籤分類不等於多分類 245
11.1.2 多標籤分類的激活函數—sigmoid 246
11.2 多標籤文本實戰 247
11.2.1 一步:數據的獲取與處理 247
11.2.2 二步:選擇特徵抽取模型 251
11.2.3 三步:訓練模型的建立 252
11.2.4 步:多標籤文本分類的訓練與預測 253
11.3 本章小結 256
12章 知識圖譜實戰2:命名實體識別 257
12.1 命名實體識別的基本內容 257
12.1.1 什麼是命名實體識別 257
12.1.2 深度學習在命名實體識別中的應用 258
12.1.3 命名實體識別CRF層簡介 258
12.1.4 命名實體識別一般的模型架構詳解 259
12.2 方法一:BERT命名實體識別實戰 260
12.2.1 一步:數據的獲取與處理 260
12.2.2 二步:BERT模型設計 262
12.2.3 三步:完整的BERT模型訓練 263
12.2.4 步:使用BERT命名實體識別模型進行預測 263
12.3 方法二:BiLSTM-CRF命名實體識別實戰 265
12.3.1 一步:數據的獲取與處理 265
12.3.2 二步:BiLSTM-CRF模型設計 265
12.3.3 三步:BiLSTM-CRF模型的訓練 266
12.3.4 步:使用BiLSTM的預測 268
12.4 本章小結 269
13章 知識圖譜實戰3: 基於聯合抽取的知識圖譜模型 270
13.1 基於聯合抽取的知識圖譜模型實戰 270
13.1.1 什麼是聯合抽取 270
13.1.2 一步:數據的處理 272
13.1.3 二步:模型的設計 274
13.1.4 三步:聯合抽取模型的訓練 274
13.2 知識圖譜模型提升 276
13.2.1 更換預訓練模型進行提升 276
13.2.2 更換損失函數進行提升 276
13.2.3 使用Miture-of-Eperts修正聯合抽取模型 279
13.3 本章小結 281
作者介紹
王曉華,計算機專業講師,長期講授面向對象程序設計、數據結構、Hadoop程序設計等研究生和本科生相關課程;主要研究方向為雲計算、數據挖掘。曾主持和參與多項國家和省級科研課題,獨立科研項目獲省級成果認定,發表過多篇論文,擁有一項國家專利。著有《Spark MLlib機器學習實踐》《TensorFlow深度學習應用實踐》《OpenCV+TensorFlow深度學習與計算機視覺實戰》《TensorFlow 2.0卷積神經網絡實戰》《TensorFlow+Keras自然語言處理實戰》等圖書。