3、CNN、RNN、LSTM

1、CNN:就是把每個字轉換成向量,再拼接成圖像的樣式,再用卷積核處理,再池化和拼接,再softmax得到分類結果,卷積核的作用能夠整合一些上下文信息。

ç½ç»ç»æ

2、RNN:前向網絡中加入了前一個字的信息,隱含層嘛;能夠整合更多的上下文信息,效果更好,但是會出現梯度消失和爆炸。產生的原因是什麼呢?在bp過程中(這裏就不推導了),當前層參數的導數是後面所有層導數跌成的結果,主要包含激活函數的導數和權值矩陣兩個方面;梯度爆炸是因爲初始化權重矩陣太大,導致每一層的權重矩陣和激活函數導數的乘積都大於1,;所以初始化權重矩陣不易太大;梯度消失是因爲激活函數的導數明顯小於1,導致跌成之後遠小於1,如sigmoid函數的導數永遠小於0.25,tan函數的導數值分佈也比較小,不能使用激活函數relu,因爲這個還是會導致梯度爆炸。hinton的論文中說了替換成relu會導致很大的輸出值,舉個例子:

a(i) = Wf(i-1) +Ux(i) +b(i)   激活函數的輸入,x(i)是每個階段的輸入,

f(i) = f[a(i)]  激活函數的輸出

rnn中每一層的W相同,所以在求當前層的變化時,疊乘由於激活函數導數都是1,那麼就是W的n次方,如果把W初始化單位矩陣還ok,如果不是的話,就很容易梯度爆炸。而cnn不同的是各個W是不同的,這樣的話就會避免梯度爆炸。

或者使用batch normalization,使傳入激活函數的數值分佈趨於正態分佈,這樣的話sigmoid函數的導數值永遠在最大值附近。再或者就是做梯度截斷解決梯度爆炸,最後一種方法就是LSTM。

è¿éåå¾çæè¿°

3、LSTM:加入了四個門,忘記門+輸入門+狀態門+輸出門;門的作用是有選擇性地保留信息。在更新權值的過程中,是激活函數的值和權重矩陣的疊乘,而不是激活函數的導數值,激活函數的值通過偏置可以在1附近,這樣就解決了梯度消失的問題。

LSTM中上一層的狀態c並不向RNN中那樣全部信息輸入到當前層,而是受輸入們和遺忘門的共同控制。

如下圖所示,狀態門使用了tan函數,其餘三個門使用了sigmoid函數。

è¿éåå¾çæè¿°

上面說的一般的激活函數有sigmoid、tan、relu及變形

損失函數有交叉熵、0-1損失、平方損失等

發佈了36 篇原創文章 · 獲贊 19 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章