多层神经网络可以训练多少次更新?

人工智能 深度神经网络 分布式计算
2021-10-21 07:45:13

梯度下降的单次迭代可以在许多工作节点上并行化。我们简单地将训练集拆分到工作节点上,将参数传递给每个工作人员,每个工作人员计算其训练集子集的梯度​​,然后将其传回主节点进行平均。通过一些努力,我们甚至可以使用模型并行性。

然而,随机梯度下降本质上是一个串行过程。每次更新都必须按顺序执行。每次迭代,我们必须执行广播并收集所有参数。这对性能不利。最终,更新次数是深度模型训练速度的限制因素。

为什么我们必须执行许多更新?通过多少次更新,我们可以达到良好的准确性?

哪些因素会影响达到某种准确性所需的最小更新次数?

1个回答

Don't Decay the Learning Rate, Increas the Batch Size中,Smith 等人。在 ImageNet 上将 ResNet-50 训练到 76.1%,只需要 2500 次更新。有没有人做的少?

神经网络过度参数化对梯度混淆和随机梯度下降的影响 Sankararaman 等人。提出了减缓收敛的梯度混淆的概念,并表明深度会增加梯度混淆,而对宽度和跳跃连接的过度参数化会减少梯度混淆。

Massively Distributed SGD: ImageNet/ResNet-50 Training in a Flash中,Mikami 等人。通过一些更新将 ImageNet 上的 ResNet-50 训练到 75.29%,但我无法计算出他们必须使用多少更新。

总结一下:

  • 较大的小批量有帮助,但收益递减并导致其他问题。
  • 更深的模型往往需要更多的更新。
  • 更宽的层需要更少的更新。
  • 跳过连接、标签平滑和批量规范可能会有所帮助。
  • 到目前为止,我在 ImageNet/ResNet-50 上发现的最好的 >75% 是 2500 次更新。