【数据挖掘】神经网络 后向传播算法( 向后传播误差 | 输出层误差公式 | 隐藏层误差公式 | 单元连接权值更新公式 | 单元偏置更新公式 | 反向传播 | 损失函数 | 误差平方和 | 交叉熵 )
文章目錄
- I . 向后傳播誤差 簡介
- II . 輸出層誤差計算公式
- III . 隱藏層層誤差計算公式
- IV . 使用誤差更新 連接權值
- V . 使用誤差更新 單元偏置
- VI . 反向傳播 過程
- VII . 損失函數 簡介
- VIII . 損失函數
- IX . 損失函數 舉例
- X . 損失函數 優化過程
I . 向后傳播誤差 簡介
1 . 后向傳播誤差 : 計算每層每個單元的誤差 , 根據該誤差更新 權值 和 偏置 設置 ;
2 . 計算誤差的目的 : 使用計算出來的誤差 , 更新單元連接的 權值 , 和 單元 本身的偏置 參數 , 用于實時反映出前向傳播輸入的誤差 ;
II . 輸出層誤差計算公式
輸出層誤差計算 :
① 輸出層單元 jjj , 誤差計算公式 :
Errj=Oj(1?Oj)(Tj?Oj)Err_j = O_j ( 1 - O_j ) ( T_j - O_j )Errj?=Oj?(1?Oj?)(Tj??Oj?)
OjO_jOj? 是單元 jjj 的輸出 ;
TjT_jTj? 是樣本分類的真實的屬性值 , 取值 0 或 1 , 輸出層每個單元的節點輸出都是 0 或 1 , 如果分類有多個離散值 , 那么輸出層使用多個節點表示這些分類 ;
② 公式來源 : 該公式來源于 損失函數 , 對損失函數進行求導 ;
III . 隱藏層層誤差計算公式
隱藏層誤差計算 :
Errj=Oj(1?Oj)(∑k=1nErrkwjk)Err_j = O_j ( 1 - O_j ) ( \sum_{k=1}^n Err_k w_{jk} )Errj?=Oj?(1?Oj?)(k=1∑n?Errk?wjk?)
OjO_jOj? 是本層單元 jjj 的輸出 ;
ErrkErr_kErrk? 是下一層第 kkk 個單元的誤差 ;
wjkw_{jk}wjk? 是本單元 與 下一層第 kkk 個單元連接的 權值 ;
∑k=1nErrkwjk\sum_{k=1}^n Err_k w_{jk}∑k=1n?Errk?wjk? 是一個線性組合 , 本層的 jjj 單元 , 連接下一層的 nnn 個單元 , 計算下層每個節點的誤差 ErrkErr_kErrk? , 乘以連接的權值 wjkw_{jk}wjk? , 再將多個下層節點的 ErrkwjkErr_k w_{jk}Errk?wjk? 計算值累加 ;
IV . 使用誤差更新 連接權值
1 . 計算誤差的目的 : 使用計算出來的誤差 , 更新單元連接的 權值 , 和 單元 本身的偏置 參數 , 用于實時反映出前向傳播輸入的誤差 ;
2 . 權值更新公式 : 修改 單元 iii 和 單元 jjj 連接的權值 , 注意連接方向是 單元 iii 連接到單元 jjj , iii 是 jjj 的前一層 ;
Δwij=(l)ErrjOi\Delta w_{ij} = (l) Err_j O_iΔwij?=(l)Errj?Oi?
wij′=wij+Δwijw_{ij}' = w_{ij} + \Delta w_{ij}wij′?=wij?+Δwij?
Δwij\Delta w_{ij}Δwij? 是 單元 iii 和 單元 jjj 的連接的權值的改變值 ;
lll 是學習率 , 一般是 0.80.80.8 , 0.90.90.9 等 (0,1)(0,1)(0,1) 區間內的數值 ;
ErrjErr_jErrj? 是單元 jjj 的誤差 ;
OiO_iOi? 表示 單元 iii 的輸出 ;
ErrjOiErr_j O_iErrj?Oi? 是通過求導得出的梯度 ;
wij′w_{ij}'wij′? 表示新的權值 ;
wijw_{ij}wij? 表示老的權值 ;
3 . 連接權值更新總結 : 該公式是梯度公式 , 后向傳播算法是梯度下降算法 , 其權值更新是 舊的權值 , 加上權值的改變 , 計算出新的連接權值 ;
V . 使用誤差更新 單元偏置
1 . 計算誤差的目的 : 使用計算出來的誤差 , 更新單元連接的 權值 , 和 單元 本身的偏置 參數 , 用于實時反映出前向傳播輸入的誤差 ;
2 . 偏置更新公式 : 修改 單元 jjj 的偏置 ;
Δθj=(l)Errj\Delta \theta_j = (l) Err_jΔθj?=(l)Errj?
θ′=θj+Δθj\theta' = \theta_j + \Delta \theta_jθ′=θj?+Δθj?
Δθj\Delta \theta_jΔθj? 是偏置的改變 ;
lll 是學習率 , 一般是 0.80.80.8 , 0.90.90.9 等 (0,1)(0,1)(0,1) 區間內的數值 ;
ErrjErr_jErrj? 是單元 jjj 的誤差 ;
θ′\theta'θ′ 是新的偏置 ;
θ\thetaθ 是老的偏置 ;
3 . 偏置更新總結 : 當前節點的誤差 , 乘以學習率 , 就是偏置的改變 ; 舊的偏置值 , 加上偏置改變 , 可計算出新的偏置值 ;
VI . 反向傳播 過程
1 . 權值 偏置 更新操作 : 先計算誤差 , 然后根據誤差計算 權值 和 偏置的改變值 , 再將原來的 權值 和 偏置 值 加上對應的改變值 , 計算出新的權值和偏置值 ;
2 . 反向傳播的過程 : 將誤差從后向前傳播 , 根據誤差 , 從后到前依次修改權值和偏置值 ;
① 向后傳播誤差本質 : 使用梯度下降方法 , 優化損失函數 , 使損失函數取最小值 , 在這個過程中 , 不停地迭代修改 單元連接權值 , 和 每個單元的偏置 ;
② 333 種梯度下降方法 : 隨機梯度下降 , 批量梯度下降 , 小批量梯度下降方法 ;
③ 損失函數 : 類似于評分函數 ; 如 誤差平方和 ;
④ 兩個核心 : 首先 , 采用什么樣的損失函數 , 其次 , 如何進行迭代修改 權值和偏置 ;
VII . 損失函數 簡介
1 . 損失函數 作用 :
① 訓練輸出 : 神經網絡 學習訓練樣本有一個輸出輸出 ;
② 樣本實際值對應輸出 : 數據集樣本的真正的屬性值對應的輸出 , 000 或 111 ;
③ 引入損失函數 : 使用損失函數 計算 上述 訓練輸出 和 樣本實際值對應輸出 的差別 ;
④ 損失函數最小值 : 訓練輸出 和 樣本實際值對應輸出 的差別越小越好 , 因此損失函數進行優化時 , 損失函數的值越小越好 ;
2 . 損失函數優化 :
① 損失函數 優化過程 : 在優化使損失函數取最小值的過程 , 就是使對應的 單元連接權值 , 和 單元的偏置 , 等參數不斷優化的過程 ;
② 損失函數最小值 與 最佳參數 : 最終損失函數最小值的狀態的 權值 和 偏置就是 學習出的最佳參數值 ;
3 . 損失函數本質 : 損失函數 最小值 計算過程 , 就是通過 梯度下降方法 , 逐步迭代獲取 最佳 權值 與 偏置過程 ;
VIII . 損失函數
1 . 損失函數作用 : 度量 預測結果 與 實際結果 差異 ;
① 神經網絡學習訓練目的 : 使 損失函數 取值最小 ;
② 損失函數要求 : 預測結果越好 , 損失越小 ;
2 . 損失函數選擇 :
① 分布比較 : 比較的兩個屬性是 分布 , 那么使用 交叉熵 損失函數 ;
② 數值比較 : 如果是兩個 數值屬性 之間比較 , 使用 誤差平方和 損失函數 ;
IX . 損失函數 舉例
1 . 樣本示例 :
① 樣本個數 : nnn 個 ;
② 樣本屬性 : 取值有兩種 , 000 或 111 , 即樣本的屬性值只能從 {0,1}\{0, 1\}{0,1} 集合中取值 ;
③ 實際屬性值 : yiy_iyi? 為實際屬性值 , 并且有 yi∈{0,1}y_i \in \{0, 1\}yi?∈{0,1} ;
④ 預測屬性值 : xix_ixi? 為預測屬性值 , 并且有 xi∈[0,1]x_i \in [0, 1]xi?∈[0,1] , 在 誤差平方和 ( Mean squared error ) 損失函數中 , xix_ixi? 取值范圍可以是全體實數 ;
2 . 誤差平方和 ( 均方誤差 Mean Squared Error ) 損失函數
誤差平方和公式 : 誤差平方和 , 又叫均方誤差 , 英文全稱 Mean squared error , 簡稱 MSE ;
誤差平方和=1n∑i=1n(xi?yi)2誤差平方和 = \dfrac{1}{n} \sum_{i = 1}^{n} (x_i - y_i)^2誤差平方和=n1?i=1∑n?(xi??yi?)2
預測屬性 減去 實際屬性 得到差值 , 將該差值平方 , 目的是去掉差值的符號 ( 正負號 ) , 得到誤差平方 , 再將 nnn 個誤差平方加起來 , 得到平方和 , 然后除以 nnn 取平均值 , 即得到 nnn 個樣本的 平均的 誤差平方 , 因此叫做 均方誤差 , 又叫誤差平方和 ;
3 . 交叉熵 ( Cross Entropy ) 損失函數
交叉熵公式 :
交叉熵=?1n∑i=1n[yi×log(xi)+(1?yi)×log(1?xi)]交叉熵 = - \dfrac{1}{n} \sum_{i = 1}^{n} [ y_i \times log(x_i) + (1 - y_i) \times log(1 - x_i) ]交叉熵=?n1?i=1∑n?[yi?×log(xi?)+(1?yi?)×log(1?xi?)]
該 交叉熵公式 通常用于比較分布之間的差別 ;
X . 損失函數 優化過程
1 . 損失函數作用 : 損失函數的目的是為神經網絡優化 每個連接的 權值 和 每個單元的 偏置 , 使數據集的損失函數最小 ;
2 . 損失函數優化注意事項 :
① 參數個數 : 參數數量很多 , 搜索算法空間很大 , 可能有百萬級 ;
② 參數取值 : 參數取值范圍很廣 , 取值范圍從 負無窮 到 正無窮 ;
③ 損失函數復雜 : 損失函數 與 參數 的關系很復雜 ;
④ 計算能力 : 對于海量的大數據 , 訓練時不能一次性訓練所有的數據 , 計算能力也是有限制的 ;
⑤ 過擬合問題 : 訓練集上損失函數達到最小值 , 在測試模型時 , 不一定能得到該結果 ;
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【数据挖掘】神经网络 后向传播算法( 向后传播误差 | 输出层误差公式 | 隐藏层误差公式 | 单元连接权值更新公式 | 单元偏置更新公式 | 反向传播 | 损失函数 | 误差平方和 | 交叉熵 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据挖掘】神经网络 后向传播算法 (
- 下一篇: 【TarsosDSP】TarsosDSP