1. 程式人生 > >機器學習演算法--方向傳播演算法(BP法)

機器學習演算法--方向傳播演算法(BP法)


誤差表示式:

\( \large E(w) = \frac{1}{2} \sum_{d\in D} \sum_{k\in outputs}   (t_{kd} - o_{kd}) ^2 \)

其中,\(outputs\)是網路輸出單元的集合,\(D\)還是代表所有訓練樣本空間,\(t_{kd}\)和\(o_{kd}\)是與訓練樣例d和第k個輸出單元相關的預期值與輸出值。

每次只處理一個樣本例項,然後更新各個權值,通過大量的樣本例項逐漸的調整權值。那麼對於每一次的訓練樣例d來說,它的輸出誤差為:

\( \large E_{d}(w) = \frac{1}{2} \sum_{k\in outputs}   (t_{kd} - o_{kd}) ^2 \)

梯度

\( \large  \bigtriangleup w_i  = -\eta \frac{\partial E_{d}  }{\partial w_i } \)

\( \large  \bigtriangleup w_i  = -\eta \frac{\partial E_{d}  }{\partial net }  \frac{\partial net }{\partial w_i } \)

\( \large  \bigtriangleup w_i  = -\eta \frac{\partial E_{d}  }{\partial net }  x_i \)

情況1:對於輸出單元的權值訓練法則:

因為\( \large   \frac{\partial E_{d}  }{\partial net }  =   \frac{\partial E_{d}  }{\partial o}   \frac{\partial o  }{\partial net }  =  -(t-o)o(1-o)\)

所以

\( \large  \bigtriangleup w_i  = -\eta (t-o)o(o-1) x_i \)

\( \large  \bigtriangleup w_i  = \eta (t-o)o(1-o)x_i \)



情況2:隱藏單元的權值訓練法則

隱藏層中的任意結點上的連結線權值都是通過影響以它的輸出作為輸入的下一層(downstream)的結點而最終影響誤差的,所以隱藏層的推導如下:

因為\( \large   \frac{\partial E_{d}  }{\partial net_i }  =   \sum_{k\in ds(i)} \frac{\partial E_{d}  } {\partial net_k}   \frac {\partial net_k} {\partial o_i }  \frac{\partial o_i  }{\partial net_i }  \)

\(=   \sum_{k\in ds(i)}  \delta_k w_{ik} o_i(1-o_i)  =   o_i(1-o_i)  \sum_{k\in ds(i)}  \delta_k w_{ik}  \)

所以

\( \large  \bigtriangleup w_i  = -\eta \frac{\partial E_{d}  }{\partial net_i }  x_i \)


reference: 點選開啟連結

=====================================================================================================================

定義誤差:

\( \large net_j = \sum_i w_{ij} O_i\),    \( \large net_k = \sum_j w_{jk} O_j\)

\( \large O_i=  1/ ( 1 + e ^ {- net _i} ) = f(net_i)\)     

\( \large O_j =  1/ ( 1 + e ^ {- net _j} ) = f(net_j)\)

\( \large O_k =  1/ ( 1 + e ^ {- net _k} ) = f(net_k)\)

\( \large E = \frac {1}{2} \sum_j (y_j - O_j)^2 \)  其中\(y_j\)是理想輸出,\(O_j\)是實際輸出,

\( \Large \frac{\partial E} { \partial w_{ij} } =  \frac{\partial E} { \partial net_j}  \frac { \partial net_j}  {\partial w_{ij}} = \delta_j O_i ,  \ \ \ 其中區域性梯度( \delta_j=  \frac{\partial E} { \partial net_j} )\)

則修正量定義為:

\( \large \bigtriangleup w_{ij}(t)  =  - \eta  \frac{\partial E} { \partial w_{ij} } =  -\eta \delta_j O_i \)

當節點j是輸出單元時:

\( \Large  \delta_j=  \frac{\partial E} { \partial net_j}  =  \frac{\partial E} { \partial O_j}   \frac{\partial O_j} { \partial net_j}  = -(y_j - O_j) f'(net_j)\)

當節點j不是輸出單元時:

\( \Large  \delta_j=  \frac{\partial E} { \partial net_j}  = \sum_k \frac{\partial E} { \partial net_k}   \frac{\partial net_k} { \partial O_j}   \frac{\partial O_j} { \partial net_j}  =   \sum_k \delta_k w_{jk} f'(net_j)\)

當採用sigmod函式\(y = f(x) = 1/ ( 1 + e ^ {- x} ) \)時  \( f'(x) = y(1-y) \)

即:\( \large  f'(net_j) = O_j(1-O_j)\)

最終修正量為:

\( \large \bigtriangleup w_{ij}(t)  = - \eta \delta_j O_i  + \alpha \bigtriangleup w_{ij}(t-1)  \)

演算法步驟: 

1)從前向後各層計算各單元 \( O_j\)

\( \large net_j = \sum_i w_{ij} O_i\)

\( \large O_j =  1/ ( 1 + e ^ {- net _j} ) \)

2) 對輸出層計算\( \delta_j \)

\( \large \delta_j  = (y-O_j)O_j(1- O_j)\)

3)從後向前計算各隱層

\( \large \delta_j  = O_j(1- O_j) \sum_k w_{jk} \delta_k\)

4)計算並儲存各權值修正量

\( \large \bigtriangleup w_{ij}(t)  =  \alpha \bigtriangleup w_{ij}(t-1) +  \eta \delta_j O_i\)

5)修正權值

\( \large w_{ij}(t+1)  = w_{ij}(t) + \bigtriangleup w_{ij}(t) \)

步長係數\(\eta\) 對收斂性影響很大,通常在0.1~3之間

慣性系數\(\alpha\)影響收斂速度,一般現在0.9~1之間,大於1時不收斂,有些情況可以不使用慣性系數(等於0)

reference:《模式識別》 張學工

相關推薦

機器學習演算法--方向傳播演算法BP

誤差表示式: \( \large E(w) = \frac{1}{2} \sum_{d\in D} \sum_{k\in outputs}   (t_{kd} - o_{kd}) ^2 \) 其中,\(outputs\)是網路輸出單元的集合,\(D\)還是代表所有訓練樣

機器學習——K-均值聚類K-means演算法

本文轉載自:https://www.cnblogs.com/ybjourney/p/4714870.html 一 K-均值聚類(K-means)概述 聚類 “類”指的是具有相似性的集合。聚類是指將資料集劃分為若干類,使得類內之間的資料最為相似,各類之間的資料相

【python與機器學習入門1】KNNk近鄰演算法2 手寫識別系統

參考部落格:超詳細的機器學習python入門knn乾貨 (po主Jack-Cui 參考書籍:《機器學習實戰》——第二章 KNN入門第二彈——手寫識別系統demo ——《機器學習實戰》第二章2.3 手寫識別系統       &

100天搞定機器學習|day38 反向傳播演算法推導

往期回顧 100天搞定機器學習|(Day1-36) 100天搞定機器學習|Day37無公式理解反向傳播演算法之精髓 上集我們學習了反向傳播演算法的原理,今天我們深入講解其中的微積分理論,展示在機器學習中,怎麼理解鏈式法則。 我們從一個最簡單的網路講起,每層只有一個神經元,圖上這個網路就是由三個權重

從零單排入門機器學習:線性回歸linear regression實踐篇

class rom enter instr function ont 線性 gin 向量 線性回歸(linear regression)實踐篇 之前一段時間在coursera看了Andrew ng的機器學習的課程,感覺還不錯,算是入門了。這次打算以該課程的作業

機器學習三--分類--鄰近取樣Nearest Neighbor

post 個數 均衡 urn learning clas 根據 () end 最鄰近規則分類 K-Nearest Neighbor 步驟:   1、為了判斷未知實例的類別,以所有已知類別的實例作為參考。   2、選擇參數K。   3、計算未知實例與所有已知實例的距離。   

機器學習課程不完全收錄持續更新

google 趨勢 con ash color mooc tar 業界 積極 機器學習已經火遍全球了,目前幾乎所有科技公司都或多或少都在積極地響應AI的趨勢,但是此時需要培養更多的人工智能和機器學習專家,然而優質的學習資源卻相當匱乏。幾大科技巨頭和業界領軍大神也相應提供了各

【深度學習】一文讀懂機器學習常用損失函數Loss Function

back and 們的 wiki 導出 歐氏距離 classes 自變量 關於 最近太忙已經好久沒有寫博客了,今天整理分享一篇關於損失函數的文章吧,以前對損失函數的理解不夠深入,沒有真正理解每個損失函數的特點以及應用範圍,如果文中有任何錯誤,請各位朋友指教,謝謝~

斯坦福NG機器學習聽課筆記-推薦系統recommender system

推薦系統(recommender system) Problem Formulation: RecommenderSystems:為什麼講它有兩個原因:首先它是一個很重要的機器學習應用方向,在很多公司中佔據了重要作用,像亞馬遜之類網站都是很好的建立推薦系統促進商品銷售。其次推薦系

收藏!超全機器學習資料合集!附下載

最近在群裡發現一些小夥伴在尋找資料的時候總是無處可找,網上出現很多收集免費資料再去打包收錢的人,我看不慣這樣的人,所以把自己收集的檔案分享給大家。 百度雲經常抽風,如果大家遇到了失效的連結,請在評論區給我評論,我會很快的更新。 1:資料探勘:概念與技術(中文第三版) 連結: https

機器學習入門之房價預測線性迴歸

#!/usr/bin/env python # coding: utf-8 # In[1]: # 1.定義問題 # 2.匯入資料 # 匯入類庫 import numpy as np import pandas as pd import matplotlib.pyplot as plt impo

資源|28本必讀的經典機器學習/資料探勘書籍免費下載

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

機器學習——樸素貝葉斯Naive Bayes詳細解讀

在機器學習中,樸素貝葉斯是一個分類模型,輸出的預測值是離散值。在講該模型之前首先有必要先了解貝葉斯定理,以該定理為基礎的統計學派在統計學領域佔據重要的地位,它是從觀察者的角度出發,觀察者所掌握的資訊量左右了觀察者對事件的認知。 貝葉斯公式

機器學習專案實戰--邏輯迴歸Logistic Regression

(一)邏輯迴歸 邏輯迴歸演算法是一種廣義的線性迴歸分析模型, 可用於二分類和多分類問題, 常用於資料探勘、疾病自動診斷、經濟預測等領域。通俗來說, 邏輯迴歸演算法通過將資料進行擬合成一個邏輯函式來預估一個事件出現的概率,因此被稱為邏輯迴歸。因為演算法輸出的為事件發生概率, 所以其輸出值應該在0

機器學習1:梯度下降Gradient Descent

分別求解損失函式L(w,b)對w和b的偏導數,對於w,當偏導數絕對值較大時,w取值移動較大,反之較小,通過不斷迭代,在偏導數絕對值接近於0時,移動值也趨近於0,相應的最小值被找到。 η選取一個常數引數,前面的負號表示偏導數為負數時(即梯度下降時),w向增大的地方移動。 對於非單調函式,

機器學習之python入門指南十一numpy常用方法簡介

  numpy庫的安裝: window下命令列直接輸入pip install numpy 匯入numpy庫:import numpy 或者 import numpy as np numpy與list: 相同之處: 都可以用下標訪問元素,如a[3]. 都可以

機器學習-斯坦福】因子分析Factor Analysis

1 問題      之前我們考慮的訓練資料中樣例的個數m都遠遠大於其特徵個數n,這樣不管是進行迴歸、聚類等都沒有太大的問題。然而當訓練樣例個數m太小,甚至m<<n的時候,使用梯度下降法進行迴歸時,如果初值不同,得到的引數結果會有很大偏差(因為方程數小於引數個

機器學習之線性分類器Linear Classifiers——腫瘤預測例項

線性分類器:一種假設特徵與分類結果存線上性關係的模型。該模型通過累加計算每個維度的特徵與各自權重的乘積來幫助決策。 # 匯入pandas與numpy工具包。 import pandas as pd import numpy as np # 建立特徵列表。 column_n

機器學習之 資料預處理sklearn preprocessing

資料預處理(data preprocessing)是指在主要的處理以前對資料進行的一些處理。如對大部分地球物理面積性觀測資料在進行轉換或增強處理之前,首先將不規則分佈的測網經過插值轉換為規則網的處理,以利於計算機的運算。另外,對於一些剖面測量資料,如地震資料預處理有垂直疊加、

機器學習面試常見題總結持續更新

1、邏輯迴歸(LR)損失函式為什麼使用最大似然估計而不用最小二乘法?連結:https://www.zhihu.com/question/65350200/answer/266277291首先,機器學習的損失函式是人為設計的,用於評判模型好壞(對未知的預測能力)的一個標準、尺子