精华内容
下载资源
问答
  • 文章目录一、softmax二、损失函数loss1、均值平方差2、交叉熵3、损失函数的选取三、softmax 算法与损失函数的综合应用1 验证softmax_cross_entropy_with_logits包含softmax函数2 验证非标准one_hot的交叉熵 结果对于...
  • 加权交叉熵损失函数

    千次阅读 热门讨论 2020-01-06 16:17:34
    Keras 加权交叉熵损失函数binary crossentropyTextCNN的loss函数功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容...

    Keras 加权交叉熵损失函数binary crossentropy

    TextCNN的loss函数

    最近看到一篇论文通过设置带权重的交叉熵损失函数解决数据集中类不平衡问题,没有找到实现的代码,就参考了几篇代码写了一个。
    论文链接: Neural Network-based Detection of Self-Admitted Technical Debt: From Performance to Explainability.

    基于tensorflow2+python3.7的代码实现

    import tensorflow as tf
    from keras import backend as K
    def get_weight(weights):
        def mycrossentropy(y_true, y_pred):
            pt_1 = tf.where(tf.equal(y_true, 1), y_pred, tf.zeros_like(y_pred))
            pt_0 = tf.where(tf.equal(y_true, 0), y_pred, tf.ones_like(y_pred))
            loss = (1-weights)*K.binary_crossentropy(y_true, y_pred)*pt_1+weights*K.binary_crossentropy(y_true, y_pred)*pt_0
            return loss
        return mycrossentropy
        
    model.compile('adam', loss=get_weight(weights), metrics=['accuracy'])
    

    参考代码来源:
    Focal Loss

    展开全文
  • 讲解平方损失函数与交叉熵损失函数 适用的情况以及 解释了原因。 特别是回归问题为什么不能使用 交叉熵损失函数。 博客链接:https://blog.csdn.net/m_buddy/article/details/80224409 平方损失函数与...

    讲解平方损失函数与交叉熵损失函数 适用的情况以及 解释了原因。

    特别是回归问题为什么不能使用 交叉熵损失函数。

    博客链接:https://blog.csdn.net/m_buddy/article/details/80224409

     

    平方损失函数与交叉熵损失函数

    交叉熵与均方差   https://blog.csdn.net/dawnranger/article/details/78031793

    这里的categorical cross-entropy其实就是 log 似然损失函数。

    机器学习中的损失函数  https://blog.csdn.net/rosenor1/article/details/52302217

    为什么交叉熵可以作为损失函数?  https://blog.csdn.net/iloveyousunna/article/details/79205347

    softmax和sigmoid以及SVM   https://blog.csdn.net/qq_35550465/article/details/82704189

    对数损失函数是如何度量损失的?  https://www.zhihu.com/question/27126057

    机器学习中常见的损失函数   https://www.cnblogs.com/houjun/p/8956384.html

    以上图片来自: https://blog.csdn.net/hearthougan/article/details/82706834

    softmax 交叉熵损失函数求导: https://www.jianshu.com/p/6e405cecd609

    https://blog.csdn.net/qingyang666/article/details/70245855

    https://www.cnblogs.com/klchang/p/9217551.html   对数损失函数(Logarithmic Loss Function)的原理和 Python 实现 

    用于Multinoulli(多项分布)输出分布的softmax单元   https://blog.csdn.net/weixin_40516558/article/details/79962674

    多项式分布及Softmax回归模型推导   https://blog.csdn.net/liuyhoo/article/details/81542100

     

    展开全文
  • 交叉熵损失函数

    2021-06-10 15:43:31
    交叉熵损失函数是我们在机器学习分类任务中用的最多的损失函数,但是真正了解交叉熵损失需要理解它背后的信息论知识。 信息量 一条信息的信息量和它的不确定性有着直接的关系。如果我们要搞清楚一件非常不确定的事,...

    交叉熵损失函数是我们在机器学习分类任务中用的最多的损失函数,但是真正了解交叉熵损失需要理解它背后的信息论知识。

    信息量

    一条信息的信息量和它的不确定性有着直接的关系。如果我们要搞清楚一件非常不确定的事,就需要大量信息。相反,如果我们对这件事情已经有很多了解,那么就不需要很多信息。信息奠基人香农认为“信息是用来消除随机不确定的东西”,信息量就等于不确定性的多少。
    举个例子,假如在一场狼人杀游戏中,1号玩家有50%的概率是平民,有50%是狼人,我想知道1号玩家的身份,就需要询问预言家。如果预言家告诉我1号是狼人,那么他把1号身份的不确定性降低了2倍。
    如果我们玩的是高端局,那么1号玩家有四种可能的身份,25%平民,25%狼人,25%女巫,25%猎人。这时候预言家告诉我1号玩家是狼人,此时他把1号的身份不确定性降低了4倍。
    香农用“比特”(bit)这个概念来度量信息量,第一个例子包含的信息量为1bit,第二个例子为2bit(需要多少bit去传递信息)。我们可以发现:信息量的大小和事件发生的概率成反比。
    信息量表示为: h ( x ) = − l o g 2 p ( x ) h(x) = -log_2p(x) h(x)=log2p(x)

    信息熵

    如果可能性不一样呢?比如通过1号玩家前几轮发言,我可以判断他有75%是狼,25%是平民,这时候预言家会提供给我多少信息量呢?
    如果1号是狼,那么提供了 l o g 1 0.75 = 0.41 log \frac{1}{0.75} = 0.41 log0.751=0.41 bit的信息,如果是平民,提供了 l o g 1 0.25 = 2 b i t log \frac{1}{0.25} = 2 bit log0.251=2bit信息。
    我们平均从预言家得到 0.75 × 0.41 + 0.25 × 2 = 0.81 b i t 0.75\times0.41 + 0.25 \times2 = 0.81 bit 0.75×0.41+0.25×2=0.81bit的信息,这就是熵(Entropy):
    H ( X ) = ∑ p ( x ) log ⁡ 2 p ( x ) H(X) = \sum p(x)\log_2p(x) H(X)=p(x)log2p(x)
    熵描述一个随机变量的不确定性的数量,也就是我们从这个概率分布样本中得到的平均信息量。一个随机变量的熵越大,它的不确定性越大,需要更大的信息量用以确定其值。

    交叉熵

    上面的例子中,我通过1号选手的发言,主观上感觉他75%概率为狼,25%为平民。2号玩家觉得1号40%为狼,60%为平民。但事实上,1号选手要不为狼,要不为平民。所以怎么判断我和2号玩家谁的判断比较准?这里就引入了交叉熵(Cross entropy)。
    交叉熵就是来衡量估计模型q与真实概率分布p之间差异情况。
    H ( p , q ) = ∑ p ( x ) log ⁡ q ( x ) H(p,q) = \sum p(x)\log q(x) H(p,q)=p(x)logq(x)
    我们这里通过上帝视角看到1号为狼。
    我: 1 × log ⁡ 1 / 0.75 = 0.41 b i t 1\times\log 1/0.75 = 0.41 bit 1×log1/0.75=0.41bit
    2号: 1 × log ⁡ 1 / 0.4 = 1.32 b i t 1\times \log 1/0.4 = 1.32 bit 1×log1/0.4=1.32bit
    交叉熵越大,p与q之间差异越大,所以可以看到,我的预测比较准。

    相对熵

    如果预测非常完美,即预测分布等于真实分布,那么交叉熵就是简单的熵。如果分布不同,那么交叉熵是大于等于熵的。交叉熵大于熵的这部分就是相对熵,又称KL散度(Kullback-Leibler divergence),是衡量相同时间空间里两个概率分布相对差距的测度。
    D ( p ∥ q ) = H ( p , q ) − H ( p ) = ∑ p ( x ) × log ⁡ ( 1 / q ( x ) ) − ∑ p ( x ) × log ⁡ ( 1 / p ( x ) ) = ∑ p ( x ) log ⁡ p ( x ) q ( x ) \begin{aligned} D( p\|q) &= H(p,q) - H(p) \\&=\sum p(x) \times \log (1/q(x) ) - \sum p(x) \times \log (1/p(x) ) \\&=\sum p(x)\log \frac{p(x)}{q(x)} \end{aligned} D(pq)=H(p,q)H(p)=p(x)×log(1/q(x))p(x)×log(1/p(x))=p(x)logq(x)p(x)
    当两个随机分布完全相同时,即 p=q ,其相对熵为0。当两个随机分布的差别增加时,其相对熵期望值也增大。
    上面的例子中, H ( p ) = 0 H(p)=0 H(p)=0 ,所以交叉熵等于相对熵。

    参考:
    统计自然语言处理 宗成庆
    deephub:熵、交叉熵和KL散度的基本概念和交叉熵损失函数的通俗介绍

    展开全文
  • 损失函数——交叉熵损失函数(CrossEntropy Loss)

    千次阅读 多人点赞 2020-12-16 20:51:02
    损失函数——交叉熵损失函数(CrossEntropy Loss) 交叉熵函数为在处理分类问题中常用的一种损失函数,其具体公式为: 1.交叉熵损失函数由来 交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的...

    损失函数——交叉熵损失函数(CrossEntropy Loss)

    交叉熵函数为在处理分类问题中常用的一种损失函数,其具体公式为:

    H(p,q)=-\sum_{i=1}^{n}p(x_{i})log(q(x{_{i}}))

    1.交叉熵损失函数由来

    交叉熵是信息论中的一个重要概念,主要用于度量两个概率分布间的差异性。首先我们来了解几个概念。

    1.1信息量

    信息论奠基人香农(Shannon)认为“信息是用来消除随机不确定性的东西”。也就是说衡量信息量大小就看这个信息消除不确定性的程度。

    “太阳从东方升起了”这条信息没有减少不确定性。因为太阳肯定从东面升起。这是句废话,信息量为0。

    “六月份下雪了”,这条信息就比较有价值,根据历史统计信息来看,六月份鲜有下雪记录,可知该语句信息量较大。

    从上面两个例子可以看出:信息量的大小和事件发生的概率成反比。

    由此引出信息量的表示:

    I(x)=-log(P(x))

    其中P(x)表示为, 时间x的发生概率,这里可能会有质疑,我们知道信息量的大小和事件发生的概率成反比,函数形式为减函数,为什么要表现为对数形式呢

    这里我们需要了解信息量得三个性质:

    1.事件发生的概率越低,信息量越大;

    2.事件发生的概率越高,信息量越低;

    3.多个事件同时发生的概率是多个事件概率相乘,总信息量是多个事件信息量相加。

    根据性质3,可以知道使用对数形式可以满足性质需求,因此为表现该形式。

    1.2 信息熵

    信息量度量的是一个具体事件发生所带来的信息,而信息熵则是在结果出来之前对可能产生的信息量的期望——考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。

    因此我们可以得到其表现公式为:

    H(X)=-\sum_{i=1}^{n}p(x_{i})log(p(x{_{i}}))

    其中P(x)表示为, 时间x的发生概率

    总而言之,信息熵是用来衡量事物不确定性的。信息熵越大,事物越具不确定性,事物越复杂。

    1.3 相对熵

    相对熵(relative entropy),又被称为Kullback-Leibler散度(KL散度)或信息散度(information divergence),是两个概率分布(probability distribution)间差异的非对称性度量 。在信息理论中,相对熵等价于两个概率分布的信息(Shannon entropy)的差值 。

    可以理解为对于同一个随机变量x,有两个概率分布,判断这两个概率分布得差异。假设两个概率分布对应为p(x),q(x), 如何表示这两个分布得差异,我们可以使用信息熵判断,于是相对熵产生。

    p(x)分布的信息熵为:

    H_{pp}(X)=-\sum_{i=1}^{n}p(x_{i})log(p(x{_{i}}))

    q(x)分布的信息熵为:

    H{_{pq}}(X)=-\sum_{i=1}^{n}p(x_{i})log(q(x{_{i}}))

    相对熵为:

    H_{pq}(X)-H_{pp}(X)

    p(x)为样本真实分布,q(x)为预测分布

    于是得到相对熵(KL散度)公式为:

    D_{KL}(p||q)=H_{pq}(X)-H_{pp}(X)=-\sum_{i=1}^{n}p(x_{i})log(q(x{_{i}}))-[-\sum_{i=1}^{n}p(x_{i})log(p(x{_{i}}))]

    D_{KL}(p||q)=\sum_{i=1}^{n}p(x_{i})log(p(x{_{i}}))-\sum_{i=1}^{n}p(x_{i})log(q(x{_{i}}))=\sum_{i=1}^{n}p(x_{i})log(\frac{p(x_{i})}{q(x^{_{i}})})

    KL散度越小,表示P(x) 与Q(x)的分布更加接近,可以通过反复训练Q (x)来使Q (x) 的分布逼近P(x)。

    1.4 交叉熵

    交叉熵的函数表示为:

    H(p,q)=-\sum_{i=1}^{n}p(x_{i})log(q(x{_{i}}))

    我们观察可以看出,这里与相对熵(KL散度)较为相似,个人认为交叉熵为相对熵(KL散度)的变体,由于我们进行模型训练,有监督训练,样本标签已经确定,相当于真实的概率的分布P(x)已经得知,因此这边的H(X)=-\sum_{i=1}^{n}p(x_{i})log(p(x{_{i}}))固定值,相当于常量

    在我们模型训练中:

    D_{KL}(p||q)=\sum_{i=1}^{n}p(x_{i})log(p(x{_{i}}))-\sum_{i=1}^{n}p(x_{i})log(q(x{_{i}}))

    相对熵(KL散度)变为:

    D_{KL}(p||q)=constant-\sum_{i=1}^{n}p(x_{i})log(q(x{_{i}}))

    对于其做为损失函数,常量可以忽略,因此得到了交叉熵的表现形式。

    2. 交叉熵损失函数应用与实现

    2.1 交叉熵损失函数二分类中应用

    对于在二分类损失函数中应用,交叉熵损失函数为以下形式。

    L = -[y log \widehat{y} + (1-y)log(1-\widehat{y})]

    2.2 交叉熵损失函数实现

    在具体在Python中的实现如下:

    # tensorflow version
    loss = tf.reduce_mean(-tf.reduce_sum(y_*tf.log(y), reduction_indices=[1]))
     
    # numpy version
    loss = np.mean(-np.sum(y_*np.log(y), axis=1))
    
    # pytorch version
    entroy=nn.CrossEntropyLoss()
    output = entroy(input, target)

    3 总结

    • 交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。

    • 交叉熵的值越小,模型预测效果就越好。

    • 交叉熵经常搭配softmax使用,将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。

    参考

    [1] https://blog.csdn.net/b1055077005/article/details/100152102

    [2] https://zhuanlan.zhihu.com/p/74075915

    [3] https://zhuanlan.zhihu.com/p/70804197

    [4] https://blog.csdn.net/francislucien2017/article/details/86763319

    [5]https://blog.csdn.net/dog250/article/details/79081043

    展开全文
  • 神经网络NN以某个指标为线索...很多函数都可以作为损失函数loss function,但常用的是均方误差和交叉熵误差等。 一、均方误差Mean Squared Error E=12∑k(yk−tk)2E=\frac12\sum_{k}(y_k-t_k)^2E=21​k∑​(yk​−t...
  • 交叉熵损失函数(cross entropy error) 交叉熵是一种思想,交叉熵损失函数是基于这种思想的产物 这里,log表示以e为底数的自然对数(log e)。yk是神经网络的输出,tk是 正确解标签。并且,tk中只有正确解标签的...
  • 交叉熵损失函数1.1 交叉熵损失函数的数学原理1.2 交叉熵损失函数的直观理解2. softmax与数值稳定性2.1 exe^xex数值溢出问题2.2 在TensorFlow 中,自定义交叉熵损失函数 - 不推荐2.3 `tf.nn.softmax_cross_entropy_...
  • 上面使用交叉熵函数可以正常运算。为什么下面这个就出现维度问题。 tensor([[[ 0.0576, -0.7956, -0.1969]], [[ 0.3662, -0.6685, -0.2650]], [[ 0.3640, -0.7650, -0.3304]], [[ 0.3184, -0.7652, -0.3420]...
  • 交叉熵损失函数 torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='elementwise_mean') weight为每个类别的loss设置权重,常用于类别不均衡的问题,...
  • 文章目录模型交叉熵损失函数及softmax计算误差Python代码 模型 前面得到的Z,然后经过softmax得到输出a,然后根据groud truth y计算损失函数。 交叉熵损失函数及softmax 计算误差 Python代码 def delta_cross_...
  • 转载地址:https://blog.csdn.net/jasonzzj/article/details/52017438?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task ex/(1+ex)=1/(1+e^-x)
  • 交叉熵损失函数 (一)什么是熵 香农最先提出了信息熵的概念,他将其定义为离散随机事件发生的概率。 熵可以用信息量的期望值表示,表示一个随机事件的不确定性,熵越大,随机事件的不确定性越大,反之则越小,一般...
  • https://blog.csdn.net/comway_Li/article/details/81537193 https://www.jiqizhixin.com/articles/091202 https://www.cnblogs.com/lliuye/p/9549881.html
  • 文章目录1.用CrossEntropyLoss预测单个目标2.用CrossEntropyLoss预测多个目标3.二分类使用BCELoss损失函数4....loss = nn.CrossEntropyLoss() #实例化交叉熵损失函数 Y = torch.tensor([0]) #预...
  • mse均方误差、mae绝对值平均误差用于拟合回归,公式已经熟悉了,但交叉熵的每次都只是应用,没有了解公式,这对于自己写交叉熵损失函数以及分析损失函数不利。 公式详解 C是损失值; n是求平均用的,所以是样本数量...
  • 交叉熵损失函数,梯度下降算法

    千次阅读 2020-09-08 17:23:07
    文章目录机器学习的三要素模型学习准则优化算法 机器学习的三要素 模型 模型就是一种映射。 线性模型与非线性模型的区别是基函数是线性还是非线性。...比如交叉熵损失函数 风险最小化准则 优化算法 ...
  • 目录Softmax 函数交叉熵损失函数学习率衰减策略 Softmax 函数 Softmax 函数函数是机器学习和深度学习中相当常用到的函数,它的公式如下: softmax(S)=esk∑jesj softmax(S)=\frac { e ^ { s _ { k } } } { \sum _ { j...
  • Keras中的几种交叉熵损失函数

    千次阅读 2020-07-21 14:00:39
    binary_crossentropy损失函数和softmax激活函数相匹配,适应两类别分类的问题。categorical_crossentropy损失函数和sigmoid激活函数相匹配,适应多类别分类的问题。 二、categorical_crossent..
  • 交叉熵损失函数 一般我们学习交叉熵损失函数是在二元分类情况下: L=−[ylogy^+(1−y)log(1−y^)]L=−[ylog ŷ +(1−y)log (1−ŷ )]L=−[ylogy^​+(1−y)log(1−y^​)] 推而广之,我们可以得到下面这个交叉熵损失...
  • 来源丨AI有道编辑丨极市平台说起交叉熵损失函数「Cross Entropy Loss」,脑海中立马浮现出它的公式:我们已经对这个交叉熵函数非常熟悉,大多数情况下都是直接拿来使用就好。但是...
  • softmax函数和交叉熵损失函数的理解

    万次阅读 2018-03-09 10:48:09
    Softmax函数背景与定义导数softmax的计算与数值稳定性Loss function对数似然函数交叉熵Loss function求导TensorFlow方法1手动实现不建议使用方法2使用tfnnsoftmax_cross_entropy_with_logits推荐使用区别总结...
  • 1、tf.nn.sparse_softmax_cross_entropy_with_logits函数 tf.nn.sparse_softmax_cross_entropy_with_logits( _sentinel=None, labels=None, logits=None, name=None ) # 计算logits和labels之间的稀疏softmax...
  • tensorflow中softmax激活函数与交叉熵损失函数相结合 求分类问题时,先使用softmax激活函数使输出符合概率分布,再用交叉熵求损失函数 tensorflow中提供了两个等价的API: 1. y_pro = tf.nn.softmax(y) loss...
  • 常用交叉熵损失函数,常代替均方差损失函数用于分类 loss_function = tf.reduce_mean(-tf.reduce_sum(y*tf.log(pred), reduction_indices=1)) 但有时用softmax激活的上面的pred,使pred=0或很接近0,导致log(0)值...
  • 首先看一下二次代价函数: 以二分类问题,常见的sigmoid激活函数为例,假设表示输入值,表示真实标签(0或1),表示预测输出,则二次代价函数可表示为: 其中 那么代价函数对权重和偏置的偏导数分别为: ...
  • 2021SC@SDUSC 相对熵 相对熵又称KL散度,用来描述两个概率分布的差异性。假设有对同一变量 x 的 q(x)和p(x)两个概率分布,那么两者之间的相对熵可由以下定义 ...交叉熵是用来估算平均编码长度的。在深度学习中,可...
  • 均方差损失函数mse_loss()与交叉熵损失函数cross_entropy() 1.均方差损失函数mse_loss() 均方差损失函数是预测数据和原始数据对应点误差的平方和的均值。 \[MSE=\frac{1}{N}( y^`−y)^2 \] N为样本个数,y'为预测...
  • softmax函数和交叉熵损失函数

    千次阅读 2018-08-11 16:27:26
    在CNN中,全连接层后会加上softmax函数,并且一般用交叉熵函数作为损失函数。这篇文章主要记录softmax把CNN的输出变成概率的过程以及交叉熵如何为优化过程提供度量,并且用python实现。 softmax函数 softmax函数将...
  • 常见损失函数 0-1损失函数 L(Y,f(X))={1,0Y != f(X)Y = f(X) 平方损失函数 L(Y,f(X))=(Y−f(X))2 绝对损失函数L(Y,f(X))=|(Y−f(X))| 对数损失函数L(Y,P(Y|X))=−...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,529
精华内容 5,411
关键字:

交叉熵损失函数python

python 订阅