LSTM 為何如此有效?這五個秘密是你要知道的

2020-12-04 雷鋒網

圖片來源 佩吉·喬卡爾

長短期記憶網絡(LSTM),作為一種改進之後的循環神經網絡,不僅能夠解決 RNN無法處理長距離的依賴的問題,還能夠解決神經網絡中常見的梯度爆炸或梯度消失等問題,在處理序列數據方面非常有效。

有效背後的根本原因有哪些?本文結合簡單的案例,帶大家了解關於 LSTM 的五個秘密,也解釋了 LSTM如此有效的關鍵所在。

秘密一:發明LSTM是因為RNN 發生嚴重的內存洩漏

之前,我們介紹了遞歸神經網絡(RNN),並演示了如何將它們用於情感分析。

RNN 的問題是遠程內存。例如,它們能夠預測出「the clouds are in the…」這句話的下一個單詞「sky」,但卻無法預測出下面這句話中缺失的單詞:「她在法國長大。現在到中國才幾個月。她說一口流利的 …」(「She grew up in France. Now she has been in China for few months only. She speaks fluent …」)

隨著間隔的拉長,RNN變得無法學會信息連接。 在此示例中,最近的信息表明,下一個詞可能是一種語言的名稱,但是如果我們想縮小哪種語言的範圍,那麼就需要到間隔很長的前文中去找「法國」。 在自然語言文本中,這種問題,完全有可能在相關信息和需要該信息的地方出現很大的差異。這種差異在德語中也很常見。

圖片來自FB Engineering Tejas Patil的博客上

為什麼RNN在長序列文本方面存在巨大的問題? 根據設計,RNN 在每個時間步長上都會接受兩個輸入:一個輸入向量(例如,輸入句子中的一個詞)和一個隱藏狀態(例如,以前詞中的記憶表示)。

RNN下一個時間步長採用第二個輸入向量和第一隱藏狀態來創建該時間步長的輸出。 因此,為了捕獲長序列中的語義,我們需要在多個時間步長上運行RNN,將展開的RNN變成一個非常深的網絡。

閱讀參考:https://towardsdatascience.com/recurrent-neural-networks-explained-ffb9f94c5e09

長序列並不是RNN的唯一麻煩製造者。 就像任何非常深的神經網絡一樣,RNN也存在梯度消失和爆炸的問題,因此需要花費大量時間進行訓練。人們已經提出了許多技術來緩解此問題,但還無法完全消除該問題,這些技術包括:

仔細地初始化參數使用非飽和激活函數,如ReLU應用批量歸一化、梯度消失、捨棄網絡細胞等方法使用經過時間截斷的反向傳播這些方法仍然有其局限性。此外,除了訓練時間長之外,長期運行的RNN還面臨另一個問題是:對首個輸入的記憶會逐漸消失。

一段時間後,RNN的狀態庫中幾乎沒有首個輸入的任何痕跡。 例如,如果我們想對以「我喜歡這款產品」開頭的長評論進行情感分析,但其餘評論列出了許多可能使該產品變得更好的因素,那麼 RNN 將逐漸忘記首個評論中傳遞的正面情緒,並且會完全誤認為該評論是負面的。

為了解決RNN的這些問題,研究者已經在研究中引入了各類具有長期記憶的細胞。 實際上,不再使用基本的RNN的大多數工作是通過所謂的長短期記憶網絡(LSTM)完成的。 LSTM是由S. Hochreiter和J. Schmidhuber發明的。

秘密2 : LSTM的一個關鍵思想是「門」。

每個LSTM細胞都控制著要記住的內容、要忘記的內容以及如何使用門來更新存儲器。 這樣,LSTM網絡解決了梯度爆炸或梯度消失的問題,以及前面提到的所有其他問題!

LSTM細胞的架構如下圖所示:

來源:哈佛大學 P. Protopapas教授的課堂講稿

h 是隱藏狀態,表示的是短期記憶; C是細胞狀態,表示的是長期記憶;x表示輸入。

門只能執行很少的矩陣轉換,激活 sigmoid函數和tanh函數可以神奇地解決所有RNN問題。

在下一節中,我們將通過觀察這些細胞如何遺忘、記憶和更新其內存來深入研究這一過程。

一個有趣的故事:

讓我們設置一個有趣的情節來探索這個圖表。假設你是老闆,你的員工要求加薪。你會同意嗎?這取決於多個因素,比如你當時的心情。

下面我們將你的大腦視為LSTM細胞,當然我們無意冒犯你聰明的大腦。

來源:哈佛大學 P. Protopapas教授的課堂講稿

你的長期狀態C將影響你的決定。平均來說,你有70%的時間心情很好,而你還剩下30%的預算。因此你的細胞狀態是C=[0.7, 0.3]。

最近,所有的事情對你來說都很順利,100%地提升了你的好心情,而你有100%的可能性預留可操作的預算。這就把你的隱藏狀態變成了h=[1,1]。

今天,發生了三件事:你的孩子在學校考試中取得了好成績,儘管你的老闆對你的評價很差,但是你發現你仍然有足夠的時間來完成工作。因此,今天的輸入是x=[1, - 1,1]。

基於這個評估,你會給你的員工加薪嗎?

秘密3:LSTM通過使用「忘記門」來忘記

在上述情況下,你的第一步可能是弄清楚今天發生的事情(輸入x)和最近發生的事情(隱藏狀態h),二者會影響你對情況的長期判斷(細胞狀態C)。 「忘記門」( Forget Gate)控制著過去存儲的內存量。

在收到員工加薪的請求後,你的「忘記門」會運行以下f_t的計算,其值最終會影響你的長期記憶。

下圖中顯示的權重是為了便於說明目的的隨意選擇。它們的值通常是在網絡訓練期間計算的。結果[0,0]表示要抹去(完全忘記)你的長期記憶,不要讓它影響你今天的決定。

來源:哈佛大學 P. Protopapas教授的課堂講稿

秘密4: LSTM 記得使用「輸入門」

接下來,你需要決定:最近發生的事情(隱藏狀態h)和今天發生的事情(輸入x)中的哪些信息需要記錄到你對所處情況的長遠判斷中(狀態狀態C)。LSTM通過使用「輸入門」( Input Gate)來決定要記住什麼。

首先,你要計算輸入門的值 i_t,由於激活了sigmoid函數,值落在0和1之間;接下來,你要tanh激活函數在-1和1之間縮放輸入;最後,你要通過添加這兩個結果來估計新的細胞狀態。

結果[1,1]表明,根據最近和當前的信息,你100%處於良好狀態,給員工加薪有很高的可能性。這對你的員工來說很有希望。

來源:哈佛大學 P. Protopapas教授的課堂講稿

秘密5 :LSTM使用「細胞狀態」保持長期記憶。

現在,你知道最近發生的事情會如何影響你的狀態。接下來,是時候根據新的理論來更新你對所處情況的長期判斷了。

當出現新值時,LSTM 再次通過使用門來決定如何更新其內存。 門控的新值將添加到當前存儲器中。 這種加法運算解決了簡單RNN的梯度爆炸或梯度消失問題。

LSTM 通過相加而不是相乘的方式來計算新狀態。 結果C_t 被存儲為所處情況的新的長期判斷(細胞狀態)。

值[1,1]表示你整體有100%的時間保持良好的心情,並且有100%的可能性一直都有錢! 你是位無可挑剔的老闆!

來源:哈佛大學 P. Protopapas教授的課堂講稿

根據這些信息,你可以更新所處情況的短期判斷:h_t(下一個隱藏狀態)。值[0.9,0.9]表示你有90%的可能性在下一步增加員工的工資!祝賀他!

來源:哈佛大學 P. Protopapas教授的課堂講稿

1、門控循環單元

LSTM細胞的一種變體被稱為門控循環單元,簡稱GRU。GRU 是Kyunghyun Cho等人在2014年的一篇論文中提出的。

GRU是LSTM細胞的簡化版本,速度比LSTM快一點,而且性能似乎也與LSTM相當,這就是它為什麼越來越受歡迎的原因。

來源:哈佛大學 P. Protopapas教授的課堂講稿

如上所示,這兩個狀態向量合併為一個向量。單個門控制器控制「忘記門」和「輸入門」。如果門控制器輸出 1,則輸入門打開,忘記門關閉。如果輸出0,則相反。換句話說,每當必須存儲內存時,其存儲位置先被刪除。

上圖中沒有輸出門,在每一步都輸出完整的狀態向量。但是,增加了一個新的門控制器,它控制之前狀態的哪一部分將呈現給主層。

2、堆疊LSTM細胞

通過對齊多個LSTM細胞,我們可以處理序列數據的輸入,例如下圖中有4個單詞的句子。

來源:哈佛大學 P. Protopapas教授的課堂講稿

LSTM單元通常是分層排列的,因此每個單元的輸出都是其他單元的輸入。在本例中,我們有兩個層,每個層有4個細胞。通過這種方式,網絡變得更加豐富,並捕獲到更多的依賴項。

3、雙向LSTM

RNN、LSTM和GRU是用來分析數值序列的。有時候,按相反的順序分析序列也是有意義的。

例如,在「老闆對員工說,他需要更努力地工作」這個句子中,儘管「他」一開始就出現了,但這句話中的他指的是:在句末提到的員工。

因此,分析序列的順序需要顛倒或通過組合向前和向後的順序。 下圖描述了這種雙向架構:

來源:哈佛大學 P. Protopapas教授的課堂講稿

下圖進一步說明了雙向 LSTM。底部的網絡接收原始順序的序列,而頂部的網絡按相反順序接收相同的輸入。這兩個網絡不一定完全相同。重要的是,它們的輸出被合併為最終的預測。

來源:哈佛大學 P. Protopapas教授的課堂講稿

想要知道更多的秘密?

正如我們剛剛提到的那樣,LSTM細胞可以學會識別重要的輸入(輸入門的作用),將該輸入存儲在長期狀態下,學會在需要時將其保留(忘記門的作用),並在需要時學會提取它。

LSTM 已經改變了機器學習範式,現在可以通過世界上最有價值的上市公司如谷歌、Amazon和Facebook向數十億用戶提供服務。

自2015年中期以來,LSTM極大地改善了超過40億部Android手機的語音識別。自2016年11月以來,LSTM應用在了谷歌翻譯中,極大地改善了機器翻譯。Facebook每天執行超過40億個基於LSTM的翻譯。自2016年以來,近20億部iPhone手機上搭載了基於LSTM的Siri。亞馬遜的Alexa回答問題也是基於 LSTM。

擴展閱讀

如果你想知道更多關於LSTM和GRU的信息,可以閱讀Michael Nguyen寫的這篇帶有動畫說明的文章:https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

對於那些喜歡從頭構建LSTM模型的人來說,這篇文章可能會有用:https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

下面,我將提供使用Python實踐實施LSTM網絡的方法。

1、情緒分析:一個基準

地址:https://towardsdatascience.com/sentiment-analysis-a-benchmark-903279cab44a

基於注意力的序列到序列模型和Transformer超越了LSTM,最近在谷歌的機器翻譯和OpenAI的文本生成方面取得了令人驚嘆的成果。

2、NLU任務注意力機制的實踐指南

地址:https://towardsdatascience.com/practical-guide-to-attention-mechanism-for-nlu-tasks-ccc47be8d500

使用BERT、FastText、TextCNN、Transformer、Se2seq等可以全面實現文本分類,這個可以在 Github庫(https://github.com/brightmart/text_classification)中找到,或者你可以查看我的關於BERT的教程:https://towardsdatascience.com/bert-for-dummies-step-by-step-tutorial-fb90890ffe03雷鋒網雷鋒網雷鋒網

相關焦點

  • PyTorch:Bi-LSTM的文本生成
    文本預處理首先,我們需要一個我們要處理的文本。有不同的資源可以在純文本中找到不同的文本,我建議你看看Gutenberg項目(https://www.gutenberg.org/).。如你所見,文本包含大寫、小寫、換行符、標點符號等。建議你將文本調整為一種形式,使我們能夠以更好的方式處理它,這主要降低我們將要開發的模型的複雜性。我們要把每個字符轉換成它的小寫形式。另外,建議將文本作為一個字符列表來處理,也就是說,我們將使用一個字符列表,而不是使用「字符串」。
  • 乘坐飛機時,為何頭等艙的帘子要拉上?空姐告訴你機上的「秘密」
    乘坐飛機時,為何頭等艙的帘子要拉上?空姐告訴你機上的「秘密」現在發達的交通為人們提供了非常便利的生活,無論是出行還是想去城市中的其他地方,都有多種交通方式可供選擇,每種交通方式都有其優缺點,如果您想長途旅行,大多數人更願意選擇乘飛機。
  • 你可能不知道隱藏在楊輝三角形中的 10 個秘密!
    這是數學中的最令人稱奇的事物之一,隨便取諸多數學性質中的某個,就能表明它是多麼的精彩絕倫。現在讓我們一起來探索藏在楊輝三角裡的 10 個你可能不知道的秘密吧!秘密#1:隱藏數列提示:為了有助於找到隱藏的信息,先將楊輝三角按左對齊方式排列。
  • 朋友,有個只有偉人們才知道的「秘密」你想知道嗎?
    這個世上有許多秘密,有些你不知道無關緊要,可有些是你需要也必須知道的,因為這些或許將改變你的一生,讓那些心想事成不再是一句祝福!而是觸手可得的現實。這是一個偉大的秘密,據說知道它的只有那些歷史上的偉人們:莎士比亞、牛頓、雨果、林肯、愛迪生、愛因斯坦等等,這些知道此秘密的人無不聲名遠揚、擁有人生的巨額財富。現在,這些秘密不再是這些偉人們的專屬,從這本書中你將認識到這個秘密究竟是什麼!《秘密》是澳大利亞作家朗達·拜恩所著。這本書包括了「秘密三部曲」(秘密、力量、魔力),是其最重要的作品。
  • 為何說河馬是鱷魚剋星,有啥秘密武器?看河馬打鱷魚現場你就知道
    世界之大無奇不有,這個地球已經存在了大約46億年了,在如此時間長河中,孕育出了很多生物,除了人類是站在食物鏈的頂端,其他物種都在互相的相生相剋著,就像是黃鼠狼吃雞,蛇吃老鼠,萬物之間皆有相剋。這個時候就有很多人想知道,除了人的幹擾,像是大象、犀牛、河馬或者是鱷魚,這些極兇猛又大型的動物,又有哪些動物能夠克制呢?但事實上還真的是有,就像是成年河馬對成年鱷魚,可以說河馬就是鱷魚的剋星了。為何說河馬是鱷魚剋星,有啥秘密武器?
  • 你知道幾個?人類的75個秘密
    似乎這裡面就是個平衡的原理了,當你創造光明的時候,需要一個黑暗來平衡,當你靜止的時候,就不需要什麼來平衡了,當你給予別人的時候,別人也會給予你。當你給予宇宙的時候,宇宙將會更大的回應你,因此人類的天堂,不是爭取自己獲得更多,而是給予別人更多,如此整個人類將會更加豐盛。
  • 怎樣用英語說:「這是個秘密。」?
    每個人都有自己的秘密「secrets」。英語裡有哪些有趣的比喻可以用來告訴他人要保守秘密「keep a secret」? 音頻中的五個英語短句都能用來提醒他人「不要聲張,別洩露秘密」。
  • 《我的世界》MC經驗值的四個特性秘密,你知道最高數值是多少嗎?
    《我的世界》MC經驗值的四個特性秘密,你知道最高數值是多少嗎?《我的世界》四個經驗值的特性秘密,單次附魔需要耗費多少數值?在沙盒遊戲《我的世界》裡面,經驗值是一種用來提高玩家等級或者用來附魔武器裝備的重要因素,玩家可通過刷怪、釣魚等多種方法收集。小編「我尚的大世界」介紹四個經驗值的特性秘密!
  • 捲尺的4個秘密知道的人不多,捲尺是如何製造的?
    今天我們就來看看捲尺的設計有什麼秘密,以及捲尺是如何製造出來的。第一,如果你仔細觀察過捲尺的話,你會記得捲尺的掛鈎處是有一個孔的。那麼它到底是做什麼用呢?下面這張圖會讓你瞬間理解。沒錯,它就是可以這樣卡在釘子上,然後就不用另外一隻手,或者另外一個人幫你固定捲尺了。
  • 我的世界:關於小雞,你所不知道的五個秘密,做牛做馬只是其一
    關於小雞,你知道他們的一些秘密嗎?其實,小雞還是比較強大的,別看那小小的軀幹,看起來像是小蠻腰,但是承載力也是非常的厲害的,一個小殭屍騎在小雞上,也沒有任何的痛感,跑起來也是十分的爽快呢。如果碰到這樣的一種怪物,不要想太多,要麼就跑個1000m,要麼就拿起手中40m長的藍色大刀,衝啊!TOP2:陸地清道夫可別小看他,他們啥都吃!只要你拿出種子去勾引他們,他們就會被你的萌樣給迷倒!整天跟著你,望著你手中的種子。
  • 《我的世界》六個洞穴蜘蛛的神奇秘密,新手知道三個就算不錯了!
    《我的世界》MC洞穴蜘蛛的六個神奇秘密,知道五個才算是老玩家!《我的世界》六個洞穴蜘蛛的神奇秘密,新手知道三個就算不錯了!在沙盒遊戲《我的世界》裡面,洞穴蜘蛛是一種能夠造成玩家中毒的中立型生物,通常是由廢棄礦井的刷怪箱生成,掉落物是蜘蛛眼。小編「我尚的大世界」介紹六個洞穴蜘蛛的神奇秘密!
  • 80個只有法醫知道的秘密,你知道幾個?
    在前兩輯裡,我們回顧了50個給人留下心理陰影的真實兇案和100個猜不到結局的罪案故事,今天的這一輯,則是來自法醫專欄的一次精彩回顧。
  • 為何被除名?冥王星鮮為人知的七個秘密
    冥王星為何被除名呢?它的身上有很多秘密等著我們去發掘,一起來看看吧! 秘密一,冥王星命名源自迪斯尼卡通角色: 從地球角度觀測遙遠冥王星有一定難度,因此它具有諸多神秘色彩。1930年,迪尼斯動畫片中有一隻叫做布魯託(Pluto)的狗,同年科學家發現太陽系一顆遙遠「行星」,便用「Pluto」進行命名。
  • 時間序列的LSTM模型預測——基於Keras
    LSTM模型在RNN模型的基礎上通過增加門限(Gates)來解決RNN短期記憶的問題,使得循環神經網絡能夠真正有效地利用長距離的時序信息。LSTM在RNN的基礎結構上增加了輸入門限(Input Gate)、輸出門限(Output Gate)、遺忘門限(Forget Gate)3個邏輯控制單元,且各自連接到了一個乘法元件上(見圖1),通過設定神經網絡的記憶單元與其他部分連接的邊緣處的權值控制信息流的輸入、輸出以及細胞單元(Memory cell)的狀態。其具體結構如下圖所示。
  • 為什麼有5個角?這些秘密你需要知道
    當你看到夜空中的星星,星星也盯著你看嗎?是什麼讓它們閃爍?為何它們有五個角?我們和星星真的有關係嗎?今天我們一起來解密星星的小秘密。1.到底有多少顆星星呢?你在夜空中能看到多少星星,每首情歌和情詩都會跟你說幾百萬顆。這儘管浪漫卻非事實。
  • 為何對各國如此重要? 看完你就知道了
    為何對各國如此重要?看完你就知道了 石油這種資源相信大家如今已經非常了解了,不過大家以前對於石油的了解可能就是汽車需要用到的石油,如今大家的了解可能就是國際的石油貿易了,我們從這些事情當中也已經得知了石油對於每個國家都非常的重要,那麼不知道大家想過沒有,為何石油對於每個國家都如此的重要,其實這跟它的生成原因有關。
  • 在 TensorFlow 上使用 LSTM 進行情感分析
    上面的公式中的2個W表示權重矩陣。如果你需要仔細研究這兩個矩陣,你會發現其中一個矩陣是和我們的輸入 x 進行相乘。舉個例子,觀察上面的式子,h(t) 的大小將會隨著 W(x) 和 W(H) 的大小而改變。讓我們來看一個快速例子。當 W(H) 非常大,W(X) 非常小的時候,我們知道 h(t) 受 h(t-1) 的影響比 x(t) 的影響大。換句話說,目前的隱藏狀態向量更關心前面句子的一個總和,而不是當前的一個句子。權重的更新,我們採用 BPTT 算法來進行跟新。
  • 秘密:貓咪身上的這6個部位,很少人知道
    養貓那麼久了,相信大家應該對貓身上的一些特別之處很感興趣吧,但是一般時候我們是不知道這些地方叫啥名字的,因此,小編在此處給予大家探討下關於咱們小貓咪的秘密吧。一、貓咪的亨利氏囊看到這個詞相信大家都是有過疑惑的吧,這就是咱們貓咪耳根處的小豁口啦。
  • 6個有關蟑螂的秘密,你應該知道
    除此之外這些,有關蟑螂,你還知道哪些呢?幾乎每個人都厭惡蟑螂,但它們實際上是你最親密的「朋友」,只是你沒有察覺到。這些蟲子看上去小小的,確是十分複雜的生物,是世界生態系統的主要組成部分,擁有自己的社會行為和繁殖儀式。如果,你想了解更多有關蟑螂的秘密,請繼續往下看吧。
  • Rh陰性為何如此「稀有」?
    這也就是英國人中Rh陰性的大致比例。我們還可以進一步計算出,90%的英國Rh陰性是dce/dce,其紅細胞上沒有D抗原,有c抗原和e抗原。(d代表沒有正常的D基因,並不存在d基因,也沒有d抗原)數學題到此為止。我們要知道,作為最複雜的血型系統,Rh血型可不是只有D+和D-這麼簡單。