圖書簡介
自然語言處理(NLP)是計算機科學、人工智慧、語言學關注計算機和人類(自然)語言之間的相互作用的領域。自然語言處理是機器學習的套用之一,用於分析、理解和生成自然語言,它與人機互動有關,最終實現人與計算機之間更好的交流。 本書分為12章,內容包括自然語言處理基礎、深度學習基礎、TensorFlow、詞嵌入(Word Embedding)、卷積神經網路(CNN)與句子分類、循環神經網路(RNN)、長短期記憶(LSTM)、利用LSTM實現圖像字幕自動生成、情感分析、機器翻譯及智慧型問答系統。 本書適合TensorFlow自然語言處理技術的初學者、NLP套用開發人員、NLP研究人員,也適合高等院校和培訓學校相關專業的師生教學參考。
主要內容
第1章 自然語言處理基礎。首先介紹自然語言處理的含義及NLP中的一些常見子任務;然後講述NLP的發展歷程:偏理論的理性主義、偏實踐套用的經驗主義和深度學習階段;接著對NLP任務中深度學習的局限性進行了大致分析;最後,對於NLP的套用場景和發展前景做了簡要闡述。
第2章 深度學習基礎。首先介紹深度學習的概念和演變過程,同時介紹了深度學習的基礎模型——
神經元模型,並對單層神經網路和多層
神經網路模型(深度學習)的結構和原理進行了深度解讀;然後介紹Encoder-Decoder網路和深度學習中最常見的最佳化算法——隨機梯度下降;最後介紹
反向傳播算法(BP算法)。
第3章 TensorFlow。首先介紹TensorFlow的產生、主要特徵和相關安裝等基礎準備內容,同時介紹了在執行TensorFlow程式時需要構建計算圖及其構成元素,並詳細解讀了TensorFlow的架構和工作原理,還給出了一個示例來加深理解;然後從TensorFlow客戶端的角度通過代碼逐層剖析TensorFlow的內部運行情況,以便讓我們對TensorFlow的內部運行機制、各個基礎組件之間的關聯等有深入的了解;最後介紹變數作用域機制並實現一個完整的神經網路示例。
第4章 詞嵌入。首先介紹分散式表示,對其含義、類型及簡要特徵有一個直觀的認識;其次,我們重點對CBOW模型、Skip-gram模型及GloVe模型的工作原理和內部架構進行深度解析;最後利用前面的模型,通過TensorFlow實現一個文檔分類任務。
第5章
卷積神經網路(CNN)與句子分類。首先介紹CNN的歷史演變過程,並對其5個層級結構(輸入層、卷積運算層、激勵層、池化層、全連線層)和4個基本運算單元(卷積運算、池化運算、全連線運算和識別運算)進行了介紹;然後介紹幾種常見的經典卷積神經網路:AlexNet、VGGNet、GoogleInceptionNet和ResNet,並逐一從模型思想、結構、特性亮點等方面進行詳細解讀;最後為了將上述解析的模型思想真正落實到代碼層面上,給出兩個套用案例:利用CNN對MNIST數據集進行圖片分類和利用CNN對句子進行分類。
第6章 循環神經網路(RNN)。首先通過計算圖及其展開解讀了循環的任何函式本質上可以認為是一種循環神經網路的說法;然後介紹時間的反向傳播算法(BPTT),將學習反向傳播的工作原理、為什麼不能對RNN使用標準反向傳播、如何使用BPTT對數據進行RNN訓練、截斷BPTT和BPPTT的局限性等,並解讀其局限性中的常見問題及對應的解決方法;最後將看到一個RNN的套用——文本生成,並研究了一種能夠捕獲更長記憶的RNN變體(被稱為RNN-CF),還給出了其在實例中的套用。
第7章 長短期記憶網路(LSTM)。首先介紹LSTM及其高級架構,並深入研究LSTM中發生的詳細計算,結合一個例子討論了該計算的過程;然後介紹了幾個可以提高LSTM性能的擴展,即貪心採樣(一種非常簡單的技術)、集束搜尋(一種更複雜的搜尋技術)及BiLSTM模型等;最後介紹了標準LSTM的兩種變體:窺視孔連線和GRU。
第8章 利用LSTM自動生成文本。首先廣泛地評估了LSTM在文本生成任務中的表現;然後定性和定量地測量LSTMS生成的文本有多好,並對LSTM、帶窺視孔連線的LSTM和GRU進行比較;最後如何將詞嵌入引入模型中,以改進LSTM生成的文本。
第9章 利用LSTM實現圖像字幕自動生成。首先回顧了圖像字幕的主要發展及其對研究和行業部署的影響;其次詳細介紹了基於深度學習的圖像字幕自動生成的兩大框架;最後對圖像字幕的自動生成任務進行了詳解。
第10章 情感分析。首先介紹情感分析的套用、情感問題的界定及情感文檔的分類,同時對句子觀點的主觀性、基於Aspect的情感分析、情感詞典的生成、比較觀點分析及觀點的檢索做了介紹;然後重點闡述了垃圾評論的各種情況;最後利用TensorFlow對於酒店評論樣本數據進行了情感分析建模比較,並得出相關結論。
第11章 機器翻譯。首先對基於規則的機器翻譯、
統計機器翻譯等傳統的機器翻譯情況進行了詳細解釋,並對基於神經網路的神經網路機器翻譯模型的架構和工作機制進行了深度剖析,同時對2018年11月份發布的具有重大突破性的BERT模型進行了分析;然後介紹如何實現一個NMT系統;最後講解如何改進標準NMT系統。
第12章 智慧型問答系統。本章簡要介紹了基於深度學習的問答方法,特別是對知識庫和機器理解的問答。深度學習的優點是可以將所有文本跨度(包括文檔、問題和潛在答案)轉換為向量嵌入,然而基於深度學習的QA模型存在許多挑戰。例如,現有的神經網路(RNN和CNN)仍然不能精確地捕獲給定問題的語義含義,特別是對於文檔,主題或邏輯結構不能通過神經網路容易地建模,並且在知識庫中嵌入項目仍然沒有有效的方法,以及QA中的推理過程很難通過向量之間的簡單數值運算來建模。
圖書目錄
第1章 自然語言處理基礎 1
1.1 認識自然語言處理 2
1.2 自然語言處理方面的任務 2
1.3 第一階段:偏理論的理性主義 4
1.4 第二階段:偏實踐套用的經驗主義 5
1.5 第三階段:深度學習階段 7
1.6 NLP中深度學習的局限性 9
1.7 NLP的套用場景 10
1.8 NLP的發展前景 13
1.9 總結 14
第2章 深度學習基礎 15
2.1 深度學習介紹 15
2.2 深度學習演變簡述 16
2.2.1 深度學習早期 16
2.2.2 深度學習的發展 17
2.2.3 深度學習的爆發 17
2.3 神經網路介紹 18
2.4 神經網路的基本結構 19
2.5.1 簡述 22
2.5.2 兩層神經網路結構 22
2.6 多層神經網路(深度學習) 23
2.6.1 簡述 23
2.6.2 多層神經網路結構 24
2.7 編碼器-解碼器網路 24
2.8 隨機梯度下降 25
2.9 反向傳播 27
2.10 總結 31
第3章 TensorFlow 32
3.1 TensorFlow概念解讀 32
3.2 TensorFlow主要特徵 33
3.2.1 自動求微分 33
3.2.2 多語言支持 33
3.2.3 高度的靈活性 34
3.2.4 真正的可移植性 34
3.2.5 將科研和產品聯繫在一起 34
3.2.6 性能最最佳化 34
3.3TensorFlow安裝 34
3.4TensorFlow計算圖 40
3.5TensorFlow張量和模型會話 42
3.5.1張量 42
3.5.2會話 43
3.6TensorFlow工作原理 43
3.7通過一個示例來認識TensorFlow 45
3.8TensorFlow客戶端 47
3.9TensorFlow中常見元素解讀 49
3.9.1在TensorFlow中定義輸入 50
3.9.2在TensorFlow中定義變數 56
3.9.3定義TensorFlow輸出 57
3.9.4定義TensorFlow運算或操作 58
3.10變數作用域機制 68
3.10.1基本原理 68
3.10.2通過示例解讀 69
3.11實現一個神經網路 71
3.11.1數據準備 71
3.11.2定義TensorFlow計算圖 71
3.11.3運行神經網路 73
3.12總結 75
第4章詞嵌入 77
4.1分散式表示 78
4.1.1分散式表示的直觀認識 78
4.1.2分散式表示解讀 78
4.2Word2vec模型(以Skip-Gram為例) 84
4.2.1直觀認識Word2vec 85
4.2.2定義任務 85
4.2.4定義詞嵌入層和神經網路 86
4.2.5整合 87
4.2.6定義損失函式 89
4.2.7利用TensorFlow實現Skip-Gram模型 93
4.3原始Skip-Gram模型和改進Skip-Gram模型對比分析 96
4.3.1原始的Skip-Gram算法的實現 97
4.3.2將原始Skip-Gram與改進後的Skip-Gram進行比較 98
4.4CBOW模型 98
4.4.1CBOW模型簡述 98
4.4.2利用TensorFlow實現CBOW算法 100
4.5Skip-Gram和CBOW對比 101
4.5.1Skip-Gram和CBOW模型結構分析 101
4.5.2代碼層面對比兩模型性能 102
4.5.3Skip-Gram和CBOW模型孰優 104
4.6詞嵌入算法的擴展 105
4.6.1使用Unigram分布進行負採樣 105
4.6.2降採樣 107
4.6.3CBOW和其擴展類型比較 107
4.7結構化Skip-Gram和連續視窗模型 108
4.7.1結構化Skip-Gram算法 108
4.7.2連續視窗模型 110
4.8GloVe模型 111
4.8.1共現矩陣 112
4.8.2使用GloVe模型訓練詞向量 112
4.8.3GloVe模型實現 113
4.9使用Word2Vec進行文檔分類 114
4.9.1數據集 115
4.9.2使用詞向量對文檔進行分類 115
4.9.3小結 119
4.10總結 120
第5章卷積神經網路與句子分類 121
5.1認識卷積神經網路 121
5.1.1卷積神經網路的歷史演變 121
5.1.2卷積神經網路結構簡述 122
5.2輸入層 125
5.3卷積運算層 126
5.3.1標準卷積 126
5.3.2帶步幅的卷積 127
5.3.3帶填充的卷積 127
5.3.4轉置卷積 128
5.3.5參數共享機制 129
5.4激活函式 131
5.4.1常見激活函式及選擇 131
5.4.2各個非線性激活函式對比分析 132
5.5池化層 134
5.5.1理解池化 134
5.5.2池化作用 135
5.5.3最大池化 135
5.5.4平均池化 136
5.6全連線層 136
5.7整合各層並使用反向傳播進行訓練 137
5.8常見經典卷積神經網路 138
5.8.1AlexNet 138
5.8.2VGGNet 143
5.8.3GoogleInceptionNet 146
5.8.4ResNet網路 149
5.9利用CNN對MNIST數據集進行圖片分類 150
5.9.1數據樣本 151
5.9.2實現CNN 151
5.9.3分析CNN產生的預測結果 153
5.10利用CNN進行句子分類 154
5.10.1CNN結構部分 154
5.10.2池化運算 157
5.10.3利用CNN實現句子分類 158
5.11總結 160
第6章循環神經網路 161
6.1計算圖及其展開 162
6.2RNN解讀 163
6.2.1序列數據模型 163
6.2.2數學層面簡要解讀RNN 165
6.3通過時間的反向傳播算法 166
6.3.1反向傳播工作原理 166
6.3.2直接使用反向傳播的局限性 167
6.3.3通過反向傳播訓練RNN 168
6.3.4截斷BPTT 168
6.3.5BPTT的局限性——梯度消失和梯度爆炸 168
6.4RNN的套用類型 170
6.4.1一對一的RNN 170
6.4.2一對多的RNN 170
6.4.3多對一的RNN 171
6.4.4多對多的RNN 171
6.5利用RNN生成文本 172
6.5.1定義超參數 172
6.5.2隨著時間的推移展開截斷BPTT的輸入 173
6.5.3定義驗證數據集 173
6.5.4定義權重值和偏差 174
6.5.5定義狀態永久變數 174
6.5.6使用展開的輸入計算隱藏狀態和輸出 174
6.5.7計算損失 175
6.5.8在新文本片段的開頭重置狀態 175
6.5.9計算驗證輸出 176
6.5.10計算梯度和最佳化 176
6.6輸出新生成的文本片段 176
6.7評估RNN的文本結果輸出 177
6.8困惑度——文本生成結果質量的度量 178
6.9具有上下文特徵的循環神經網路——RNN-CF 179
6.9.1RNN-CF的技術說明 180
6.9.2RNN-CF的實現 181
6.9.3定義RNN-CF超參數 181
6.9.4定義輸入和輸出占位符 181
6.9.5定義RNN-CF的權重值 182
6.9.6用於維護隱藏層和上下文狀態的變數和操作 183
6.9.7計算輸出 184
6.9.8計算損失 185
6.9.9計算驗證輸出 185
6.9.10計算測試輸出 186
6.9.11計算梯度和最佳化 186
6.10使用RNN-CF生成的文本 186
6.11總結 188
第7章長短期記憶 190
7.1LSTM簡述 191
7.2LSTM工作原理詳解 192
7.2.1梯度信息如何無損失傳遞 194
7.2.2將信息裝載入長時記憶細胞 194
7.2.3更新細胞狀態可能產生的問題及解決方案 196
7.2.4LSTM模型輸出 199
7.3LSTM與標準RNN的區別 200
7.4LSTM如何避免梯度消失和梯度爆炸問題 201
7.5最佳化LSTM 203
7.5.1貪婪採樣 203
7.5.2集束搜尋 204
7.5.3使用詞向量 205
7.5.4雙向LSTM 206
7.6LSTM的其他變體 207
7.6.1窺視孔連線 207
7.6.2門控循環單元 208
7.7總結 210
第8章利用LSTM自動生成文本 211
8.1文本到文本的生成 212
8.1.1文本摘要 212
8.1.2句子壓縮與融合 213
8.1.3文本複述生成 213
8.2意義到文本的生成 214
8.2.1基於深層語法的文本生成 214
8.2.2基於同步文法的文本生成 215
8.3數據到文本的生成 216
8.4文本自動生成前的數據準備 218
8.4.1數據集 218
8.4.2預處理數據 220
8.5實現LSTM 220
8.5.1定義超參數 221
8.5.2定義參數 221
8.5.3定義LSTM細胞及其操作 223
8.5.4定義輸入和標籤 223
8.5.5定義處理序列數據所需的序列計算 224
8.5.6定義最佳化器 225
8.5.7隨著時間的推移衰減學習率 225
8.5.8進行預測 226
8.5.9計算困惑度(損失) 227
8.5.10重置狀態 227
8.5.11貪婪採樣打破重複性 227
8.5.12生成新文本 227
8.5.13示例生成的文本 228
8.6標準LSTM與帶有窺視孔連線和GRU的LSTM的比較 229
8.6.1標準LSTM 229
8.6.2門控循環單元 231
8.6.3帶窺視孔連線的LSTM 233
8.6.4隨著時間的推移訓練和驗證困惑度 235
8.7最佳化LSTM——集束搜尋 236
8.7.1實現集束搜尋 236
8.7.2使用集束搜尋生成文本的示例 238
8.8改進LSTM——使用詞而不是n-gram生成文本 239
8.8.1維度問題 239
8.8.2完善Word2vec 239
8.8.3使用Word2vec生成文本 240
8.8.4使用LSTM-Word2vec和集束搜尋生成文本的示例 241
8.8.5困惑度隨著時間推移的變化情況 242
8.9使用TensorFlowRNNAPI 242
8.10總結 246
第9章利用LSTM實現圖像字幕自動生成 247
9.1簡要介紹 248
9.2發展背景 248
9.3利用深度學習框架從圖像中生成字幕 249
9.3.1End-to-End框架 249
9.3.2組合框架 251
9.3.3其他框架 252
9.4評估指標和基準 253
9.5近期研究 254
9.6圖像字幕的產業布局 255
9.7詳解圖像字幕自動生成任務 255
9.7.1認識數據集 255
9.7.2用於圖像字幕自動生成的深度學習管道 257
9.7.3使用CNN提取圖像特徵 259
9.7.4使用VGG-16載入權重值並進行推理 260
9.7.5學習詞向量 264
9.7.6為LSTM模型準備字幕數據 265
9.7.7生成LSTM的數據 266
9.7.8定義LSTM 267
9.7.9定量評估結果 270
9.7.10為測試圖像集生成字幕 273
9.7.11使用TensorFlowRNNAPI和預訓練的GloVe詞向量 276
9.8總結 284
第10章情感分析 286
10.1認識情感分析 286
10.2情感分析的問題 288
10.3情感文檔分類 291
10.4句子主觀性與情感分類 292
10.5基於方面(Aspect)的情感分析 293
10.6情感詞典生成 293
10.7意見摘要 294
10.8比較觀點分析 294
10.9意見搜尋 295
10.10垃圾評論檢測 295
10.10.1垃圾評論概述 295
10.10.2垃圾評論的類型 296
10.10.3可觀察到的信息 297
10.10.4數據樣本 298
10.10.5垃圾評論檢測方法 299
10.11評論的質量 302
10.12利用TensorFlow進行中文情感分析實現 304
10.12.1訓練語料 304
10.12.2分詞和切分詞 304
10.12.3索引長度標準化 305
10.12.4反向切分詞 305
10.12.5準備詞向量矩陣 306
10.12.6填充和截短 306
10.12.7構建模型 306
10.12.8結論 307
10.13總結 308
第11章機器翻譯 310
11.1機器翻譯簡介 311
11.2基於規則的翻譯 312
11.2.1基於轉換的機器翻譯 312
11.2.2語際機器翻譯 314
11.2.3基於字典的機器翻譯 317
11.3統計機器翻譯 318
11.3.1統計機器翻譯的基礎 318
11.3.2基於詞的翻譯 319
11.3.3基於短語的翻譯 319
11.3.4基於句法的翻譯 320
11.3.5基於分層短語的翻譯 321
11.3.6統計機器翻譯的優勢與不足 321
11.4神經網路機器翻譯 321
11.4.1發展背景 321
11.4.2神經網路機器翻譯的特性 323
11.4.3通過例子來認識神經網路機器翻譯(NMT)模型的結構 323
11.4.4神經網路機器翻譯(NMT)模型結構詳解 323
11.5神經網路機器翻譯(NMT)系統的前期準備工作 326
11.5.1訓練階段 326
11.5.2反轉源語句 327
11.5.3測試階段 328
11.6BLEU評分——評估機器翻譯系統 329
11.6.1BLEU簡述 329
11.6.2BLEU度量 330
11.6.3BLEU的調整和懲罰因子 332
11.6.4BLEU得分總結 333
11.7完整實現神經網路機器翻譯——德語到英語翻譯 333
11.7.1關於樣本數據 334
11.7.2預處理數據 334
11.7.3學習詞向量 335
11.7.4定義編碼器和解碼器 336
11.7.5定義端到端輸出計算 338
11.7.6神經網路機器翻譯系統運行結果(部分)的展示 339
11.8結合詞向量訓練神經網路機器翻譯系統 342
11.8.1最大化數據集辭彙和預訓練詞向量之間的匹配 342
11.8.2為詞嵌入層定義TensorFlow變數 344
11.9最佳化神經網路機器翻譯系統 346
11.9.1TeacherForcing算法 346
11.9.2深度LSTM 348
11.9.3注意力模型 349
11.10實現注意力機制 356
11.10.1定義權重值 356
11.10.2計算注意力 357
11.10.3含有注意力機制的神經網路機器翻譯的部分翻譯結果 358
11.11可視化源語句和目標語句的注意力 361
11.12歷史性突破——BERT模型 362
11.12.1BERT模型簡述 362
11.12.2BERT模型結構 363
11.13總結 364
第12章智慧型問答系統 366
12.1概要 366
12.2基於知識庫的問答 367
12.2.1信息抽取 367
12.2.2語義分析模式 371
12.2.3信息抽取與語義分析小結 374
12.2.4挑戰 374
12.3機器理解中的深度學習 375
12.3.1任務描述 375
12.3.2基於特徵工程的機器理解方法 378
12.3.3機器理解中的深度學習方法 381
12.4利用TensorFlow實現問答任務 386
12.4.1bAbI數據集 386
12.4.2分析GloVe並處理未知令牌 387
12.4.3已知或未知的數據部分 388
12.4.4定義超參數 390
12.4.5神經網路結構部分 391
12.4.6輸入部分 392
12.4.7問題部分 392
12.4.8情景記憶部分 392
12.4.9注意力部分 393
12.4.10答案模組 394
12.4.11模型最佳化 395
12.4.12訓練模型並分析預測 395
12.5總結 397