交叉熵

作者: 不烫的热水袋 | 来源:发表于2020-02-26 21:56 被阅读0次

    1.信息量

    信息量与事件发生的概率成反比。
    如:
    事件1:明天太阳正常升起。该事件发生的概率P=1,因此信息量为0。
    事件2:天气预报说明天要下雨。本来我们不知道明天天气,但是通过这句话消除了部分不确定性,因此它具有一定的信息量。

    信息量的计算:
    I(x)=-log(P(x))
    其中I(x)表示信息量,log表示以e为底

    2.信息熵

    信息熵是所有信息量的期望。
    H(X)=\sum\limits_{i=1}^nP(x_i)*I(x_i)=-\sum\limits_{i=1}^nP(x_i)*log(P(x_i))

    事件序号 事件 概率 信息量
    1 明天下雨 0.6 -log(0.6)
    2 明天不下雨 0.4 -log(0.4)

    H(X)=-P(x)log(P(x))-(1-P(x))*log(1-P(x))
    =-0.6*log(0.6)-0.4*log(0.4)

    3.相对熵(KL熵)

    衡量同一变量在不同概率分布上的差异。比如随机变量X在测试集上的概率分布为P(x),验证集上的概率分布为Q(x),相对熵计算公式为:
    D_{KL}(p||q)=\sum\limits_{i=1}^np(x_i)log(\frac{p(x_i)}{q(x_i)})

    例如机器学习的分类问题:

    事件序号 事件 预测概率 实际情况
    1 明天下雨 0.6 1
    2 明天不下雨 0.4 0

    D_{KL}(p||q)=1*log(\frac{1}{0.6})+0*log(\frac{0}{0.6})
    =1*log(\frac{1}{0.6})

    4.交叉熵

    拆分KL散度公式:
    D_{KL}(p||q)=\sum\limits_{i=1}^np(x_i)log(\frac{p(x_i)}{q(x_i)})
    =\sum\limits_{i=1}^np(x_i)log(p(x_i))-\sum\limits_{i=1}^np(x_i)log(q(x_i))
    =-H(p(x))+[\sum\limits_{i=1}^np(x_i)log(q(x_i))]

    H(p(x))即信息熵,后者为交叉熵。KL散度=信息熵-交叉熵。交叉熵公式为:
    H(p,q)=-\sum\limits_{i=1}^np(x_i)log(q(x_i))

    在机器学习训练网络时,输入数据与标签常常已经确定,那么真实概率分布P(x) 也就确定下来了,所以信息熵在这里就是一个常量
    由于KL散度的值表示真实概率分布P(x) 与预测概率分布Q(x) 之间的差异,值越小表示预测的结果越好,所以需要最小化KL散度,而交叉熵等于KL散度加上一个常量(信息熵),且公式相比KL散度更加容易计算,所以在机器学习中常常使用交叉熵损失函数来计算loss就行了。

    事件序号 事件 预测概率 实际情况
    1 明天下雨 0.6 1
    2 明天不下雨 0.4 0

    loss=-1*log(0.6)-0*log(0.4)=-log(0.6)

    交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。

    参考:https://blog.csdn.net/b1055077005/article/details/100152102

    相关文章

      网友评论

          本文标题:交叉熵

          本文链接:https://www.haomeiwen.com/subject/quewchtx.html