- 什么是batch
- small batch 和 large batch 的比较 : large batch 更快,small batch 在训练集和测试集上效果效果更好
- 动量的意义和作用: 类似于物理上多了一点惯性,防止困在鞍点。 动量是之前所有梯度的加权和。
1. batch 是什么
没一轮epoch 都会分batch , 每次batch 都不一样— shuffle
2. 为什么training 时要batch
batch 给training 带来了什么帮助?
如 batch = 20 和 batch_size =1
前者看完20个资料后更新参数
后者每看完一笔参数后,就更新参数。 只看一笔参数就更新参数的话,noise 更多,参数更新更加曲曲折折。
针对这个看起来:
- 前者冷却时间长,准
- 后者蓄力时间段,不准
cpu :
gpu 上并行计算:
Small Batch vs. Large Batch
然而,当考虑到 并行运行时, larger batch 不一定运行的时间更长.
当使用gpu 并行计算时,时间可能会变短。
但是,batch 也不能非常大, 太大的话 ,计算时间会增加很多
- batch_size 和 epoch 运行时间比较
对正确率的影响
问题: batch_size 越大,正确率越低在这里插入图片描述
-
small batch 正确率更高
使用small batch 时,训练更不容易陷入局部最优。 -
testing 时 small_batch 的结果更好
总结
Momentum 动量
从物理角度,有动量的话,不会停留在鞍点处
一般的梯度
往梯度反方向前进
Gradient Descent+ Momemt
m 是过去所有 gradient 的加权总和
momvent 比纯粹gd 多往前走一点