【问题标题】:How I can know which type of gradient descent to use?我怎么知道要使用哪种类型的梯度下降?
【发布时间】:2023-03-03 01:19:01
【问题描述】:

我了解梯度下降的三种类型,但我的问题是我不知道我必须在模型上使用哪种类型。我读了很多,但我没有得到它。

没有代码,只是个问题。

【问题讨论】:

  • 你读了什么?你理解到什么程度?你不明白什么?或者至少你想用梯度下降解决什么问题?
  • “我不明白”不是 Stack Overflow 类型的问题。使用的正确方法取决于模型和输入数据——并且,在最基本的层面上,退化为在你的范式中什么最有效的经验问题。由于您根本没有描述您的情况,所以这个问题本质上是一个广泛辅导的请求 - SO 的主题。

标签: machine-learning neural-network computer-vision artificial-intelligence conv-neural-network


【解决方案1】:

梯度下降的类型:

  • 批量梯度下降:它为梯度下降的每次迭代处理所有训练示例。但是,当训练示例的数量很大并且通常不优选时,这种方法计算量很大。
  • 随机梯度下降:它在每次迭代中处理一个训练示例。在这里,每次迭代后都会更新参数。这种方法比批量梯度下降法更快。但是,当训练示例数量很大时,通过增加迭代次数会增加系统开销。
  • Mini Batch 梯度下降:Mini Batch 算法是最受青睐且使用最广泛的算法,它使用一批m 训练示例生成精确且更快的结果。在小批量算法中,而不是使用完整的数据集,在每次迭代中,我们使用一组 m 训练示例,称为 batch 来计算成本函数的梯度。常见的 mini-batch 大小介于 50256 之间,但可能因不同应用而异。

除了梯度下降变体之外,还有各种其他优化算法,如 adam、rmsprop 等。

我们应该使用哪个优化器?

问题是为我们的神经网络模型选择最佳优化器,以便快速收敛并正确学习并调整内部参数以最小化损失函数。

Adam 在实践中表现出色,优于其他自适应技术。

如果您的输入数据是稀疏的,那么 SGDNAGmomentum 之类的方法效果不佳且性能不佳。对于稀疏数据集,应该使用一种自适应学习率方法。另一个好处是我们不需要调整学习率,但使用默认值可能会获得最佳结果。

如果想要快速收敛并训练深度神经网络模型或高度复杂的神经网络,则应使用Adam 或任何其他自适应学习率技术,因为它们优于所有其他优化算法。

我希望这可以帮助您决定将哪一个用于您的模型。

【讨论】:

  • 我不完全同意更大的批量大小 = 更高的准确性以获得更多的计算时间。从我对 CNN 的小知识来看,批量大小和学习率是非常重要的超参数(优化器也是如此)。 medium.com/mini-distill/…
  • 仔细阅读它,它只字未提准确性,而是对看不见的数据进行概括。看看这个以获得更好的比较:stats.stackexchange.com/questions/316464/…。顺便说一下,上述准确性是基于训练数据的。
  • 是的,更多的事情准确性不仅取决于批量大小。还有其他超参数。我删除了上面的图表,因为它可能会让很多人感到困惑。但是,是的,我应该提到批次 SD 在更少的时期内比迷你批次提供更高的准确度,因为模型已经看到了所有训练样本,而迷你批次 SD 不是这种情况,但执行起来计算效率很低。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
相关资源
最近更新 更多