1. 程式人生 > >序列模型(2)-----迴圈神經網路RNN

序列模型(2)-----迴圈神經網路RNN

一、RNN的作用:

RNN可解決的問題:

訓練樣本輸入是連續的序列,且序列的長短不一,比如基於時間的序列:一段段連續的語音,一段段連續的手寫文字。這些序列比較長,且長度不一,比較難直接的拆分成一個個獨立的樣本來通過DNN/CNN進行訓練。

二、RNN模型:

 

上圖中左邊是RNN模型沒有按時間展開的圖,如果按時間序列展開,則是上圖中的右邊部分。我們重點觀察右邊部分的圖。

這幅圖描述了在序列索引號t附近RNN的模型。其中:

    1)x(t)代表在序列索引號 t 時訓練樣本的輸入。同樣的,x(t1)

">x(t+1)代表在序列索引號t1t+1 時訓練樣本的輸入。

    2)h(t) 代表在序列索引號 t 時模型的隱藏狀態。h(t)x(t)h(t−1) 共同決定。

    3)o(t) 代表在序列索引號 t 時模型的輸出。o(t) 只由模型當前的隱藏狀態h(t)決定。

    4)L(t) 代表在序列索引號 t 時模型的損失函式。

    5)y(t) 代表在序列索引號 t 時訓練樣本序列的真實輸出。

    6)

U,W,V">U,W,V 這三個矩陣是我們的模型的線性關係引數,它在整個RNN網路中是共享的,這點和DNN很不相同。 也正因為是共享了,它體現了RNN的模型的“迴圈反饋”的思想。

            U:輸入層到隱藏層直接的權重

            W:隱藏層到隱藏層的權重

            V: 隱藏層到輸出層的權重

  

三、 RNN前向傳播演算法

  1.  對於任意一個序列索引號
t">t ,我們隱藏狀態h(t)x(t) 和h(t1)得到:
  • 序列索引號 t 時模型的輸出o(t)的表示式比較簡單:
    • o(t)=Vh(t)+c
  • 在最終在序列索引號 t 時我們的預測輸出為:
    • y^(t)=σ(o(t))
    • 通常由於RNN是識別類的分類模型,所以上面這個啟用函式一般是softmax。
  • 通過損失函式L(t),比如對數似然損失函式,我們可以量化模型在當前位置的損失,即y^(t)y(t)的差距。
  • 四、RNN反向傳播演算法推導

    RNN反向傳播演算法的思路和DNN是一樣的,即通過梯度下降法一輪輪的迭代,得到合適的RNN模型引數U,W,V,b,c

    由於我們是基於時間反向傳播,所以RNN的反向傳播有時也叫做BPTT(back-propagation through time)。

    當然這裡的BPTT和DNN也有很大的不同點,即這裡所有的U,W,V,b,c在序列的各個位置是引數共享的,反向傳播時我們更新的是相同的引數。

    為了簡化描述,這裡的損失函式我們為對數損失函式,輸出的啟用函式為softmax函式,隱藏層的啟用函式為tanh函式。

    (1)對於RNN,由於我們在序列的每個位置 t 都有損失函式,因此最終的損失L為:

       

     

    (2)其中 V,c 的梯度計算是比較簡單的:

     (3)W,U,b的梯度計算比較複雜:

    從RNN的模型可以看出,在反向傳播時,在某一序列位置t的梯度損失由當前位置的輸出對應的梯度損失序列索引位置t+1時的梯度損失兩部分共同決定。對於W在某一序列位置t的梯度損失需要反向傳播一步步的計算。我們定義序列索引t位置的隱藏狀態的梯度為:

     

    摘自:https://www.cnblogs.com/pinard/p/6509630.html

    相關推薦

    序列模型2-----迴圈神經網路RNN

    一、RNN的作用: RNN可解決的問題: 訓練樣本輸入是連續的序列,且序列的長短不一,比如基於時間的序列:一段段連續的語音,一段段連續的手寫文字。這些序列比較長,且長度不一,比較難直接的拆分成一個個獨立的樣本來通過DNN/CNN進行訓練。 二、RNN模型:   上圖中左邊是RNN模型沒

    序列模型5-----雙向神經網路BRNN和深層迴圈神經網路Deep RNN

    一、雙向迴圈神經網路BRNN 採用BRNN原因: 雙向RNN,即可以從過去的時間點獲取記憶,又可以從未來的時間點獲取資訊。為什麼要獲取未來的資訊呢? 判斷下面句子中Teddy是否是人名,如果只從前面兩個詞是無法得知Teddy是否是人名,如果能有後面的資訊就很好判斷了,這就需要用的雙向迴圈神經網路。

    神經網路學習2————線性神經網路以及python實現

    一、線性神經網路結構模型 在結構上與感知器非常相似,只是神經元啟用函式不同,結構如圖所示: 若網路中包含多個神經元節點,就可形成多個輸出,這種神經網路可以用一種間接的方式解決線性不可分的問題,方法是用多個線性含糊對區域進行劃分,神經結構和解決異或問題如圖所示:  &nbs

    機器學習與深度學習系列連載: 第二部分 深度學習十三迴圈神經網路 1Recurre Neural Network 基本概念

    迴圈神經網路 1(Recurre Neural Network 基本概念 ) 迴圈神經網路的特點: • RNNs 在每個時間點連線引數值,引數只有一份 • 神經網路出了輸入以外,還會建立在以前的“記憶”的基礎上 • 記憶體的要求與輸入的規模有關 當然,他的深度不只有一層:

    2017CS231n李飛飛深度視覺識別筆記——迴圈神經網路

    第十講 迴圈神經網路 課時1 RNN,LSTM,GRU     上一章中討論了CNN的架構有關內容,這一節中將討論有關RNN的內容。     在之前的學習中,提到了一種稱為vanilla的前饋網路

    機器學習與Tensorflow5——迴圈神經網路、長短時記憶網路

      1.迴圈神經網路的標準模型 前饋神經網路能夠用來建立資料之間的對映關係,但是不能用來分析過去訊號的時間依賴關係,而且要求輸入樣本的長度固定 迴圈神經網路是一種在前饋神經網路中增加了分虧連結的神經網路,能夠產生對過去資料的記憶狀態,所以可以用於對序列資料的處理,並建立不同時段資料之間

    菜鳥學matlab之智慧演算法2——————————BP神經網路演算法

    一.演算法背景和理論 BP(Back Propagation)神經網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出

    TensorFlow:實戰Google深度學習框架迴圈神經網路

    RNN網路確實可以解決和時間序列有關係的問題,但是,在實際的應用過程中,我們可以看到效能並不是很好。RNN記住了以前輸入的所有資訊,但是有時候並不需要記住以前時刻的所有資訊,增加了很多的系統記憶體負擔;有時候我們的確需要記住很長時間以前資訊,但是又容易出現梯度爆炸或者梯度消失的問題。針對於這個問題,人們開

    機器學習與深度學習系列連載: 第二部分 深度學習十四迴圈神經網路 2Gated RNN - LSTM

    迴圈神經網路 2(Gated RNN - LSTM ) simple RNN 具有梯度消失或者梯度爆炸的特點,所以,在實際應用中,帶有門限的RNN模型變種(Gated RNN)起著至關重要的作用,下面我們來進行介紹: LSTM (Long Short-term Memory )

    機器學習與深度學習系列連載: 第二部分 深度學習十四迴圈神經網路 2Gated RNN

    迴圈神經網路 2(Gated RNN - LSTM ) simple RNN 具有梯度消失或者梯度爆炸的特點,所以,在實際應用中,帶有門限的RNN模型變種(Gated RNN)起著至關重要的作用,下面我們來進行介紹: LSTM (Long Short-term

    TensorFlow從入門到理解:你的第一個迴圈神經網路RNN分類例子

    執行程式碼: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # set random seed for comparing the two result calculations

    TensorFlow從入門到理解:你的第一個迴圈神經網路RNN迴歸例子

    執行程式碼: import tensorflow as tf import numpy as np import matplotlib.pyplot as plt BATCH_START = 0 TIME_STEPS = 20 BATCH_SIZE = 50 INPUT_SIZE = 1 OUTP

    機器學習與深度學習系列連載: 第二部分 深度學習十六迴圈神經網路 4BiDirectional RNN, Highway network, Grid-LSTM

    深度學習(十六)迴圈神經網路 4(BiDirectional RNN, Highway network, Grid-LSTM) RNN處理時間序列資料的時候,不僅可以正序,也可以正序+逆序(雙向)。下面顯示的RNN模型,不僅僅是simple RNN,可以是LSTM,或者GRU 1 B

    機器學習與深度學習系列連載: 第二部分 深度學習十五迴圈神經網路 3Gated RNN - GRU

    迴圈神經網路 3(Gated RNN - GRU) LSTM 是1997年就提出來的模型,為了簡化LSTM的複雜度,在2014年 Cho et al. 提出了 Gated Recurrent Units (GRU)。接下來,我們在LSTM的基礎上,介紹一下GRU。 主要思路是: •

    序列模型4----門控迴圈單元GRU

    一、GRU 其中, rt表示重置門,zt表示更新門。 重置門決定是否將之前的狀態忘記。(作用相當於合併了 LSTM 中的遺忘門和傳入門) 當rt趨於0的時候,前一個時刻的狀態資訊ht−1會被忘掉,隱藏狀態h^t會被重置為當前輸入的資訊。 更新門決定是否要將隱藏狀態更新為新的狀態h^

    深度學習---迴圈神經網路RNN詳解LSTM

    上一節我們詳細講解了RNN的其中一個學習演算法即BPTT,這個演算法是基於BP的,只是和BP不同的是在反向傳播時,BPTT的需要追溯上一個時間的權值更新,如下圖,當前時刻是s(t),但是反向傳播時,他需要追溯到上一個時間狀態即s(t-1),s(t-2),....直到剛開始的那個時間,但是根據BP

    Torch7學習——學習神經網路包的用法2

    總說 上篇部落格已經初步介紹了Module類。這裡將更加仔細的介紹。並且還將介紹Container, Transfer Functions Layers和 Simple Layers模組。 Module 主要有4個函式。 1. [output]f

    吳恩達Coursera深度學習課程 DeepLearning.ai 提煉筆記5-1-- 迴圈神經網路

    Ng最後一課釋出了,撒花!以下為吳恩達老師 DeepLearning.ai 課程專案中,第五部分《序列模型》第一週課程“迴圈神經網路”關鍵點的筆記。 同時我在知乎上開設了關於機器學習深度學習的專欄收錄下面的筆記,以方便大家在移動端的學習。歡迎關

    MATLAB神經網路程式設計——BP神經網路模型結構與學習規則

    《MATLAB神經網路程式設計》 化學工業出版社 讀書筆記 第四章 前向型神經網路 4.3 BP傳播網路 本文是《MATLAB神經網路程式設計》書籍的閱讀筆記,其中涉及的原始碼、公式、原理都來自此書,若有不理解之處請參閱原書 感知器神經網路的

    神經網路優化 - 搭建神經網路八股

    為提高程式的可複用性,搭建模組化的神經網路八股 1 前向傳播 前向傳播就是設計、搭建從輸入(引數 x ) 到輸出(返回值為預測或分類結果 y )的完整網路結構,實現前向傳播過程,一般將其放在 forward.py 檔案中 前向傳播需要定義三個函式(實際上第一個函式是框架,第二、三個函式是賦初值過程)