
神經(jīng)網(wǎng)絡(luò)入門(mén)之bp算法,梯度下降
本人作為一個(gè)想進(jìn)行NLP研究的新手,看了很多網(wǎng)絡(luò)上很好的神經(jīng)網(wǎng)絡(luò)的入門(mén)代碼和數(shù)學(xué)原理。但是個(gè)人數(shù)學(xué)比較爛,很多東西想了很久才想明白,又害怕忘掉。為此寫(xiě)下這篇大白話入門(mén)篇作為自己學(xué)習(xí)的一個(gè)記錄,也想為跟我同樣想入門(mén)的同學(xué)們一個(gè)參考。希望有問(wèn)題多多交流。
備注:很多內(nèi)容都是本人自己想當(dāng)然的結(jié)果,有錯(cuò)誤的話,望大神們多多指教。
廢話都說(shuō)完了本文將從一個(gè)最簡(jiǎn)單一個(gè)BP網(wǎng)絡(luò)開(kāi)始講起。
bp網(wǎng)絡(luò)的bp(back propagation)中文就是反向傳播的意思,為什么反向傳播呢。是為了將配合梯度下降法進(jìn)行迭代求出好的結(jié)果。這個(gè)會(huì)稍后講解。
上圖來(lái)自百度圖片(懶得畫(huà)了)
x為輸入,w為權(quán)重,這個(gè)f(x)被稱為激活函數(shù)(activation function)。如sigmoid,tanh等。他們的特點(diǎn)有一個(gè)就是可以容易的求出他們的導(dǎo)數(shù)(很關(guān)鍵)。激活函數(shù)的意義可以看這篇神經(jīng)網(wǎng)絡(luò)激勵(lì)函數(shù)的作用是什么?有沒(méi)有形象的解釋?
可以看到輸出的o = f(w1x1+w2x2+w3x3+w4x4) = f(∑WiXi)。
第一次運(yùn)算的結(jié)果很明顯就是上邊的o。但是此時(shí)問(wèn)題出來(lái)了,運(yùn)算出來(lái)的o和實(shí)際的結(jié)果肯定式有誤差的,該如何利用這個(gè)誤差優(yōu)化這個(gè)運(yùn)算呢?也就是得到好的w呢?
此時(shí)就出現(xiàn)了反向傳播這個(gè)過(guò)程。而配合反向傳播的就是梯度下降法了。
現(xiàn)在很多同學(xué)可能會(huì)很暈,當(dāng)時(shí)我第一次看的時(shí)候也很暈。
為了容易理解梯度下降法,建議去看Ng的斯坦福網(wǎng)課第二節(jié),非常清楚。比我寫(xiě)的清楚多了。
梯度下降法是求(局部)最好的w。
設(shè)誤差函數(shù)為:
y為實(shí)際結(jié)果,o為預(yù)測(cè)結(jié)果。
設(shè)激活函數(shù)f(x)為sigmoid函數(shù),此時(shí)就可以很方便的求出其導(dǎo)數(shù)了(其他激活函數(shù)也是一樣)
所以我們要求的就是J最小的時(shí)候wi的值。a是變化的速率。下式就可以比作從山頂走到山底的過(guò)程,而a表示行走的步長(zhǎng)或者是速率。
此時(shí)可以發(fā)現(xiàn)每一項(xiàng)都是可以求出的,則經(jīng)過(guò)多次運(yùn)算,可以求出好的Wi
一般我們把前兩項(xiàng)作為
此時(shí)我們可以發(fā)現(xiàn)
上邊介紹完了梯度下降,現(xiàn)在再說(shuō)反向傳播理由。其實(shí)很簡(jiǎn)單了。它用的就是鏈?zhǔn)椒▌t。我們第一步是前向傳播,進(jìn)行一系列運(yùn)算得到了預(yù)測(cè)結(jié)果o。為了使用梯度下降法,我們需要得到,上邊需要的delta,也就是說(shuō) J 這個(gè)誤差函數(shù)。因?yàn)閷?shí)際結(jié)果我們知道,而激活函數(shù)的導(dǎo)數(shù)我們也知道怎么運(yùn)算。所以我們得到預(yù)測(cè)結(jié)果o時(shí),delta就可以求出來(lái)。而delta屬于輸出層的運(yùn)算,再乘以輸入層的Xi就能得到?
Wi,進(jìn)一步更新Wi。
很明顯可以看出整個(gè)一輪的運(yùn)算是:
前向傳播:
輸入層—-w—》輸出層(sigmoid)—-》預(yù)測(cè)結(jié)果
后向傳播:
誤差—》輸出層(sigmoid)求導(dǎo)—-》輸入層—–》更新Wi
換句話說(shuō),BP算法就是提供了給梯度下降法所需要的所有值。
由鏈?zhǔn)椒▌t可知,如果網(wǎng)絡(luò)層數(shù)為3層以上時(shí)也可以得到每層的delta。
用python代碼來(lái)說(shuō):
layer_n_delta = layer_n+1_delta.dot((W_n_n+1).T)
(W_n_n+1) += (Xn).T.dot(layer_n+1_delta)
上邊有很多符號(hào)有點(diǎn)問(wèn)題,但是我覺(jué)得閱讀應(yīng)該沒(méi)有什么障礙。因?yàn)榈谝淮斡眠@個(gè)marddown編輯器,很多東西不好弄。
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實(shí)戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無(wú)論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認(rèn)知誤區(qū) 在 MySQL 數(shù)據(jù)庫(kù)管理中,“大表” 始終是性能優(yōu)化繞不開(kāi)的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫(kù)表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動(dòng)態(tài)隨機(jī)一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開(kāi)始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價(jià)值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫(kù)表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實(shí)戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫(kù))處理 Excel 數(shù)據(jù)時(shí),“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗(yàn)與 t 檢驗(yàn):差異、適用場(chǎng)景與實(shí)踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計(jì)學(xué)領(lǐng)域,假設(shè)檢驗(yàn)是驗(yàn)證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲(chǔ)的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計(jì)劃中 rows 數(shù)量的準(zhǔn)確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計(jì)劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對(duì)象的 text 與 content:區(qū)別、場(chǎng)景與實(shí)踐指南 在 Python 進(jìn)行 HTTP 網(wǎng)絡(luò)請(qǐng)求開(kāi)發(fā)時(shí)(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價(jià)值的核心操盤(pán)手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫(kù)表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請(qǐng)求工具對(duì)比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請(qǐng)求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)的科學(xué)計(jì)數(shù)法問(wèn)題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長(zhǎng)浮點(diǎn)數(shù)據(jù)時(shí)的科學(xué)計(jì)數(shù)法問(wèn)題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價(jià)值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運(yùn)營(yíng)問(wèn)題、提升執(zhí)行效率的核心手段,其價(jià)值 ...
2025-09-12用 SQL 驗(yàn)證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實(shí)戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過(guò)程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計(jì)” 與 “用戶體驗(yàn) ...
2025-09-11塔吉特百貨孕婦營(yíng)銷案例:數(shù)據(jù)驅(qū)動(dòng)下的精準(zhǔn)零售革命與啟示 在零售行業(yè) “流量紅利見(jiàn)頂” 的當(dāng)下,精準(zhǔn)營(yíng)銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價(jià)值 在數(shù)據(jù)驅(qū)動(dòng)決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實(shí)踐到業(yè)務(wù)價(jià)值挖掘 在數(shù)據(jù)分析場(chǎng)景中,聚類分析作為 “無(wú)監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計(jì)模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價(jià)值導(dǎo)向 統(tǒng)計(jì)模型作為數(shù)據(jù)分析的核心工具,并非簡(jiǎn)單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10