使用不平衡数据集执行多类分类时设置 BATCH SIZE

数据挖掘 机器学习 深度学习 训练 优化
2022-03-06 16:07:33

我有一个关于BATCH_SIZE数据不平衡的多类分类任务的问题。我有 5 个类和一个包含5000示例的小数据集。我看过G. Hinton关于深度学习的讲座,他指出理想情况下每个 mini batch 都应该是平衡的(这意味着每个 batch 应该包含每个类的大致相同数量的数据点)。这可以通过改组数据然后从中抽取随机批次来近似。

但是,在我看来,这只有在我们有一些大而平衡的数据集时才有效。就我而言,我认为设置BATCH_SIZE>=16它可能会对学习产生不良影响,并且网络将无法泛化。SGD在处理每个样本(即在线培训)之后使用和更新权重会更好吗?PS记住我正在使用标签平滑(即类加权损失)

1个回答

有两种常见的选择:

  1. 每批内分层抽样。无论批次大小如何,请确保每个组的代表均等。这种方法的缺点是它会显着减慢训练速度。

  2. 以增加的批量大小(比如 32-256)进行训练,并且在各个时期的过程中,随机波动将“平均”出来。