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