RNN介紹,較易懂

人類并不是每時每刻都從一片空白的大腦開始他們的思考。在你閱讀這篇文章時候,你都是基于自己已經擁有的對先前所見詞的理解來推斷當前詞的真實含義。我們不會將所有的東西都全部丟棄,然后用空白的大腦進行思考。我們的思想擁有持久性。

傳統的神經網絡并不能做到這點,看起來也像是一種巨大的弊端。例如,假設你希望對電影中的每個時間點的時間類型進行分類。傳統的神經網絡應該很難來處理這個問題——使用電影中先前的事件推斷后續的事件。

RNN 解決了這個問題。RNN 是包含循環的網絡,允許信息的持久化。

[譯] 理解 LSTM 網絡
RNN 包含循環

在上面的示例圖中,神經網絡的模塊,A,正在讀取某個輸入 x_i,并輸出一個值 h_i。循環可以使得信息可以從當前步傳遞到下一步。這些循環使得 RNN 看起來非常神秘。然而,如果你仔細想想,這樣也不比一個正常的神經網絡難于理解。RNN 可以被看做是同一神經網絡的多次賦值,每個神經網絡模塊會把消息傳遞給下一個。所以,如果我們將這個循環展開:

[譯] 理解 LSTM 網絡
展開的 RNN

鏈式的特征揭示了 RNN 本質上是與序列和列表相關的。他們是對于這類數據的最自然的神經網絡架構。

并且 RNN 也已經被人們應用了!在過去幾年中,應用 RNN 在語音識別,語言建模,翻譯,圖片描述等問題上已經取得一定成功,并且這個列表還在增長。我建議大家參考 Andrej Karpathy 的博客文章——?The Unreasonable Effectiveness of Recurrent Neural Networks?來看看更豐富有趣的 RNN 的成功應用。

而這些成功應用的關鍵之處就是 LSTM 的使用,這是一種特別的 RNN,比標準的 RNN 在很多的任務上都表現得更好。幾乎所有的令人振奮的關于 RNN 的結果都是通過 LSTM 達到的。這篇博文也會就 LSTM 進行展開。

長期依賴(Long-Term Dependencies)問題

RNN 的關鍵點之一就是他們可以用來連接先前的信息到當前的任務上,例如使用過去的視頻段來推測對當前段的理解。如果 RNN 可以做到這個,他們就變得非常有用。但是真的可以么?答案是,還有很多依賴因素。有時候,我們僅僅需要知道先前的信息來執行當前的任務。例如,我們有一個 語言模型用來基于先前的詞來預測下一個詞。如果我們試著預測 “the clouds are in the sky” 最后的詞,我們并不需要任何其他的上下文 —— 因此下一個詞很顯然就應該是 sky。在這樣的場景中,相關的信息和預測的詞位置之間的間隔是非常小的,RNN 可以學會使用先前的信息。

[譯] 理解 LSTM 網絡

不太長的相關信息和位置間隔

但是同樣會有一些更加復雜的場景。假設我們試著去預測“I grew up in France... I speak fluent French”最后的詞。當前的信息建議下一個詞可能是一種語言的名字,但是如果我們需要弄清楚是什么語言,我們是需要先前提到的離當前位置很遠的 France 的上下文的。這說明相關信息和當前預測位置之間的間隔就肯定變得相當的大。不幸的是,在這個間隔不斷增大時,RNN 會喪失學習到連接如此遠的信息的能力。

[譯] 理解 LSTM 網絡

相當長的相關信息和位置間隔

在理論上,RNN 絕對可以處理這樣的 長期依賴 問題。人們可以仔細挑選參數來解決這類問題中的最初級形式,但在實踐中,RNN 肯定不能夠成功學習到這些知識。?Bengio, et al. (1994)?等人對該問題進行了深入的研究,他們發現一些使訓練 RNN 變得非常困難的相當根本的原因。

然而,幸運的是,LSTM 并沒有這個問題!

LSTM 網絡

Long Short Term 網絡—— 一般就叫做 LSTM ——是一種 RNN 特殊的類型,可以學習長期依賴信息。LSTM 由?Hochreiter & Schmidhuber (1997)?提出,并在近期被?Alex Graves?進行了改良和推廣。在很多問題,LSTM 都取得相當巨大的成功,并得到了廣泛的使用。

LSTM 通過刻意的設計來避免長期依賴問題。記住長期的信息在實踐中是 LSTM 的默認行為,而非需要付出很大代價才能獲得的能力!

所有 RNN 都具有一種重復神經網絡模塊的鏈式的形式。在標準的 RNN 中,這個重復的模塊只有一個非常簡單的結構,例如一個 tanh 層。

[譯] 理解 LSTM 網絡

標準 RNN 中的重復模塊包含單一的層

LSTM 同樣是這樣的結構,但是重復的模塊擁有一個不同的結構。不同于 單一神經網絡層,這里是有四個,以一種非常特殊的方式進行交互。

[譯] 理解 LSTM 網絡

LSTM 中的重復模塊包含四個交互的層

不必擔心這里的細節。我們會一步一步地剖析 LSTM 解析圖。現在,我們先來熟悉一下圖中使用的各種元素的圖標。

[譯] 理解 LSTM 網絡
LSTM 中的圖標

在上面的圖例中,每一條黑線傳輸著一整個向量,從一個節點的輸出到其他節點的輸入。粉色的圈代表 pointwise 的操作,諸如向量的和,而黃色的矩陣就是學習到的神經網絡層。合在一起的線表示向量的連接,分開的線表示內容被復制,然后分發到不同的位置。

LSTM 的核心思想

LSTM 的關鍵就是細胞狀態,水平線在圖上方貫穿運行。細胞狀態類似于傳送帶。直接在整個鏈上運行,只有一些少量的線性交互。信息在上面流傳保持不變會很容易。

[譯] 理解 LSTM 網絡

Paste_Image.png

LSTM 有通過精心設計的稱作為“門”的結構來去除或者增加信息到細胞狀態的能力。門是一種讓信息選擇式通過的方法。他們包含一個 sigmoid 神經網絡層和一個 pointwise 乘法操作。

[譯] 理解 LSTM 網絡

Paste_Image.png

Sigmoid 層輸出 0 到 1 之間的數值,描述每個部分有多少量可以通過。0 代表“不許任何量通過”,1 就指“允許任意量通過”!

LSTM 擁有三個門,來保護和控制細胞狀態。

逐步理解 LSTM

在我們 LSTM 中的第一步是決定我們會從細胞狀態中丟棄什么信息。這個決定通過一個稱為?忘記門層?完成。該門會讀取h_{t-1}和x_t,輸出一個在 0 到 1 之間的數值給每個在細胞狀態C_{t-1}中的數字。1 表示“完全保留”,0 表示“完全舍棄”。

讓我們回到語言模型的例子中來基于已經看到的預測下一個詞。在這個問題中,細胞狀態可能包含當前?主語?的類別,因此正確的?代詞?可以被選擇出來。當我們看到新的?代詞?,我們希望忘記舊的代詞?。

[譯] 理解 LSTM 網絡
決定丟棄信息

下一步是確定什么樣的新信息被存放在細胞狀態中。這里包含兩個部分。第一,sigmoid 層稱 “輸入門層” 決定什么值我們將要更新。然后,一個 tanh 層創建一個新的候選值向量,\tilde{C}_t,會被加入到狀態中。下一步,我們會講這兩個信息來產生對狀態的更新。

在我們語言模型的例子中,我們希望增加新的代詞的類別到細胞狀態中,來替代舊的需要忘記的代詞。

[譯] 理解 LSTM 網絡
確定更新的信息

現在是更新舊細胞狀態的時間了,C_{t-1}更新為C_t。前面的步驟已經決定了將會做什么,我們現在就是實際去完成。

我們把舊狀態與f_t相乘,丟棄掉我們確定需要丟棄的信息。接著加上i_t * \tilde{C}_t。這就是新的候選值,根據我們決定更新每個狀態的程度進行變化。

在語言模型的例子中,這就是我們實際根據前面確定的目標,丟棄舊代詞的類別信息并添加新的信息的地方。

[譯] 理解 LSTM 網絡
更新細胞狀態

最終,我們需要確定輸出什么值。這個輸出將會基于我們的細胞狀態,但是也是一個過濾后的版本。首先,我們運行一個 sigmoid 層來確定細胞狀態的哪個部分將輸出出去。接著,我們把細胞狀態通過 tanh 進行處理(得到一個在 -1 到 1 之間的值)并將它和 sigmoid 門的輸出相乘,最終我們僅僅會輸出我們確定輸出的那部分。

在語言模型的例子中,因為他就看到了一個?代詞?,可能需要輸出與一個?動詞?相關的信息。例如,可能輸出是否代詞是單數還是負數,這樣如果是動詞的話,我們也知道動詞需要進行的詞形變化。

[譯] 理解 LSTM 網絡
輸出信息

LSTM 的變體

我們到目前為止都還在介紹正常的 LSTM。但是不是所有的 LSTM 都長成一個樣子的。實際上,幾乎所有包含 LSTM 的論文都采用了微小的變體。差異非常小,但是也值得拿出來講一下。

其中一個流形的 LSTM 變體,就是由?Gers & Schmidhuber (2000)?提出的,增加了 “peephole connection”。是說,我們讓 門層 也會接受細胞狀態的輸入。

[譯] 理解 LSTM 網絡
peephole 連接

上面的圖例中,我們增加了 peephole 到每個門上,但是許多論文會加入部分的 peephole 而非所有都加。

另一個變體是通過使用 coupled 忘記和輸入門。不同于之前是分開確定什么忘記和需要添加什么新的信息,這里是一同做出決定。我們僅僅會當我們將要輸入在當前位置時忘記。我們僅僅輸入新的值到那些我們已經忘記舊的信息的那些狀態 。

[譯] 理解 LSTM 網絡

coupled 忘記門和輸入門

另一個改動較大的變體是 Gated Recurrent Unit (GRU),這是由?Cho, et al. (2014)?提出。它將忘記門和輸入門合成了一個單一的 更新門。同樣還混合了細胞狀態和隱藏狀態,和其他一些改動。最終的模型比標準的 LSTM 模型要簡單,也是非常流行的變體。

[譯] 理解 LSTM 網絡
GRU

這里只是部分流行的 LSTM 變體。當然還有很多其他的,如?Yao, et al. (2015)?提出的 Depth Gated RNN。還有用一些完全不同的觀點來解決長期依賴的問題,如?Koutnik, et al. (2014)?提出的 Clockwork RNN。

要問哪個變體是最好的?其中的差異性真的重要嗎??Greff, et al. (2015)?給出了流行變體的比較,結論是他們基本上是一樣的。?Jozefowicz, et al. (2015)?則在超過 1 萬中 RNN 架構上進行了測試,發現一些架構在某些任務上也取得了比 LSTM 更好的結果。

結論

剛開始,我提到通過 RNN 得到重要的結果。本質上所有這些都可以使用 LSTM 完成。對于大多數任務確實展示了更好的性能!

由于 LSTM 一般是通過一系列的方程表示的,使得 LSTM 有一點令人費解。然而本文中一步一步地解釋讓這種困惑消除了不少。

LSTM 是我們在 RNN 中獲得的重要成功。很自然地,我們也會考慮:哪里會有更加重大的突破呢?在研究人員間普遍的觀點是:“Yes! 下一步已經有了——那就是?注意力?!” 這個想法是讓 RNN 的每一步都從更加大的信息集中挑選信息。例如,如果你使用 RNN 來產生一個圖片的描述,可能會選擇圖片的一個部分,根據這部分信息來產生輸出的詞。實際上,?Xu,?et al.?(2015)?已經這么做了——如果你希望深入探索?注意力?可能這就是一個有趣的起點!還有一些使用注意力的相當振奮人心的研究成果,看起來有更多的東西亟待探索……

注意力也不是 RNN 研究領域中唯一的發展方向。例如,?Kalchbrenner,?et al.?(2015)?提出的 Grid LSTM 看起來也是很有錢途。使用生成模型的 RNN,諸如?Gregor,?et al.?(2015)?Chung,?et al.(2015)?和?Bayer & Osendorfer (2015)?提出的模型同樣很有趣。在過去幾年中,RNN 的研究已經相當的燃,而研究成果當然也會更加豐富!

本文轉自博客園知識天地的博客,原文鏈接:RNN介紹,較易懂,如需轉載請自行聯系原博主。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539931.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539931.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539931.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android虛擬機鼠標左鍵拖動會輸入C

不知道什么原因,突然出現這個情況,以為是虛擬機壞了。于是刪了,新建,問題還是存在。 問題原因: 后來發現,原來是今天開了有道詞典,又開啟了詞典的劃詞翻譯。 解決方法: 關閉劃詞翻譯…

php生成圖片水印,PHP生成圖片加文字及圖案水印辦法

工作中,各種語言都要會,但不是各種語言都記到腦子里,常常要查字典、查手冊、以及百度對于PHP生成圖片加文字及圖案水印這項技巧,好久沒有用,又有些生疏了,現在來溫故知新,加深記憶!代…

易飛揚宣布完成100G CWDM4PSM4光模塊量產線建設

訊,易飛揚即日宣布量產兩款高性能的100G光模塊:100G QSFP28 CWDM4 和100G QSFP28 PSM4。兩種產品采用同一個技術平臺和生產平臺。本次建設投產的CWDM4/PSM4 車間為萬級無塵恒溫恒濕車間,面積2000平米,配置有3套全自動高精密WIRE B…

滑動切換activity

一、效果 手在屏幕上劃過一段距離,切換頁面。 二、原理 2.1手在屏幕上出發 onTouch事件 2.2在onTouch事件中完成滑動邏輯處理 2.2.1 判斷劃過的x軸距離,如果大于多少,則startActivtiy 2.2.2 判斷劃過的y軸距離,如果大于多少&a…

Redux的全家桶與最佳實踐

2019獨角獸企業重金招聘Python工程師標準>>> image.png Redux 的第一次代碼提交是在 2015 年 5 月底(也就是一年多前的樣子),那個時候 React 的最佳實踐還不是明晰,作為一個 View 層,有人會用 backbone 甚至…

php二分查找算法時間復雜度,一個運用二分查找算法的程序的時間復雜度是什么...

一個運用二分查找算法的程序的時間復雜度是“對數級別”。二分查找是一種效率較高的查找方法,算法復雜度即是while循環的次數,時間復雜度可以表示“O(h)O(log2n)”。本教程操作環境:windows7系統、Dell G3電腦。一個運用二分查找算法的程序的…

Android MediaPlayer使用方法簡單介紹

1)如何獲得MediaPlayer實例: 可以使用直接new的方式:MediaPlayer mp new MediaPlayer();也可以使用create的方式,如:MediaPlayer mp MediaPlayer.create(this, R.raw.test);//這時就不用調用setDataSource了* 需要在…

oracle基本的操作命令,oracle命令基本操作

--創建表空間create tablespace TBS_OTHERS datafile G:\APP\ORCL\ORADATA\ORCL\TBS_OTHERS01.dbf size 1000m;-- 創建用戶create user C##JHGL identified by jhgl default tablespace TBS_OTHERScreate user C##YJYJHGL identified by jhgl default tablespace TBS_OTHERScre…

將不確定變為確定~頭壓縮是否有必要,MVC如何實現頭壓縮

網頁的頭部壓縮在頁面體積大的情況下非常有必要做,它會使頁面體積有一個明顯的減小,同時加到網頁從服務端下載到客戶端的速度,以下是我做的一個測試: 沒有使用頭壓縮時: 使用了頭壓縮后: 我們可以看到&…

android .9.png ”點九” 圖片制作方法

“點九”是andriod平臺的應用軟件開發里的一種特殊的圖片形式,文件擴展名為:.9.png 智能手機中有自動橫屏的功能,同一幅界面會在隨著手機(或平板電腦)中的方向傳感器的參數不同而改變顯示的方向,在界面改變方向后,界面上的圖形會因為長寬的變化而產生拉伸…

servlet3.0異步處理

Servlet3是Tomcat7出現的新特性,所以需要先安裝tomcat7 微信企業號使用回調模式時: 假如企業無法保證在五秒內處理并回復,可以直接回復空串,企業號不會對此作任何處理,并且不會發起重試。這種情況下,可以…

使用svn diff的-r參數的來比較任意兩個版本的差異

1 svn diff的用法1.1 對比當前本地的工作拷貝文件(working copy)和緩存在.svn下的版本庫文件的區別[plain] view plaincopyprint? svn diff 1.2 對比當前本地的工作拷貝文件(working copy)和任意版本A的差異[plain] view plaincopyprint? svn diff -rA 比如,以下…

深入理解HTTP Session

session在web開發中是一個非常重要的概念,這個概念很抽象,很難定義,也是最讓人迷惑的一個名詞,也是最多被濫用的名字之一,在不同的場合,session一次的含義也很不相同。這里只探討HTTP Session。為了說明問題…

Hibernate的懶加載session丟失解決方法

在web.xml加入spring提供的過濾器&#xff0c;延長session的生命周期 <!--Hibernate的懶加載session丟失解決方法 --><filter><filter-name>openSessionInView</filter-name><filter-class>org.springframework.orm.hibernate4.support.OpenSess…

Linux訪問其他進程空間,Linux環境進程間通信系列(五):共享內存

共享內存可以說是最有用的進程間通信方式&#xff0c;也是最快的IPC形式。兩個不同進程A、B共享內存的意思是&#xff0c;同一塊物理內存被映射到進程A、B各自的進程地址空間。進程A可以即時看到進程B對共享內存中數據的更新&#xff0c;反之亦然。由于多個進程共享同一塊內存區…

沖刺NO.8

Alpha沖刺第八天 站立式會議 項目進展 項目穩步進行&#xff0c;項目的基礎部分如基本信息管理&#xff0c;信用信息管理等部分已相對比較完善。 問題困難 技術困難在短期內很難發生質的變化&#xff0c;而本項目由于選擇了隊員不太熟悉的程序框架&#xff0c;所以所以項目的交…

linux由眾多微內核組成,什么是linux

大家對Linux這個詞比較陌生吧&#xff0c;那么Linux是什么呢&#xff1f;Linux是什么Linux是一種自由和開放源碼的類Unix操作系統。目前存在著許多不同的Linux&#xff0c;但它們都使用了Linux內核。Linux可安裝在各種計算機硬件設備中&#xff0c;從手機、平板電腦、路由器和視…

淺析jQuery中常用的元素查找方法總結

$("#myELement") 選擇id值等于myElement的元素&#xff0c;id值不能重復在文檔中只能有一個id值是myElement所以得到的是唯一的元素 $("div") 選擇所有的div標簽元素&#xff0c;返回div元素數組 $(".myClass") 選擇使用myClass類的css的所有…

右擊菜單一鍵優化(增加新建office2003、新建reg和bat,刪除新建公文包、新建wps、新建rar)...

右擊菜單一鍵優化&#xff08;增加新建office2003、新建reg和bat&#xff0c;刪除新建公文包、新建wps、新建rar&#xff09; Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.doc]"Word.Document.8""Content Type""application/msword&qu…

jquery獲取select選擇的顯示值

轉載自&#xff1a;http://blog.csdn.net/a5489888/article/details/8611703 本來以為jQuery("#select1").val();是取得選中的值&#xff0c; 那么jQuery("#select1").text();就是取得的文本。 這是不正確的&#xff0c;正確做法是&#xff1a; jQuery(&qu…