原文:
迴圈神經網路也可以畫成下面這個樣子:
對於語言模型來說,很多時候光看前面的詞是不夠的,比如下面這句話:
我的手機壞了,我打算____一部新手機。可以想象,如果我們只看橫線前面的詞,手機壞了,那麼我是打算修一修?換一部新的?還是大哭一場?這些都是無法確定的。但如果我們也看到了橫線後面的詞是『一部新手機』,那麼,橫線上的詞填『買』的概率就大得多了。
在上一小節中的基本迴圈神經網路是無法對此進行建模的,因此,我們需要雙向迴圈神經網路,如下圖所示:
前面我們介紹的迴圈神經網路只有乙個隱藏層,我們當然也可以堆疊兩個以上的隱藏層,這樣就得到了深度迴圈神經網路。如下圖所示:
bptt演算法是針對迴圈層的訓練演算法,它的基本原理和bp演算法是一樣的,也包含同樣的三個步驟:
前向計算每個神經元的輸出值;
反向計算每個神經元的誤差項值,它是誤差函式e對神經元j的加權輸入的偏導數;
計算每個權重的梯度。
最後再用隨機梯度下降演算法更新權重。
現在,我們介紹一下基於rnn語言模型。我們首先把詞依次輸入到迴圈神經網路中,每輸入乙個詞,迴圈神經網路就輸出截止到目前為止,下乙個最可能的詞。例如,當我們依次輸入:
我 昨天 上學 遲到 了神經網路的輸出如下圖所示:
可以用下面的圖來直觀的表示:
使用這種向量化方法,我們就得到了乙個高維、稀疏的向量(稀疏是指絕大部分元素的值都是0)。
其中,s和e是兩個特殊的詞,分別表示乙個序列的開始和結束。
我們知道,神經網路的輸入和輸出都是向量,為了讓語言模型能夠被神經網路處理,我們必須把詞表達為向量的形式,這樣神經網路才能處理它。
神經網路的輸入是詞,我們可以用下面的步驟對輸入進行向量化:
建立乙個包含所有詞的詞典,每個詞在詞典裡面有乙個唯一的編號。
任意乙個詞都可以用乙個n維的one-hot向量來表示。
語言模型要求的輸出是下乙個最可能的詞,我們可以讓迴圈神經網路計算計算詞典中每個詞是下乙個詞的概率,這樣,概率最大的詞就是下乙個最可能的詞。因此,神經網路的輸出向量也是乙個n維向量,向量中的每個元素對應著詞典中相應的詞是下乙個詞的概率。如下圖所示:
最後,我們使用交叉熵誤差函式作為優化目標,對模型進行優化。
在實際工程中,我們可以使用大量的語料來對模型進行訓練,獲取訓練資料和訓練的方法都是相同的。
迴圈神經網路
原文 迴圈神經網路也可以畫成下面這個樣子 對於語言模型來說,很多時候光看前面的詞是不夠的,比如下面這句話 我的手機壞了,我打算 一部新手機。可以想象,如果我們只看橫線前面的詞,手機壞了,那麼我是打算修一修?換一部新的?還是大哭一場?這些都是無法確定的。但如果我們也看到了橫線後面的詞是 一部新手機 那...
迴圈神經網路
特點 上一階段 時間步 的輸出作為輸入進入當前時間步。迴圈神經網路由迴圈神經原組成,迴圈神經元一般有兩個輸入,乙個是前階段的資訊,乙個是當前階段的資訊。同時產生乙個輸出,可以作為下一階段的輸入。迴圈神經網路採用多種模型。左上 每個時間步有乙個輸入,同時產生乙個輸出 右上 一串輸入,最後產生乙個輸出。...
迴圈神經網路
rnn rnn便於處理具有時序關係的任務 引入 記憶 概念 基本結構 輸出不僅依賴於輸入,還依賴於記憶 將同乙個結構迴圈利用 兩種輸入,兩種輸出,一種函式 三塊引數 u 從輸入到隱藏狀態 v 從隱藏狀態到輸出 xt 時間t處的輸入 ht 時間t處的記憶,ht f ht 1,xt f可以是tanh等 ...