首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么MNIST任务的随机梯度下降比批GD差得多?

为什么MNIST任务的随机梯度下降比批GD差得多?
EN

Data Science用户
提问于 2017-02-10 14:28:13
回答 1查看 1.8K关注 0票数 4

这里是Tensorflow教程中的代码:一个多层感知器的实现实例

当批数= 100时,准确度为94.59%。

如果我将批次大小设为1,那么训练需要十倍的时间,但准确率仅为9%。

我在没有运气的情况下测试了不同的学习率。SGD的性能对于小批量来说是很糟糕的。我们可以预期SGD的性能会更低,但不会少十倍!性能损失的原因是什么?

EN

回答 1

Data Science用户

回答已采纳

发布于 2017-02-10 15:24:25

为什么对于MNIST任务,随机梯度下降比批GD差得多?

这并不是天生的更糟。相反,只需自行更改一个参数,就可以将示例调整到“调优”到工作的地方以外,因为它是一个简化的示例,用于学习,而且它缺少大多数NNs用户认为标准的一些特性。

1的批次大小很好。事实上,尽管处理相同数量的历元需要花费更长的时间,但每个时期实际上都有更多的权重更新。您得到100倍的重量更新,虽然每一个都有更多的噪音比批次大小为100。正是这些额外的权重更新,加上运行解释Python代码的额外时间是批次的100倍,这就增加了大量的时间。

精确性的问题是示例网络没有过度拟合的保护。通过运行更多的重量更新,训练开始学习精确的图像数据来匹配每一个数字,以获得最好的分数。通过专门这样做,它学习了一些规则,这些规则在训练数据上非常有效,但却非常糟糕地推广到了测试集中的新数据。

试一批大小为1,周期数为3(我试过,准确率为94.32%)。基本上,这是利用早期停止作为一种形式的正规化。这并不是最好的规范形式,但尝试起来很快,而且通常是有效的--问题是如何判断何时停止,因此您需要在任何潜在的停止点度量测试集(通常独立于最终测试集,称为交叉验证集),并保存到目前为止最好的模型。这显然需要调整示例代码。

在最初的示例中,可能是精心选择了15个时期,以避免将批大小为100的问题过度拟合,但一旦您更改批处理大小,而没有任何其他形式的规范,网络很可能会过度适应。一般来说,神经网络倾向于过度适应,你必须花费时间和精力来理解和防范这一点。

查看一下TensorFlow中的正则化的其他选项。对于这类问题,强烈推荐使用辍学 (在链接中解释较低的页面),这并不是纯粹的正则化,而是致力于改进许多神经网络问题的泛化。

票数 7
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/16881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档