|
本篇介紹在NLP中應用最為廣泛的特征抽取模型LSTM。詳細介紹LSTM提出的由來及其模型結構,并由此分析了LSTM能夠解決RNN不能夠對長序列進行處理和訓練的原因。 作者&編輯 | 小Dream哥 上周介紹了RNN模型結構及其反向傳播和正向傳播機制。文末提到了RNN會出現(xiàn)梯度消失等問題,使得訓練變得困難,但因為篇幅限制,沒有介紹其具體的原因,后面小Dream哥在有三AI-NLP知識星球里詳細介紹了這一方面的內容,感興趣的同學可以移步如下鏈接: RNN梯度消失原因詳解:https://t./7qzRBeE 那好,既然RNN有這樣的問題,該怎么解決呢?我們今天的主角LSTM(Long Short-Term Memory)就該登場了。 1 LSTM的提出 在LSTM提出之前,RNN的訓練基于BPTT(Back-Propagation Through Time)或者RTRL(Real Time Recurrent Learning)。通過這兩種方式對RNN進行訓練時,當誤差在序列內進行傳播時,會出現(xiàn)梯度消失或者爆炸的情況。 當出現(xiàn)梯度消失時,在訓練時,權重會出現(xiàn)搖擺和震蕩;梯度消失使得訓練會耗費大量的時間,甚至干脆就停滯。 基于這樣的情況,兩位大神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為激活函數(shù)。 這樣,梯度消失或者爆炸的問題是不是就可以解決了? 因此,Sepp Hochreiter和Jürgen Schmidhuber提出了CEC(Constant Error Carrousel),這也是LSTM的核心特點。 所謂CEC,就是令 Sepp Hochreiter和Jürgen Schmidhuber指出可以選擇恒等函數(shù)作為激活函數(shù),并且令w_j,j=1便可滿足上式,保證梯度在誤差隨時間傳遞之后不至于出現(xiàn)梯度消失或者梯度爆炸。這個想法很簡單和樸素,因此Sepp Hochreiter和Jürgen Schmidhuber稱之為Naive Approach。 但是對RNN僅僅是做這樣的修改也還會有一些問題,不管是輸入權重還是輸出權重,在更新都既要考慮“記住”前面時刻的內容;又要考慮不要讓前面時刻的內容干擾到當前時刻的輸入,這種矛盾會使訓練變得困難。因此兩位大神針對這個問題,設計新的模型結構,下面介紹LSTM的模型結構。 2 LSTM的結構 現(xiàn)在網(wǎng)絡上講LSTM結構的文章,實在是太多了,小Dream哥本來是不想再講的。出于文章完整性和系統(tǒng)性的考慮,這里還是將LSTM的模型結構和前向傳播過程列一下。 可以看到LSTM的結構要比RNN的復雜的多,其主要是增加了細胞狀態(tài)和3個門結構。看上去比較復雜,同學們先不要著急,下面我們一步一步來講一講LSTM的結構。 如上圖,細胞狀態(tài)C_t橫向穿過,看起來像一條傳送帶,只是經(jīng)過了少量的線性變化,因此狀態(tài)容易保持下來。 上圖是LSTM的第一個門,遺忘門。這個門根據(jù)輸入信息(h_t-1和x_t)決定要忘記細胞狀態(tài)C_t-1的哪些部分。 接下來是信息更新門,決定了細胞狀態(tài)C_t,它分為兩個部分。 第一步,根據(jù)輸入信息,用tanh產(chǎn)生該時刻需要更新到細胞狀態(tài)中的內容;用sigmoid函數(shù)產(chǎn)生更新的比例。 第二步,將需要更新的內容更新到細胞狀態(tài)中去,生成C_t。 最后,是輸出門。根據(jù)新的細胞狀態(tài)和輸入信息,產(chǎn)生新的輸出h_t。 上面大致介紹了LSTM的結構,及其前向傳播過程,圖片來自: http://colah./posts/2015-08-Understanding-LSTMs/ 這里先總結一下,LSTM在原本RNN的基礎上增加了CEC的內容,CEC保證了誤差以常數(shù)的形式在網(wǎng)絡中流動,這部分通過引入細胞狀態(tài)C來體現(xiàn)。并且,為了解決輸入和輸出在參數(shù)更新時的矛盾,在CEC的基礎上添加3個門使得模型變成非線性的,就可以調整不同時序的輸出對模型后續(xù)動作的影響。 3 LSTM局限性 LSTM提出之后,在語音處理、機器翻譯、實體識別等NLP領域迅速取得很好的效果,在工業(yè)界獲得很好的應用。但其也有一定的局限性,下面我們做一下介紹。 (1) 相較于RNN,LSTM的網(wǎng)絡結構復雜很多,因為引入了更多的權重參數(shù),這增加了計算的復雜度。 (2) 不管是RNN,還是它的衍生LSTM等,都需要隨著時間推移進行順序處理。因此對于輸入序列的處理效率很低。 (3) 特征提取能力不強,t時刻的輸入不能提取到t時刻之后序列信息的內容。這點在transformer出來之后,體現(xiàn)的尤為明顯。 上文詳細講述了LSTM提出的由來,大致介紹了其模型結構,由此分析了其能夠解決RNN無法訓練的問題。最后,介紹了LSTM的局限性。 LSTM是一個應用廣泛的模型,但隨著Attention機制的提出,transfomer開始作為一種更為強大的特征抽取模型,開始橫掃各大NLP任務的榜單。不出意外,transformer將會取代RNN及其衍生(LSTM GRU)模型,成為NLP中,最受歡迎、最為強大的特征抽取模型。 下期預告:Attention及transformer介紹 知識星球推薦 知識星球主要有以下內容: (1) 聊天機器人。考慮到聊天機器人是一個非常復雜的NLP應用場景,幾乎涵蓋了所有的NLP任務及應用。所以小Dream哥計劃以聊天機器人作為切入點,通過介紹聊天機器人的原理和實踐,逐步系統(tǒng)的更新到大部分NLP的知識,會包括語義匹配,文本分類,意圖識別,語義匹配命名實體識別、對話管理以及分詞等。 (2) 知識圖譜。知識圖譜對于NLP各項任務效果好壞的重要性,就好比基礎知識對于一個學生成績好壞的重要性。他是NLP最重要的基礎設施,目前各大公司都在著力打造知識圖譜,作為一個NLP工程師,必須要熟悉和了解他。 (3) NLP預訓練模型?;诤A繑?shù)據(jù),進行超大規(guī)模網(wǎng)絡的無監(jiān)督預訓練。具體的任務再通過少量的樣本進行Fine-Tune。這樣模式是目前NLP領域最火熱的模式,很有可能引領NLP進入一個全新發(fā)展高度。你怎么不深入的了解?
![]() ![]() |
|
|