zoukankan      html  css  js  c++  java
  • 一文搞懂交叉熵在机器学习中的使用,透彻理解“熵”

    文章内容来自:https://blog.csdn.net/tsyccnh/article/details/79163834

    关于交叉熵在loss函数中使用的理解
    交叉熵(cross entropy)是深度学习中常用的一个概念,一般用来求目标与预测值之间的差距。以前做一些分类问题的时候,没有过多的注意,直接调用现成的库,用起来也比较方便。最近开始研究起对抗生成网络(GANs),用到了交叉熵,发现自己对交叉熵的理解有些模糊,不够深入。遂花了几天的时间从头梳理了一下相关知识点,才算透彻的理解了,特地记录下来,以便日后查阅。

    信息论
    交叉熵是信息论中的一个概念,要想了解交叉熵的本质,需要先从最基本的概念讲起。

    1 信息量
    首先是信息量。假设我们听到了两件事,分别如下:
    事件A:巴西队进入了2018世界杯决赛圈。
    事件B:中国队进入了2018世界杯决赛圈。
    仅凭直觉来说,显而易见事件B的信息量比事件A的信息量要大。究其原因,是因为事件A发生的概率很大,事件B发生的概率很小。所以当越不可能的事件发生了,我们获取到的信息量就越大。越可能发生的事件发生了,我们获取到的信息量就越小。那么信息量应该和事件发生的概率有关。

    2 熵

    考虑另一个问题,对于某个事件,有nn种可能性,每一种可能性都有一个概率p(xi)p(xi) 
    这样就可以计算出某一种可能性的信息量。举一个例子,假设你拿出了你的电脑,按下开关,会有三种可能性,下表列出了每一种可能的概率及其对应的信息量

     

     

    3 相对熵(KL散度)
    相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异

    维基百科对相对熵的定义

    In the context of machine learning, DKL(P‖Q) is often called the information gain achieved if P is used instead of Q.

    即如果用P来描述目标问题,而不是用Q来描述目标问题,得到的信息增量。

    在机器学习中,P往往用来表示样本的真实分布,比如[1,0,0]表示当前样本属于第一类。Q用来表示模型所预测的分布,比如[0.7,0.2,0.1]
    直观的理解就是如果用P来描述样本,那么就非常完美。而用Q来描述样本,虽然可以大致描述,但是不是那么的完美,信息量不足,需要额外的一些“信息增量”才能达到和P一样完美的描述。如果我们的Q通过反复训练,也能完美的描述样本,那么就不再需要额外的“信息增量”,Q等价于P。

    KL散度的计算公式:

    参考:

    https://www.zhihu.com/question/65288314/answer/244557337
    https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence
    https://jamesmccaffrey.wordpress.com/2013/11/05/why-you-should-use-cross-entropy-error-instead-of-classification-error-or-mean-squared-error-for-neural-network-classifier-training/
    ---------------------
    作者:史丹利复合田
    来源:CSDN
    原文:https://blog.csdn.net/tsyccnh/article/details/79163834
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    合格linux运维人员必会的30道shell编程实践题及讲解
    合格linux运维人员必会的30道shell编程实践题及讲解-13
    合格linux运维人员必会的30道shell编程实践题及讲解-12
    合格linux运维人员必会的30道shell编程实践题及讲解-11
    合格linux运维人员必会的30道shell编程实践题及讲解-10
    合格linux运维人员必会的30道shell编程实践题及讲解-09
    学习Vim的四周计划
    Linux shell 逻辑运算符、逻辑表达式详解
    60个DevOps开源工具,你在用哪些?
    误删重要文件怎么办?学会Linux 救援模式再也不担心
  • 原文地址:https://www.cnblogs.com/tangjunjun/p/11186383.html
Copyright © 2011-2022 走看看