【NLP】 NLP中应用最广泛的特征抽取模型-LSTM
本篇介紹在NLP中應用最為廣泛的特征抽取模型LSTM。詳細介紹LSTM提出的由來及其模型結構,并由此分析了LSTM能夠解決RNN不能夠對長序列進行處理和訓練的原因。
作者&編輯 | 小Dream哥
上周介紹了RNN模型結構及其反向傳播和正向傳播機制。文末提到了RNN會出現梯度消失等問題,使得訓練變得困難,但因為篇幅限制,沒有介紹其具體的原因,后面小Dream哥在有三AI-NLP知識星球里詳細介紹了這一方面的內容,感興趣的同學可以移步如下鏈接:
RNN梯度消失原因詳解:https://t.zsxq.com/7qzRBeE
那好,既然RNN有這樣的問題,該怎么解決呢?我們今天的主角LSTM(Long Short-Term Memory)就該登場了。
1 LSTM的提出
在LSTM提出之前,RNN的訓練基于BPTT(Back-Propagation Through Time)或者RTRL(Real Time Recurrent Learning)。通過這兩種方式對RNN進行訓練時,當誤差在序列內進行傳播時,會出現梯度消失或者爆炸的情況。
當出現梯度消失時,在訓練時,權重會出現搖擺和震蕩;梯度消失使得訓練會耗費大量的時間,甚至干脆就停滯。
基于這樣的情況,兩位大神Sepp Hochreiter和Jürgen Schmidhuber提出了LSTM:
Hochreiter, S, and J. Schmidhuber. "Long short-term memory." Neural Computation 9.8(1997):1735-1780.
我們先回顧一下RNN的誤差傳遞公式:
一個很簡單的想法,如果誤差在不同時刻相互連接的RNN單元之間,傳遞的是一個常量,即令下式是一個常量。其中f為激活函數。
這樣,梯度消失或者爆炸的問題是不是就可以解決了?
因此,Sepp Hochreiter和Jürgen Schmidhuber提出了CEC(Constant Error Carrousel),這也是LSTM的核心特點。
所謂CEC,就是令
Sepp Hochreiter和Jürgen Schmidhuber指出可以選擇恒等函數作為激活函數,并且令w_j,j=1便可滿足上式,保證梯度在誤差隨時間傳遞之后不至于出現梯度消失或者梯度爆炸。這個想法很簡單和樸素,因此Sepp Hochreiter和Jürgen Schmidhuber稱之為Naive Approach。
但是對RNN僅僅是做這樣的修改也還會有一些問題,不管是輸入權重還是輸出權重,在更新都既要考慮“記住”前面時刻的內容;又要考慮不要讓前面時刻的內容干擾到當前時刻的輸入,這種矛盾會使訓練變得困難。因此兩位大神針對這個問題,設計新的模型結構,下面介紹LSTM的模型結構。
2 LSTM的結構
現在網絡上講LSTM結構的文章,實在是太多了,小Dream哥本來是不想再講的。出于文章完整性和系統性的考慮,這里還是將LSTM的模型結構和前向傳播過程列一下。
可以看到LSTM的結構要比RNN的復雜的多,其主要是增加了細胞狀態和3個門結構。看上去比較復雜,同學們先不要著急,下面我們一步一步來講一講LSTM的結構。
如上圖,細胞狀態C_t橫向穿過,看起來像一條傳送帶,只是經過了少量的線性變化,因此狀態容易保持下來。
上圖是LSTM的第一個門,遺忘門。這個門根據輸入信息(h_t-1和x_t)決定要忘記細胞狀態C_t-1的哪些部分。
接下來是信息更新門,決定了細胞狀態C_t,它分為兩個部分。
第一步,根據輸入信息,用tanh產生該時刻需要更新到細胞狀態中的內容;用sigmoid函數產生更新的比例。
第二步,將需要更新的內容更新到細胞狀態中去,生成C_t。
最后,是輸出門。根據新的細胞狀態和輸入信息,產生新的輸出h_t。
上面大致介紹了LSTM的結構,及其前向傳播過程,圖片來自:
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
這里先總結一下,LSTM在原本RNN的基礎上增加了CEC的內容,CEC保證了誤差以常數的形式在網絡中流動,這部分通過引入細胞狀態C來體現。并且,為了解決輸入和輸出在參數更新時的矛盾,在CEC的基礎上添加3個門使得模型變成非線性的,就可以調整不同時序的輸出對模型后續動作的影響。
3?LSTM局限性
LSTM提出之后,在語音處理、機器翻譯、實體識別等NLP領域迅速取得很好的效果,在工業界獲得很好的應用。但其也有一定的局限性,下面我們做一下介紹。
(1) 相較于RNN,LSTM的網絡結構復雜很多,因為引入了更多的權重參數,這增加了計算的復雜度。
(2) 不管是RNN,還是它的衍生LSTM等,都需要隨著時間推移進行順序處理。因此對于輸入序列的處理效率很低。
(3) 特征提取能力不強,t時刻的輸入不能提取到t時刻之后序列信息的內容。這點在transformer出來之后,體現的尤為明顯。
總結
上文詳細講述了LSTM提出的由來,大致介紹了其模型結構,由此分析了其能夠解決RNN無法訓練的問題。最后,介紹了LSTM的局限性。
LSTM是一個應用廣泛的模型,但隨著Attention機制的提出,transfomer開始作為一種更為強大的特征抽取模型,開始橫掃各大NLP任務的榜單。不出意外,transformer將會取代RNN及其衍生(LSTM GRU)模型,成為NLP中,最受歡迎、最為強大的特征抽取模型。
下期預告:Attention及transformer介紹
知識星球推薦
知識星球主要有以下內容:
(1) 聊天機器人。考慮到聊天機器人是一個非常復雜的NLP應用場景,幾乎涵蓋了所有的NLP任務及應用。所以小Dream哥計劃以聊天機器人作為切入點,通過介紹聊天機器人的原理和實踐,逐步系統的更新到大部分NLP的知識,會包括語義匹配,文本分類,意圖識別,語義匹配命名實體識別、對話管理以及分詞等。
(2) 知識圖譜。知識圖譜對于NLP各項任務效果好壞的重要性,就好比基礎知識對于一個學生成績好壞的重要性。他是NLP最重要的基礎設施,目前各大公司都在著力打造知識圖譜,作為一個NLP工程師,必須要熟悉和了解他。
(3) NLP預訓練模型。基于海量數據,進行超大規模網絡的無監督預訓練。具體的任務再通過少量的樣本進行Fine-Tune。這樣模式是目前NLP領域最火熱的模式,很有可能引領NLP進入一個全新發展高度。你怎么不深入的了解?
轉載文章請后臺聯系
侵權必究
往期精選
【NLP】自然語言處理專欄上線,帶你一步一步走進“人工智能技術皇冠上的明珠”。
【NLP】用于語音識別、分詞的隱馬爾科夫模型HMM
【NLP】用于序列標注問題的條件隨機場(Conditional Random Field, CRF)
【NLP】經典分類模型樸素貝葉斯解讀
【NLP】 NLP專欄欄主自述,說不出口的話就交給AI說吧
【NLP】 深度學習NLP開篇-循環神經網絡(RNN)
【技術綜述】深度學習在自然語言處理中的應用發展史
總結
以上是生活随笔為你收集整理的【NLP】 NLP中应用最广泛的特征抽取模型-LSTM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【知识星球】有三AI编程与开源框架正式开
- 下一篇: 【知识星球】猫猫狗狗与深度学习那些事儿