什么是梯度下降法與delta法則

馬克-to-win @ 馬克java社區(qū):防盜版實(shí)名手機(jī)尾號(hào):73203。梯度下降法就是沿梯度下降的方向求解函數(shù)(誤差)極小值。delta法則是使用梯度下降法來(lái)找到最佳權(quán)向量。拿數(shù)字識(shí)別這個(gè)案例為例,訓(xùn)練模型的過(guò)程通常是這樣的。輸入為1萬(wàn)張圖片,也就是1萬(wàn)個(gè)樣本,我們定義為D,是訓(xùn)練樣例集合,輸出為相對(duì)應(yīng)的1萬(wàn)個(gè)數(shù)字。馬克-to-win @ 馬克java社區(qū):這就是1萬(wàn)個(gè)目標(biāo)輸出(Target),每一個(gè)目標(biāo)輸出我們定義為:td ,是訓(xùn)練樣例d的目標(biāo)輸出。我們的模型訓(xùn)練的目的是想找出,此人工神經(jīng)網(wǎng)絡(luò)模型的參數(shù),比如權(quán)向量w 等。要注意,目標(biāo)輸出td是已知的(非變量,比如5這張圖,目標(biāo)輸出就是5這個(gè)數(shù)字),樣本也是已知的。馬克-to-win @ 馬克java社區(qū):參數(shù)是未知的。還有什么是未知的?這就需要從訓(xùn)練的過(guò)程入手了。訓(xùn)練過(guò)程,通常開始時(shí),所有的權(quán)向量w都從一個(gè)很小的值開始,比如零, 這時(shí)有一個(gè)實(shí)際輸出(od是對(duì)訓(xùn)練樣例d的實(shí)際輸出)。目標(biāo)輸出和實(shí)際輸出的差距叫做誤差。因?yàn)橐还灿?萬(wàn)個(gè)樣本,為了消除正負(fù)誤差相抵,所以我們定義所 有目標(biāo)輸出和實(shí)際輸出的誤差平方和的一半為E。(因?yàn)槠椒降那髮?dǎo)會(huì)出現(xiàn)2,所以這就是取一半的原因,這樣2×(1/2)會(huì)使系數(shù)消失。)












           公式1-1

在上式中:




拿 我們這章第一個(gè)例子,單個(gè)神經(jīng)元的房子預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)模型為例,不難理解:Od=x0*w0+x1*w1+…xn*wn+b,結(jié)合前面的分析可知,x0, x1,。。。。。xn都是一個(gè)個(gè)的樣本值, 是已知的。td也是已知的。這樣看E是w0,w1,....wn和b的函數(shù)。我們的目標(biāo)就是找到一組權(quán)向量(w0,w1,....wn和b)能使E最小 化。拿wi來(lái)說(shuō),我們可以畫一條函數(shù)曲線:





馬克-to-win @ 馬克java社區(qū):防盜版實(shí)名手機(jī)尾號(hào):73203。公式1-2:之所以是負(fù)號(hào), 是因?yàn)閳D中斜率肯定為負(fù)值(因?yàn)槭桥cx軸正向的夾角)。根據(jù)數(shù)學(xué)中梯度下降法。(delta wi為正,E越來(lái)越?。┧晕覀冇邢旅嬉粋€(gè)業(yè)內(nèi)著名的式子:








            公式1-2

伊塔就是著名的學(xué)習(xí)率,代表縱向(E方向)的變化幅度。(keras optimizers 默認(rèn)學(xué)習(xí)率是0.01)






























式子中:td已知,xid已知,od是輸出,是可以計(jì)算出來(lái)的
代進(jìn)公式1-3:








    公式1-4

公式1-4就是大名鼎鼎的delta rule(規(guī)則)
以上的式子推導(dǎo)是根據(jù)批量學(xué)習(xí)。但理論和實(shí)踐中,我們也用逐步學(xué)習(xí)法(也就是不用通過(guò)所有樣本點(diǎn)的求和,簡(jiǎn)言之, 求和號(hào)直接省略)

在前面上一段,我們提到:所有的權(quán)向量w都從一個(gè)很小的值開始,比如零,通過(guò)變化,最后讓E達(dá)到最小。






        公式1-5 
拿我們這章第一個(gè)例子,單個(gè)神經(jīng)元的房子預(yù)測(cè)神經(jīng)網(wǎng)絡(luò)模型為例,Od=x0*w0+x1*w1+…xi*wi+.....xn*wn+b
來(lái)幫助理解以上的兩個(gè)式子:公式1-4和公式1-5。根據(jù)此以上兩個(gè)式子:我們的神經(jīng)網(wǎng)絡(luò)源代碼自 己就能寫出來(lái)。所有的權(quán)向量w都從一個(gè)很小的值開始,比如零。td,od, xid和伊塔的值都有,delta wi就能算出來(lái)。馬克-to-win @ 馬克java社區(qū):新一輪wi就能求出來(lái)。接著再循環(huán)往復(fù),直到最后計(jì)算出td和od一樣,這時(shí),delta wi就恒定為零了,Wi也就都求出來(lái),這不就是我們訓(xùn)練的目的嗎?全部到此就結(jié)束了,如果實(shí)在td和od的差距始終不能為0,那循環(huán)到一定輪數(shù)也就結(jié)束 了。