在前面的 Transformer 的文章中有提到了 auto-regressive 的特質。

When Recurrent Models Don’t Need to be Recurrent 這篇文章以及他的論文當中又在重述了這件事。

他們探討了是不是所有 recurrent 模型都可以被換成 auto-regressive 的模型呢?

答案幾乎是肯定的。為什麼說幾乎是肯定的呢?因為他需要滿足一些條件,才能達成訓練上模型的穩定性要求。

Stable recurrent models

問題描述是這樣的:

理論上來說,一個有 好行為(well-behaved) 的 recurrent neural network 是否總是可以被差不多大小的 feed-forward network 取代,在不損失效能的情況下?

這時候我們就需要知道什麼樣的 RNN 是有好行為(well-behaved)的?

當然你可以設計一個非線性的 RNN 讓 feed-forward network 無法取代,只要讓他無法用 gradient descent 訓練起來就可以了。

也就是說,好行為 的 RNN 就是,有辦法用 gradient descent 訓練起來,而不會讓梯度爆炸或是消失的模型。這樣穩定(stable)的模型就有辦法用 feed-forward network 去逼近。

論文中證明了一個重要的定理(論文中有正式的版本),我先寫他的原始描述,然後解釋:

Thm.

Assume the system $\phi$ is $\lambda$-contractive. Under additional smoothness and Lipschitz assumptions on the system $\phi$, the prediction function $f$, and the loss $p$, if

$$
k \ge O(log(N^{1/(1-\lambda)^3} / (\epsilon (1-\lambda)^2)))
$$

then after N steps of projected gradient descent with decaying step size $\alpha_t = O(1/t)$, $||w_{recurr} - w_{trunc}|| \le \epsilon$, which in turn implies $||y_t(w_{recurr}) - y_t^k(w_{trunc})|| \le O(\epsilon)$.

當你把以上定理認真看完之後你就會昏了。基本上是說,一個模型本身會要滿足幾個條件:

  1. $\lambda$-contractive
  2. additional smoothness
  3. Lipschitz assumptions

這幾個條件簡單來說,就是你的 loss function 需要是平滑的,那麼你的梯度就不會起伏太大,導致梯度爆炸或是消失的狀況。在這樣的狀況下,就可以用 feed-forward network 去逼近。

Feed-forward network 逼近

動畫取自 WaveNet 官網

那用 feed-forward network 去逼近有什麼好處呢?

文章中提到三大好處:

  1. 平行化:你可以善用 GPU 加速
  2. 可訓練:以往 RNN 都不好訓練,但是如果可以換成 feed-forward network 就會比較容易訓練起來
  3. 推論速度:在速度上更快

近年來非常多的模型都採用了 auto-regressive 的架構,從前面提到的 Transformer,到新版的 Google 小姐 - WaveNet 都用了這樣的架構。