在我们自学神经网络神经网络的损失函数的时候会发现有一个思路就是交叉熵损失函数,交叉熵的概念源于信息论,一般用来求目标与预测值之间的差距。比如说我们在人脑中有一个模型,在神经网络中还有一个模型,我们需要找到神经网络模型跟人脑模型最相近的那一个,那就需要找到一个方法需要定量的去看待两个模型的差异。
文章目录
1 交叉熵
交叉熵其实就是运用了熵的概念先把模型转化为熵的数值然后用数值去比较模型之间的差异。
那为什么要用熵?熵是指一个模型体系的混乱程度。如果两个模型是同一类的比如说都是高斯分布,这样可以直接进行比较。那如果一个是高斯分布一个是泊松分布那就无法直接进行比较。同时人脑模型跟神经网络模型一样也有混乱度,要理解交叉熵,需要先了解下面几个概念。
1.1熵
熵在物理学跟信息论当中都有定义当然我们看的是深度学习 我们还是运用信息论中的概念。我们先引入信息量
1.1.1信息量
举个例子比如说让你再做一遍你小学二年级都会的十以内的加减法,你就会说都会了写了没用,这种情况就是信息量很低。还有一种情况比如说马云今天吃了个苹果是山东烟台产的红富士,这个消息你不知道但是知道了好像对于你并没有多大的帮助这种情况也算是信息量很低。所以看一个信息信息量到底大不大不是看你知道不知道还要看给你带来多少确定性。比如说羽毛球男单比赛
现在有八支球队进行比赛,现在中国人夺冠概率是八分之一。过两天比赛结果出来发现中国人夺冠了。那么概率之前为八分之一不确定的事情到现在百分之一百确定了 那这个事情信息量很高。如果说中国队进了决赛,那这件事概率由八分之一到二分之一 ,这件事也有信息量但没有夺冠的信息量高。因为这件事只是从八分之一到二分之一不是到百分之百,所以不同的信息含有的信息量是不一样的。那么怎么去求信息量呢我们定义一下:
f(x): = (信息量)
f(中国队赢得比赛)=f(中国队进决赛)+f(中国队赢得比赛)
中国队赢得比赛信息量等于中国队进决赛的信息量加上中国队赢得比赛得信息量相加。
我们可以得出f(1/8)=f(1/4)+f(1/2)
那么我们应该怎么写才能自洽 这里我们可以知道1/8,1/4,1/2,都是概率。
p(中国队夺冠)=p(中国队进决赛)p(中国队赢得决赛)
所以这几个式子完全满足才能自洽。得出
f(x1x2)=f(x1)+f(x2)
那么相乘怎么得出相加呢,所以这个f(x): = (信息量)必须有一个log
那为什么是log 因为就是定义 只要满足体系自洽就行,作为定义本身就是赋予含义。
所以这个式子有两个地方不清楚一个是系数另外一个是以几为底。
我们可以想一下x自变量越小 这件事信息量就越大 这是一个相反的关系,所以前面系数可以赋值为-1。
那么log以几为底合适呢其实到这里自洽已经很满足了,以几为底都是比较随意的,这里可以以2为底也可以以e为底。这里就以2为底得出
f(1/8)=f(1/4)+f(1/2)
我们可以算出中国队夺冠信息量为3
比如说有两场比赛 日本队跟韩国队比赛获胜概率都是1/2