先來一篇簡單易懂的激活函數(shù)理解解解乏
RNN
RNN(Recurrent Neural Networks,循環(huán)神經(jīng)網(wǎng)絡(luò))不僅會學(xué)習(xí)當(dāng)前時刻的信息,也會依賴之前的序列信息。由于其特殊的網(wǎng)絡(luò)模型結(jié)構(gòu)解決了信息保存的問題。所以RNN對處理時間序列和語言文本序列問題有獨特的優(yōu)勢。遞歸神經(jīng)網(wǎng)絡(luò)都具有一連串重復(fù)神經(jīng)網(wǎng)絡(luò)模塊的形式。在標(biāo)準的RNNs中,這種重復(fù)模塊有一種非常簡單的結(jié)構(gòu)。

那么S(t+1) = tanh( U*X(t+1) + W*S(t))。tanh激活函數(shù)圖像如下:

激活函數(shù)tanh把狀態(tài)S值映射到-1和1之間.
RNN通過BPTT算法反向傳播誤差,它與BP相似,只不過與時間有關(guān)。RNN同樣通過隨機梯度下降(Stochastic gradient descent)算法使得代價函數(shù)(損失函數(shù))值達到最小。

BBPT算法規(guī)則如下:

但是隨著時間間隔不斷增大時,RNN會喪失學(xué)習(xí)到連接很遠的信息能力(梯度消失)。原因如下:
RNN的激活函數(shù)tanh可以將所有值映射到-1至1之間,以及在利用梯度下降算法調(diào)優(yōu)時利用鏈式法則,那么會造成很多個小于1的項連乘就很快的逼近零。
依賴于我們的激活函數(shù)和網(wǎng)絡(luò)參數(shù),也可能會產(chǎn)生梯度爆炸(如激活函數(shù)是Relu,而LSTM采用的激活函數(shù)是sigmoid和tanh,從而避免了梯度爆炸的情況)。一般靠裁剪后的優(yōu)化算法即可解決,比如gradient clipping(如果梯度的范數(shù)大于某個給定值,將梯度同比收縮)。
合適的初始化矩陣W可以減小梯度消失效應(yīng),正則化也能起作用。更好的方法是選擇ReLU而不是sigmoid和tanh作為激活函數(shù)。ReLU的導(dǎo)數(shù)是常數(shù)值0或1,所以不可能會引起梯度消失。更通用的方案時采用長短時記憶(LSTM)或門限遞歸單元(GRU)結(jié)構(gòu)。
那么,接下來我們來了解LSTM是如何解決梯度消失問題的
LSTM
LSTM (Long Short Term Memory networks)的“門”結(jié)構(gòu)可以截取“不該截取的信息”,結(jié)構(gòu)如下:

在上面的圖中,每條線表示一個完整向量,從一個節(jié)點的輸出到其他節(jié)點的輸入。粉紅色圓圈代表逐點操作,比如向量加法,而黃色框框表示的是已學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)層。線條合并表示串聯(lián),線條分叉表示內(nèi)容復(fù)制并輸入到不同地方。
LSTMs核心理念
LSTMs的關(guān)鍵點是細胞狀態(tài),就是穿過圖中的水平線。
單元狀態(tài)有點像是個傳送帶。它貫穿整個鏈條,只有一些線性相互作用。這很容易讓信息以不變的方式向下流動。

其中,C(t-1)相當(dāng)于上面我們講的RNN中的S(t-1), C(t)相當(dāng)于S(t).
LSTM有能力向單元狀態(tài)中移除或添加信息,通過門結(jié)構(gòu)來管理,包括“遺忘門”,“輸出門”,“輸入門”。通過門讓信息選擇性通過,來去除或增加信息到細胞狀態(tài). 模塊中sigmoid層輸出0到1之間的數(shù)字,描述了每個成分應(yīng)該通過門限的程度。0表示“不讓任何成分通過”,而1表示“讓所有成分通過!”
第一步

上圖是遺忘門的展示,首先將上一時刻的輸出h(t-1)和這一時刻的輸入進x(t)行拼接(concat),然后判斷以多大的程度來保留這部分信息(得到概率值).
第二步

上圖是輸入門結(jié)構(gòu),i(t)等式表達的是我們以多大概率來更新信息,

表示現(xiàn)在的全部信息。
第三步

首先把舊狀態(tài)與f(t)相乘,就丟棄掉我們確定需要丟棄的信息,然后將

以確定要更新的信息,通過相加操作得到新的細胞狀態(tài)Ct.
第四步

LSTM和RNN相同都是利用BPTT傳播和隨機梯度或者其他優(yōu)化算法來擬合參數(shù)。
至此,我們在這里再次強調(diào)一下LSTM是如何解決長時依賴問題的:
在RNN中,當(dāng)前狀態(tài)值S(t)= tanh(x(t) * U + W * S(t-1)),正如上面所述在利用梯度下降算法鏈式求導(dǎo)時是連乘的形式,若其中只要有一個是接近零的,那么總體值就容易為0,導(dǎo)致梯度消失,不能解決長時依賴問題。
而LSTM更新狀態(tài)值:

是相加的形式,所以不容易出現(xiàn)狀態(tài)值逐漸接近0的情況。