迴圈神經網路(Recurrent) 介紹

2021-07-26 08:39:10 字數 2203 閱讀 1557

大家貌似都叫recurrent neural networks為迴圈神經網路。

我之前是查維基百科的緣故,所以一直叫它遞迴網路。

遞迴神經網路rnn)是兩種人工神經網路

的總稱。一種是時間遞迴神經網路(recurrent neural network),另一種是結構遞迴神經網路(recursive neural network)。

下面我所提到的遞迴網路全部都是指recurrent neural networks。遞迴神經網路的討論分為三部分

介紹:描述遞迴網路和前饋網路的差別和優劣

實現:梯度消失和梯度**問題,及解決問題的lstm和gru

**:用tensorflow實際演示乙個任務的訓練和使用

該文為第一部分:

文中有很多動態圖,**,看不了的話建議去上面的gitbook位址閱讀

一、用前饋神經網路來做時序訊號**有什麼問題?

幾乎所有的神經網路都可以看作為一種特殊制定的前饋神經網路,這裡「特殊制定」的作用在於縮減尋找對映函式的搜尋空間,也正是因為搜尋空間的縮小,才使得網路可以用相對較少的資料量學習到更好的規律。

:解一元二次方程

二、相比前饋神經網路,遞迴神經網路究竟有何不同之處?

需要注意的是遞迴網路並非只有一種結構,這裡介紹一種最為常用和有效的遞迴網路結構。

首先讓我們用從輸入層到隱藏層的空間變換視角來觀察,不同的地方在於,這次將時間維度一起考慮在內。

:這裡的圓圈不再代表節點,而是狀態,是輸入向量和輸入經過隱藏層後的向量。

前饋網路:window size為3幀的窗處理後的前饋網路

遞迴網路:不再有window size的概念,而是time step

遞迴神經網路是在時間結構上存在共享特性的神經網路變體。

時間結構共享是遞迴網路的核心中的核心。

共享特性給網路帶來了諸多好處,但也產生了另乙個問題:

三、為什麼可以共享?

在物理視角中,yjango想給大家展示的第一點就是為什麼我們可以用這種共享不同時刻權重矩陣的網路進行時序**。

下圖可以從直覺上幫助大家感受日常生活中很多時序訊號是如何產生的。

上述例子中所產生的軌跡、**都是我們所能觀察到的observations,我們常常會利用這些observation作為依據來做出決策。

下面的例子可能更容易體會共享特性對於資料量的影響。

遞迴網路輸出:遞迴網路的出現實際上是對前饋網路在時間維度上的擴充套件。

遞迴網路資料:遞迴網路由於引入time step的緣故,使得其訓練資料與前饋網路有所不同。

請以層的概念對待所有網路。遞迴神經網路是指擁有遞迴層的神經網路,其關鍵在於網路中存在遞迴層。

每一層的作用是將資料從乙個空間變換到另乙個空間下。可以視為特徵抓取方式,也可以視為分類器。二者沒有明顯界限並彼此包含。關鍵在於使用者如何理解。

以層的概念理解網路的好處在於,今後的神經網路往往並不會僅用到一種處理手段。往往是前饋、遞迴、卷積混合使用。 這時就無法再以遞迴神經網路來命名該結構。

:層並不是圖中所畫的圓圈,而是連線。圓圈所表示的是穿過各層前後的狀態。

常規遞迴網路從理論上應該可以顧及所有過去時刻的依賴,然而實際卻無法按人們所想象工作。原因在於梯度消失(vanishinggradient)和梯度**(exploding gradient)問題。下一節就是介紹long short term memory(lstm)和gated recurrent unit(gru):遞迴網路的特別實現演算法。

迴圈神經網路

原文 迴圈神經網路也可以畫成下面這個樣子 對於語言模型來說,很多時候光看前面的詞是不夠的,比如下面這句話 我的手機壞了,我打算 一部新手機。可以想象,如果我們只看橫線前面的詞,手機壞了,那麼我是打算修一修?換一部新的?還是大哭一場?這些都是無法確定的。但如果我們也看到了橫線後面的詞是 一部新手機 那...

迴圈神經網路

原文 迴圈神經網路也可以畫成下面這個樣子 對於語言模型來說,很多時候光看前面的詞是不夠的,比如下面這句話 我的手機壞了,我打算 一部新手機。可以想象,如果我們只看橫線前面的詞,手機壞了,那麼我是打算修一修?換一部新的?還是大哭一場?這些都是無法確定的。但如果我們也看到了橫線後面的詞是 一部新手機 那...

迴圈神經網路

特點 上一階段 時間步 的輸出作為輸入進入當前時間步。迴圈神經網路由迴圈神經原組成,迴圈神經元一般有兩個輸入,乙個是前階段的資訊,乙個是當前階段的資訊。同時產生乙個輸出,可以作為下一階段的輸入。迴圈神經網路採用多種模型。左上 每個時間步有乙個輸入,同時產生乙個輸出 右上 一串輸入,最後產生乙個輸出。...