梯度下降法

梯度下降法

梯度下降法是求解无约束最优化问题的一种最常用的方法,有实现简单的优点。梯度下降法是迭代算法,每一步需要求解目标函数的梯度向量。

假设f(x)=wx+bf(x)=w∗x+b,现有已知值x0,x1...xix0,x1...xi,求f(x)最小值时的w,bw,b,则:

循环输入x0,x1...xix0,x1...xi,求f(x_k):

f(xk)=wxk+bf(xk)=w∗xk+b

求参数w,bw,b的梯度,如果梯度变化小于阀值,则停止迭代:

w的梯度:df(xk)dw=x0df(xk)dw=x0

b的梯度:df(xk)db=1df(xk)db=1

假设步长为aa,更新参数w,b

w=waxkw=w−a∗xk
b=ba1b=b−a∗1

更新函数,继续迭代

f(x)=(waxk)x+(ba)f(x)=(w−a∗xk)∗x+(b−a)

1、推导

我们的目标是求f(x)f(x)的最小值对应的xx值。
根据泰勒公式对函数f(x)进行一阶泰勒展开:

f(x)=f(x0)+f(x0)(xx0)+o(x0)f(x)=f(x0)+f′(x0)∗(x−x0)+o(x0)

假设f(x1)<f(x0)x1=x0+df(x1)<f(x0),x1=x0+d

f(x1)=f(x0)+f(x0)(x1x0)+o(x0)f(x1)=f(x0)+f′(x0)∗(x1−x0)+o(x0)
即:
f(x1)=f(x0)+f(x0)d+o(x0)f(x1)=f(x0)+f′(x0)∗d+o(x0)

梯度下降认为o(α)(即二次导数及以上的项)为无穷小,忽略不计,所以:

f(x1)=f(x0)+df(x0)f(x1)=f(x0)+d∗f′(x0)

1、假设在区间(x1x0)(x1,x0)内,函数f(x)f(x)单调递增,f(x)xf(x)∝x,那么比f(x0)f(x0)更小的值对应的xx′肯定小于x0x0,所以d=dd=−d

x=x0df(x0)x′=x0−d∗f′(x0)

2、假设在区间(x0x1)(x0,x1)内,函数f(x)f(x)单调递减,f(x)xf(x)∝−x,那么比f(x0)f(x0)更小的值对应的xx′肯定大于x0x0,所以d=dd=d

x=x0+df(x0)−x′=−x0+d∗f′(x0)

x=x0df(x0)x′=x0−d∗f′(x0)

综上述1、2可得xx的更新函数:

xxaf(x0);a为步长

由上述推导可知当步长a较大时,xx′有可能会超出区间(x0x1)(x0,x1),从而导致梯度爆炸;当a较小时,有可能导致xx的变化很小,从而无法找到最优解,这就是梯度消失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值