• 沒有找到結果。

模型建構-類神經網路

第三章、 研究方法

第二節、 模型建構-類神經網路

讓神經網路產生作用的演算法包括前向(forward)結果運算,誤差反向傳播 運算BP(Backward Propagation)以及梯度的參數訓練。

在沒有程式語言背景的限制之下本研究選用TensorFlow 深度學習框架,已 經將各種功能封裝,研究使用的模組只需要調用對應的API 來實現。

TensorFlow。Tensor 代表張量,Flow 代表流動、計算和映射,這也體現出 資料是有向的流動、計算和映射。張量為向量、純量和其他張量之間的線性關 係的多線性函數。張量可以表示廣泛資料類型。最小的張量是一個數字,也就 是0 階張量。數字有序排列即是 1 階張量,形成一組向量,把一組向量有序排 列,就是2 階張量,即矩陣,把矩陣推疊起來,就是 3 維張量。

1 RNN

傳統神經網路模型中,是從輸入層到隱含層再到輸出層,所有的輸入和輸 出假設是相互獨立的。可是這種一般的傳統神經網路無法解決很多問題,而遞 歸神經網路(recurrent neural networks,RNN)的目的為處理序列資料,RNN 是 一種時序模型,藉由隱含層向輸入層的回饋,對語言建模的時候能夠利用更長 的歷史記憶訊息

比如本研究探討的文案,需要預測句子的下一個單詞來達成文本生成,一

般需要參照前面的單詞,因為句子中前後的單詞有先後關係。RNN 之所以稱為 遞歸神經網路即指一個序列當前的輸出與前面的輸出有關。

圖3.2.1.1 An unrolled recurrent neural network. 遞歸神經網絡展開圖。

資料來源: Christopher (2015). Understanding LSTM Networks

RNN 的輸入為一個序列: X=[x0,x1,..xt-1,xt,xt+1,...xT],以語言模型來說,

Xt 等於一個詞向量,一個序列等於一個句子。以上圖來說輸入 xt=t 時刻的向 量,通過A 輸出一個結果 ht=t 時刻的狀態或者輸出。迴圈結構使得某個時刻的 狀態能夠傳到下一個時刻。

A 的運算就是把迴歸模型變成有加入權重運算,變成具有預測功能,而且 參數都是可共用的Parameter Sharing 這是為了簡化計算。

具體的表現形式為對序列的每個單詞執行相同的任務,輸出取決於上一層 的計算。對之前的單詞進行記憶並應用於當前輸出的計算中。

隱藏層之間的節點互相有連接,並且隱藏層的輸入不僅包括輸入層的輸出 還包括上一時刻隱藏層的輸出。理論上,RNN 能夠對任何長度的序列資料進行 處理。

以文本的預測關係來說,輸出會受到上一層或上上層的影響:

比如說:

我是台灣人,我講「中文」。

我是住在美國的台灣人,我講「英文」。

RNN 有能力由關係近的輸入來預測輸出。而語言模型的本意就是為了判斷 一個句子的概率,正是由於此特性所以可以應用在文本生成上面。

2 LSTM 網路

2.1 小節提到的 RNN,有能力參考前字句,預測下一個字句,聽起來已符 合了一般認知語言的基本特性。但是距離越遠的字句影響力會遞減,這就不符 合人類思考是會對特有事物記憶的能力。

長短期記憶模型(long short-term memory,LSTM)層是整個神經網路的關 鍵部分。LSTM 可視為 RNN 的一個變形。假設把 LSTM 的 forget gate 全部=0

(永遠不記憶之前的資訊),input gate 全部 =1,output gate 全部=1(輸出所有 cell state 儲存單元中的資訊),這樣的 LSTM 等同為一個標準的 RNN。LSTM 可以通過gate 決定網絡需要記住和遺忘多長時間之前的記憶。

3 優化器

RNN 會遇到梯度爆炸 Gradients Explode 和梯度消失 Vanishing gradient 的 問題是因為隱藏層參數w 的傳播。LSTM 解決了長期依賴而導致梯度消失的問 題, 但是還有梯度爆炸的問題,深層神經網絡的每一層和時間經由乘法而有相 互關聯,因此輸出容易消失或爆炸。

圖3.2.3.1 應用 sigmoid 函數的效果

資料來源:Deeplearning4j (2017) 「A Beginner’s Guide to Recurrent Networks and LSTMs」。

由上圖可知應用了sigmoid 函數後數據會趨於平坦直到沒有可檢測的斜率。

針對梯度爆炸本研究調用模型採用 gradient clipping 的方式來防止梯度爆 炸。即通過設置一個閥值,當梯度超過閾值,就將其重置為閥值設定的大小,

控制梯度不會變無限大。

4 詞向量

文字特性不像影像輸出點陣圖(Bitmap)較為直覺,語言還具有高度的曖昧 性,同樣一句話也可能具有多重意喻,而且隨著時代推進還會有新詞出現,語 言學家越來越難建立文法規則來學習。 所以針對處理語言的模型通常都會對輸 入文字做前置處理(Preprocess) 。

在 本 研 究 中 使 用 的 輸 入 為 中 文 的 文 案 , 文 案 中 部 分 資 料: 標 點符 號 (Punctuation) 、分詞(Tokenize)、Stop Words:介係詞或助詞對語意並無顯著的 幫助,模型會自動處理移除所以不需要前處理。

「詞向量」(Word Embedding):將單字轉為實數的數值會比較容易處理,以

形成連續的向量空間。

相關文件