筆記 總結 迴圈神經網路

2021-08-21 08:55:38 字數 3303 閱讀 1862

全連線神經網路能夠很好地擬合複雜的樣本特徵,卷積神經網路能很好地建模區域性與全域性特徵的關係。但它們都只能處理定長的輸入、輸出,而自然語言的處理物件一般是變長的語句,句子中各元素出現的順序先後暗含著時序關係,迴圈神經網路(recurrent neural network,下稱rnn)能夠較好地處理這種關係。

rnn的基本思想是:將處理物件在時序上分解為具有相同結構的單元,單元間有著時序關聯,即本單元接收上一時序對應單元的輸出,並把計算結果輸出到下一時序對應的單元。網路結構由這樣一系列的單元構成,能夠在時序上進行展開。

可以看到每一時刻,隱層不僅接收輸入,還接收了上一時刻隱層的輸出,綜合計算得到該時刻的隱層輸出。公式化過程如下: ht

=∂hk

∂u∂ j∂

u=∑t

=1t∂

jt∂h

t∑k=

1t∂h

k∂u由於

w w

也在f' role="presentation" style="position: relative;">f

f函式中,類似於

u u

,我們可以得到: ∂j

∂w=∑

t=1t

∂jt∂

ht∑k

=1t∂

hk∂w

' role="presentation" style="position: relative;">∂j∂

w=∑t

t=1∂

jt∂h

t∑tk

=1∂h

k∂w∂

j∂w=

∑t=1

t∂jt

∂ht∑

k=1t

∂hk∂

w可以看到,∂j

∂u∂ j∂

u和∂j

∂w∂ j∂

w兩部分都涉及到了連乘,當連乘項數很多,且乘子ut

u

t<1時,梯度便會接近於0;而當乘子ut

u

t>1時,梯度便會接近於無窮,這就是rnn的梯度消失/梯度**的問題。這導致rnn只能學習到短週期的關係,當週期過長(連乘項很多),便會導致學習過程出問題,因此也叫長期依賴問題

長短時記憶神經網路(long short-term memory neural network,下稱lstm)是rnn的乙個變體,可以有效地解決簡單迴圈神經網路的梯度消失/**問題。lstm 模型的關鍵是引入了一組記憶單元(memory units),允許網路學習何時遺忘歷史資訊,何時用新資訊更新記憶單元。在時刻 t 時,記憶單元ct

c

t記錄了到當前時刻為止的所有歷史資訊,並受三個「門」控制:輸入門 it

i

t, 遺忘門ft

f

t和輸出門ot

o

t。三個門的元素的值在[0, 1] 之間。lstm與原始rnn對比如下:

可以直觀感受到,原始rnn中,梯度流向的路線是相對單一的,而在lstm中通過三個門的控制,使得梯度流向更加得複雜,公式如下: ft

=σ(w

fxt+

ufht

−1+b

f)it

=σ(w

ixt+

uiht

−1+b

i)ot

=σ(w

oxt+

uoht

−1+b

o)ct

−=ta

nh(w

cxt+

ucht

−1)c

t=ft

⊙ct−

1+it

⊙ct−

ht=o

t⊙ta

nh(c

t)f t=

σ(wf

xt+u

fht−

1+bf

)it=

σ(wi

xt+u

iht−

1+bi

)ot=

σ(wo

xt+u

oht−

1+bo

)ct−

=tan

h(wc

xt+u

cht−

1)ct

=ft⊙

ct−1

+it⊙

ct−h

t=ot

⊙tan

h(ct

)遺忘門ft

f

t控制每乙個記憶體單元需要遺忘多少資訊,輸入門it

i

t控制每乙個記憶體單元需要加入多少新的資訊,輸出門ot

o

t控制每乙個記憶體單元輸出多少資訊,

σ σ

是logsitic函式。那麼這樣改進有什麼好處呢?以∂h

∂u∂ h∂

u為例,轉化為求∂h

∂c∂ h∂

c和∂h

∂o∂ h∂

o。ct

c

t是由兩部分求和構成,避免了在求導連乘時過大或過小的情況,ot

o

t同理。通過引入門控制,將梯度分流到了不同的部分,也就極大地降低了梯度消失/**出現的風險。

可是lstm在實際使用過程中帶有大量的引數,且其中門的功能多少有重疊。既想要在保持效果的基礎上加快訓練速度,又要杜絕梯度消失/**的出現。於是就有了lstm的簡化版本——門限迴圈單元(gated recurrent unit,下稱gru)。gru將輸入門和遺忘門合併成乙個門:更新門(update gate),同時還合併了記憶單元ct

c

t和隱層輸出ht

h

t,更新門zt

z

t控制當前的狀態需要遺忘多少歷史和接收多少新資訊。重置門rt

r

t用來控制接收資訊中有多少時來自於歷史資訊。gru檢視與公式如下:

基於rnn模型基礎單元衍生出的lstm、gru,能夠很好地服務於上文提到的幾種架構。在解決了梯度消失/**的問題後,rnn-based模型能夠很好地處理較長的序列。本篇到此為止,就不再細緻講具體應用了。

迴圈神經網路(RNN)筆記總結

本文僅為學習筆記,不做任何商業用途 首先對於乙個簡單的迴圈神經網路如下所示,它由輸入層 隱藏層以及輸出層組成。由上圖我們可以看到,rnn與傳統神經網路有很大的不同,它的隱藏層神經單元a不僅與輸入和輸出有關,而且自身也存在迴路,說明上乙個時刻的網路狀態資訊會對下一時刻的網路狀態產生影響。將上圖展開,得...

迴圈神經網路

原文 迴圈神經網路也可以畫成下面這個樣子 對於語言模型來說,很多時候光看前面的詞是不夠的,比如下面這句話 我的手機壞了,我打算 一部新手機。可以想象,如果我們只看橫線前面的詞,手機壞了,那麼我是打算修一修?換一部新的?還是大哭一場?這些都是無法確定的。但如果我們也看到了橫線後面的詞是 一部新手機 那...

迴圈神經網路

原文 迴圈神經網路也可以畫成下面這個樣子 對於語言模型來說,很多時候光看前面的詞是不夠的,比如下面這句話 我的手機壞了,我打算 一部新手機。可以想象,如果我們只看橫線前面的詞,手機壞了,那麼我是打算修一修?換一部新的?還是大哭一場?這些都是無法確定的。但如果我們也看到了橫線後面的詞是 一部新手機 那...