来自deci.ai的专家提了一些不入俗套的训练模型的建议,david觉得不错,分享给大家,如果你每天还在机械化地调整模型超参数,不妨看看下面几个建议:
1) 使用指数滑动平均EMA(Exponential Moving Average).
当模型容易陷入局部最优解时,这种方法比较有效。
EMA 是一种提高模型收敛稳定性,并通过防止收敛到局部最优来达到更好的整体解的方法。— Shai Rozenberg
它是这样工作的:
- 令 W_m 为执行优化步骤后的当前权重集
- 在下一个优化步骤之前复制这些权重
- 取刚刚复制的权重和上一步的权重的加权平均值
- 更新当前步骤,加权平均
每个人都喜欢免费额外的性能提高。
加权平均可以达到这一点。当然,训练N个模型再平均他们的权重开销比较大。另一种更节省成本的方式是,把比较好的那些epoch的模型拿出来做平均,这样只要训练一次,又能达到意想不到的效果。
3) batch积累
如果有一些模型训练开销很大,而且需要的GPU显存又很多,你不得不降低batch size达到训练的目的。然而,和原来训练代码配套的超参数似乎就要重新调整了? 不!batch积累方法告诉你还有另外的方式。
这是它的工作原理……
- 对模型执行几个连续的前向传播
- 累积梯度
- 每隔几批反向传播一次。
4) 使用精确的BatchNorm
BatchNorm 是