論文筆記 | Learning Long-Term Dependencies with Gradient Descent is Difficult

作者

Yoshua Bengio, Patrice Simard, and Paolo Frasconi

以下介紹中,塊引用代表評論。

摘要

指出了 RNN 所面臨的問題: temporal contingencies present in the input/output sequences span intervals ,也就是所謂的長依賴問題(long-term dependencies)。接下來指出問題的原因是基于梯度的訓練方法。這種方法中存在 trade-off bbetween efficient learning by gradient descent and latching on information for long periods 。

基于此提出的解決方法是使用 alternatives to standard gradient descent ,也就是標準梯度下降外的替代品。

即使作為反向傳播算法的提出者, Geoffrey Hinton 在 2017 年也對該算法提出了懷疑。不過近期又發了一篇 Assessing the Scalability of Biologically-Motivated Deep Learning Algorithms and Architectures ,在一些需要特殊網絡結構的數據集上比較了生物學啟發的多種訓練算法,結果發現效果還是 BP 不好。這篇 1994 年的文章講了 BP 如何不適合解決序列問題中的長依賴。值得一讀。

引言

序列任務中需要系統能夠存儲、更新信息。從過去輸入中計算得到的信息,對于輸出是很有用的。 RNN 很適合這樣的任務,因為其有內部狀態(internal state)可以表示這樣的上下文信息(context information)。這種特性來自于結構上的“循環”,靜態的神經網絡,即使引入延遲(Time Delay Neural Networks)也只能將信息儲存特定時間長度,而不能儲存不定時間長度。

RNN 的訓練算法基于損失函數的梯度下降。比如 back-propagation through time (BPTT) 算法。 Forward propagation (FP) 算法計算代價更高,但可以在線學習。另一個訓練受限 RNN 的算法中,動態神經元(dynamic neurons,只有向自己的一個反饋)和 FP 一樣在時間上只需要本地信息,但權重更新所需計算只正比于權值數(和 BP 一樣)。但其對于一般序列的存儲能力有限,因此限制了其表示能力。

Long-term dependencies 的定義是在時間 t 的輸出依賴于一個更早時間的 \tau \ll t 。盡管 RNN 的表現超過很多統計網絡,但更難訓練到最優。局部最優的原因是次優解將短期依賴納入了考慮,但沒有考慮長期依賴。 Mozer [19] 發現反向傳播很難發現長時間間隔的隨機事件。本文從理論和實驗上解釋這個問題。

很慚愧只學過 BPTT ,對于另外兩個都沒有聽說過。

一個含參數的動力系統(parametric dynamic system)的三個基本要求如下:

  1. 能夠將信息儲存任意時長
  2. 能夠對抗噪聲
  3. 參數可訓練(訓練時間合理)

定義信息鎖存(information latching)為一個動力系統將特定比特的信息在狀態變量中的長期存儲。使用 hyperbolic attractor 的形式化定義將在 4.1 節給出。

hyperbolic attractor 本身的定義也將在第 4 節給出

文章共 5 節。第 2 節提出一個只有滿足上述條件的系統才能解決的最小任務。接下來展示一個 RNN 解法,和一個負實驗結果,表明梯度下降連這個簡單任務都不適合。第 4 節的理論結果解釋了一個系統要么穩定能夠抵抗噪音,要么能使用梯度下降法高效訓練,但不能同時達到。否則,在時間 t 的狀態對于時間 0 的狀態的導數將隨 t 增大而指數減小。

因此,反向傳播(以及一般的梯度下降算法)對于長序列效率低,因此不滿足條件 3 。第 5 節提出了新的算法,并將其與反向傳播的變體和模擬退火(simulated annealing)進行比較。使用的是輸入輸出依賴可以控制的簡單任務。

第 2 節 說明問題的最小任務

該任務是一個序列二分類問題,最終的類別只取決于前 L 個輸入值。

也即類別 \mathcal{C}(u_1,\dots,u_T) = \mathcal{C}(u_1,\dots,u_L) 。而整個輸入序列可以具有任意長度 T \gg L

該任務中,長度 L 之后的輸入都是不相關的噪聲。因此,模型需要有效地儲存信息才能解決這個問題。本次實驗中, L 之后的輸入是均值為 0 的高斯噪聲。

上面提到第 3 個標準是可學習性,這里有兩個方面:第一,處理前 L 步的輸入并正確分類。第二,將信息儲存在狀態變量中任意時長。在這個任務中,前面的分類和后面儲存的時長無關,因此一個簡單的解決方法是使用一個鎖存子系統(latching subsystem),接收前面分類子系統的信息作為輸入。

由于我們希望結果不與特定的分類任務相關(也就是與分類子系統相獨立),因此我們只關注后面的鎖存系統。一個鎖存系統想要處理任意輸入序列,就需要能將錯誤傳播回前面的系統,并檢測到引發鎖存的事件。(propagate error information to a module that feeds the latching subsystem and detects the events leading to latching)

因此,我們將上面的任務修改如下:前 L 個輸入可供輸入算法調參(can be tuned by the learning algorithm), L 步之后的輸入是隨機的高斯噪聲。目標函數是二分類(期望輸出值分別是 ±0.8)的平方誤差和。

經過改造后, h_t\ (t=1,\dots, L) 代表了類別信息的計算結果。直接學習 h_t 比從輸入中學習參數 \theta 容易。而且如果 h_t 是對應時間步的輸入 u_t 的帶參函數的話,也即 h_t(u_t, \theta) ,代價函數對于 h_t 的導數是一樣的(BPTT 下)。如果因為梯度消失導致 h_t 不能被訓練出來的話,那作為帶參函數同樣訓練不出來。

研究鎖存子系統的方法十分巧妙。鎖存子系統想要達到預期的功能,至少要能將分類結果的正誤信息傳播回分類子系統。也即假設最后是 1 類,至少應該有方法將其通知到分類子系統。而我們觀察其能否通知的方式,就是讓其在前 L 步輸入處還原最終的分類結果。對于原來的任務來說,我們通過訓練參數讓這個結果最終在 L 步處出現。而訓練的依據就是在第 L 步我們接受到了鎖存子系統傳播回來的正確類別的信息。

舉一個例子來說明。假設原來的任務 L = 3 ,接受到一個序列 101001... ,假設標簽為第 1 類。分類系統應該在接受到 101 這三個時間步時就已經得出分類標簽為 1 這個結論了。接下來,鎖存系統將 1 這個結果儲存起來,直至第 T 步輸出。

然而我們只希望關注鎖存子系統。在原任務中,如果最終標簽是 1 ,鎖存子系統應該能反向傳播到第 3 個時間步,告訴分類子系統標簽是 1 。因此,假如序列最終的標簽是 1 ,我們希望無論前 3 個輸入是什么,都能得到這一標簽。所以鎖存子系統只需要把真實標簽傳播給前 3 步的分類系統即可。假如沒有分類系統,我們就讓鎖存子系統在前 3 個位置還原最終的標簽。

也就是,假設序列的最終標簽是 1 (對應目標值 0.8),鎖存子系統應該在前 3 步輸出 0.8, 0.8, 0.8 ,如果序列最終標簽是 0 ,鎖存子系統應該在前 3 步輸出 -0.8, -0.8, -0.8 。假如我們有真的分類子系統,它應當能在這里拿到真實的標簽,并據此將其與輸入序列聯系起來(通過調整帶參函數的參數),比如 101 或者 010 等等。

個人感覺上面的切片測試方法不僅適合測試鎖存,應該適合各種具有確定期望功能的子系統。舉例來說,假設一個子系統需要進行 (+1) 這個運算,應當有能力對于輸出 x 在輸入處還原期望的輸入 (x-1) ,這樣才能通知前面的系統,我需要 (x-1) 。

當然這只是完成鎖存或其他功能的必要條件。

關于導數相同一段,這是因為假設 h_t 僅取決于 u_t (而非其他時間步的輸入),因此 h_t(u_t, \theta) 是一個 context-free 的函數,根據求導的鏈式法則,對 h_t 的導數相同,而不論它是變量還是另一個變量的函數。

關于為何選取目標函數值為 0.8 ,因為 tanh 函數值域為 (-1, 1) ,而下一層的輸入在 tanh(-1) = -0.76 到 tanh(1) = 0.76 之間。因此多個 tanh 單元疊加值域就在 (-0.8, 0.8) 之間。

第 3 節 一個簡單的 RNN 解決方案

見圖 Fig. 1a.

Fig 1

這是一個單一神經元的 RNN ,如果 w \gt 1 ,有兩個吸引子 \pm \bar{x} ,值取決于 w

假設初值 x_0 = -\bar{x} ,文獻 [7, 8] 表明存在 h^\star \gt 0 滿足:

  1. x_t maintains its sign if |h_t| \lt h^\star ,也即小于閾值的輸入不會改變狀態的符號。
  2. there exists a finite number of steps L_1 such that x_{L_1} \gt \bar{x} if h_t \gt h^\star \ \forall t \le L_1 。也即假如超過正向閾值的輸入持續了超過 L_1 步后,會在 L_1 步時將狀態轉到正向吸引子 \bar{x}

對于初值為正的情況有相應的對稱結論。

w 固定, L_1 隨著 |h_t| 的增加而減小。

據此我們可以得到:

  1. 該系統可以儲存一個 bit 的信息。通過最終輸出的符號確定。
  2. 存儲是通過將足夠強(大于 |h^\star|)的輸入保持足夠長的時間實現的。
  3. 小的(小于 |h^\star|)噪聲不會影響輸出的符號。無論持續時間有多長。

參數 w 也是可訓練的,更大的 w 對應于更大的閾值 h^\star ,對抗噪聲的能力也就越強。

比如可以通過調整,使得 h^1_t \ge Hh^0_t \le H ,其中 H \gt h^\star 來實現。

從上面的 Fig. 1b. 我們可以看到成功學習出來了加粗部分的前 3 個 h_t

下面看各參數的影響。

Fig 2

首先 Fig. 2a 是噪聲的標準差 s 和初始的權值 w_0 的影響。我們可以看到隨著 s 的增大和 w_0 的減小,效果變差。

這很符合我們的直覺,噪聲越強,對抗噪聲的閾值越低,越容易丟失存儲。

Fig. 2b 展示了隨著 T 的增加,收斂性變差。這表明,梯度下降即使對于長時間存儲 1 位信息也很困難。

第 4 節 使用動力系統學習鎖存

本節以基于動力系統的實時識別器為例子,說明 RNN 能夠按雙曲吸引子(hyperbolic attractors)的方式魯棒性地儲存信息的條件,會導致梯度消失的問題。

非自動(non-autonomous)的離散時間的系統,帶有額外的輸入:

a_t = M(a_{t-1}) + u_t

和自動系統(autonomous system):

a_t = M(a_{t-1})

其中, a_t 代表系統狀態, u_{t} 代表輸入。兩者是 n 維向量, M 代表非線性映射。

不帶有額外輸入的自動系統,可以通過引入額外狀態變量和對應輸入的方式,轉變成非自動的系統。

比如 a_t = N(a_{t-1}, u_{t-1})a_tu_t 分別為 n 維和 m 維向量)可以轉化為 a_t^\prime = N^\prime(a_{t-1}^\prime) + u_t^\prime ,其中 a_{t}^\prime = (a_t, y_t) 是一個 n+m 維向量, u_t^\prime = (0, u_t) 即前 n 個分量為 0 ,N^\prime(a_t^\prime) = (N_t(a_{t-1}, y_{t-1}), 0) 即后 m 個分量為 0 。

最終,y_t = u_t

以上轉換相當于將本來的內部狀態變量當做系統的額外輸入。使用映射計算出下面的 n 維狀態后,就將剩下的 m 維分量丟棄。再從外界輸入同樣的 m 維分量,組合在一起恢復內部狀態,作為下一次映射的輸入。

注意到具有 N^\prime 形式的非自動系統也可以等價轉換為自動系統。因此,不失一般性,我們只考慮非自動系統。

下面說明,當使用雙曲吸引子進行鎖存時,只有兩種情況會發生:要么對噪聲十分敏感,要么代價函數在 t 時刻對于 0 時刻的導數,將隨 t 增加而指數下降。

4.1 分析

為了鎖存一位信息,希望將系統的活動 a_t 限制在定義域的一個子集 S 上。這樣能區分兩個狀態:在 S 內,和不在 S 內。為了使 a_t 保持在其中,動力系統可以將其放在一個吸引子的吸引盆(basin of attraction)中。(吸引子也可以是子流形或子空間的吸引子)。想要“擦除”這一位信息,系統將 a_t 從吸引盆中推出,可能放進另一個吸引盆中。本節說明,如果吸引盆是雙曲的(hyperbolic),或者可以轉化為雙曲的(比如周期穩定吸引子 periodic stable attractor),那么對 t_0 輸入的導數會迅速消失。

定義 1 : E 是映射 M 的不動點,如果 E = M(E)

定義 2 : 不動點點集 X 是可微映射 M 的雙曲吸引子,如果 \forall a \in X, \ M^\prime(a) 的特征值的絕對值小于 1 。

吸引子可能包含一個點(固定點吸引子, fixed point attractor),有限個點(周期性吸引子, periodic attractor)或者無限個點(混沌吸引子, chaotic attractor)。

一個穩定的固定點吸引子,對于映射 M 是雙曲的;一個穩定的周期性的吸引子,設其周期為 l ,則對于映射 M^l 是雙曲的。

RNN 的吸引子的種類取決于權值矩陣。對于 a_t = W\ \tanh(a_{t-1})+u_t ,如果 W 是對稱的,且其最小特征值大于 -1 的話,那么其所有吸引子都是固定點。如果行列式小于 1 或者系統是線性且穩定的,那么只有在原點處有一個固定點吸引子。

以上關于吸引子的知識全沒有接觸過。翻譯了一下。僅從直觀上進行理解。

定義 3 : 一個吸引子 X 的吸引盆 \beta(X) ,指映射 M 下收斂于 X 的點集。即 \beta(x) = \{ a\ :\ \forall \epsilon, \exists l, \exists x \in X \text{ s.t. } ||M^l(a)|| \lt \epsilon\}

定義 4 : \Gamma(X) 是雙曲吸引子 X 吸引盆中的 reduced attracting set,如果滿足 \forall l \ge 1(M^l)^\prime(y) 的所有特征值小于 1。

根據定義有, X \subset \Gamma(X) \subset \beta(X)

reduced 應該翻譯成“剩余”還是“減小”?不太確定。這里只要求特征值小于 1 ,雙曲吸引子要求特征絕對值小于 1 ,故雙曲吸引子是 Gamma(X) 的子集。直覺上,特征值小于 1 可能對應上面“將其保持在吸引盆”中的要求。

定義 5 : 一個系統可以魯棒性地在 t_0 鎖存若干雙曲吸引子中的一個吸引子 X ,如果 a_{t_0}X 對于定義自動系統的映射 M 的 reduced attracting set 中。

對于非自動動力系統,只需 a_t \in \Gamma(X) \text{ for } t \gt t_0 。接下來證明為什么使用 \Gamma(X) 來儲存具有魯棒性。

定理 1-3 及證明請查閱原文。最終證明了如果在 beta(X) 中,代表不確定性的球體會越來越大,因此輸入的微小擾動可能將軌跡引導進入一個錯誤的吸引盆,即系統無法對抗噪聲。相反,如果在 Gamma(X) 中,則能在輸入中找到一個界,保證 a_t 一直在 X 中的點的特定距離內。因此是魯棒的。見 Fig. 3 。

Fig 3

定理 4 : 當輸入 u_t 使得系統在時間 0 后保持在 X 上魯棒時,隨著 t 趨近于無窮,a_ta_0 的偏導趨近于 0 。

也就是說對抗噪聲的代價是對過去事件的導數與近期事件相比會小很多。

4.2 對權重梯度的影響

\frac{\partial C_t}{\partial W} = \sum_{\tau \le t} \frac{\partial C_t}{\partial a_\tau}\frac{\partial a_\tau}{\partial W} = \sum_{\tau \le t} \frac{\partial C_t}{\partial a_t}\frac{\partial a_t}{\partial a_\tau} \frac{\partial a_\tau}{\partial W}

因此,相對于較近的事件,\tau \ll t 的前兩項的乘積較小,因此對最終的結果影響較小。也就是,即使可能存在一個 W 使得 a_\tau 進入一個更好的吸引盆,但對 W 的梯度不會反映這種可能性。

舉例來說,假設 A , B 兩個系統順次相接完成一項任務。且要求 B 使用 A 在 0 時刻檢測到事件的信息,在遙遠的 T 時刻使用該信息計算錯誤。(第 2 節定義的任務符合這個特征)。如果 B 訓練不足,不能將 A 的結果鎖存,那么 T 時刻的錯誤對 A 在 0 時刻產生的結果影響非常小。相反,如果 B 能夠將信息儲存很長時間,正確的梯度會被傳播回去,但卻迅速消失成為小值。因此, A 很難訓練。

第 5 節 替代的方法

本節中給出了模擬退火等算法作為梯度下降的替代算法并在多個任務上測試了結果。每個任務上都有算法比反向傳播更佳。

第 6 節 結論

一個未進行討論的點是類似的問題是否會在混沌吸引子中出現。

這個問題可能也會在深度前饋神經網絡(feedforward network)中出現,因為 RNN 按時間展開就是一個共享權值的前饋神經網絡。

本文研究并不意味著不能為特定任務訓練神經網絡,相反,如果有先驗知識可以設置神經網絡的權值共享和初值,利用起來會提升效果。比如在 latch problem 和 parity problem 中,先使用短序列進行訓練可以讓系統迅速進入正確的區域。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。