TensorFlow中的BP算法原理是什么,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
創(chuàng)新互聯(lián)主營(yíng)延長(zhǎng)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開(kāi)發(fā),延長(zhǎng)h5小程序設(shè)計(jì)搭建,延長(zhǎng)網(wǎng)站營(yíng)銷(xiāo)推廣歡迎延長(zhǎng)等地區(qū)企業(yè)咨詢(xún)一.反向傳播算法
反向傳播算法[1](Backpropagation Algorithm,簡(jiǎn)稱(chēng)BP算法)是深度學(xué)習(xí)的重要思想基礎(chǔ),對(duì)于初學(xué)者來(lái)說(shuō)也是必須要掌握的基礎(chǔ)知識(shí),在這一小節(jié)里,我們會(huì)較為詳細(xì)的介紹這一重點(diǎn)知識(shí)。
我們使用一個(gè)如圖1所示的神經(jīng)網(wǎng)絡(luò),該圖所示是一個(gè)三層神經(jīng)網(wǎng)絡(luò),兩層隱藏層和一層輸出層,輸入層有兩個(gè)神經(jīng)元,接收輸入樣本(x1,x2),為網(wǎng)絡(luò)的輸出。
圖1 一個(gè)三層神經(jīng)網(wǎng)絡(luò)
二.前饋計(jì)算的過(guò)程
為了理解神經(jīng)網(wǎng)絡(luò)的運(yùn)算過(guò)程,我們需要先搞清楚前饋計(jì)算,即數(shù)據(jù)沿著神經(jīng)網(wǎng)絡(luò)前向傳播的計(jì)算過(guò)程,以圖1所示的網(wǎng)絡(luò)為例:
輸入的樣本為:
公式1
第一層網(wǎng)絡(luò)的參數(shù)為:
公式2
第二層網(wǎng)絡(luò)的參數(shù)為:
公式3
第三層網(wǎng)絡(luò)的參數(shù)為:
公式4
·第一層隱藏層的計(jì)算
圖2 計(jì)算第一層隱藏層
第一層隱藏層有三個(gè)神經(jīng)元:neu1、neu2和neu3。該層的輸入為:
公式5
以neu1神經(jīng)元為例,則其輸入為:
公式6
同理有:
公式7
公式8
假設(shè)我們選擇函數(shù)f(x)作為該層的激活函數(shù)(圖1中的激活函數(shù)都標(biāo)了一個(gè)下標(biāo),一般情況下,同一層的激活函數(shù)都是一樣的,不同層可以選擇不同的激活函數(shù)),那么該層的輸出為:
·第二層隱藏層的計(jì)算
圖3 計(jì)算第二層隱藏層
第二層隱藏層有兩個(gè)神經(jīng)元:neu4和neu5。該層的輸入為:
公式9
即第二層的輸入是第一層的輸出乘以第二層的權(quán)重,再加上第二層的偏置。因此得到neu4和neu5的輸入分別為:
公式10
公式11
該層的輸出分別為:
·輸出層的計(jì)算
圖4 計(jì)算輸出層
輸出層只有一個(gè)神經(jīng)元:neu6。該層的輸入為:
公式12
即:
公式13
因?yàn)樵摼W(wǎng)絡(luò)要解決的是一個(gè)二分類(lèi)問(wèn)題,所以輸出層的激活函數(shù)也可以使用一個(gè)Sigmoid型函數(shù),神經(jīng)網(wǎng)絡(luò)最后的輸出為:
三.反向傳播的計(jì)算
上一小節(jié)里我們已經(jīng)了解了數(shù)據(jù)沿著神經(jīng)網(wǎng)絡(luò)前向傳播的過(guò)程,這一節(jié)我們來(lái)介紹更重要的反向傳播的計(jì)算過(guò)程。假設(shè)我們使用隨機(jī)梯度下降的方式來(lái)學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的參數(shù),損失函數(shù)定義為
其中y是該樣本的真實(shí)類(lèi)標(biāo)。使用梯度下降進(jìn)行參數(shù)的學(xué)習(xí),我們必須計(jì)算出損失函數(shù)關(guān)于神經(jīng)網(wǎng)絡(luò)中各層參數(shù)(權(quán)重w和偏置b)的偏導(dǎo)數(shù)。
假設(shè)我們要對(duì)第k層隱藏層的
假設(shè)代表第k層神經(jīng)元的輸入,即
其中n^(k-1)為前一層神經(jīng)元的輸出,則根據(jù)鏈?zhǔn)椒▌t有:
公式14
公式15
因此,我們只需要計(jì)算偏導(dǎo)數(shù)
·計(jì)算偏導(dǎo)數(shù)
前面說(shuō)過(guò),第k層神經(jīng)元的輸入為:,因此可以得到:
公式16
我們以1.1節(jié)中的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)為例,假設(shè)我們要計(jì)算第一層隱藏層的神經(jīng)元關(guān)于權(quán)重矩陣的導(dǎo)數(shù),則有:
公式17
·計(jì)算偏導(dǎo)數(shù)
因?yàn)槠胋是一個(gè)常數(shù)項(xiàng),因此偏導(dǎo)數(shù)的計(jì)算也很簡(jiǎn)單:
公式18
依然以第一層隱藏層的神經(jīng)元為例,則有:
公式19
·計(jì)算偏導(dǎo)數(shù)
根據(jù)第一節(jié)的前向計(jì)算,我們知道第k+1層的輸入與第k層的輸出之間的關(guān)系為:
公式20
公式21
公式22
公式23
下面是基于隨機(jī)梯度下降更新參數(shù)的反向傳播算法:
輸入: |
看完上述內(nèi)容,你們掌握TensorFlow中的BP算法原理是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!