BinaryCrossentropy具体函数形式(Python)

BinaryCrossentropy在词性标注和情感分析中经常出现。它的具体函数形式是:

f(p) = \frac{1}{n}\sum_{i}^{n}-\{p_ilog(q_i) + (1-p_i)log(1-q_i)\}

具体的Python实现代码如下:

def binary_ce(a_v, p_v, logit):
    if logit:
        p_v = np.exp(p_v) / (1 + np.exp(p_v))
    return -(a_v * np.log(p_v) + (1-a_v) * np.log(1 - p_v))
​
def binary_crossentropy(A, P, logit=False):
    return np.mean([binary_ce(a_i, p_i, logit) for a_i, p_i in zip(A, P)])

具体例子及对比,从tensorflow官网上我们获取以下信息:

# Example 1: (batch_size = 1, number of samples = 4)
y_true = [0, 1, 0, 0]
y_pred = [-18.6, 0.51, 2.94, -12.8]
bce = tf.keras.losses.BinaryCrossentropy(from_logits=True)
bce(y_true, y_pred).numpy()
# 0.865

将上述例子带入自定义函数中得:

binary_crossentropy(y_true, y_pred, logit=True)
# 0.8654579497810972,保留三位小数后得:0.865

可见自定义函数无误。

注释:

1. np为numpy的简写:import numpy as np

2. tf为tensorflow的简写:import tensorflow as tf

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 二元交叉熵损失函数是一种用于二分类问题的损失函数,它可以衡量模型预测结果与真实结果之间的差异。该损失函数的计算方式是将预测结果和真实结果分别取对数,然后将它们相乘并取相反数,最后求平均值。二元交叉熵损失函数越小,表示模型预测结果与真实结果越接近,模型的性能越好。 ### 回答2: 二分类问题是深度学习中最常见的问题之一。常见的二分类问题包括判断一张图片是否为猫或狗、判断一封邮件是否为垃圾邮件等。在深度学习中,我们使用的算法需要不断地去逼近真实样本的分布,从而求得最佳的分类边界。在这个过程中,损失函数是非常关键的一部分,让我们在每一步都能够知道模型的表现情况。 二分类问题的损失函数通常采用binary crossentropy损失函数。这个损失函数是在数学上非常简单的,但是其背后的逻辑却非常实用。 在深度学习中,我们将数据集中的标签分为0和1,0表示负样本,1表示正样本。那么binary crossentropy就是用来度量模型预测的输出和实际标签之间的差距的。当模型的预测输出越接近于1,binary crossentropy的值就越小,当预测输出越接近于0,binary crossentropy的值就越大。而当输出和实际标签完全一致时,binary crossentropy的值等于0。 在使用binary crossentropy时,需要注意不要将输出值进行sigmoid变换,因为binary crossentropy的公式中包含了sigmoid变换。如果将其进行两次sigmoid变换,将会产生数值上的不稳定和精度上的降低。而我们只需要将输出和标签作为二值0和1输入即可。 总结而言,binary crossentropy损失函数是用来度量二分类问题中预测输出与实际标签之间差异的一种方法。当输出与标签越接近时,其值越小,反之值越大。在使用binary crossentropy的时候需要注意输出值不需要进行sigmoid变换。 ### 回答3: 二元交叉熵损失函数Binary Cross Entropy Loss Function)是深度学习中常用的一种分类损失函数。它是基于信息熵的概念而来的,用于衡量二分类模型预测结果和实际标签之间的差异。 在机器学习中,分类问题通常是指将输入样本划分到不同的类别中,比如将邮件分为垃圾邮件和普通邮件两大类。如果我们想要训练一个二分类模型,例如预测一张图片是猫还是狗,那么我们就需要一个损失函数来评估模型预测结果的准确性。 由于二分类问题的标签只有0或1两个类别,因此我们可以将二元交叉熵损失函数写成如下的形式: $Loss(y,\hat{y}) = -[ylog(\hat{y})+(1-y)log(1-\hat{y})]$ 其中,$y$表示实际标签,$\hat{y}$表示模型的预测输出。当$y=1$时,上式中第一个部分的值为$-log(\hat{y})$,表示我们希望模型将这个样本分到1类别中,而第二个部分的值为0,则上式合并后就成为了$-log(\hat{y})$;当$y=0$时,则上式中第一个部分的值为0,第二个部分的值为$-log(1-\hat{y})$,表示我们希望模型将这个样本分到0类别中。 如果模型的预测输出$\hat{y}$与实际标签$y$相符,则二元交叉熵损失函数的值越小。当模型的预测输出与实际标签不一致时,损失函数的值会增加,从而使得模型在后续的训练中更加关注这类错误的样本,进一步提高模型的分类准确率。 总之,二元交叉熵损失函数深度学习中常用的一种分类损失函数,它可以用来度量二分类模型预测结果和实际标签之间的差异。通过最小化损失函数值,我们可以训练出更加准确的分类模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值