Tensorflow 衡量真正的积极因素与真正的消极因素

Tensorflow 衡量真正的积极因素与真正的消极因素,tensorflow,loss-function,Tensorflow,Loss Function,这在keras/tensorflow加权二元决策中用作损失函数 它对误报和漏报进行加权: 目标*-日志(sigmoid(logits))+ (1-目标)*-日志(1-乙状结肠(logits)) 参数pos_weight用作正目标的乘数: 目标*-对数(S形(对数))*位置重量+ (1-目标)*-日志(1-乙状结肠(logits)) 如果真的积极因素的损失/回报不应具有相等的权重,那么有人对如何将真的积极因素与真的消极因素进行加权有什么建议吗?首先,请注意,对于交叉熵损失,每个示例都会受到一些(可

这在keras/tensorflow加权二元决策中用作损失函数

它对误报和漏报进行加权:

目标*-日志(sigmoid(logits))+ (1-目标)*-日志(1-乙状结肠(logits))

参数pos_weight用作正目标的乘数:

目标*-对数(S形(对数))*位置重量+ (1-目标)*-日志(1-乙状结肠(logits))


如果真的积极因素的损失/回报不应具有相等的权重,那么有人对如何将真的积极因素与真的消极因素进行加权有什么建议吗?

首先,请注意,对于交叉熵损失,每个示例都会受到一些(可能非常小)的惩罚(即使正确分类)。例如,如果正确的类是1,我们的logit是10,那么惩罚将是

-log(sigmoid(10)) = 4*1e-5
这种损失(非常轻微)促使网络产生更高的logit,使其sigmoid更接近1。类似地,对于负类,即使logit为-10,损失也会使它变得更负

这通常是好的,因为这类条款的损失很小。如果您希望您的网络实际实现零损耗,可以使用
label\u平滑
。这可能接近于“奖励”网络,就像你在最小化损失的经典设置中所能得到的一样(你可以通过在损失中添加一些负数来“奖励”网络。但这不会改变梯度和训练行为)

话虽如此,您可以针对不同的情况(tp、tn、fp、fn)对网络进行不同的处罚,类似于中所述。(看起来那里的实现实际上是不正确的。您希望使用
权重张量的相应元素来权重单个
日志(sigmoid(…)
项,而不是
交叉熵的最终输出


使用此方案,您可能希望惩罚非常错误的答案,而不是几乎正确的答案。然而,请注意,由于
log(sigmoid(…)
的形状,这种情况已经在一定程度上发生了。首先,请注意,对于交叉熵损失,每个示例都有一些(可能非常小的)损失(即使正确分类)。例如,如果正确的类是1,我们的logit是10,那么惩罚将是

-log(sigmoid(10)) = 4*1e-5
这种损失(非常轻微)促使网络产生更高的logit,使其sigmoid更接近1。类似地,对于负类,即使logit为-10,损失也会使它变得更负

这通常是好的,因为这类条款的损失很小。如果您希望您的网络实际实现零损耗,可以使用
label\u平滑
。这可能接近于“奖励”网络,就像你在最小化损失的经典设置中所能得到的一样(你可以通过在损失中添加一些负数来“奖励”网络。但这不会改变梯度和训练行为)

话虽如此,您可以针对不同的情况(tp、tn、fp、fn)对网络进行不同的处罚,类似于中所述。(看起来那里的实现实际上是不正确的。您希望使用
权重张量的相应元素来权重单个
日志(sigmoid(…)
项,而不是
交叉熵的最终输出


使用此方案,您可能希望惩罚非常错误的答案,而不是几乎正确的答案。然而,请注意,由于
log(sigmoid(…)

的形状,这种情况已经在一定程度上发生了。我在陈述明显的,但真正的积极/消极因素通常不包括在损失中。网络对它们进行了正确的分类,我们通常不会因为这样做而惩罚它。你想通过“加权”真阳性和真阴性来实现什么?我的问题是,假阴性有机会成本,需要以某种方式建模到交叉熵损失函数中。机会成本等于我给予真正积极的回报(权重),即+10。误报的回报不同,为-1。但决策是二元的,不是概率的,只有y_pred是概率的,因为它来自于具有sigmoid激活函数的输出神经元。本质上,tp比tn(零回报)更重要(+10),需要进行相应的加权,以使其更“积极”地预测真实。如果我理解正确,并且您的目标是使模型更可能预测真实,则使假阳性的相对成本非常小。网络将看到说“是”和错是可以的,但说“不”和错是不可以的。在极端情况下,如果你使误报的成本为零,我打赌网络将学会始终输出“是”。。。我在高层所说的是,我在你的描述中没有看到一个目标(由期望的网络行为定义),你无法通过加权误报和误报来实现。是的,你正确理解我的目标。你是说我只需要调整假阳性和假阴性的权重,以包括我想要从真阳性和真阴性中获得的额外“抽签”吗?如果是这样的话,这到底要怎么做呢?除非你是在一些RL设置中(或者至少做一些类似策略梯度/强化的事情),否则我不知道如何使用奖励来训练反向传播网络。你只能惩罚错误,不能奖励。也就是说,我认为你可以通过对不同的错误赋予不同的权重来实现期望的行为,即使你没有明确地“奖励”行为。如果这没有多大意义,请精确定义所需的行为,并解释为什么您认为使用建议的机制无法实现此行为。我不知道在这一点上还有什么要说。我说的是显而易见的,但真正的积极/消极是普遍的