吴恩达Deeplearning.ai 知识点梳理(course 2,week 2)

本周内容主要讲的是加速训练优化。

Mini-Batch

Mini-Batch主要是为了解决训练神经网络时如下问题:

  • 一方面,神经网络需要大量的数据,计算量就比较大。如果每次计算数百万个样本,然后得到一个梯度,然后下降一步,那么整个过程就会很慢。
  • 另一方面,深度学习需要大量尝试,所以如果每做一次训练,速度很慢,那么调参过程就很慢了。

Mini-Batch如何做呢?

  1. 例如数据集有5,000,000个样本,将数据集分成M个子集,每个子集有N个sample,例如5000个子集,每个子集有1000个样本。
  2. 直接对这5000个子集循环做Forward Propagation和Backward Propagation,然后更新Wb 。相当于每次用1000个样本做训练。

Mini-Batch的特性

Mini-Batch Feature

  如上图所示,对于整个Batch Gradient Descent,Cost Function会一直下降。而对于Mini-Batch GD来说,则是会有这种震动。这种震动中,不好理解的是为什么cost function会往上跑。Dr Ng的解释是对于训练来说,有的batch比较easy,有的batch比较hard。但是我的观点是,cost function其实是数据的函数,那么也就是说,不同的数据,cost function并不一样,虽说整体数据分布是一样的,但是毕竟还是有细微的差别。那么用上一组batch得出来的梯度方向更新后的参数,带入下一组batch里,很可能cost function会变大,因为此cost function非彼cost function。举例来说,比方说cost function是y=f(x)=|a|x2 ,这个a是要优化的参数,现在x 数据是5 ,然后a3y 就是75 。迭代了一次,a 变成2y50 。现在换了x ,变成了7 ,结果y=2×72=98 ,结果cost function不就大了么。但是由于数据整体分布是一致的,所以整体趋势是向下的。如果我们画出来cost function的等高线图就会发现,如果是Batch GD,整个路径就是很平稳的,SGD的抖动会很大而且最终会在optima附近一直抖动,MiniBatch就好很多了,但是也会抖动。

  然后是MiniBatch大小的选择,一般是128、256、512这种2的幂次,同时也不要大于内存或者显存。

Gradient Descent with Momentum

  动量梯度下降会比一般的GD要快。主要是如果我们采用比较大的learning_rate很可能会出现如下的震荡情况。这是因为我们其实本来是想在水平方向上大一点learning_rate,而数值方向上小一点learning_rate,但是没法做到对每一个维度都配置一个learning_rate。那么如果我们将每一次的dW/db进行一个指数滑动平均得到最终的结果,就可以将震荡平均掉,而相同方向则得到放大。如下图所示。
这里写图片描述

RMS Prop

  RMS Prop是对梯度采用指数平均的平方平均数做了一个归一化,这样就相当于各个维度上的梯度大小在一个尺度上,这样我们即使使用一个比较大的learning_rate,也不会出现太过分的震荡。
RMS Prop

Adam

   Adaptive Moment Estimation是一个将RMS Prop和Momentum的结合,如下图所示:
Adam
其实就是使用了Momentum的指数平均的dw/db,然后再将其用RMSProp的方式做归一化。

  在深度学习的发展上,曾提出来很多方法,但是都是只能在某些问题上管用,而RMSProp和Adam是在很多地方都管用的。

Learning_rate decay

  就是随着迭代次数的增加,越来越接近极值点的时候,就采用更小的learning_rate。有如下几种:
Learning_rate decay
反比例,指数衰减,平方根反比例,离散阶梯衰减等。不过一般learning_rate都是先fix一个,等到最后在调的。

Local optima

  在低维空间里,确实容易出现人们直觉的那样的local optima,但是对于深度学习而言,更多的是鞍点,因为要求在一个点上所有维度都是convex的这事的概率就很低,例如一个20000个参数的cost function,出现一个local optima的概率是220000 ,所以问题不在local optima上,问题在于plateaus会减慢学习(优化的速率)
Problem of Plateuas
所以使用比较复杂的优化算法,比如Adam,就可以帮助改善这个问题。
  目前其实人们对高维空间的认识还在研究中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章