
數(shù)據(jù)挖掘系列BP神經(jīng)網(wǎng)絡(luò)算法與實(shí)踐
神經(jīng)網(wǎng)絡(luò)曾經(jīng)很火,有過一段低迷期,現(xiàn)在因?yàn)?a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)的原因繼續(xù)火起來了。神經(jīng)網(wǎng)絡(luò)有很多種:前向傳輸網(wǎng)絡(luò)、反向傳輸網(wǎng)絡(luò)、遞歸神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)等。本文介紹基本的反向傳輸神經(jīng)網(wǎng)絡(luò)(Backpropagation 簡(jiǎn)稱BP),主要講述算法的基本流程和自己在訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)的一些經(jīng)驗(yàn)。
BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
神經(jīng)網(wǎng)絡(luò)就是模擬人的大腦的神經(jīng)單元的工作方式,但進(jìn)行了很大的簡(jiǎn)化,神經(jīng)網(wǎng)絡(luò)由很多神經(jīng)網(wǎng)絡(luò)層構(gòu)成,而每一層又由許多單元組成,第一層叫輸入層,最后一層叫輸出層,中間的各層叫隱藏層,在BP神經(jīng)網(wǎng)絡(luò)中,只有相鄰的神經(jīng)層的各個(gè)單元之間有聯(lián)系,除了輸出層外,每一層都有一個(gè)偏置結(jié)點(diǎn):
雖然圖中隱藏層只畫了一層,但其層數(shù)并沒有限制,傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)經(jīng)驗(yàn)認(rèn)為一層就足夠好,而最近的深度學(xué)習(xí)不這么認(rèn)為。偏置結(jié)點(diǎn)是為了描述訓(xùn)練數(shù)據(jù)中沒有的特征,偏置結(jié)點(diǎn)對(duì)于下一層的每一個(gè)結(jié)點(diǎn)的權(quán)重的不同而生產(chǎn)不同的偏置,于是可以認(rèn)為偏置是每一個(gè)結(jié)點(diǎn)(除輸入層外)的屬性。我們偏置結(jié)點(diǎn)在圖中省略掉:
在描述BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練之前,我們先來看看神經(jīng)網(wǎng)絡(luò)各層都有哪些屬性:
訓(xùn)練一個(gè)BP神經(jīng)網(wǎng)絡(luò),實(shí)際上就是調(diào)整網(wǎng)絡(luò)的權(quán)重和偏置這兩個(gè)參數(shù),BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程分兩部分:
我們先來看前向傳輸。
前向傳輸(Feed-Forward前向反饋)
在訓(xùn)練網(wǎng)絡(luò)之前,我們需要隨機(jī)初始化權(quán)重和偏置,對(duì)每一個(gè)權(quán)重取[-1,1]的一個(gè)隨機(jī)實(shí)數(shù),每一個(gè)偏置取[0,1]的一個(gè)隨機(jī)實(shí)數(shù),之后就開始進(jìn)行前向傳輸。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練是由多趟迭代完成的,每一趟迭代都使用訓(xùn)練集的所有記錄,而每一次訓(xùn)練網(wǎng)絡(luò)只使用一條記錄,抽象的描述如下:
首先設(shè)置輸入層的輸出值,假設(shè)屬性的個(gè)數(shù)為100,那我們就設(shè)置輸入層的神經(jīng)單元個(gè)數(shù)為100,輸入層的結(jié)點(diǎn)Ni為記錄第i維上的屬性值xi。對(duì)輸入層的操作就這么簡(jiǎn)單,之后的每層就要復(fù)雜一些了,除輸入層外,其他各層的輸入值是上一層輸入值按權(quán)重累加的結(jié)果值加上偏置,每個(gè)結(jié)點(diǎn)的輸出值等該結(jié)點(diǎn)的輸入值作變換
前向傳輸?shù)妮敵鰧拥挠?jì)算過程公式如下:
Ij=∑iWijOi+θj
Oj=11+e?Il
對(duì)隱藏層和輸出層的每一個(gè)結(jié)點(diǎn)都按照如上圖的方式計(jì)算輸出值,就完成前向傳播的過程,緊接著是進(jìn)行逆向反饋。
逆向反饋(Backpropagation)
逆向反饋從最后一層即輸出層開始,我們訓(xùn)練神經(jīng)網(wǎng)絡(luò)作分類的目的往往是希望最后一層的輸出能夠描述數(shù)據(jù)記錄的類別,比如對(duì)于一個(gè)二分類的問題,我們常常用兩個(gè)神經(jīng)單元作為輸出層,如果輸出層的第一個(gè)神經(jīng)單元的輸出值比第二個(gè)神經(jīng)單元大,我們認(rèn)為這個(gè)數(shù)據(jù)記錄屬于第一類,否則屬于第二類。
還記得我們第一次前向反饋時(shí),整個(gè)網(wǎng)絡(luò)的權(quán)重和偏置都是我們隨機(jī)取,因此網(wǎng)絡(luò)的輸出肯定還不能描述記錄的類別,因此需要調(diào)整網(wǎng)絡(luò)的參數(shù),即權(quán)重值和偏置值,而調(diào)整的依據(jù)就是網(wǎng)絡(luò)的輸出層的輸出值與類別之間的差異,通過調(diào)整參數(shù)來縮小這個(gè)差異,這就是神經(jīng)網(wǎng)絡(luò)的優(yōu)化目標(biāo)。對(duì)于輸出層:
Ej=Oj(1?Oj)(Tj?Oj)
其中Ej表示第j個(gè)結(jié)點(diǎn)的誤差值,Oj表示第j個(gè)結(jié)點(diǎn)的輸出值,Tj記錄輸出值,比如對(duì)于2分類問題,我們用01表示類標(biāo)1,10表示類別2,如果一個(gè)記錄屬于類別1,那么其T1=0,T2=1。
中間的隱藏層并不直接與數(shù)據(jù)記錄的類別打交道,而是通過下一層的所有結(jié)點(diǎn)誤差按權(quán)重累加,計(jì)算公式如下:
Ej=Oj(1?Oj)∑kEkWjk
其中Wjk表示當(dāng)前層的結(jié)點(diǎn)j到下一層的結(jié)點(diǎn)k的權(quán)重值,Ek下一層的結(jié)點(diǎn)k的誤差率。
計(jì)算完誤差率后,就可以利用誤差率對(duì)權(quán)重和偏置進(jìn)行更新,首先看權(quán)重的更新:
ΔWij=λEjOi
Wij=Wij+ΔWij
其中λ表示表示學(xué)習(xí)速率,取值為0到1,學(xué)習(xí)速率設(shè)置得大,訓(xùn)練收斂更快,但容易陷入局部最優(yōu)解,學(xué)習(xí)速率設(shè)置得比較小的話,收斂速度較慢,但能一步步逼近全局最優(yōu)解。
更新完權(quán)重后,還有最后一項(xiàng)參數(shù)需要更新,即偏置:
Δθj=λEj
θj=θj+Δθj
至此,我們完成了一次神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程,通過不斷的使用所有數(shù)據(jù)記錄進(jìn)行訓(xùn)練,從而得到一個(gè)分類模型。不斷地迭代,不可能無休止的下去,總歸有個(gè)終止條件
訓(xùn)練終止條件
每一輪訓(xùn)練都使用數(shù)據(jù)集的所有記錄,但什么時(shí)候停止,停止條件有下面兩種:
使用BP神經(jīng)網(wǎng)絡(luò)分類
我自己寫了一個(gè)BP神經(jīng)網(wǎng)絡(luò),在數(shù)字手寫體識(shí)別數(shù)據(jù)集MINIST上測(cè)試了一下,MINIST數(shù)據(jù)集中訓(xùn)練圖片有12000個(gè),測(cè)試圖片20000個(gè),每張圖片是28*28的灰度圖像,我對(duì)圖像進(jìn)行了二值化處理,神經(jīng)網(wǎng)絡(luò)的參數(shù)設(shè)置如下:
訓(xùn)練經(jīng)過約50次左右迭代,在訓(xùn)練集上已經(jīng)能達(dá)到99%的正確率,在測(cè)試集上的正確率為90.03%,單純的BP神經(jīng)網(wǎng)絡(luò)能夠提升的空間不大了,但kaggle上已經(jīng)有人有卷積神經(jīng)網(wǎng)絡(luò)在測(cè)試集達(dá)到了99.3%的準(zhǔn)確率。代碼是去年用C++寫的,濃濃的JAVA的味道,代碼價(jià)值不大,但注釋比較詳細(xì),可以查看這里,最近寫了一個(gè)Java多線程的BP神經(jīng)網(wǎng)絡(luò),但現(xiàn)在還不方便拿出來,如果項(xiàng)目黃了,再放上來吧。
訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)的一些經(jīng)驗(yàn)
講一下自己訓(xùn)練神經(jīng)網(wǎng)絡(luò)的一點(diǎn)經(jīng)驗(yàn):
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國(guó)內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03