人人都能看懂的循环神经网络RNN
循環神經網絡
基礎篇
??我們假設您有一個管家,他很擅長做蘋果派、漢堡以及炸雞這三樣食物。管家制作食物的種類取決于天氣,若是晴天,他會做蘋果派;若是雨天,他會做漢堡。這樣制作食物的規則很容易用神經網絡來表示。 ??我們接下來用數學語言描述上述過程,利用一些向量表示食物,再用一些向量表示天氣。
蘋果派=[100]漢堡=[010]炸雞=[001]晴天=[10]雨天=[01]蘋果派= \left[ \begin{matrix} 1\\ 0\\ 0 \end{matrix} \right] 漢堡= \left[ \begin{matrix} 0\\ 1\\ 0 \end{matrix} \right] 炸雞= \left[ \begin{matrix} 0\\ 0\\ 1 \end{matrix} \right]\\ 晴天= \left[ \begin{matrix} 1\\ 0 \end{matrix} \right] 雨天= \left[ \begin{matrix} 0\\ 1 \end{matrix} \right] 蘋果派=???100????漢堡=???010????炸雞=???001????晴天=[10?]雨天=[01?]
??我們可以利用圖形描述這一過程
??這個神經網絡其實是一個非常簡單的矩陣,我們可以構建一個矩陣與天氣向量相乘從而得到廚師要做的食物名稱。不難發現天氣與食物之間滿足線性映射。具體映射過程如下:
??我們同樣可以利用神經元之間的連接關系表示上述過程:
進階篇
??假設現在管家做飯不依賴于天氣,而是遵循一個順序,比如第一天是蘋果派、第二天是漢堡、第三天是炸雞,接下來又是蘋果派、漢堡、炸雞……
??我們用循環神經網絡表示上述過程:
??我們繼續沿用上文中食物的向量表示,但此處我們將用新的矩陣來表示神經網絡:
[001100010]\left[ \begin{matrix} 0 & 0 & 1\\ 1 & 0 & 0\\ 0 & 1 & 0 \end{matrix} \right] ???010?001?100????
??具體的計算過程如下:
??不難發現,此處的神經網絡依然是一個簡單的線性映射,將蘋果派映射到漢堡,將漢堡映射到炸雞,將炸雞映射到蘋果派。我們接下來用神經元描述上述過程,其中我們只繪制權重為1的邊,權重為0的邊將被省略:
終極篇
??我們現在來考慮一種更為復雜的情況,管家依然只做3種食物:蘋果派、漢堡、炸雞,但是當天制作的食物與天氣有關,若今天是晴天,那么管家會外出享受好天氣,所以依然制作昨天的食物。若今天是雨天,管家將不會出門,所以按照順序會制作新的食物。我們用圖片表示如下:
??目前的神經網絡工作方式如下:
??我們繼續沿用食物以及天氣的向量表示,現在我們的神經網絡具有多層,所以需要通過多個矩陣進行表示。我們先來觀察食物矩陣是如何工作的,不難發現上部分就是一個單位陣。我們這里以蘋果派為例進行展示:
??我們接下來來看天氣矩陣是如何工作的:
??我們接下來將食物矩陣和天氣矩陣進行相加:
??具體的相加以及合并的過程如下圖所示,例如我們昨天吃了蘋果派,并且今天下雨,那今天該吃什么呢:
??不難發現,在合并的過程中會保留矩陣相加結果中最大的元素,并將其置為1,而對于其它元素都會被置0。我們接下來將用神經元描述上述過程,同樣,我們只保留邊權為1的邊而將邊權為0的邊進行忽略:
??此處的網絡結構如下圖所示:
訓練方式
??隨機給矩陣中的每個元素賦予初始值,給定誤差函數,使用梯度下降訓練模型,確定每個參數的具體數值:
應用場合
1、股票預測
2、序列生成
3、文本生成
4、語音識別
總結
以上是生活随笔為你收集整理的人人都能看懂的循环神经网络RNN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mathematica初学者第二讲
- 下一篇: matlab绘制横向柱状图