準備
本文不是一篇引導讀者入門的科普文。讀者至少需要對人工神經網絡有概念性的理解,並且熟悉偏導數。
這是一個簡單的人工神經網絡,分爲輸入層,隱藏層和輸出層。輸入層以原始數據 x 作爲本層向下一層的輸出,即 a(1);隱藏層將 a(1) 中的元素進行線性組合作爲自己的輸入,即 z(2),然後將 z(2) 進行一個數學變換(函數 g(z))作爲對下一層的輸出,即 a(2)。以此類推,得到最後一層的輸出,即 a(3) 或 hΘ(x),就是人工神經網絡的運算結果。
其中 Θ(1), Θ(2) 分別是第1層,第2層向前傳遞數據時的線性組合參數,把 Θ(1), Θ(2) 統稱爲 Θ。在訓練時,將已經標記好標準答案(稱標準答案爲 y)的數據輸入網絡,剛開始網絡的輸出與答案往往相距甚遠,然後用優化算法(例如梯度下降法)不斷修正 Θ,使網絡的計算結果越來越接近標準答案,直至達到要求的精度。
這裏定義一個表達式,叫做【代價方程】(Cost Function):
J(Θ) = 【計算結果 與 標準答案 之間的差距】
不需要關心 Cost Function 的具體形式,只需要理解它是對計算誤差的一種衡量,並且它是 Θ 的函數。我們的目標就是使計算誤差儘量小。
以梯度下降法爲代表的很多優化算法可以用來解決上述的最小化問題。在優化過程中,這些算法通常會用到 J(Θ) 對 Θ 中各元素的偏導數(Θ 是一個矩陣)。反向傳播算法就是用來計算這些偏導數的。
最後要注意的一點是,除了最後一層以外,每一層都要在自己的輸出向量前附加一個值爲+1的項(稱爲 Bias Term),爲了理解它的意義,可以想象二維座標系中的一條直線:ax + b = 0,Bias term 與對應參數相乘後的值就是直線的截距 b。
數學原理
結語
聽課時老師直接給出了反向傳播的算法與程序,繞過了數學證明。雖然並不影響應用,但使用一個並不瞭解原理的工具,讓我有如鯁在喉之感。通過證明,既可加深學習印象,也爲後續的高階學習夯實基礎。