在训练过程中,神经网络通常需要一段时间来“踢”吗?


10

我正在尝试使用反向传播训练深度神经网络进行分类。具体来说,我使用Tensor Flow库将卷积神经网络用于图像分类。在训练过程中,我遇到一些奇怪的行为,我只是想知道这是否很典型,或者我做错了什么。

因此,我的卷积神经网络有8层(5层卷积,3层完全连接)。所有权重和偏差均以较小的随机数初始化。然后,我设置步长,并使用Tensor Flow的Adam Optimizer进行小批量训练。

我正在谈论的奇怪行为是,对于我的训练数据中的前10个循环,训练损失通常不会减少。权重正在更新,但训练损失大致保持在大约相同的值,有时在小批之间增加或减少。它会保持这种状态一段时间,并且我总是给人以损失永远不会减少的印象。

然后,突然之间,训练损失急剧减少。例如,在训练数据的大约10个循环内,训练精度从大约20%变为大约80%。从那时起,一切最终都很好地融合在一起。每当我从头开始运行训练管道时,都会发生相同的事情,下面的图表说明了一个示例运行。

在此处输入图片说明

因此,我想知道的是,这是通过训练深度神经网络进行的正常行为,从而需要一段时间才能“踢进”。还是我做错了某件事导致了此延迟?

非常感谢!


我想我聚会晚了一点。但是也许我仍然可以为对话增加一些价值。太...对我来说,这听起来像是S型激活功能。由于乙状结肠的导数对于非常小的值或非常大的值都是很小的,因此对于“饱和神经元”而言训练可能会很慢。不幸的是,根据您所提供的描述,我无法准确判断您的CNN情况。
尼玛·穆萨维

Answers:


7

该算法花了一段时间才能“踢进”这一事实并不特别令人惊讶。

通常,在神经网络后面要优化的目标函数是高度多模式的。因此,除非您为问题设置了一些聪明的初始值,否则没有理由相信您将开始陡峭的下降。这样,您的优化算法几乎会随机徘徊,直到找到一个相当陡峭的山谷开始下降。一旦发现了这种情况,您应该期望大多数基于梯度的算法立即开始缩小到最接近的特定模式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.