梯度下降法

引用

线性回归
梯度下降法,方向导数求极值


梯度下降法简介

梯度下降法是一种最优化算法,用于最快搜索极大值。线性回归最小二乘法的误差函数(损失函数)为最小二乘法线性回归指标,为此需要最小化误差函数以获得最优回归系数。因此,我们可以利用梯度下降法沿梯度回归负方向探寻回归系数。


梯度下降法求解函数极值流程

Created with Raphaël 2.1.0 设置参数(学习速率α、截止条件ε、迭代次数k) 当前位置x处梯度(求导) 梯度下降修改位置为x Δx<ε or 迭代次数=k 结束 yes no

梯度下降过程计算方法:

只有1个变量x的条件下:

x:=xαdy/dx

举例说明:

利用梯度下降法求函数 y=1/2x22x 的最小值
1. α=0.9,ϵ=0.01,x0=4
2. 4,16dy/dx=(4)2=6
3. x=xαdy/dx=(4)0.9(6)=1.41.4,1.82
4. Δx=xx=αdy/dx=(0.9)(6)=5.4n=1
5. 1.41.82dy/dx=(1.4)2=0.6
6. x=xαdy/dx=(1.4)0.9(0.6)=1.941.94,1.9982
7. Δx=xx=αdy/dx=(0.9)(0.6)=0.54n=2
8. 1.941.9982dy/dx=(1.94)2=0.06
9. x=xαdy/dx=(1.94)0.9(0.06)=1.9941.994,1.999982
10. Δx=xx=αdy/dx=(0.9)(0.06)=0.054n=3
11. 1.9941.999982dy/dx=(1.994)2=0.006
12. x=xαdy/dx=(1.994)0.9(0.06)=1.99941.9994,1.99999982
13. Δx=xx=αdy/dx=(0.9)(0.006)=0.0054<ϵn=3

matlab脚本
syms x b
y=1/2*x^2-2*x;
grad=diff(y,x);

alpha=0.9;
eps=0.01;
x0=-4;
N=20;
x_=zeros(1,N);
x_(1)=x0;
delta=1;
i=1;

while (i<N|delta>eps)
  grad0=subs(grad,x,x_(1,i));
  x_(1,i+1)=x_(1,i)-alpha*grad0;
  delta=-alpha*grad0;
  i=i+1;
end

有若干变量x的条件下:

xj:=xjαdy/dxj ,j=1~n

举例说明:

利用梯度下降法求函数 y=2(x12)2+(x24)2 的最小值

matlab脚本代码
syms x1 x2
y=2*(x1-2)^2+(x2-4)^2;
grad=[diff(y,x1) diff(y,x2)];

alpha=0.05;
eps=1e-3;
x0=[0,0];
N=100;
x=zeros(2,N);
x(:,1)=x0;
delta=[1;1];
i=1;

while (i<N|delta>eps)
  grad0=subs(grad,[x1,x2],x(:,i)');
  x(:,i+1)=x(:,i)-alpha*grad0';
  delta=-alpha*grad0';
  i=i+1;
end

y_=subs(y,[x1,x2],x(:,end)');
disp(x);
disp(y_);

PS:梯度下降法,方向导数求极值:方向导数太复杂,还在学习。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值