一、BP神經(jīng)網(wǎng)絡(luò)的概念
BP神經(jīng)網(wǎng)絡(luò)是一種多層的前饋神經(jīng)網(wǎng)絡(luò),其主要的特點(diǎn)是:信號(hào)是前向傳播的茄厘,而誤差是反向傳播的油猫。具體來說稠茂,對(duì)于如下的只含一個(gè)隱層的神經(jīng)網(wǎng)絡(luò)模型:
BP神經(jīng)網(wǎng)絡(luò)的過程主要分為兩個(gè)階段,第一階段是信號(hào)的前向傳播情妖,從輸入層經(jīng)過隱含層睬关,最后到達(dá)輸出層;第二階段是誤差的反向傳播毡证,從輸出層到隱含層电爹,最后到輸入層,依次調(diào)節(jié)隱含層到輸出層的權(quán)重和偏置料睛,輸入層到隱含層的權(quán)重和偏置丐箩。
二、BP神經(jīng)網(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ò)挑秉,如圖 所示。?
從圖 可以看出苔货,一個(gè)神經(jīng)網(wǎng)絡(luò)包括輸入層犀概、隱含層(中間層)和輸出層立哑。輸入層神經(jīng)元個(gè)數(shù)與輸入數(shù)據(jù)的維數(shù)相同,輸出層神經(jīng)元個(gè)數(shù)與需要擬合的數(shù)據(jù)個(gè)數(shù)相同姻灶,隱含層神經(jīng)元個(gè)數(shù)與層數(shù)就需要設(shè)計(jì)者自己根據(jù)一些規(guī)則和目標(biāo)來設(shè)定铛绰。在深度學(xué)習(xí)出現(xiàn)之前,隱含層的層數(shù)通常為一層产喉,即通常使用的神經(jīng)網(wǎng)絡(luò)是3層網(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ù)的这嚣,因而在處理上十分方便。為什么要選擇這個(gè)函數(shù)塞俱,等下在介紹BP網(wǎng)絡(luò)的學(xué)習(xí)算法的時(shí)候會(huì)進(jìn)行進(jìn)一步的介紹姐帚。S函數(shù)有單極性S型函數(shù)和雙極性S型函數(shù)兩種,單極性S型函數(shù)定義如下:f(x)=1/1+e?x
其函數(shù)曲線如圖所示:
雙極性S型函數(shù):f(x)=1?e?x/1+e?x
使用S型激活函數(shù)時(shí)障涯,輸入:
輸出:
輸出的導(dǎo)數(shù):
使用S型激活函數(shù)時(shí)罐旗,BP網(wǎng)絡(luò)的輸出及其導(dǎo)數(shù)圖形:
根據(jù)S激活函數(shù)的圖形:
net在 -5~0 的時(shí)候?qū)?shù)的值為正,且導(dǎo)數(shù)的值逐漸增大唯蝶,說明此時(shí)f(x)在逐漸變大 且 變大的速度越來越快
net在 0~5? 的時(shí)候?qū)?shù)的值為正九秀,且導(dǎo)數(shù)的值逐漸減小,說明此時(shí)f(x)在逐漸變大 但是 變大的速度越來越慢
對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練生棍,我們應(yīng)該盡量將net的值盡量控制在收斂比較快的范圍內(nèi)颤霎。
四、揭秘有監(jiān)督的BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程:
五涂滴、BP算法直觀解釋
六、?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í)候系羞,開始初始化各層網(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ì)量問題等情況也可以做到提前預(yù)測(cè)的徙融!
附錄:
歡迎大家一起學(xué)習(xí),討論~~瑰谜!