0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

放棄 RNN 和 LSTM 吧,它們真的不好用

8g3K_AI_Thinker ? 來源:未知 ? 作者:胡薇 ? 2018-04-25 09:43 ? 次閱讀

2014 年 RNN/LSTM 起死回生。自此,RNN/LSTM 及其變種逐漸被廣大用戶接受和認(rèn)可。起初,LSTM 和 RNN 只是一種解決序列學(xué)習(xí)和序列翻譯問題的方法(seq2seq),隨后被用于語音識別并有很好的效果,比如 Siri,Cortana,Alexa 等;此外,這種技術(shù)在機(jī)器翻譯領(lǐng)域也有應(yīng)用,比如 Google Translate。

2015-2016 年,新的 ResNet 和 Attention 技術(shù)出現(xiàn)。實(shí)際上,我們可以將 LSTM 理解為一種巧妙地 bypass technique,而 attention 的成功表明了 MLP(多層感知器)網(wǎng)絡(luò)可以被上下文向量影響的平均網(wǎng)絡(luò)(averaging network)所替代。

兩年過去了,我們現(xiàn)在已經(jīng)可以給出結(jié)論:

放棄 RNN 和 LSTM 吧,它們真的不好用

基于 attention 的網(wǎng)絡(luò)逐漸被越來越多的企業(yè)采用,比如 Google,F(xiàn)acebook,Salesforce 等公司都已經(jīng)開始用基于attention的模型來替換RNN和其變種。RNN 在各種應(yīng)用場景下時日無多,因?yàn)橄啾然?attention 的模型,RNN 需要更多的資源來訓(xùn)練和運(yùn)行。

編者注:訓(xùn)練 RNN 和 LSTM 是非常困難的,因?yàn)橛?jì)算能力受到內(nèi)存和帶寬等的約束。這同時也是硬件設(shè)計(jì)者的噩夢,并最終限制了神經(jīng)網(wǎng)絡(luò)解決方案的適用性。簡而言之,每個 LSTM 單元需要 4 個線性層(MLP 層),以便每個順序時間步運(yùn)行一次。線性層需要大量的內(nèi)存帶寬才能執(zhí)行計(jì)算;由于系統(tǒng)沒有足夠的內(nèi)存帶寬將數(shù)據(jù)饋送到計(jì)算單元,實(shí)際上它們無法使用許多計(jì)算單元。添加更多的計(jì)算單元很容易,但添加更多的內(nèi)存帶寬卻很難。因此,RNN/LSTM 及其變種并不和硬件加速非常匹配,一個可能的解決方案就是讓計(jì)算在存儲器設(shè)備中完成。

為什么 RNN/LSTM 真的不好用?

RNN,LSTM及其變種主要使用序列處理,如下圖所示:

圖1 RNN中的序列處理

圖中的箭頭表示長期信息在進(jìn)入當(dāng)前的處理單元前需要有序地進(jìn)入所有其他的處理單元。也就是說,這很容易通過多次乘小于 0 的數(shù)字來進(jìn)行破壞和攻擊,這就是梯度消失的原因。

梯度消失可以利用 LSTM 模塊來補(bǔ)救,目前的 LSTM 可是看作是多交換網(wǎng)關(guān),有點(diǎn)像 ResNet。因?yàn)?LSTM 可以繞過一些單元,對長時間的步驟進(jìn)行記憶,因此 LSTM 可以一定程度上解決梯度消失的問題。

圖2 LSTM中的序列處理

從圖2可以看出,從前面的單元傳遞來當(dāng)前單元的序列路徑依然存在。事實(shí)上,因?yàn)檫@條路徑會不斷添加并且會遺忘與之相關(guān)的路徑分支,它會變得越來越復(fù)雜。LSTM、GRU 及其變體能學(xué)習(xí)大量的長期信息,但它們最多只能記住約 100s 的長期信息,而不是 1000s,10000s 甚至更長時間的信息。

RNN 還有一個問題就是并不與所有硬件兼容。如果要快速訓(xùn)練 RNN,那么就需要大量的計(jì)算資源,而這正是我們?nèi)鄙俚摹H绻谠粕线\(yùn)行 RNN 模型的話,也會消耗比其他模型更多的資源。隨著語音轉(zhuǎn)文本需求的快速增長,云端的擴(kuò)展也變得更加困難。

你需要做些什么?

因?yàn)榇蠖鄶?shù)時間我們處理的都是實(shí)時的因果數(shù)據(jù)(casual data),我們想利用這些已知的數(shù)據(jù)來為之后的決策做準(zhǔn)備。那如果可以避免進(jìn)行序列處理,我們就可以找出更好的 look-ahead 和 look-back 的單元,這樣的 look-ahead/back 就叫做 neural attention 模塊。

這種補(bǔ)救方法融合了多個 neural attention 模塊,組成了一個分層的 neural attention 編碼器,如圖3所示:

圖3 分層 neural attention 編碼器

還有一種更好地分析過去的方法就是用 attention 模塊把過去所有的編碼向量總結(jié)為一個上下文向量 Ct。

這里還有一個 attention 模塊的分層,與神經(jīng)網(wǎng)絡(luò)和時間卷積網(wǎng)絡(luò)(Temporal convolutional network)的分層非常像。分層神經(jīng) attention 編碼器的多層 attention 能查看過去信息的一小部分,比如說 100 個向量,而上面分層的attention模塊還能查看到 100 個下層的注意力模塊,也就是 100×100 個向量。這極大地?cái)U(kuò)展了分層神經(jīng) attention 編碼器的能力。

更重要的是將傳播向量傳輸?shù)骄W(wǎng)絡(luò)輸出所需要的路徑長度:在分層網(wǎng)絡(luò)中,路徑長度與 Log(N)成比例的,其中 N 是分層的層數(shù)。這與 RNN 需要執(zhí)行的T步驟形成了對照,其中 T 是需要記住的順序的最大長度,而 T >> N。

Neural Turing Machines(NTM,神經(jīng)圖靈機(jī))的架構(gòu)也與圖3類似,但是 NTM 是讓神經(jīng)網(wǎng)絡(luò)來決定通過 attention 從內(nèi)存中讀取什么的。也就是說,真實(shí)的神經(jīng)網(wǎng)絡(luò)將決定哪個過去的向量對未來的決策更重要。

在內(nèi)存存儲方面。與 NTM 不同,上面的架構(gòu)把所有之前的表示都儲存在內(nèi)存里,這就會造成效率比較低的問題。有一個解決的辦法就是增加另外一個單元來防止有相互關(guān)系的數(shù)據(jù)多次保存。當(dāng)前科學(xué)研究的重點(diǎn)是由應(yīng)用去決定保存哪些向量,哪些不保存。

目前許多的公司仍在使用 RNN/LSTM 來進(jìn)行語音轉(zhuǎn)文本的工作,都沒有意識到這種網(wǎng)絡(luò)結(jié)構(gòu)在效率和可擴(kuò)展性上的缺點(diǎn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    44

    文章

    3556

    瀏覽量

    133824
  • rnn
    rnn
    +關(guān)注

    關(guān)注

    0

    文章

    76

    瀏覽量

    6865

原文標(biāo)題:放棄 RNN/LSTM 吧,因?yàn)檎娴牟缓糜茫⊥苤獈

文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    LSTM模型的基本組成

    長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory, LSTM)是一種特殊的循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)架構(gòu),它在處理序列數(shù)據(jù)時能夠捕捉長期依賴關(guān)系,有效解決了傳統(tǒng)RNN在處理長序列時容易出現(xiàn)
    的頭像 發(fā)表于 07-10 17:01 ?757次閱讀

    藍(lán)牙信標(biāo)是什么?藍(lán)牙信標(biāo)好不好用?

    是什么,另外這好不好用呢? 以新銳科創(chuàng)藍(lán)牙信標(biāo)為例 一、藍(lán)牙信標(biāo)是什么? 通過名字我們不難看出,其實(shí)藍(lán)牙信標(biāo)的基本用途與藍(lán)牙還是有一定關(guān)系的,它實(shí)際上是一個Beacon設(shè)備。一般它都會被放在室內(nèi)的一個固定位置,然后可以
    的頭像 發(fā)表于 07-09 16:32 ?415次閱讀
    藍(lán)牙信標(biāo)是什么?藍(lán)牙信標(biāo)好<b class='flag-5'>不好用</b>?

    如何理解RNNLSTM神經(jīng)網(wǎng)絡(luò)

    在深入探討RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))與LSTM(Long Short-Term Memory,長短期記憶網(wǎng)絡(luò))神經(jīng)網(wǎng)絡(luò)之前,我們首先需要明確它們
    的頭像 發(fā)表于 07-09 11:12 ?399次閱讀

    CNN與RNN的關(guān)系?

    在深度學(xué)習(xí)的廣闊領(lǐng)域中,卷積神經(jīng)網(wǎng)絡(luò)(CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)是兩種極為重要且各具特色的神經(jīng)網(wǎng)絡(luò)模型。它們各自在圖像處理、自然語言處理等領(lǐng)域展現(xiàn)出卓越的性能。本文將從概念、原理、應(yīng)用場景及代碼示例等方面詳細(xì)探討CNN與RNN
    的頭像 發(fā)表于 07-08 16:56 ?461次閱讀

    rnn是什么神經(jīng)網(wǎng)絡(luò)

    RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))是一種具有循環(huán)連接的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),并且具有記憶能力。與傳統(tǒng)的前饋神經(jīng)網(wǎng)絡(luò)(Feedforward Neural
    的頭像 發(fā)表于 07-05 09:49 ?448次閱讀

    rnn神經(jīng)網(wǎng)絡(luò)模型原理

    RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))是一種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),具有記憶功能。RNN在自然語言處理、語音識別、時間序列預(yù)測等領(lǐng)域有著廣泛
    的頭像 發(fā)表于 07-04 15:40 ?440次閱讀

    RNN神經(jīng)網(wǎng)絡(luò)適用于什么

    RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))是一種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),它可以處理序列數(shù)據(jù),具有記憶功能。RNN在許多領(lǐng)域都有廣泛的應(yīng)用,以下是一些RNN神經(jīng)網(wǎng)絡(luò)的適用
    的頭像 發(fā)表于 07-04 15:04 ?668次閱讀

    rnn神經(jīng)網(wǎng)絡(luò)基本原理

    RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))是一種具有循環(huán)結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò),它能夠處理序列數(shù)據(jù),并且能夠捕捉時間序列數(shù)據(jù)中的動態(tài)特征。RNN在自然語言處理、語音識別、時間
    的頭像 發(fā)表于 07-04 15:02 ?553次閱讀

    什么是RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))?RNN的基本原理和優(yōu)缺點(diǎn)

    RNN(Recurrent Neural Network,循環(huán)神經(jīng)網(wǎng)絡(luò))是一種專門用于處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),它能夠在序列的演進(jìn)方向上進(jìn)行遞歸,并通過所有節(jié)點(diǎn)(循環(huán)單元)的鏈?zhǔn)竭B接來捕捉序列中
    的頭像 發(fā)表于 07-04 11:48 ?2156次閱讀

    stm32L0串口接收不好用是什么原因?qū)е碌模?/a>

    stm32L0系列串口在使用中出現(xiàn),一段時間后串口接收就不好用了,各位能不能給一下使用經(jīng)驗(yàn)。
    發(fā)表于 07-04 07:42

    NLP模型中RNN與CNN的選擇

    在自然語言處理(NLP)領(lǐng)域,循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)與卷積神經(jīng)網(wǎng)絡(luò)(CNN)是兩種極為重要且廣泛應(yīng)用的網(wǎng)絡(luò)結(jié)構(gòu)。它們各自具有獨(dú)特的優(yōu)勢,適用于處理不同類型的NLP任務(wù)。本文旨在深入探討RNN與CNN
    的頭像 發(fā)表于 07-03 15:59 ?327次閱讀

    插拔類的接線端子,要測試多次吃插拔才算成功

    1、插拔類的端子好不好用
    發(fā)表于 03-25 14:28

    請問大家有沒有類似流動管道的控件

    自己用滑動桿做了一下模擬管道液體流動的自定義控件,感覺不好用,請問下有官方的這種類似控件嗎?
    發(fā)表于 03-16 15:37

    什么是RNN (循環(huán)神經(jīng)網(wǎng)絡(luò))?

    循環(huán)神經(jīng)網(wǎng)絡(luò) (RNN) 是一種深度學(xué)習(xí)結(jié)構(gòu),它使用過去的信息來提高網(wǎng)絡(luò)處理當(dāng)前和將來輸入的性能。RNN 的獨(dú)特之處在于該網(wǎng)絡(luò)包含隱藏狀態(tài)和循環(huán)。
    發(fā)表于 02-29 14:56 ?3746次閱讀
    什么是<b class='flag-5'>RNN</b> (循環(huán)神經(jīng)網(wǎng)絡(luò))?

    精選 25 個 RNN 問題

    ,非常適合RNN。與其他神經(jīng)網(wǎng)絡(luò)不同,RNN具有內(nèi)部存儲器,允許它們保留來自先前輸入的信息,并根據(jù)整個序列的上下文做出預(yù)測或決策。在本文中,我們將探討RNN的架構(gòu)、它
    的頭像 發(fā)表于 12-15 08:28 ?573次閱讀
    精選 25 個 <b class='flag-5'>RNN</b> 問題