继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

批量梯度下降

心之宙
关注TA
已关注
手记 71
粉丝 37
获赞 167

常见的机器学习迭代方法有:

  • 梯度下降、随机梯度下降、小批量随机梯度下降
  • 动量法
  • Adagrad
  • RMSProp
  • Adadelta
  • Adam

下面主要介绍批量梯度下降(BGD)的工作原理:

假设损失函数 f:RnRf: \mathbb{R}^n \rightarrow \mathbb{R} 是连续可导的, 且 xRnx \in \mathbb{R}^n, 对于给定绝对值足够小的数 ϵ\epsilon,根据泰勒展开公式,我们得到以下的近似

f(x+ϵ)f(x)+ϵTxf(x).f(x + \epsilon) \approx f(x) + \epsilon^T \nabla_x f(x) .

这里 xf(x)\nabla_x f(x) 是函数 ffxx 处的梯度。我们可以找一个常数 η>0\eta > 0,使得 ηxf(x)||\eta \nabla_x f(x)|| 足够小,那么可以将 ϵ\epsilon 替换为 ηxf(x)-\eta \nabla_x f(x)得到

f(xηxf(x))f(x)ηxf(x)2.f(x - \eta \nabla_x f(x)) \approx f(x) - \eta ||\nabla_x f(x)||^2.

如果梯度的模 xf(x)0||\nabla_x f(x)|| \neq 0,那么

f(xηxf(x))f(x).f(x - \eta \nabla_x f(x)) \lesssim f(x).

因而,如果我们通过以下规则来更新 xx

xxηxf(x))x \leftarrow x - \eta \nabla_x f(x))

便可能使得 f(x)f(x) 的值被降低来达到最小化损失函数的目的。假设我们有 mm 个样本 D={(xi,yi)}imD = \{(x_i, y_i)\}_i^m, 可以定义了一个损失函数 f(θ)=1mi=1mg(xi;θ)yi2f(\theta) = \displaystyle \frac{1}{m} \sum_{i=1}^m ||g(x_i;\theta) - y_i||^2, 这里 g:RnRcg: \mathbb{R}^n \rightarrow \mathbb{R}^c, 当 c=1c=1 对应于回归任务, 当 c>1c > 1 对应于 cc 分类任务. gg 可以是一个神经网络模型, 也可以是一个简单的的线性映射。为了最小化 f(θ)f(\theta), 我们可以使用 SGD 优化方法:

  1. 设置学习率 η\eta, 且初始化参数 θ\theta
  2. 计算梯度 f(θ)\nabla f(\theta)
  3. 更新参数 θ\theta, 即 θθηf(θ))\theta \leftarrow \theta - \eta \nabla f(\theta)).
  4. 直至满足中止条件, 结束迭代, 获得最终的参数值 θ^\hat{\theta}.

mm 很大时,批量梯度下降效率很低,在实际的应用中一般使用小批量梯度下降优化方法。学习率 η\eta 对优化过程也十分重要,过大的学习率可能使得迭代无法收敛, 过小的学习率可能会导致训练速度过慢且陷入训练的平台期而无法获得理想的结果。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP