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