网站工作沟通及建设,wordpress quform,深圳网站建设公司联,免费wap自助建站网站本站原创文章#xff0c;转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com 目录
一.动量梯度下降法介绍
1.1 动量梯度下降法简介与思想
1.2 动量梯度下降法的算法流程
二.动量梯度下降法代码实例
2.1 动量梯度下降法实例代码 一.动量梯度下降法介绍… 本站原创文章转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com 目录
一.动量梯度下降法介绍
1.1 动量梯度下降法简介与思想
1.2 动量梯度下降法的算法流程
二.动量梯度下降法代码实例
2.1 动量梯度下降法实例代码 一.动量梯度下降法介绍
本节介绍动量梯度下降法的思想以及算法流程
1.1 动量梯度下降法简介与思想 动量梯度下降法是对梯度下降法的一种改进 这主要是因为梯度下降法在遇到局部最优时毫无办法 为了解决跳出局部最优动量梯度下降法为此模仿物体从高处滚到低处的原理 由于物体具有动量遇到小坑时会由于原有动量而跃出小坑,因此动量梯度下降法在迭代的过程中引入动量的概念它的迭代量改为速度,而当前的负梯度只作为速度的修改量 动量梯度下降法迭代公式如下 其中mc是动量系数一般设为0.9g是梯度 这样做的好处是在遇到“小坑”的时候会因为原有的速度方向冲出小坑 1.2 动量梯度下降法的算法流程 动量梯度下降法的具体算法流程如下 一、设置参数与初始化相关变量 1. 设置学习率lr lr一般设为0.1 2. 设置动量系数mc mc一般设为0.9 3. 初始化速度v v一般初始化为0 4. 初始化初始解x x随机初始化,或者具体问题具体设定 二、循环迭代 按如下步骤进行迭代 1.计算当前的梯度g 2.计算当前的梯度对v带来的修改量dx 3.计算当前的速度 4.更新x 5.检查迭代终止条件 如果满足终止条件就退出迭代程序 终止条件可设如下 (1)是否达到最大迭代次数 (2)目标函数值是否满足要求 (3) x是否多次变化极小 三、输出结果 输出最终的求解结果x 二.动量梯度下降法代码实例 本节展示动量梯度下降法求解函数最小值的一个代码实例 2.1 动量梯度下降法实例代码 现求解 的极小值 它的函数图像如下 其中梯度公式为 按以上算法流程编写程序如下(matlab) % 本代码用动量梯度下降法求解函数y 0.4*x^23*exp(-(x2)^2) 的极小值
% 代码主旨用于教学,供大家学习理解动量梯度下降法的原理
% 转载请说明来自 《老饼讲解神经网络》 bp.bbbdata.com
clc;clear all ;
line_x -5:0.1:5; % 目标函数曲线x
line_y 0.4*line_x.^23*exp(-(line_x2).^2); % 目标函数曲线y
lr 0.1; % 学习率
mc 0.9; % 动量系数
x -4; % x的初始值
v 0; % 初始速度
for i 1:100gx -(0.8*x-6*exp(-(x2).^2)*(x2)); % 计算负梯度v mc*v(1-mc)*lr*gx; % 将负梯度叠加到上一次速度中作为本次的速度x xv; % 更新xy 0.4*x.^23*exp(-(x2).^2); % 计算当前的目标函数值fprintf(第%d轮x的迭代值x%f\n,i,x)plot(line_x,line_y,x,y,or) % 画出曲线与当前迭代点drawnow; % 展示图象
end 运行结果如下 第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的迭代值x0.033763 第96轮x的迭代值x0.037061 第97轮x的迭代值x0.041660 第98轮x的迭代值x0.047361 第99轮x的迭代值x0.053971 经过100步迭代求得最后y在x0.053971处取得极小值 相关文章 1-LVQ的学习目录老饼|BP神经网络-竞争神经网络 2-SVM的学习目录老饼|BP神经网络-感知机与SVM 3-BP的学习目录老饼|BP神经网络-BP入门