基于梯度下降算法的参数更新公式的推导

​ 在前面一篇文章中写到了线性回归算法以及梯度下降算法对参数的更新:

θ i = θ i ′ − α ∂ L o s s ∂ θ \theta_i=\theta_i^{'}-\alpha\frac{\partial Loss}{\partial \theta} θi=θiαθLoss

​ 每一个算法都会有相应的数学公式推导,那么这个参数更新公式是怎么来的呢?

​ 首先看一张函数图片:

在这里插入图片描述

​ 比如说我们的初始点在 θ 0 \theta_0 θ0点,我们的下一步需要到达的点是 θ \theta θ, 现在我们要做的就是根据已知的 θ 0 \theta_0 θ0来得到下一步更新的 θ \theta θ点,就是我们的参数更新公式。

​ 再看看,这张图是不是有些熟悉?对,就是我们高中刚学导数的时候推导的一个公式:

f ( θ ) − f ( θ 0 ) θ − θ 0 = ▽ f ( θ 0 ) \frac{f(\theta)-f(\theta_0)}{\theta-\theta_0}=\bigtriangledown f(\theta_0) θθ0f(θ)f(θ0)=f(θ0)

​ 当 θ \theta θ无限接近 θ 0 \theta_0 θ0的时候,对应函数值的差值与 θ \theta θ θ 0 \theta_0 θ0的差值的比值就是函数在 θ 0 \theta_0 θ0点的梯度值,就是导数。

​ 其实吧,这公式更严格地说来自泰勒展开式:

f ( x ) = ∑ i = 0 n f i ( x 0 ) i ! ( x − x 0 ) i f(x)=\sum_{i=0}^{n}\frac{f^{i}(x_0)}{i!}(x-x_0)^i f(x)=i=0ni!fi(x0)(xx0)i

​ 当 i i i=1时,就会得到上述公式,也就是泰勒一阶展开式。

​ 那接下来就要对公式进行变换,将分子项移到右边

f ( θ ) − f ( θ 0 ) = ( θ − θ 0 ) ▽ f ( θ 0 ) f(\theta)-f(\theta_0)=(\theta-\theta_0)\bigtriangledown f(\theta_0) f(θ)f(θ0)=(θθ0)f(θ0)

​ 对每次更新 θ \theta θ值都希望使 f ( θ ) f(\theta) f(θ)值更小,所以可以得到

f ( θ ) − f ( θ 0 ) < 0 f(\theta)-f(\theta_0)<0 f(θ)f(θ0)<0

​ 即 ( θ − θ 0 ) ▽ f ( θ 0 ) < 0 (\theta-\theta_0)\bigtriangledown f(\theta_0)<0 (θθ0)f(θ0)<0.

​ 下面重点来了, θ − θ 0 \theta-\theta_0 θθ0是一个很小的矢量,他的大小我们规定是我们每更新一个参数力度 η \eta η(可以比作下山时每一步走的多少),那么单位向量我们定义为 v v v,则上述公式可变为

η v ▽ f ( θ 0 ) < 0 \eta v\bigtriangledown f(\theta_0)<0 ηvf(θ0)<0

η \eta η是标量而且一般设定为正值,所以 η \eta η可以忽略,所以不等式变成

v ▽ f ( θ 0 ) < 0 v\bigtriangledown f(\theta_0)<0 vf(θ0)<0

​ 根据两个向量数量积公式可以得到

∣ v ∣ ∣ ▽ f ( θ ) ∣ c o s ( β ) < 0 |v||\bigtriangledown f(\theta)|cos(\beta)<0 vf(θ)cos(β)<0

​ 可知当 c o s ( β ) = − 1 cos(\beta)=-1 cos(β)=1的时候 v 与 ▽ f ( θ ) v与\bigtriangledown f(\theta) vf(θ)的方向完全相反即是梯度的负方向的时候,即使 v ▽ f ( θ 0 ) v\bigtriangledown f(\theta_0) vf(θ0)小于0且是局部最小值。因为 v v v是单位向量又是梯度的反方向,所以

v = − ▽ f ( θ ) ∣ ▽ f ( θ ) ∣ v=-\frac{\bigtriangledown f(\theta)}{|\bigtriangledown f(\theta)|} v=f(θ)f(θ)

​ 代如 θ − θ 0 = η v ​ \theta-\theta_0=\eta v​ θθ0=ηv

θ = θ 0 − η ▽ f ( θ 0 ) ∣ ▽ f ( θ 0 ) ∣ \theta=\theta_0-\eta \frac{\bigtriangledown f(\theta_0)}{|\bigtriangledown f(\theta_0)|} θ=θ0ηf(θ0)f(θ0)

​ 一般 ∣ ▽ f ( θ 0 ) ∣ |\bigtriangledown f(\theta_0)| f(θ0)是标量,可以并入到 η \eta η中简化为

θ = θ 0 − η ▽ f ( θ 0 ) \theta=\theta_0-\eta\bigtriangledown f(\theta_0) θ=θ0ηf(θ0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值