当目标标签只有0和1时,如何对深度神经网络进行监督训练?

2024-06-01 07:00:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用标记数据训练一个深层神经网络(DNN)。标签的编码方式使其仅包含值01。编码标签的形状为5 x 5 x 232。标签中约95% 个值为0,其余值为1。目前,我正在使用binary_crossentroy损失函数来训练网络

在这种情况下,培训DNN的最佳技术是什么?是binary_crossentroy的选择 在这种情况下,损失函数是否合适?任何改进模型性能的建议


Tags: 数据函数标记编码情况神经网络标签深层
3条回答
  1. binary_crossentroy因为损失是可以接受的
  2. 不要使用准确性作为度量标准,因为模型只会以标签0的形式预测每一件事,并且仍然会获得95%的准确性。改为使用F1分数(或精度或召回率)
  3. 使用加权损失:即,如果与0级相比1级错误,则对1级进行重罚
  4. 除了类权重,您还可以使用过采样等方法从少数类中提取权重。(如SMOTE技术)

如何计算班级权重

  • 您可以使用sklearn.utils.class_weight计算标签的重量。检查此answer

您可以使用其他两种替代损失函数代替二进制交叉熵

  1. 铰链损耗

对于二元分类问题,交叉熵的一种替代方法是铰链损失函数,该函数主要用于支持向量机(SVM)模型。 它用于目标值在集合{-1,1}中的二进制分类

  1. 平方铰链损耗

有关损失函数的更多详细信息,请参见示例。click here

希望有帮助,学习愉快

您可以尝试MSE损失。如果你想坚持二进制交叉熵(用于二进制分类),考虑使用标签平滑。

相关问题 更多 >