吴恩达深度学习专项课程2学习笔记/week2/Optimization Algorithms

Posted surimj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吴恩达深度学习专项课程2学习笔记/week2/Optimization Algorithms相关的知识,希望对你有一定的参考价值。

Optimization algorithms

优化算法以加速训练。

Mini-batch gradient descend

  • Batch gradient descend:每一小步梯度下降否需要计算所有的训练样本。很耗时。
  • Mini-batch gradient descend:将训练集分为很多小的mini-batch,每一个epoch用到一个mini-batch的训练样本,进行一次梯度下降(向前传播,计算cost,向后传播)。训练速度会提升很多。

选择mini-batch的size

  • 如果size=1:随机梯度下降,过程会曲折反复,不收敛,在最优值附近徘徊(紫色线)。一个很大的缺点在于每次只处理一个样本,失去了向量化的提升效率的作用。

  • 如果size=m:批梯度下降,过程比较直接但是每步都很耗时。(蓝色线)

  • size适中,则可以既利用到向量化的作用,又每一步下降不需要耗时过长,因此效率较高。(绿色线)

size选择大致原则:

  • 如果训练集很小(如m <= 2000):Batch gradient descend
  • 如果训练集相对大,那么典型的mini-batch的大小如:64,128,256,512。考虑到计算机的内存,所以常用的mini-batch都是2的次方。
  • 确保mini-batch和计算机CPU/GPU的内存相适应。

mini-batch size是需要调整的超参数之一,尝试不同的值,然后选择一个最好的。

补充知识:Exponentially weighted averages(指数加权平均)

以每日温度的指数加权平均计算为例,每天的温度值如蓝色点所示,数据看起来噪声比较大,如下图。

我们计算数据的趋势,即温度的局部平均,使用指数加权平均。计算公式为:

\\[v_t = \\beta v_{t-1} + (1-\\beta) \\theta_t \\]

其中,\\(v_t\\)表示t天温度的指数加权平均值,\\(\\theta_t\\)表示当天的温度值,β是参数。

实际上,\\(v_t\\)可以看作约等于取前\\(\\frac {1}{1 - \\beta}\\)天的平均值。

例如取β = 0.9,我们得到红色的线;当取β = 0.98时,得到绿色线。注意到,当β的值很大(接近1)时,线条会更加的平滑,因为对更多的天数取了平均值,但是会有更多的延迟出现,因为计算过去的权重很大而当前的权重很小,对变化的适应更迟缓。而另一个极端值,如β = 0.5时,则得到噪声较大的黄色线。

对指数加权平均的理解

我们假设β = 0.9,对\\(v_100\\)进行展开,得到图中表达式,每天温度的权值指数衰减,且和近似为1,实际上可以看作是将原来的数据和一个指数衰减函数对应相乘。注意到\\(0.9^{10} \\approx 0.35 \\approx \\frac {1}{e}\\),即10天以外的温度值的权重很小,因此可以近似看作只关心最近的前十天的平均值,这是一种经验之谈。

应用指数加权平均

Set v_θ = 0
Repeat
{
Get next θ_t
v_θ := βv_θ + (1-β)θ_t
}

虽然不是最准确的平均值,但是节省储存空间。

Bias correction

我们发现按照公式实际计算时候,如当取β = 0.98时,无法绿色线,而是紫色线,它的起始值很低,这是因为\\(v_0 = 0\\),而在起始的几天的权值都很低。

我们进行误差修正,用\\(\\frac{v_t}{1 - \\beta^t}\\)代替,可以帮助进行更好的估计。

(未完待续)

以上是关于吴恩达深度学习专项课程2学习笔记/week2/Optimization Algorithms的主要内容,如果未能解决你的问题,请参考以下文章

吴恩达深度学习专项课程3学习笔记/week1/Setting up ML Application

吴恩达-医学图像人工智能专项课程-第一课第一周1-3节总结

吴恩达-深度学习-课程笔记-3: Python和向量化( Week 2 )

吴恩达-医学图像人工智能专项课程-第一课第一周4-5节总结

吴恩达深度学习课程笔记

吴恩达深度学习课程笔记