【问题标题】:What fast loss convergence indicates on a CNN?CNN 上的快速损失收敛表明了什么?
【发布时间】:2018-05-18 21:18:36
【问题描述】:

我正在两个不同的 DL 库(Caffe e Tensorflow)中训练两个 CNN(AlexNet e GoogLeNet)。这些网络由每个库的开发团队实施(herehere

我将原始 Imagenet 数据集缩减为 1 个类别的 1024 张图像,但设置了 1000 个类别以在网络上进行分类。

所以我训练了 CNN,改变了处理单元 (CPU/GPU) 和批量大小,我观察到损失快速收敛到接近于零(大部分时间在 1 个 epoch 完成之前),如图所示(Alexnet on张量流):

在葡萄牙语中,“Épocas”是时代,“Perda”是损失。键中的数字是指批量大小。

权重衰减和初始学习率与我下载的模型上使用的相同,我只是更改了数据集和批量大小。

为什么我的网络以这种方式融合,而不是像 this way

【问题讨论】:

  • 我认为你的玩具训练问题有点太简单了,你的网络总是得到相同的类,并且很快就知道总是预测,不管输入是什么,都是最优解。尝试在您的数据集中添加包含尽可能多图像的第二类,看看损失行为如何变化(尽管对于 AlexNet 和 GoogleNet 大小的网络而言,2024 年的图像仍然是一个真正小数据集)
  • 总而言之,它看起来像是明显的过拟合。 (Great post here)

标签: batch-file tensorflow deep-learning caffe loss


【解决方案1】:

损失函数的噪声比平时少,并且由于某些原因不会振荡。

主要是因为您只有 1 个类别,因此(为了简化一点)网络在每一步都很容易改进,只需在所有输入上提高该类别的分数即可。

看看下面的(漂亮!)图片:如果您有多个类,一个样本的好一步通常对另一个样本来说是坏的一步(因为它们有不同的类别),这就是损失上升的原因有时在本地。对类别 1 的样本进行网络更新对于所有类别 2 的样本来说都是一个糟糕的步骤,反之亦然,但是这两种类型的更新的总和朝着正确的方向发展(它们弥补了它们的坏部分,只有有用的部分步骤仍然存在)。如果您有 1 个类别,您将直接快速地“始终预测类别 1”,而对于 2 个或更多类别,您将曲折并缓慢收敛到“始终正确预测”。

还有一些其他影响,例如您的数据集相对较小(因此更容易学习),您不经常测试,也许您有一些平滑(您的损失是整体计算的数据集还是批次?通常是批次,参与通常的损失函数图)。

曲线之间的差异也是正常的,但仍然是数据集中只有 1 个类实际存在这一事实的特征。首先注意 CPU 和 GPU 具有相同的行为,因为它们做的事情完全相同,只是速度不同。当您的批量大小大于 1 时,网络中完成的更新是您单独使用样本完成的所有更新的平均值(再次简化一点)。所以通常你会得到更智能的更新(更有可能朝着“总是正确预测”的方向发展),所以你需要更少的更新来达到良好的性能。在这种更快的收敛和更大的批次每次更新使用更多数据的事实之间存在权衡,因此很难事先说哪条曲线应该更快地收敛。人们普遍认为您应该使用大小 > 1 的小批量(但也不要太大)。现在,当数据集中实际只有 1 个类时,所有更新都大致在同一方向“始终预测 1”,因此小批量平均值基本相同,但消耗更多数据以获得大致相同的更新。由于您仍然需要相同数量的这些更新,因此您将在相同数量的步骤后收敛,因此您会为相同的结果消耗更多数据。

【讨论】:

  • 我想我没有在图表中说清楚:图表上的keys中的数字是相对于batch的大小,而不是CPU和GPU的数量,我很抱歉那个(我希望我有 512 个 GPU 哈哈哈)。你写道他学得很快,因为他只有一门课。尽管在实践中只有一个,但我对网络说有 1000 个不同的。这会干扰吗?我意识到,通过只使用一个声明的类来训练网络,损失永远不会改变。
  • 我简直不敢相信我竟然这么愚蠢地认为这是多个 GPU,一定是累了! ;) 我已经更新了我的答案。对不起,它非常冗长,我希望它仍然清楚。当我说 1 类时,我的意思是“数据中实际存在 1 个”。如果你向网络声明你有 1 个类,它会搞砸你的代码的一部分,特别是 softmax,所以你会变得奇怪,不是很有趣,行为。如果其他类仍然没有示例,则说明存在 2 或 1000 个类不会改变网络的行为。
猜你喜欢
  • 1970-01-01
  • 2019-06-03
  • 2018-09-16
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 2017-02-08
  • 2018-02-23
  • 1970-01-01
相关资源
最近更新 更多