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