數學 · 神經網路(一)· 前向傳導
========== 2017.05.16 更新 ==========
更細緻的說明可以參見這裡
========== 分割線的說 ==========
神經網路的數學部分可能會讓許多人望而生畏,各種梯度的計算可能也會讓人有些吃力
事實上……
確實如此(喂)。不過,如果靜下心來好好推導一下的話,可能又會覺得它比想像中的簡單
這一章我們要介紹的是演算法中比較簡單的前向傳導演算法(感謝評論區 @MeeLu 的建議,將原翻譯「前傳演算法」改成了「前向傳導演算法」),為此我們要先弄懂演算法的過程。我們先來看兩層之間的前向傳導是怎麼樣的(以下除了偏置量 b 是數以外,其它變數都是矩陣):
其中各個矩陣的 shape 為(是輸入的數據個數):
其中,叫做激活函數、也就是每一層自己 Duang 的部分。直觀地說:
- 所謂激活函數,正是整個結構中的非線性扭曲力
也就是說,激活函數是神經網路之所以能夠進行非線性扭曲的關鍵
那麼是什麼?注意到、也就是說是非線性扭曲後的結果。一般來說,可以把叫做激活值
的作用,就是將這個激活值線性映射到另一個空間上;的作用,則是在這個基礎上再進行一步平移操作
這裡展開講的會會涉及到數學分析和高等代數的相關知識,個人覺得如果不是專攻理論的話可以不太在意背後的理論基礎、而如果是相關專業的話我的能力也 hold 不住 (^_^;)
以上就把兩層之間的前向傳導演算法介紹完了。對於整個神經網路而言,只需要將上面講的步驟不斷重複進行即可
稍微總結一下:
- 輸入:的矩陣 X,其中 n 是樣本個數、d 是數據維數
- 逐層進行激活,一路向前傳導:
- 將輸入該層的數據通過激活函數進行非線性扭曲
- 將扭曲後的結果通過層與層之間的權重線性映射到另一個空間上、同時可以通過偏置量來進行一個平移
- 將最終結果傳給下一層作為下一層的輸入
下一章就要講 BP(反向傳播)演算法了。BP 是神經網路訓練的核心、推導也會稍微複雜一點,但是對於最簡單的情形(梯度下降),如果按部就班地算的話、可能會發現其實不過如此
希望觀眾老爺們能夠喜歡~
(猛戳我進入下一章!( σω)σ )
推薦閱讀:
※如何證明輾轉相除法(歐幾里德演算法)?
※《古今數學思想》這本書為什麼唯獨沒有對中國數學的描述?
※如何看待三江方士這個人?