优化算法要点

权重初始化

image.png

梯度下降优化:

假设有m个样本,如果m很大的话,处理速度就很慢。比如说,如果是500万或5000万或者更大的一个数,在对整个训练集执行梯度下降法时,你要做的是,你必须处理整个训练集,然后才能进行一步梯度下降法,然后你需要再重新处理500万个训练样本,才能进行下一步梯度下降法。
我们可以将500万个样本分为5000个组,每组1000个样本数据,每次对这1000个样本进行训练,然后执行梯度下降法,循环5000次,就是一个epoch,也就是说一个epoch是指把所有训练数据完整的过一遍。

如果训练集较小,直接使用batch梯度下降法,样本集较小就没必要使用mini-batch梯度下降法,你可以快速处理整个训练集,所以使用batch梯度下降法也很好,这里的少是说小于2000个样本,这样比较适合使用batch梯度下降法。不然,样本数目较大的话,一般的mini-batch大小为64到512,考虑到电脑内存设置和使用的方式,如果mini-batch大小是2的次方,代码会运行地快一些,64就是2的6次方,以此类推,128是2的7次方,256是2的8次方,512是2的9次方。所以我经常把mini-batch大小设成2的次方。在上一个视频里,我的mini-batch大小设为了1000,建议你可以试一下1024,也就是2的10次方。也有mini-batch的大小为1024,不过比较少见,64到512的mini-batch比较常见。

学习率衰减(learn-rate)

所以慢慢减少的本质在于,在学习初期,你能承受较大的步伐,但当开始收敛的时候,小一些的学习率能让你步伐小一些。

学习率衰减.png

decay-rate称为衰减率(这是需要调的超参),epoch-num为代数,为初始学习率
除此之外还有一些其它的衰减算法
这里的超参调整不是我们关注的要点

我们不太可能困在极差的局部最优中,条件是我们在训练较大的神经网络,存在大量参数,并且成本函数被定义在较高的维度空间。

第二点,平稳段是一个问题,这样使得学习十分缓慢,这也是像Momentum或是RMSprop,Adam这样的算法,能够加速学习算法的地方。在这些情况下,更成熟的优化算法,如Adam算法,能够加快速度,尽早往下走出平稳段。

结果证实一些超参数比其它的更为重要,我认为,最为广泛的学习应用是,学习速率α是需要调试的最重要的超参数

除了,还有一些参数需要调试,例如Momentum参数,0.9就是个很好的默认值。我还会调试mini-batch的大小,以确保最优算法运行有效。我还会经常调试隐藏单元,这三个是我觉得其次比较重要的,相对于而言。重要性排第三位的是其他因素,层数有时会产生很大的影响,学习率衰减也是如此。当应用Adam算法时,事实上,我从不调试β1,β2和ε,我总是选定其分别为0.9,0.999和10的-8次方。

Batch归一化操作

之前我们对输入特征X进行了归一化处理,对任何一个隐藏层而言,a也可以进行归一化处理,这里并不是直接对a进行归一化处理,而是对z进行归一化处理,类似于对w和b,减去平均值再除以方差。

在TensorFlow框架中,在dense层之后,激活层之前,加
model.add(tf.keras.layers.BatchNormalization())进行batch归一化操作

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 总是能从奇怪的地方找到难得的正能量 钱还没花完人不能死 可是我也没有时间去花钱 我的梦想都太费钱了 抠门小达人 可...
    小仙鹅爱吃擀面皮阅读 317评论 1 0
  • 读完本文约需47分钟 各位书友,大家好。 我们曾经说过,怎么样读老子的《道德经》。其实老子有两个非常好的学生,真正...
    绿叶zll阅读 597评论 0 0
  • *选择大于努力,因为前者的回报更高 很长一段时间以来,对上面的结论,我都在自我说服,让自己打心底相信它是真的,然后...
    念即起行阅读 167评论 0 0
  • 没精神的话 瞪大眼睛就可以啦 在韩国的时候 身边的人没怎么有会搞关系的人,遇到了这样的人有点瞧不起他们可是回国了 ...
    sooooim阅读 208评论 0 0
  • 听昨日考研动员大会所感 讲课老师之口才 那不一般 开始就让我跟上了他的思维 让我考研之心更加笃定 那是激情澎湃 想...
    心境q阅读 111评论 0 0