优化算法能够帮助你快速训练模型。

        mini-batch梯度下降法:把训练集分割(split)为小一点的子训练集,这些子集被叫做mini-batch。

batch梯度下降法指的是:同时处理整个训练集,只有处理完整个训练集才更新一次权值和偏置。并且预期每次迭代的成本都会下降,如果成本函数(cost function)J是迭代次数的一个函数,它应该会随着每次迭代而减少,如果J在某次迭代中增加了,那肯定在某处出现了问题。

mini-batch梯度下降法指的是:每次同时处理的是单个mini-batch,而不是同时处理整个训练集,每处理完单个子集时都会更新一次权值和偏置。但是与batch梯度下降法不同的是,如果成本函数(cost function)J是迭代次数的一个函数,则并不是每次迭代J都是下降的,它的趋势是向下,但是也带有更多的噪声;在mini-batch梯度下降法中,没有每次迭代J都是下降的也是可以的,但是走势应该是向下的,如下图:

选择mini-batch的大小:假设m为整个训练集的大小。一种极端情况下,如果mini-batch的大小为m,其实就是batch梯度下降法。另一种极端情况下,如果mini-batch的大小为1,则叫做随机梯度下降法(stochastic gradient descent),每个样本都是一个独立的mini-batch。随机梯度下降法永远不会收敛,而是会一直在最小值附近波动,但是并不会在达到最下值时停留下来。实际中,mini-batch的大小应该在1和m之间选择,1太小而m太大,如下图:

如果训练集较少,直接使用batch梯度下降法,样本集较少就没必要使用mini-batch梯度下降法。一般说的少是指样本集总数小于2000.如果样本集数目较大的话,一般的mini-batch大小在64至512之间,如64、128、256、512。考虑到电脑内存布局和访问的方式,有时mini-batch的大小为2的n次方,code会运行的较快一些。

        指数加权平均(exponentially weighted averages):关键公式vt=βvt-1+(1-β)θt,如下图,以计算一年中第t天的平均温度为例,图中的v100就是一年中第100天计算的数据。有偏差修正(biascorrection)的指数加权平均。

偏差修正(bias correction):可以让平均数计算更加准确。如果你关心初始时期的偏差,在刚开始计算指数加权平均数的时候,偏差修正能帮助你在早期获得更好的估计。即用vt/(1-βt)= (βvt-1+(1-β)θt)/ (1-βt)替代之前vt=βvt-1+(1-β)θt,你会发现,随着t的增加,β的t次方将接近于0,所以当t很大的时候,偏差修正几乎没有作用,如下图:

        动量梯度下降法(gradient descent with momentum):运行速度几乎总是快于标准的梯度下降算法。基本的想法就是计算梯度的指数加权平均并利用该梯度更新你的权值。在mini-batch或batch梯度下降法中,第t次迭代过程中,你会计算导数dw,db,如下图:

这样就可以减缓梯度下降的幅度。不像梯度下降法,每一步都独立于之前的步骤。超参β控制着指数加权平均(exponentially weighted average),β最常用的值是0.9。实际中,在使用梯度下降法或momentum时并不强制(bother)使用偏差修正,因为10次迭代以后,你的移动平移(your moving average)已经过了初始阶段不再是一个具有偏差的预测。vdw的初始值为0,vdw和w具有相同的维数。vdb的初始值也为0和b具有相同的维数。有时会使用vdw=βvdw+dw替代vdw=βvdw+(1-β)dw,一般不这么做。

        RMSprop(root mean square prop,均方根):也可以加速梯度下降,如下图。在第t次迭代中,RMSprop会照常计算dw,db,保留指数加权平均,使用sdw替代vdw, sdw=βsdw+(1-β)dw2,这样做能够保留导数平方的加权平均数(an exponentially weighted average of thesquares of the derivatives)。sdb类似。接着,RMSprop会这样更新参数值:w=w-αdw/(square root(sdw)),参数b类似。RMSprop和momentum一样,可以消除梯度下降中的摆动,并允许你使用一个更大的学习率α。

        Adam(Adaptive Moment Estimation):将momentum和RMSprop结合在一起,如下图。一般使用Adam时,要计算偏差修正。Adam能有效适用于不同的神经网络。在使用Adam时,人们经常赋值超参数β1为0.9, β2为0.999,ε为10-8,经常使用这些缺省值即可,然后尝试不同的α值,看看哪个效果更好。

        Learning rate decay(学习率衰减):加快学习算法的一个办法就是随时间慢慢减少学习率,称之为学习率衰减,公式如下图。如果使用学习率衰减,需要调的超参包括:α0即初始学习率;衰减率(decay  rate);k等。有时人们还会手动衰减,一般只有模型数量小的时候有用。

        局部最优的问题:创建一个神经网络,通常梯度为零的点,并不是局部最优点,实际上成本函数J的零梯度点通常是鞍点,如下图。一个具有高维空间的函数,如果梯度为0,那么在每个方向它可能是凸函数,也可能是凹函数,在高维度空间更有可能碰到鞍点而不会碰到局部最优。

GitHub: https://github.com/fengbingchun/NN_Test

吴恩达老师深度学习视频课笔记:优化算法相关推荐

  1. 吴恩达老师深度学习视频课笔记:逻辑回归公式推导及C++实现

    逻辑回归(Logistic Regression)是一个二分分类算法.逻辑回归的目标是最小化其预测与训练数据之间的误差.为了训练逻辑回归模型中的参数w和b,需要定义一个成本函数(cost functi ...

  2. 吴恩达老师深度学习视频课笔记:总结

    吴恩达老师深度学习视频课网址为:https://mooc.study.163.com/smartSpec/detail/1001319001.htm/?utm_source=weibo.com& ...

  3. 吴恩达老师深度学习视频课笔记:深度卷积网络

            Why look at case studies?:过去几年,计算机视觉研究中的大量研究都集中在如何把卷积层.池化层以及全连接层这些基本构件组合起来形成有效的卷积神经网络.找感觉最好的 ...

  4. 吴恩达老师深度学习视频课笔记:卷积神经网络

            计算机视觉:包括图像分类(image classification).目标检测(object detection).风格迁移(neural style transfer)等等.     ...

  5. 吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(2)

            进行误差分析:可进行人工统计或可同时并行评估几个想法.进行误差分析时,你应该找一组错误例子,可能在你的开发集里或者在你的测试集里,观察错误标记的例子,看看假阳性(false posit ...

  6. 吴恩达老师深度学习视频课笔记:超参数调试、Batch正则化和程序框架

            Tuning process(调试处理):神经网络的调整会涉及到许多不同超参数的设置.需要调试的重要超参数一般包括:学习率.momentum.mini-batch size.隐藏单元( ...

  7. 吴恩达老师深度学习视频课笔记:深度学习的实用层面

            训练.验证和测试数据集(training.development and test sets):训练神经网络时,我们需要作出很多决策,如神经网络分多少层(layers).每层含有多少个 ...

  8. 吴恩达老师深度学习视频课笔记:多隐含层神经网络公式推导(二分类)

            多隐含层神经网络的推导步骤非常类似于单隐含层神经网络的步骤,只不过是多重复几遍. 关于单隐含层神经网络公式的推导可以参考: http://blog.csdn.net/fengbingc ...

  9. 吴恩达老师深度学习视频课笔记:单隐含层神经网络公式推导及C++实现(二分类)

    关于逻辑回归的公式推导和实现可以参考: http://blog.csdn.net/fengbingchun/article/details/79346691 下面是在逻辑回归的基础上,对单隐含层的神经 ...

  10. 吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)

    机器学习策略(machine learning strategy):分析机器学习问题的方法.     正交化(orthogonalization):要让一个监督机器学习系统很好的工作,一般要确保四件事 ...

最新文章

  1. 将客户端移植到Linux和MAC OS
  2. hive能加快MySQL查询速度吗_建立索引可以加快表中数据查询的速度吗
  3. jQuery的筛选选择器
  4. SpringCloud和SprigBoot之间的依赖关系怎么看
  5. [BZOJ1095][ZJOI2007]捉迷藏 Query on a tree IV(树链剖分)
  6. mysql 自连接 树形_自连接表的相关问题(树形结构)
  7. ctc与临时限速服务器信息,基于CTC站场图图形元素设置高速铁路临时限速的方法...
  8. C++ 文字常量与常变量
  9. 从校园情侣到教授夫妇,最好的科研爱情是一起进步
  10. 2.Magento请求分发与控制器(MVC)
  11. [记录] web icon 字体
  12. ndows 内存诊断工具,Windows自带内存诊断工具来帮你检测电脑内存的稳定
  13. 视觉培训4 完成手写识别项目
  14. 使用XMAPP启动MySQL出现Error MySQL shutdown unexpectedly 的解决办法
  15. 抖音书单号怎么取名,抖音书单号大概多久能起来
  16. 深度剖析mongos连接池
  17. 【CodeForces 1077E --- Thematic Contests】思维+贪心
  18. Jboot 跨域请求
  19. matplotlib之pyplot模块——获取或设置坐标轴刻度及标签(xticks、yticks)
  20. 1月第1周榜单丨B站UP主排行榜(飞瓜数据B站)发布!

热门文章

  1. 使用Python,OpenCV进行形态学操作
  2. centos7.4.3 部署python-pcl亲测可用(采坑记)
  3. Pycharm报错合集:在pycharm运行anaconda配置的Pytorch环境报错(Environment location diretory is not empty )
  4. OpenCV(项目)车牌识别2 -- 车牌字符分割(直方图)
  5. C++中的vector的用法
  6. CornerNet:实现demo、可视化heatmap、测试各类别精度
  7. 数据库jdbc property文件配置信息片段
  8. 【通用CSS模板】移动端H5页面统一样式.css
  9. 修改IDEA项目的JDK应用路径
  10. CDN和Web Cache领域相关的经典书籍推荐