machine-learning - 是什么导致了交叉熵损失的波动?
问题描述
我正在使用Soft Max Algorithm
数据CIFAR10
集,并且对我的交叉熵损失图有一些疑问。我设法通过该算法获得了 40% 的准确率,因此准确率正在提高。令人困惑的部分是解释交叉熵图的结果,因为它与我在网上看到的类似问题的任何其他图都不相似。想知道是否有人可以对如何解释以下图表提供一些见解。ony
是损失,on x 是批号。这两个图适用于批量大小 1 和 100。
解决方案
造成这些波动的原因:
一个(迷你)批次只是 CIFAR-10 的一小部分。有时你选择简单的例子,有时你选择困难的例子。或者,在模型调整到上一批之后,看起来容易的事情可能只是困难的。毕竟,它被称为随机梯度下降。参见例如这里的讨论。
解释这些图:
批量大小 100:它显然在改进 :-) 我建议你取整个批次的交叉熵的平均值,而不是对它们求和。
批量大小 1:前约 40k 步似乎有一些改进。那么它可能只是振荡。您需要安排学习率。
其他相关点:
Softmax 不是一种算法,而是一个函数,它将任意值的向量转换为一个非负且总和为 1 的向量,因此可以解释为概率。
那些情节非常笨拙。尝试使用小点大小的散点图。
绘制精度和交叉熵(在不同的尺度上,具有较粗的时间分辨率)以了解它们的关系。
推荐阅读
- arrays - 如何将这些单独的标签压缩为自定义 UICollectionView 单元格中的标签数组?
- asp.net-core - 角色/用户在 ASP.Net.Core.Identity 中可以拥有多少个声明?
- linux - linux中的“-Dprefix”有什么作用?
- python - 列表的居中平均值
- python - 如何尝试创建日期对象并将无效参数设置为 1?
- javascript - 下划线符号更改变量的可访问性
- python - Zabbix Action - 如何在自定义脚本中使用默认字段
- azure - 有没有办法以编程方式启用 Azure 的 management-api 内置 rest API?
- python - ValueError:不一致的形状:锯(1152、10、1、10、16)但预期(1152、10、1、16)
- regex - \b 无法使用 sed 命令按预期工作