CNN SGD损耗从较小的值跳到较大的值

问题描述 投票:0回答:1

我正在训练LeNet5样式的CNN,损失无法减少。相反,我得到了一张奇怪的图片:首先,在线SGD的成本下降了一点。然后它不断地从几乎零跳到8-9。有人从这张图中对潜在原因有任何直觉吗?

enter image description here

machine-learning conv-neural-network gradient backpropagation loss-function
1个回答
0
投票

我相信您尝试了不同的优化程序,但请尝试使用初始学习率较低的原始SGD。最有可能的是,优化器从一开始就获得了很高的动力,并继续沿错误的方向前进。]

model.compile(loss='categorical_crossentropy', optimizer='SGD', metrics=['accuracy'])

[看起来,当使用原始SGD时,您将选择损失函数w.r.t.参数(增加功能值的方向)并向相反方向一点点(以使损失函数最小化)。在SGD的基础上,使用一些想法(动量,学习率衰减等)构建了不同的优化器,以加快收敛速度​​。如果您看一下动量是如何工作的,就会明白问题出在哪里。一开始,优化器可能会在相同方向(很不错)上运行很长时间,这会导致很大的动力。然后,梯度的相反方向可能与动量不匹配,从而导致优化器“爬山”(获得更高的损耗值)有时会出现,但最终可能会解决问题。(我鼓励您看看动力是如何工作的)https://en.wikipedia.org/wiki/Stochastic_gradient_descent#Momentum

© www.soinside.com 2019 - 2024. All rights reserved.