05 深度學習之誤差反向傳播法
1.引入誤差反向傳播發(fā)目的
????????雖然數(shù)值微分雖然簡單,也容易實現(xiàn),但缺點是計算上比較費時間。因此引入誤差反向傳播法,能夠高效計算權重參數(shù)的梯度。
2.理解方法
????????(1)基于數(shù)學式
????????這種方法嚴密且簡潔,所以確實非常合理,但如果一上來就圍繞數(shù)學式進行探討,會忽略一些根本的東西,止步于式子的羅列。
????????(2)基于計算圖
????????通過計算圖,可以直觀地理解誤差反向傳播法。
3.用計算圖解題的步驟
????????第一步:構建計算圖。
????????第二步:在計算圖上,從左向右進行計算。
4.正向傳播(forward propagation)
????????正向傳播是從計算圖出發(fā)點到結束點的傳播。
5.反向傳播(backward propagation)
????????反向傳播將在接下來的導數(shù)計算中發(fā)揮重要作用。
加法節(jié)點的反向傳播

乘法節(jié)點的反向傳播

6.計算圖的特征
????????層的實現(xiàn)中有兩個共通的方法(接口)forward()和backward()。forward()對應正向傳播,backward()對應反向傳播。
乘法節(jié)點稱為“乘法層”(MulLayer)

加法節(jié)點稱為“加法層”(AddLayer)

7.激活函數(shù)層的實現(xiàn)
(1)激活函數(shù) ReLU(Rectified Linear Unit)
函數(shù)式

計算圖表示



簡化輸出

8.Affine/Softmax 層的實現(xiàn)
????????(1)仿射變換
????????神經(jīng)網(wǎng)絡的正向傳播中進行的矩陣的乘積運算在幾何學領域被稱為“仿射變換”,將進行仿射變換的處理實現(xiàn)為“Affine 層”。
????????(2)A?ne層的計算圖



????????(3)批版本的A?ne層

9.Softmax-with-Loss層


????????神經(jīng)網(wǎng)絡中進行的處理有推理(inference)和學習兩個階段。神經(jīng)網(wǎng)絡的推理通常不使用 Softmax 層。神經(jīng)網(wǎng)絡中未被正規(guī)化的輸出結果有時被稱為“得分”也就是說,當神經(jīng)網(wǎng)絡的推理只需要給出一個答案的情況下,因為此時只對得分最大值感興趣,所以不需要 Softmax 層。不過,神經(jīng)網(wǎng)絡的學習階段則需要Softmax 層。

10.學習算法的實現(xiàn)
步驟 1(mini-batch)
從訓練數(shù)據(jù)中隨機選出一部分數(shù)據(jù),這部分數(shù)據(jù)稱為mini-batch。我們的目標是減小mini-batch的損失函數(shù)的值。
步驟 2(計算梯度)
為了減小mini-batch的損失函數(shù)的值,需要求出各個權重參數(shù)的梯度。梯度表示損失函數(shù)的值減小最多的方向。
步驟 3(更新參數(shù))
將權重參數(shù)沿梯度方向進行微小更新。
步驟 4(重復)
重復步驟1、步驟2、步驟3。
11.梯度確認
????????確認數(shù)值微分求出的梯度結果和誤差反向傳播法求出的結果是否一致的操作稱為梯度確認。