RNN循環神經網絡相關知識

循環神經網絡是啥
循環神經網絡種類繁多,我們先從最簡單的基本循環神經網絡開始吧。

基本循環神經網絡
下圖是一個簡單的循環神經網絡如,它由輸入層、一個隱藏層和一個輸出層組成:
在這裏插入圖片描述

納尼?!相信第一次看到這個玩意的讀者內心和我一樣是崩潰的。因爲循環神經網絡實在是太難畫出來了,網上所有大神們都不得不用了這種抽象藝術手法。不過,靜下心來仔細看看的話,其實也是很好理解的。如果把上面有W的那個帶箭頭的圈去掉,它就變成了最普通的全連接神經網絡x是一個向量,它表示輸入層的值(這裏面沒有畫出來表示神經元節點的圓圈);s是一個向量,它表示隱藏層的值(這裏隱藏層面畫了一個節點,你也可以想象這一層其實是多個節點,節點數與向量s的維度相同);U是輸入層到隱藏層的權重矩陣(讀者可以回到第三篇文章零基礎入門深度學習(3) - 神經網絡和反向傳播算法,看看我們是怎樣用矩陣來表示全連接神經網絡的計算的);o也是一個向量,它表示輸出層的值;V是隱藏層到輸出層的權重矩陣。那麼,現在我們來看看W是什麼。循環神經網絡的隱藏層的值s不僅僅取決於當前這次的輸入x,還取決於上一次隱藏層的值s。權重矩陣 W就是隱藏層上一次的值作爲這一次的輸入的權重。

如果我們把上面的圖展開,循環神經網絡也可以畫成下面這個樣子:
在這裏插入圖片描述
雙向循環神經網絡
對於語言模型來說,很多時候光看前面的詞是不夠的,比如下面這句話:

我的手機壞了,我打算____一部新手機。

可以想象,如果我們只看橫線前面的詞,手機壞了,那麼我是打算一修?一部新的?還是大一場?這些都是無法確定的。但如果我們也看到了橫線後面的詞是『一部新手機』,那麼,橫線上的詞填『買』的概率就大得多了。

在上一小節中的基本循環神經網絡是無法對此進行建模的,因此,我們需要雙向循環神經網絡,如下圖所示:
在這裏插入圖片描述
向量化
我們知道,神經網絡的輸入和輸出都是向量,爲了讓語言模型能夠被神經網絡處理,我們必須把詞表達爲向量的形式,這樣神經網絡才能處理它。

神經網絡的輸入是詞,我們可以用下面的步驟對輸入進行向量化:

建立一個包含所有詞的詞典,每個詞在詞典裏面有一個唯一的編號。
任意一個詞都可以用一個N維的one-hot向量來表示。其中,N是詞典中包含的詞的個數。假設一個詞在詞典中的編號是i,v是表示這個詞的向量,Vj是向量的第j個元素,則:
在這裏插入圖片描述
使用這種向量化方法,我們就得到了一個高維、稀疏的向量(稀疏是指絕大部分元素的值都是0)。處理這樣的向量會導致我們的神經網絡有很多的參數,帶來龐大的計算量。因此,往往會需要使用一些降維方法,將高維的稀疏向量轉變爲低維的稠密向量。

語言模型要求的輸出是下一個最可能的詞,我們可以讓循環神經網絡計算計算詞典中每個詞是下一個詞的概率,這樣,概率最大的詞就是下一個最可能的詞。因此,神經網絡的輸出向量也是一個N維向量,向量中的每個元素對應着詞典中相應的詞是下一個詞的概率。如下圖所示:
在這裏插入圖片描述

Softmax層

前面提到,語言模型是對下一個詞出現的概率進行建模。那麼,怎樣讓神經網絡輸出概率呢?方法就是用softmax層作爲神經網絡的輸出層。

我們先來看一下softmax函數的定義:
在這裏插入圖片描述
這個公式看起來可能很暈,我們舉一個例子。Softmax層如下圖所示:
在這裏插入圖片描述
從上圖我們可以看到,softmax layer的輸入是一個向量,輸出也是一個向量,兩個向量的維度是一樣的(在這個例子裏面是4)。輸入向量x=[1 2 3 4]經過softmax層之後,經過上面的softmax函數計算,轉變爲輸出向量y=[0.03 0.09 0.24 0.64]。計算過程爲:
在這裏插入圖片描述
我們來看看輸出向量y的特徵:

1 每一項爲取值爲0-1之間的正數;
2 所有項的總和是1。

我們不難發現,這些特徵和概率的特徵是一樣的,因此我們可以把它們看做是概率。對於語言模型來說,我們可以認爲模型預測下一個詞是詞典中第一個詞的概率是0.03,是詞典中第二個詞的概率是0.09,以此類推。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章