鄭州企業(yè)網(wǎng)站優(yōu)化排名濟(jì)南seo的排名優(yōu)化
本站原創(chuàng)文章,轉(zhuǎn)載請(qǐng)說(shuō)明來(lái)自《老餅講解-BP神經(jīng)網(wǎng)絡(luò)》bp.bbbdata.com
目錄
一.動(dòng)量梯度下降法介紹 ??
1.1 動(dòng)量梯度下降法簡(jiǎn)介與思想 ? ? ?
1.2 動(dòng)量梯度下降法的算法流程 ? ? ?
二.動(dòng)量梯度下降法代碼實(shí)例 ?
2.1 動(dòng)量梯度下降法實(shí)例代碼
一.動(dòng)量梯度下降法介紹 ??
本節(jié)介紹動(dòng)量梯度下降法的思想以及算法流程
1.1 動(dòng)量梯度下降法簡(jiǎn)介與思想 ? ? ?
動(dòng)量梯度下降法是對(duì)梯度下降法的一種改進(jìn),
這主要是因?yàn)樘荻认陆捣ㄔ谟龅骄植孔顑?yōu)時(shí),毫無(wú)辦法
?為了解決跳出局部最優(yōu),動(dòng)量梯度下降法為此模仿物體從高處滾到低處的原理,
由于物體具有動(dòng)量,遇到小坑時(shí)會(huì)由于原有動(dòng)量而躍出小坑,因此,動(dòng)量梯度下降法在迭代的過(guò)程中引入動(dòng)量的概念,它的迭代量改為"速度",而當(dāng)前的負(fù)梯度只作為速度的修改量,
動(dòng)量梯度下降法迭代公式如下:
其中,mc是動(dòng)量系數(shù),一般設(shè)為0.9,g是梯度
這樣做的好處是,在遇到“小坑”的時(shí)候,會(huì)因?yàn)樵械乃俣确较?#xff0c;沖出小坑
1.2 動(dòng)量梯度下降法的算法流程 ? ? ?
動(dòng)量梯度下降法的具體算法流程如下
?一、設(shè)置參數(shù)與初始化相關(guān)變量 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
1. 設(shè)置學(xué)習(xí)率lr ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? lr一般設(shè)為0.1 ? ? ? ? ? ? ? ? ? ? ? ? ?
2. 設(shè)置動(dòng)量系數(shù)mc ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? mc一般設(shè)為0.9 ? ? ? ? ? ? ? ? ? ? ? ?
3. 初始化速度v ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? v一般初始化為0 ? ? ? ? ? ? ? ? ? ? ??
4. 初始化初始解x ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? x隨機(jī)初始化,或者具體問(wèn)題具體設(shè)定 ? ?
?二、循環(huán)迭代 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? 按如下步驟進(jìn)行迭代 ? ? ? ? ? ? ? ? ? ? ??
1.計(jì)算當(dāng)前的梯度g ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
2.計(jì)算當(dāng)前的梯度對(duì)v帶來(lái)的修改量dx ? ? ? ? ? ??
? ??
3.計(jì)算當(dāng)前的速度 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ??
4.更新x ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ?? ? ? ?
5.檢查迭代終止條件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? 如果滿足終止條件,就退出迭代程序 ? ? ? ?
? ??終止條件可設(shè)如下: ? ? ? ? ? ? ? ??
? ? ? (1)是否達(dá)到最大迭代次數(shù) ? ? ? ??
? ? ??(2)目標(biāo)函數(shù)值是否滿足要求 ? ? ??
? ? ? (3) x是否多次變化極小 ? ? ? ? ??
?三、輸出結(jié)果 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? 輸出最終的求解結(jié)果x?
二.動(dòng)量梯度下降法代碼實(shí)例 ?
本節(jié)展示動(dòng)量梯度下降法求解函數(shù)最小值的一個(gè)代碼實(shí)例
2.1 動(dòng)量梯度下降法實(shí)例代碼
? ?
現(xiàn)求解的極小值
它的函數(shù)圖像如下:?
?
其中,梯度公式為
?按以上算法流程,編寫程序如下(matlab): ?
% 本代碼用動(dòng)量梯度下降法求解函數(shù)y = 0.4*x^2+3*exp(-(x+2)^2) 的極小值
% 代碼主旨用于教學(xué),供大家學(xué)習(xí)理解動(dòng)量梯度下降法的原理
% ?轉(zhuǎn)載請(qǐng)說(shuō)明來(lái)自 《老餅講解神經(jīng)網(wǎng)絡(luò)》 bp.bbbdata.com
clc;clear all ;
line_x = -5:0.1:5; ? ? ? ? ? ? ? ? ? ? ? ? ? ?% 目標(biāo)函數(shù)曲線x
line_y = 0.4*line_x.^2+3*exp(-(line_x+2).^2); % 目標(biāo)函數(shù)曲線y
lr = 0.1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? % 學(xué)習(xí)率
mc = 0.9; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? % 動(dòng)量系數(shù)
x ?= -4; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?% x的初始值
v ?= 0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? % 初始速度
for i = 1:100gx = -(0.8*x-6*exp(-(x+2).^2)*(x+2)); ? ? ?% 計(jì)算負(fù)梯度v ?= mc*v+(1-mc)*lr*gx; ? ? ? ? ? ? ? ? ? ?% 將負(fù)梯度疊加到上一次速度中,作為本次的速度x ?= x+v; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?% 更新xy ?= 0.4*x.^2+3*exp(-(x+2).^2); ? ? ? ? ? ?% 計(jì)算當(dāng)前的目標(biāo)函數(shù)值fprintf('第%d輪x的迭代值x=%f\n',i,x)plot(line_x,line_y,x,y,'or') ? ? ? ? ? ? ? % 畫(huà)出曲線與當(dāng)前迭代點(diǎn)drawnow; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? % 展示圖象
end
運(yùn)行結(jié)果如下
第0輪x的迭代值x=-3.970198
第1輪x的迭代值x=-3.914051
第2輪x的迭代值x=-3.835152
第3輪x的迭代值x=-3.737256
第4輪x的迭代值x=-3.624348
....
第95輪x的迭代值x=0.033763
第96輪x的迭代值x=0.037061
第97輪x的迭代值x=0.041660
第98輪x的迭代值x=0.047361
第99輪x的迭代值x=0.053971
經(jīng)過(guò)100步迭代,求得最后y在x=0.053971處取得極小值
相關(guān)文章
1-LVQ的學(xué)習(xí)目錄:老餅|BP神經(jīng)網(wǎng)絡(luò)-競(jìng)爭(zhēng)神經(jīng)網(wǎng)絡(luò)
2-SVM的學(xué)習(xí)目錄:老餅|BP神經(jīng)網(wǎng)絡(luò)-感知機(jī)與SVM
3-BP的學(xué)習(xí)目錄:老餅|BP神經(jīng)網(wǎng)絡(luò)-BP入門