代价函数与梯度下降算法

代价函数

我们希望有一个算法,能够找到合适的权重和偏置,以至于网络的输出 y ( x ) y(x) y(x)能够完全的拟合所有得输入 x x x。为了量化我们如何实现这个目标,我们定义一个代价函数(以均方误差为例,即MSE):
C ( w , b ) = 1 2 n ∑ x ∥ y ( x ) − y t r u e ∥ 2 C(w,b) = \frac{1}{2n} \sum_{x}\|y(x) - y_{true} \| ^2 C(w,b)=2n1xy(x)ytrue2
其中, w w w是所有的权重集合表示, b b b是偏置的结合表示, n n n是样本个数。 y ( x ) y(x) y(x)表示网络根据给定的权重和偏置得到的输出, y t r u e y_{true} ytrue表示输入 x x x时的真实输出。换句话说,我们应该求得一个权重和偏置组合,使得所有样本的网络输出值与真实值的差值的平方总和最小。从公式来看,代价函数 C C C w w w b b b的的函数,即一个多元函数,问题转化为多元函数求最小值的问题,不是极小值。

梯度下降算法

我们把 C ( w , b ) C(w,b) C(w,b)想象成一个多维曲面(参考三维曲面)曲面上有一个小球(初始位置),我们可以控制这个小球往哪个方向移动(方向),每次移动多少距离(学习率: η \eta η)。
参考高中一道运动学物理题:飞机以恒定的速度 v v v于2000米高空飞行,在 t 0 t_0 t0时刻投下炸弹,不考虑空气阻力。求 t t t时刻炸弹的速度与位置。我们的解法是:将速度分解成水平方向和竖直方向,水平方向匀速运动,竖直方向是初速度为0,加速度为g的匀加速运动,则 t t t时刻的速度方向为: ( v , g t ) (v,gt) (v,gt)
理解梯度下降求法的关键就在于:分解。代价函数 C C C是关于 w w w b b b的多元函数,小球沿着 C C C w w w方向的偏导数负方向,和 b b b的偏导数负方向移动,可以使得小球下降的最快,这个方向叫做负梯度方向,小球沿着 w w w的梯度方向移动 Δ w \Delta w Δw,沿着 b b b的梯度方向移动 Δ b \Delta b Δb之后,C的变化量为:
Δ C ≈ ∂ C ∂ w ∗ Δ w + ∂ C ∂ b ∗ Δ b \Delta C \approx \frac{\partial C}{\partial w}*\Delta w+\frac{\partial C}{\partial b}*\Delta b ΔCwCΔw+bCΔb
我们用 ∇ C \nabla C C来表示梯度方向:
∇ C = ( ∂ C ∂ w , ∂ C ∂ b ) T \nabla C = ( \frac{\partial C}{\partial w},\frac{\partial C}{\partial b})^T C=(wC,bC)T来表示小球移动的方向,即梯度方向

Δ v = ( Δ w , Δ b ) T \Delta v = (\Delta w,\Delta b)^T Δv=(Δw,Δb)T
来表示小球的移动量。
Δ C ≈ ∇ C ⋅ Δ v \Delta C \approx \nabla C \cdot \Delta v ΔCCΔv
Δ v = − η ∇ C \Delta v = -\eta \nabla C Δv=ηC Δ C \Delta C ΔC必定为负,即可保证每次移动小球都可使得代价函数减小。
但这种方法也不是没有缺点,我们每次移动小球都是基于当前的位置考虑,选择下降最快的,在代价函数为非凸的情形下,很容易陷入局部最小值。

  1. 为避免陷入局部最小值,可以多次随机取小球的位置:随机
  2. 由于代价函数为每个样本代价的总和,当样本量很大的时候,每次更新权重和偏置都要计算全体样本的代价,这开销很大,可以将总体样本分成 n n n个使用小批次,以小批次代价来代替总体,以完成一次更新权重和偏置:小批量

随机梯度下降

我们随机选取 m m m个样本,称为小批量,我们期望小批量梯度的平均值大致等于总体的梯度。即
∑ j m ∇ C j m ≈ ∑ i x ∇ C i n = ∇ C \frac { \sum_j ^m \nabla C_j}{m} \approx \frac { \sum_i ^x \nabla C_i}{n} = \nabla C mjmCjnixCi=C
则,对于任意一个参数 w k w_k wk,沿着梯度负方向移动 η \eta η后,即: Δ w k = − η ∇ C \Delta w_k= -\eta\nabla C Δwk=ηC
带入得:
w k → w k , = w k + Δ w = w k − η m ∑ j m ∂ C j ∂ w k w_k \to w_k^, = w_k + \Delta w = w_k - \frac {\eta}{m} \sum_j ^m \frac{\partial C_j}{\partial w_k} wkwk,=wk+Δw=wkmηjmwkCj
不停地依照上述公式更新参数,直到收敛。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值