本課主要包含3方面的內容:1,普通RNN簡介;2,普通RNN的後向傳播;3,雙向RNN簡介及其後向傳播。

一,普通RNN簡介:

在許多使用場景下,輸入是一個序列,輸出是一個值或一個序列。比如,文本主題分析,輸入一個單詞序列,輸出序列所屬的主題;機器翻譯,輸入一個英文單詞序列,輸出一個法語單詞序列等等。

1,普通RNN的簡化表示:非常重要!深入理解RNN的關鍵

(1),每次的輸入(藍色)是一個向量;

(2),每一個隱含層(綠色)都有多個神經元;

(3),輸出層(紅色)同樣有多個神經元;

(4),但,他們都將以一個單獨的小方格來表示。即,每個小方格,代表擁有許多神經元的網路層(每一層默認全連接)。

2,引出普通RNN:

2.1,無限響應模型:

股價預測任務,比如,已知歷史股價信息,預測未來一天的股價漲跌,定義「有限響應模型」(Finite-response model),即,發生在今天的結果會對未來N天的輸出產生影響。

如果需要更多的歷史信息,模型上只需增大N即可。但在具體實現上,更複雜的網路需要更多的CPU和內存。對長期趨勢(年週期)下的股價預測來說,幾乎是不可接受的,所以,我們需要一個在計算上可接受的「無限響應模型」(Infinite-response model),比如,」使用外生輸入的非線性自回歸網路「(NARX),它在t=0時刻的輸入會影響任意時刻的輸出結果,並且每一列在形式上都相同。

可見,在NARX網路中,對過去的「記憶」蘊含在當前的輸出結果中,並非以多個輸入節點的形式出現在網路里。

2.2,記憶單元:

在數學表達上,定義一個存儲在記憶單元中,能記憶過去信息的「記憶變數」m_t:

歷史上,曾經出現過很多帶記憶單元的網路,比如,Jordan網路中,僅僅將過去的輸出總體求平均,來作為記憶單元,它考慮的是全部的過去信息,而不是最近的信息。

2.3,普通RNN網路:

狀態空間模型(the state-space model),是無限響應系統的一個可選模型,其中, h_t 記錄的網路的狀態,即模型直接將記憶單元嵌入到狀態單元中,狀態也同時記錄了過去的全部信息,因此,該模型需要一個初始狀態 h_{-1} 。(切記,每個方格都是一個多維向量。)

因為RNN每一列都相同,因此,示意圖有若干種簡易表示法,對單層RNN來說:

二,普通RNN的後向傳播:

後向傳播的目的是,在給定的 (X_i, D_i) 的輸入序列上,最小化全部輸出序列 Y_iD_i 的誤差。

1,前向傳播:向網路灌入一條完整的數據序列,逐時間步,依次生成預測輸出 Y_i

1.1,公式推導:

# 假設某RNN模型,包含L個隱含層和1個輸出層;

# 假設 h(-1,*) 已知; b(*) 是偏置向量;

# W_c(*) 是適用於當前時間步輸入的權重矩陣;

# W_r(*) 是適用於前一時間步狀態的權重矩陣;

# W_r(*) 是適用於輸出層的權重矩陣。

2,後向傳播:對每一條訓練數據,後向傳播計算梯度。(簡單單層RNN,只是線畫彎了~)

2.1,變數簡介:

# DIV是輸出向量,輸出標量的函數,它不一定是逐時間步的誤差求和,除非你明確定義;

# W_r(*) 是時間步t時的輸出向量, Y_i{(t)} 是輸出向量的第i個元素;

# h(t) 是隱含層再時間步t時的輸出,本例中假設只有1個隱含層;

# Z^{0}{(t)} 是隱含層在時間步t時激活前的響應值, Z^{1}{(t)} 則對應輸出層的響應值。

2.2,公式推導:(只理解了框架)

# 假設前向傳播已經完成;

# Jacobian(x,y)是y關於x的雅克比矩陣;

# 假設dY(t) = gradient(div,Y(t)),對所有t適用;

# 假設所有dz,dh,dW和db均被初始化為0。

三,雙向RNN網路簡介:

# 不僅要學習 w_1w_6 ,還要學習 w_2,w_3,w_4w_5

# 正向過程從t=0至t=T,反向過程從t=T至t=0,都只計算隱含層狀態;

# 結合正向和反向的隱含層狀態,計算每個時間步t的最終輸出;

1,前向傳播:

# 下標f表示正向過程,下標b表示反向過程;

# 假設 h_f{(-1,*)}h_b{(inf ,  *)} 已知。

2,後向傳播:分別對正向和反向網路,執行後向傳播:(只理解了框架)


推薦閱讀:
相關文章