栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

数据不平衡和加权交叉熵

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据不平衡和加权交叉熵

请注意,这

weighted_cross_entropy_with_logits
是的加权变体
sigmoid_cross_entropy_with_logits
。S形交叉熵通常用于
二进制 分类。是的,它可以处理多个标签,但是S型交叉熵基本上是对每个标签做出(二进制)决定的-例如,对于人脸识别网,那些(但不是互斥的)标签可能是“
对象戴眼镜吗? ,“ 对象是女性吗? ”等。

在二进制分类中,每个输出通道都对应一个二进制(软)判决。因此,需要在损失的计算中进行加权。

weighted_cross_entropy_with_logits
通过对交叉熵的一项进行加权,可以做到这一点。

在互斥的多标签分类中,我们使用

softmax_cross_entropy_with_logits
,其表现方式有所不同:每个输出通道都对应于一个候选类别的分数。该决定是
,通过比较每个信道的相应输出。

因此,在做出最终决定之前进行加权很简单,通常是通过与权重相乘来在比较分数之前对其进行修改。例如,对于三元分类任务,

# your class weightsclass_weights = tf.constant([[1.0, 2.0, 3.0]])# deduce weights for batch samples based on their true labelweights = tf.reduce_sum(class_weights * onehot_labels, axis=1)# compute your (unweighted) softmax cross entropy lossunweighted_losses = tf.nn.softmax_cross_entropy_with_logits(onehot_labels, logits)# apply the weights, relying on broadcasting of the multiplicationweighted_losses = unweighted_losses * weights# reduce the result to get your final lossloss = tf.reduce_mean(weighted_losses)

您也可以依靠它

tf.losses.softmax_cross_entropy
来完成最后三个步骤。

在您的情况下,如果您需要解决数据不平衡的问题,那么班级权数的确可能与火车数据中它们的频率成反比。规范化它们,使它们加起来等于一个或多个类,这也是有意义的。

请注意,在上文中,我们根据样本的真实标签对损失进行了处罚。我们还可以通过简单地定义基于 估计 标签的损失

weights = class_weights

由于广播魔术,其余代码无需更改。

在一般情况下,您可能希望权重取决于所犯错误的类型。换句话说,对于每对标签

X
Y
X
当真实标签为时,您可以选择如何惩罚选择标签
Y
。您最终得到一个完整的先验权重矩阵,这将导致
weights
以上结果为完整
(num_samples,num_classes)
张量。这超出了您想要的范围,但是了解上面代码中仅需要更改权重张量的定义可能会很有用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369578.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号