第八章 深度學習之迴圈神經網路與遞迴神經網路

2021-09-27 05:12:17 字數 1739 閱讀 7115

recurrent: 時間維度的展開,代表資訊在時間維度從前往後的的傳遞和積累,可以模擬markov假設,後面的資訊的概率建立在前面資訊的基礎上,在神經網路結構上表現為後面的神經網路的隱藏層的輸入是前面的神經網路的隱藏層的輸出;

recursive: 空間維度的展開,是乙個樹結構,比如nlp裡某句話,用recurrent neural network來建模的話就是假設句子後面的詞的資訊和前面的詞有關,而用recurxive neural network來建模的話,就是假設句子是乙個樹狀結構,由幾個部分(主語,謂語,賓語)組成,而每個部分又可以在分成幾個小部分,即某一部分的資訊由它的子樹的資訊組合而來,整句話的資訊由組成這句話的幾個部分組合而來。

rnn引入「記憶」的概念;遞迴指其每乙個元素都執行相同的任務,但是輸出依賴於輸入和「記憶」

當η<1時,就會出現梯度消失問題,而當η>1時,梯度**也就產生了。

通常來說,梯度**更容易處理一些。因為梯度**的時候,我們的程式會收到nan錯誤。我們也可以設定乙個梯度閾值,當梯度超過這個閾值的時候可以直接擷取。

梯度消失更難檢測,而且也更難處理一些。總的來說,我們有三種方法應對梯度消失問題:

1.合理的初始化權重值。初始化權重,使每個神經元盡可能不要取極大或極小值,以躲開梯度消失的區域。

3.使用其他結構的rnns,比如長短時記憶網路(ltsm)和gated recurrent unit(gru),這是最流行的做法。我們將在以後的文章中介紹這兩種網路。

**:8_chapter/8.2迴圈神經網路

**:8_chapter/8.3遞迴神經網路

在8.1中,我們介紹了迴圈神經網路以及它的訓練演算法。我們也介紹了迴圈神經網路很難訓練的原因,這導致了它在實際應用中,很難處理長距離的依賴。在本文中,我們將介紹一種改進之後的迴圈神經網路:長短時記憶網路(long short term memory network, lstm),它成功的解決了原始迴圈神經網路的缺陷,成為當前最流行的rnn,在語音識別、描述、自然語言處理等許多領域中成功應用。

但不幸的一面是,lstm的結構很複雜,因此,我們需要花上一些力氣,才能把lstm以及它的訓練演算法弄明白。在搞清楚lstm之後,我們再介紹一種lstm的變體:gru (gated recurrent unit)。 它的結構比lstm簡單,而效果卻和lstm一樣好,因此,它正在逐漸流行起來。最後,我們仍然會動手實現乙個lstm。

需要注意的一點是:lstm和gru都是迴圈神經網路的一種。

本節分兩個部分,第一部分是原理(包括基於numpy的乙個實現,幫助理解原理),第二部分是應用。

首先介紹一下原理及實現

**:8_chapter/8.4.1遞迴神經網路

其次介紹一下使用tensorflow實現的基於cnn/lstm文字分類

每個word經過embedding之後,進入lstm層,這裡lstm是標準的lstm,然後經過乙個時間序列得到的t個隱藏lstm神經單元的向量,這些向量經過mean pooling層之後,可以得到乙個向量h,然後緊接著是乙個簡單的邏輯斯蒂回歸層(戒者乙個softmax層)得到乙個類別分布向量。

**:8_chapter/8.4.2遞迴神經網路

深度學習與神經網路(八) 迴圈神經網路RNN

首先看乙個簡單案例,在某寶的好評 差評檢測中,系統要能夠分析使用者的評價是好評還是差評,那怎樣處理這樣的評價資料呢,例如有一條評價 i hate this boring movie 機器怎樣解決這樣的問題呢 首先我們在之前的時間序列表示中已經知道了怎樣對乙個單詞進行表示。如果使用glove的話,整句...

第八章學習小結

內容 這章我具體學習了 穩定的 1.直接插入法 最簡單且穩定。2.折半插入法 利用 折半查詢 3.氣泡排序 最簡單的交換排序,可用於順序表和鏈式儲存結構,但只能交換相鄰記錄,適於小規模資料。4.簡單選擇排序 即 直接選擇排序 與冒泡演算法上有些類似,但也不適於大規模資料 o n 2 2 5.歸併排序...

第八章學習小結

思維導圖 練習總結 排序的穩定性是指 保證排序前兩個相等的數在序列中的前後順序,和排序後相同。要從 50 個鍵值中找出最大的 3 個值,選擇排序比堆排序快。t 規模較小直接選擇排序快 設有5000個無序的元素,希望用最快的速度排出其中前50個最大的元素,最好選堆排序 堆排序不需要等整個排序結束就可挑...