目录
前言
最近上课学习了交叉熵:
但是很不理解为什么要对概率进行-log处理,凭直观的感受1-x也能衡量误差,于是通过学习交叉熵的定义由来,进一步理解
一、损失函数
损失函数能量化所学模型的好坏,损失越少,即离真实模型越近,该模型越好。
在多分类问题中,例如其中一个标签向量为p=(1,0,0,0),一个实际输出向量为q=(0.6,0.1,0.1,0.2)两者做内积结果为0.6。从最直观的感受来说,只要用1-0.6作为损失值(该值越小即0.6越逼近1,越能得到正确的分类)不就已经可以量化一个模型的好坏吗。抱着这个问题,我去学习了KL散度公式的建立(毕竟交叉熵是由KL散度公式所推得)
二、KL散度(相对熵)
在信息论中,KL散度即D(P||Q) 表示用概率分布Q来拟合真实分布P时,产生的信息损耗,其中P表示真实分布,Q表示P的拟合分布,既然是信息损耗,那就应该是用概率分布Q拟合真实分布P的信息量 减去 概率分布p的信息量,对应公式如下:
变形可得:
由于 在但多分类问题中为0,交叉熵等价于KL散度,而KL散度的实际含义:用来描述两个概率分布P和Q的差异的一种方法,与损失函数含义相符,损失函数选择交叉熵肯定没问题。可是还是没解决当初的问题为什么不直接,接下来还是从概念出发,追溯本质为什么一个概率分布的信息量要用log定义。
三、信息论
交叉熵是信息论中的一个概念,要想了解交叉熵的本质,需要先从最基本的概念讲起
1.信息量
对于三个问题的证明等价于证明f(xy)=f(x)+f(y),x∈(0,1],f(1)=0的情况下f(x)=-log(x),具体证明参考下文。
2 熵
我们现在有了信息量的定义,而熵用来表示所有信息量的期望,即:
那么为什么当初相对熵(KL散度)的定义不是这样呢:
这个很好理解,我们在机器学习实验中每次改变的就是输出数据即q(xi),我们要探究的就是期望概率密度函数不变的情况,改变随机变量取值对于概率分布(信息量)的影响。
总结
算是对于交叉熵的由来有了更深层次的理解,对于损失函数为什么不用我的总结是,不符合实际含义,不像交叉熵那么具有可解释性,同时log函数在实际情况定量表示信息量的表现也十分不错。对于信息量为什么用log的推导也十分有意思,不禁感叹数学的强大!