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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(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),隨后被用于語音識(shí)別并有很好的效果,比如 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)用場景下時(shí)日無多,因?yàn)橄啾然?attention 的模型,RNN 需要更多的資源來訓(xùn)練和運(yùn)行。

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

圖2 LSTM中的序列處理

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

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

你需要做些什么?

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

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

圖3 分層 neural attention 編碼器

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

這里還有一個(gè) attention 模塊的分層,與神經(jīng)網(wǎng)絡(luò)和時(shí)間卷積網(wǎng)絡(luò)(Temporal convolutional network)的分層非常像。分層神經(jīng) attention 編碼器的多層 attention 能查看過去信息的一小部分,比如說 100 個(gè)向量,而上面分層的attention模塊還能查看到 100 個(gè)下層的注意力模塊,也就是 100×100 個(gè)向量。這極大地?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ò)將決定哪個(gè)過去的向量對未來的決策更重要。

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

目前許多的公司仍在使用 RNN/LSTM 來進(jìn)行語音轉(zhuǎn)文本的工作,都沒有意識(shí)到這種網(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)注

    45

    文章

    3574

    瀏覽量

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

    關(guān)注

    0

    文章

    76

    瀏覽量

    6868

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    請問class D類運(yùn)放不好用作驅(qū)動(dòng)headphone的原因有哪些?

    請問class D類運(yùn)放不好用作驅(qū)動(dòng)headphone的原因除了EMI問題,還有沒有其它問題的限制,導(dǎo)致TI沒有生產(chǎn)class D的headphone功
    發(fā)表于 11-04 08:06

    用ezdsp5535板子實(shí)現(xiàn)麥克風(fēng)輸入語音信息,耳機(jī)輸出語音,為什么編譯的時(shí)候通不過?

    最近在用ezdsp5535板子實(shí)現(xiàn)麥克風(fēng)輸入語音信息,耳機(jī)輸出語音。嘗試使用TI官方的例程aic3204實(shí)現(xiàn),修復(fù)各種bug之后,現(xiàn)在還是不好用。 例程aic3204中有兩個(gè)函數(shù)
    發(fā)表于 10-28 07:40

    LSTM模型的基本組成

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

    藍(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í)際上是一個(gè)Beacon設(shè)備。一般它都會(huì)被放在室內(nèi)的一個(gè)固定位置,然后可以
    的頭像 發(fā)表于 07-09 16:32 ?459次閱讀
    藍(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 ?462次閱讀

    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 ?537次閱讀

    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 ?530次閱讀

    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在自然語言處理、語音識(shí)別、時(shí)間序列預(yù)測等領(lǐng)域有著廣泛
    的頭像 發(fā)表于 07-04 15:40 ?465次閱讀

    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 ?750次閱讀

    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í)間序列數(shù)據(jù)中的動(dòng)態(tài)特征。RNN在自然語言處理、語音識(shí)別、時(shí)間
    的頭像 發(fā)表于 07-04 15:02 ?596次閱讀

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

    stm32L0系列串口在使用中出現(xiàn),一段時(shí)間后串口接收就不好用了,各位能不能給一下使用經(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 ?374次閱讀

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

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

    什么是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 ?3802次閱讀
    什么是<b class='flag-5'>RNN</b> (循環(huán)神經(jīng)網(wǎng)絡(luò))?

    精選 25 個(gè) RNN 問題

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