在過去幾年中,雖然循環(huán)神經(jīng)網(wǎng)絡(luò)曾經(jīng)一枝獨秀,但現(xiàn)在自回歸 Wavenet 或 Transformer 等模型在各種序列建模任務(wù)中正取代 RNN。機器之心在 GitHub 項目中曾介紹用于序列建模的 RNN 與 CNN,也介紹過不使用這兩種網(wǎng)絡(luò)的 Transformer。而本文主要關(guān)注循環(huán)網(wǎng)絡(luò)與前饋網(wǎng)絡(luò)在序列建模中有什么差別,以及到底什么時候選擇卷積網(wǎng)絡(luò)替代循環(huán)網(wǎng)絡(luò)比較好。
機器之心 GitHub 項目:從循環(huán)到卷積,探索序列建模的奧秘
基于注意力機制,機器之心帶你理解與訓(xùn)練神經(jīng)機器翻譯系統(tǒng)
在這篇博文中,我們來探討循環(huán)網(wǎng)絡(luò)模型和前饋模型之間的取舍。前饋模型可以提高訓(xùn)練穩(wěn)定性和速度,而循環(huán)模型表達能力更勝一籌。有趣的是,額外的表現(xiàn)力似乎并沒有提高循環(huán)模型的性能。
一些研究團隊已經(jīng)證明,前饋網(wǎng)絡(luò)可以達到最佳循環(huán)模型在基準(zhǔn)序列任務(wù)上取得的結(jié)果。這種現(xiàn)象為理論研究提供了一個有趣的問題:
為什么前饋網(wǎng)絡(luò)能夠在不降低性能的前提下取代循環(huán)神經(jīng)網(wǎng)絡(luò)?什么時候可以取代?
我們討論了幾個可能的答案,并強調(diào)了我們最近的研究《When Recurrent Models Don't Need To Be Recurrent》,這項研究從基本穩(wěn)定性的角度給出了解釋。
兩個序列模型的故事
循環(huán)神經(jīng)網(wǎng)絡(luò)
循環(huán)模型的眾多變體都具有類似的形式。該模型憑借狀態(tài) h_t 梳理過去的輸入序列。在每個時間步 t,根據(jù)以下等式更新狀態(tài):
其中 x_t 是時刻 t 的輸入,φ 是可微分映射,h_0 是初始狀態(tài)。在一個最原始循環(huán)神經(jīng)網(wǎng)絡(luò)中,該模型由矩陣 W 和 U 參數(shù)化,并根據(jù)下式更新狀態(tài):
實踐中,長短期記憶網(wǎng)絡(luò)(LSTM)更常用。不管哪種情況,進行預(yù)測時,都將狀態(tài)傳遞給函數(shù) f,模型預(yù)測 y_t = f(h_t)。由于狀態(tài) h_t 是包含所有過去輸入 x_0,...,x_t 的函數(shù),因此預(yù)測 y_t 也取決于整個歷史輸入 x_0,...,x_t。
循環(huán)模型可用圖形表示如下。
循環(huán)模型可以使用反向傳播擬合數(shù)據(jù)。然而,從時間步 T 到時間步 0 反向傳播的梯度通常需要大量難以滿足的內(nèi)存,因此,事實上每個循環(huán)模型的代碼實現(xiàn)都會進行截斷處理,并且只反向傳播 k 個時間步的梯度。
按照這個配置,循環(huán)模型的預(yù)測仍然依賴于整個歷史輸入 x_0,…,x_T。然而,目前尚不清楚這種訓(xùn)練過程對模型學(xué)習(xí)長期模式的能力有何影響,特別是那些需要 k 步以上的模式。
自回歸、前饋模型
自回歸(autoregressive)模型僅使用最近的 k 個輸入,即 x_t-k + 1,...,x_t 來預(yù)測 y_t,而不是依賴整個歷史狀態(tài)進行預(yù)測。這對應(yīng)于強條件獨立性假設(shè)。特別是,前饋模型假定目標(biāo)僅取決于 k 個最近的輸入。谷歌的 WaveNet 很好地說明了這個通用原則。
與 RNN 相比,前饋模型的有限上下文意味著它無法捕獲超過 k 個時間步的模式。但是,使用空洞卷積等技術(shù),可以使 k 非常大。
為何關(guān)注前饋模型?
一開始,循環(huán)模型似乎是比前饋模型更靈活、更具表現(xiàn)力的模型。畢竟,前饋網(wǎng)絡(luò)提出了強條件獨立性假設(shè),而循環(huán)模型并沒有加上這樣的限制。不過即使前饋模型的表現(xiàn)力較差,仍有幾個原因使得研究者可能更傾向于使用前饋網(wǎng)絡(luò)。
并行化:卷積前饋模型在訓(xùn)練時更容易并行化,不需要更新和保留隱藏狀態(tài),因此輸出之間沒有順序依賴關(guān)系。這使得我們可以在現(xiàn)代硬件上非常高效地實現(xiàn)訓(xùn)練過程。
可訓(xùn)練性:訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的基本過程,而循環(huán)模型往往更難以訓(xùn)練與優(yōu)化。此外,為了有效并可靠地訓(xùn)練深度前饋網(wǎng)絡(luò),開發(fā)人員在設(shè)計架構(gòu)和軟件開發(fā)上已經(jīng)付出了巨大的努力。
推理速度:在某些情況下,前饋模型可以更輕量,并且比類似的循環(huán)系統(tǒng)更快地執(zhí)行推理。在其他情況下,特別是對于長序列問題,自回歸推理是一個很大的瓶頸,需要大量的工程工作或聰明才智去克服。
前饋模型可以比循環(huán)模型表現(xiàn)更好
雖然看起來前饋模型的可訓(xùn)練性和并行化是以降低模型準(zhǔn)確度為代價的,但是最近有一些例子表明,前饋網(wǎng)絡(luò)在基準(zhǔn)任務(wù)上實際上可以達到與循環(huán)網(wǎng)絡(luò)相同的精度。
語言建模。在語言建模中,目的是在給定所有當(dāng)前單詞的情況下預(yù)測下一個單詞。前饋模型僅使用 k 個最近的單詞進行預(yù)測,而循環(huán)模型可能會使用整個文檔。門控卷積語言模型是一種可與大型 LSTM 基準(zhǔn)模型競爭的前饋自回歸模型。盡管截斷長度 k = 25,但該模型在 Wikitext-103 的基準(zhǔn)測試上表現(xiàn)優(yōu)于大型 LSTM 模型,該基準(zhǔn)測試用于測試善于捕獲長期依賴關(guān)系的模型。在 Billion Word Benchmark 上,該模型比最大的 LSTM 略差,但訓(xùn)練速度更快,占用的資源也更少。
機器翻譯。機器翻譯的目標(biāo)是將英語句子映射到其它語種句子,例如英語轉(zhuǎn)法語。前饋模型僅使用句子的 k 個單詞進行翻譯,而循環(huán)模型可以利用整個句子。在深度學(xué)習(xí)中,谷歌神經(jīng)機器翻譯等模型最開始基于 LSTM 與注意力機制進行序列建模,后來大家使用全卷積網(wǎng)絡(luò)進行序列建模、使用 Transformer 構(gòu)建大型翻譯系統(tǒng)。
語音合成。在語音合成領(lǐng)域,研究者試圖產(chǎn)生逼真的人類語音。前饋模型僅限于過去的 k 個樣本,而循環(huán)模型可以使用所有歷史樣本。截止本稿發(fā)布,前饋自回歸 WaveNet 是對 LSTM-RNN 模型的重大改進。
延伸閱讀。最近,Bai 等人提出了一種利用空洞卷積的通用前饋模型,并表明它在從合成復(fù)制任務(wù)到音樂生成的任務(wù)中優(yōu)于循環(huán)基準(zhǔn)模型。機器之心在《從循環(huán)到卷積,探索序列建模的奧秘》這一篇文章中就解析過這一模型。
前饋模型怎么能超越循環(huán)模型?
在上面的示例中,前饋網(wǎng)絡(luò)能實現(xiàn)與循環(huán)網(wǎng)絡(luò)相同或更好的結(jié)果。這很令人困惑,因為循環(huán)模型似乎更先進。Dauphin 等人對這種現(xiàn)象給出了一種解釋:
對于語言建模而言,循環(huán)模型提供的無限長的上下文信息并非絕對必要。
換句話說,你可能不需要大量的上下文信息求平均來完成預(yù)測任務(wù)。最近的理論工作提供了一些支持這種觀點的證據(jù)。
Bai 等人給出了另一種解釋:
RNN 的「無限記憶」優(yōu)勢在實踐中基本上不存在。
正如 Bai 等人的報告中說的一樣,即使在明確需要長期上下文的實驗中,RNN 及其變體也無法學(xué)習(xí)長序列。在 Billion Word Benchmark 上,一篇精彩的 Google 學(xué)術(shù)報告表明,記憶 n = 13 字上下文的 LSTM n-gram 模型與記憶任意長上下文的 LSTM 表現(xiàn)無異。
這一證據(jù)使我們猜想:在實踐中訓(xùn)練的循環(huán)模型實際上是前饋模型。這可能發(fā)生,因為截斷的沿時間反向傳播不能學(xué)習(xí)比 k 步更長的模式,因為通過梯度下降訓(xùn)練的模型沒有長期記憶。
在我們最近的論文中,我們研究了使用梯度下降訓(xùn)練的循環(huán)模型和前饋模型之間的差距。我們表示如果循環(huán)模型是穩(wěn)定的(意味著沒有梯度爆炸),那么循環(huán)模型的訓(xùn)練或推斷過程都可以通過前饋網(wǎng)絡(luò)很好地逼近。換句話說,我們證明了通過梯度下降訓(xùn)練的前饋和穩(wěn)定循環(huán)模型在測試上是等價的。當(dāng)然,并非所有實踐中訓(xùn)練的模型都是穩(wěn)定的。我們還給出了經(jīng)驗證據(jù),可以在不損失性能的情況下對某些循環(huán)模型施加穩(wěn)定性條件。
總結(jié)
盡管已經(jīng)進行了一些初步的嘗試,但要理解為什么前饋模型可以與循環(huán)模型競爭,并闡明序列模型之間如何權(quán)衡,仍有許多工作要做。在通用序列基準(zhǔn)測試中到底需要多少內(nèi)存?截斷 RNN(可以看做是前饋模型)和流行的卷積模型之間的表現(xiàn)力權(quán)衡是什么?為什么前饋網(wǎng)絡(luò)在實踐中的性能和不穩(wěn)定的 RNN 一樣好?
回答這些問題是嘗試建立一個既可以解釋我們當(dāng)前方法的優(yōu)勢和局限性,也可以指導(dǎo)如何在具體環(huán)境中如何選擇不同模型的理論。