BP神经网络模型
一、簡(jiǎn)介
BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法可以說(shuō)是目前最成功的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法。顯示任務(wù)中使用神經(jīng)網(wǎng)絡(luò)時(shí),大多數(shù)是使用BP算法進(jìn)行訓(xùn)練.
在我看來(lái)BP神經(jīng)網(wǎng)絡(luò)就是一個(gè)”萬(wàn)能的模型+誤差修正函數(shù)“,每次根據(jù)訓(xùn)練得到的結(jié)果與預(yù)想結(jié)果進(jìn)行誤差分析,進(jìn)而修改權(quán)值和閾值,一步一步得到能輸出和預(yù)想結(jié)果一致的模型。舉一個(gè)例子:比如某廠商生產(chǎn)一種產(chǎn)品,投放到市場(chǎng)之后得到了消費(fèi)者的反饋,根據(jù)消費(fèi)者的反饋,廠商對(duì)產(chǎn)品進(jìn)一步升級(jí),優(yōu)化,從而生產(chǎn)出讓消費(fèi)者更滿意的產(chǎn)品。這就是BP神經(jīng)網(wǎng)絡(luò)的核心。
BP神經(jīng)網(wǎng)絡(luò)是一種按誤差反向傳播(簡(jiǎn)稱誤差反傳)訓(xùn)練的多層前饋網(wǎng)絡(luò),其算法稱為BP算法,它的基本思想是梯度下降法,利用梯度搜索技術(shù),以期使網(wǎng)絡(luò)的實(shí)際輸出值和期望輸出值的誤差均方差為最小。
關(guān)于梯度下降算法的直觀理解
關(guān)于梯度下降算法的直觀理解,我們以一個(gè)人下山為例。比如剛開(kāi)始的初始位置是在紅色的山頂位置,那么現(xiàn)在的問(wèn)題是該如何達(dá)到藍(lán)色的山底呢?按照梯度下降算法的思想,它將按如下操作達(dá)到最低點(diǎn):
?
第一步,明確自己現(xiàn)在所處的位置
第二步,找到相對(duì)于該位置而言下降最快的方向
第三步, 沿著第二步找到的方向走一小步,到達(dá)一個(gè)新的位置,此時(shí)的位置肯定比原來(lái)低
第四部, 回到第一步
第五步,終止于最低點(diǎn)
按照以上5步,最終達(dá)到最低點(diǎn),這就是梯度下降的完整流程。當(dāng)然你可能會(huì)說(shuō),上圖不是有不同的路徑嗎?是的,因?yàn)樯蠄D并不是標(biāo)準(zhǔn)的凸函數(shù),往往不能找到最小值,只能找到局部極小值。所以你可以用不同的初始位置進(jìn)行梯度下降,來(lái)尋找更小的極小值點(diǎn),當(dāng)然如果損失函數(shù)是凸函數(shù)就沒(méi)必要了,開(kāi)開(kāi)心心的進(jìn)行梯度下降吧!
BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
BP神經(jīng)網(wǎng)絡(luò)的過(guò)程主要分為兩個(gè)階段,第一階段是信號(hào)的前向傳播,從輸入層經(jīng)過(guò)隱含層,最后到達(dá)輸出層;第二階段是誤差的反向傳播,從輸出層到隱含層,最后到輸入層,依次調(diào)節(jié)隱含層到輸出層的權(quán)重和偏置,輸入層到隱含層的權(quán)重和偏置。
BP神經(jīng)網(wǎng)絡(luò)流程
神經(jīng)元是以生物研究及大腦的響應(yīng)機(jī)制而建立的拓?fù)浣Y(jié)構(gòu)網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)的基本組成單元是神經(jīng)元。神經(jīng)元的通用模型如圖所示,其中常用的激活函數(shù)有閾值函數(shù)、sigmoid函數(shù)和雙曲正切函數(shù)。
神經(jīng)元的輸出為:?
神經(jīng)網(wǎng)絡(luò)是將多個(gè)神經(jīng)元按一定規(guī)則聯(lián)結(jié)在一起而形成的網(wǎng)絡(luò),如圖 所示。?
二、BP網(wǎng)絡(luò)輸入與輸出關(guān)系
BP網(wǎng)絡(luò)采用的傳遞函數(shù)是非線性變換函數(shù)——Sigmoid函數(shù)(又稱S函數(shù))。其特點(diǎn)是函數(shù)本身及其導(dǎo)數(shù)都是連續(xù)的,因而在處理上十分方便。
三、?BP算法的Java代碼實(shí)現(xiàn)
1.? 定義一個(gè)BP神經(jīng)網(wǎng)絡(luò)的類,設(shè)置網(wǎng)絡(luò)相關(guān)參數(shù)
2.? ? 實(shí)例化該神經(jīng)網(wǎng)絡(luò),按下圖被構(gòu)建成一個(gè)輸出3維,輸出1維,帶有3個(gè)隱藏層(每個(gè)隱藏層10個(gè)節(jié)點(diǎn))的BP網(wǎng)絡(luò);(此處還可以隨意擴(kuò)展輸入、輸出維度和隱藏層相關(guān)系數(shù))
3.? ? 初始化BP神經(jīng)網(wǎng)絡(luò)的時(shí)候,開(kāi)始初始化各層網(wǎng)絡(luò)節(jié)點(diǎn)的 權(quán)重、權(quán)重動(dòng)量、誤差初始值
4.? 引入學(xué)習(xí)訓(xùn)練數(shù)據(jù);4組輸入、輸出數(shù)據(jù)迭代5000次
? ? 5000次中不斷向前逐層計(jì)算輸出的節(jié)點(diǎn)數(shù)據(jù)
? ? 并同時(shí)逐層計(jì)算誤差反向修改權(quán)重值,直到迭代完畢;注意誤差函數(shù)值必須呈現(xiàn)下降趨勢(shì)
5.? 引入數(shù)據(jù)進(jìn)行結(jié)果預(yù)測(cè),將數(shù)據(jù)帶回模型計(jì)算得結(jié)果;最終可知預(yù)測(cè)結(jié)果趨近于0.7
四、 BP算法意味著什么
神經(jīng)網(wǎng)絡(luò)利用現(xiàn)有的數(shù)據(jù)找出輸入與輸出之間得權(quán)值關(guān)系(近似),然后利用這樣的權(quán)值關(guān)系進(jìn)行仿真,例如輸入一組數(shù)據(jù)仿真出輸出結(jié)果,當(dāng)然你的輸入要和訓(xùn)練時(shí)采用的數(shù)據(jù)集在一個(gè)范疇之內(nèi)。例如預(yù)報(bào)天氣:溫度 濕度 氣壓等作為輸入 天氣情況作為輸出利用歷史得輸入輸出關(guān)系訓(xùn)練出神經(jīng)網(wǎng)絡(luò),然后利用這樣的神經(jīng)網(wǎng)絡(luò)輸入今天的溫度 濕度 氣壓等 得出即將得天氣情況。同理,運(yùn)用到自動(dòng)化測(cè)試中,使用測(cè)試數(shù)據(jù)反映結(jié)果走向,bug數(shù),質(zhì)量問(wèn)題等情況也可以做到提前預(yù)測(cè)的!
附錄:
?
總結(jié)
- 上一篇: 华为时间管理培训
- 下一篇: 博弈论基础-蒋文华(浙大)