初學者指南:神經網絡在自然語言處理中的應用
深度學習正在給自然語言處理帶來巨大的變革。 但是,作為一個初學者,要從哪里起步才好呢? 深度學習和自然語言處理都是很寬泛的領域。哪些方面才是最重要的,還有,深度學習又是從哪個層面深刻影響了 NLP 呢?
看完這篇文章之后,你將會知道:
- 給自然語言處理領域帶來最深刻影響的神經網絡結構;
- 深度學習可以對自然語言處理的各個層面制定學習任務;
- 密集詞匯表示的重要性和學習表示的方法。
讓我們開始吧。
概覽
這篇文章將分成 12 個 section,并按以下結構排布,分別是:
1. 介紹;
2. 神經網絡結構;
3. 特征表示;
4. 前饋神經網絡;
5. 詞嵌入;
6. 神經網絡訓練;
7. 串聯和多任務學習;
8. 結構化輸出預測;
9. 卷積層;
10. 循環神經網絡;
11. 具體的 RNN 結構;
12. 模型樹。
1. 關于這篇論文
這篇論文的標題是「基于神經網絡模型的自然語言處理入門」(A Primer on Neural Network Models for Natural Language Processing)。
對應的論文 2015 年發表在 ArXiv 上。與其說是論文,不如說是一篇技術報告或者說是教程,面向研究員和學生,對基于深度學習方法的自然語言處理(NLP)作了綜合性的介紹。
這篇教程審視了針對自然語言處理的研究的幾個深度學習模型,以求自然語言的研究能加快神經網絡技術的發展。
入門教程由曾是 Google Research 科學家和 NLP 研究員的 Yoav Goldberg (https://www.cs.bgu.ac.il/~yoavg/uni/) 編寫。這是一篇技術報告,有大約 62 頁以及 13 頁的參考文獻。
這對于初學者來說是很理想的教材,因為:
- 它對讀者的基礎要求不高,不需要對先了解機器學習和語言處理的相關知識;
- 涉及領域寬泛,包括了很多深度學習方法和自然語言處理的問題。
在這篇教程中,我希望能為 NLP 開發者和新手介紹一些基礎背景知識,術語,實用工具以及方法論,從而明白其背后的神經網絡模型的理論,應用到他們自己的工作中... 面向的是那些有志于利用已有的,有價值的技術,并創造新方法去解決他們最感興趣的 NLP 的人。
通常情況下,在語言學和自然語言處理中,關鍵的深度學習方法需要翻模(重命名)以建立有用的溝通橋梁。
最后,這篇 2015 年的入門教程在 2017 年出書了,書名為「Neural Network Methods for Natural Language Processing (http://amzn.to/2tXn2dZ)」。
2. 神經網絡結構
這一小節將介紹神經網絡結構的不同類型,作為后面章節的參照。
全連接前饋神經網絡是非線性學習器,因此在極大程度上可以隨意取代線性學習器。
這里介紹 4 種類型的神經網絡結構,這里著重介紹其應用案例和參考文獻:
- 全連接前饋神經網絡,例如多層感知網絡;
- 帶有卷積和池化層的網絡,例如卷積神經網絡;
- 循環神經網絡,例如長短時記憶網絡;
- 遞歸神經網絡。
如果你只對應用感興趣,以上內容將為你提供直接尋找更多資源的線索。
3. 特征表示
這一節著重介紹深度學習模型訓練稀疏或者密集型表示的各種方法。
也許,從稀疏輸入(sparse-input)線性模型到神經網絡模型最大的飛躍,就是放棄將每一個特征作為一個維度的表示方式(所謂的 one-hot 表示),而使用密集型向量的表示方式。
NLP 分類系統的一般結構總結如下:
- 提取核心語言特征的集合;
- 為每一個向量檢索關聯向量;
- 組合特征向量;
- 將組合向量反饋給非線性分類器。
這個結構的關鍵在于使用密集型特征向量而不是稀疏特征向量,使用核心特征而不是特征組合。
需要注意在特征提取階段中,神經網絡只有提取核心特征。這和傳統的基于線性模型的 NLP 不同,傳統的 NLP 的特征設計必須手動設置以明確規定核心特征和其中的相互作用。
4. 前饋神經網絡
這一節將提供前饋人工神經網絡的速成課程。
以「A Primer on Neural Network Models for Natural Language Processing.」中,含兩個隱藏層的前饋神經網絡為例。這些神經網絡都是使用數學概念和腦啟發的形式而表示出來的。通常神經網絡的研究論題包括如下幾個:
- 表示能力(e.g. 一般近似);
- 一般非線性特征(e.g. 變換函數);
- 輸出的變換(e.g. softmax);
- 詞匯嵌入(e.g. 嵌入式學習的密集型表征);
- 損失函數(e.g. 折葉(ReLU)和對數損失函數)。
5. 詞嵌入
對于自然語言處理的神經網絡方法來說,詞嵌入表征是很重要的論題。這一節將展開這一論題并舉幾個關鍵方法的例子。神經網絡在 NLP 中的流行一個重要原因是嵌入方法的使用,在低維空間中將每一個特征表征為一個向量。我們將回顧以下幾個關于嵌入的論題:
- 隨機初始化(e.g. 以統一的隨機向量啟動);
- 有監督特定任務的預訓練(e.g. 遷移學習);
- 無監督預訓練(e.g. 統計方法,如 word2vec 和 GloVe);
- 訓練目標(e.g. 目標對輸出向量的影響);
- 上下文的選擇(e.g. 每一個詞受到的周圍的詞的影響)。
神經詞嵌入方法源于語言模型化方法,即訓練網絡以通過上文序列預測下一個詞。
6. 神經網絡訓練
這一節篇幅較大,著重介紹神經網絡的訓練方式,面向對神經網絡范式不熟悉的讀者。 神經網絡的訓練是通過梯度方法,嘗試在一個訓練數據集內最小化損失函數的過程。
這一節重點關注隨機梯度下降(以及類似的 mini-batch)以及訓練過程中的正則化方法。
有趣的是,神經網絡的計算圖觀點的提出為一些實現深度學習模型的符號化數值程序庫(symbolic numerical libraries),如 Theano 和 TensorFlow 提供了很好的入門方法。
只要圖被建立起來,就能很直觀的理解前向計算(計算輸出結果)或者方向計算(計算梯度)。
7. 級聯(Cascading)和多任務學習
這一節將在前一節的基礎上,我們將總結級聯 NLP 模型和多語言任務的學習模型。
級聯模型:利用神經網絡模型的計算圖定義加入中間表征(編碼)以建立更加復雜的模型。例如,我們可以通過近鄰詞匯,以及/或者其組成特征建立一個前饋網絡來預測詞匯。
多任務學習:各種相關的語言預測任務,并不互相反饋,但會在任務中分享信息。
預測命名實體的邊界,以及語句的下一個詞匯,都依賴于一些潛在的句法-語義表征上。這些高級概念都是在神經網絡語境中描述的,以在模型之間建立關聯的理解,或者在訓練過程(誤差反向傳播)和預測過程中,共享信息。
8. 結構化輸出的預測
這一節關注使用深度學習方法進行結構化預測的幾個自然語言處理任務的例子,比如,序列、決策樹和計算圖。
典型例子有序列標注(e.g. 詞性標注)的序列分割(分組,NER(命名實體識別)),以及句法分析。本節內容包括基于貪婪算法的和以搜索為核心的結構化預測,而主要集中討論后者。
以搜索為核心是自然語言結構化預測的一般方法。
9. 卷積層
這一節提供了卷積神經網絡的速成課程,以及討論卷積網絡對自然語言處理研究帶來的變革。CNN 被證明在自然語言處理的分類任務上表現出色,比如情緒分析,e.g. 在文中尋找特定的子序列或者結構進行預測。
卷積神經網絡一般被設計成在大型結構中用以識別 indicative local predictors,并將其組合以生成結構的固定大小的向量表征,捕捉這些 local aspects 對于預測任務來說是很有用的。
10. 循環神經網絡
正如前一節一樣,這一節也將介紹一種特定的網絡和其在 NLP 中的應用。比如,應用 RNN 的序列建模。
循環神經網絡允許在一個固定大小的向量中表示任意大小的結構化輸入,而只關心輸入的結構化性質。
由于 RNNs 在 NLP 中很受歡迎,尤其是 LSTM,這一節將討論如下幾個關于循環的論題和模型:
- RNN 抽象概念(e.g. 網絡圖中的循環連接);
- RNN 訓練過程(e.g. 沿時間的反向傳播);
- 多層(堆疊)RNN(e.g. 深度學習的「深」的解釋);
- BI-RNN(e.g. 前向和反向序列作為輸入);
- 用于表示的 RNN 堆疊。
我們將集中討論 RNN 模型結構或者結構元素中,特別是:
- 接收器(acceptor):在完整輸入序列之后的輸出的損失計算;
- 編碼器(encoder):最后的向量作為輸入序列的編碼器;
- 變換器(transducer):在輸入序列中,每一次觀測生成一個輸出;
- 編碼器-譯碼器(encoder-decoder):輸入序列在被譯碼成輸出序列之前,編碼成一個固定長度的向量。
11. 具體的 RNN 結構
這一節將在上一節的基礎上討論特定的 RNN 算法。比如:
- 簡單 RNN(SRNN);
- 長短時記憶(LSTM);
- 門控循環單元(GRU)。
12. 模型建模
最后一節著重討論一種更加復雜的網絡,學習樹型建模的遞歸神經網絡。所謂的樹包括了句法樹,話語樹,甚至是表示(由一句話的幾個部分表達的)情緒的樹。我們希望在特定的樹節點上預測價值,價值預測以根節點為基礎,或者為整棵樹或者部分樹指定一個預測值。
正如循環神經網絡保持輸入序列的狀態,遞歸神經網絡保持樹節點的狀態。
這里有一個遞歸神經網絡的例子,取自「A Primer on Neural Network Models for Natural Language Processing.」
總結
這篇文章介紹了自然語言處理的深度學習方法入門。
具體來說,你學到了:
- 在自然語言處理領域中最重要的幾種神經網絡結構;
- 成功應用深度學習的幾類自然語言處理任務;
- 密集型詞表征和對應的學習方法的重要性。
來自:https://www.jiqizhixin.com/articles/2017-09-17-7