理解机器学习的交叉熵为何用来表示损失函数

目录

前言

一、损失函数

二、KL散度(相对熵)

三、信息论

1.信息量

2 熵   

总结



前言

最近上课学习了交叉熵:

理解机器学习的交叉熵为何用来表示损失函数

但是很不理解为什么要对概率进行-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),具体证明参考下文。

(6条消息) 信息量为什么要表示成对数的形式_Netfilter,iptables/OpenVPN/TCP guard:-(-CSDN博客_信息量为什么取对数理解机器学习的交叉熵为何用来表示损失函数https://blog.csdn.net/dog250/article/details/79081043?utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-18.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~default-18.no_search_link

2 熵   

我们现在有了信息量的定义,而熵用来表示所有信息量的期望,即:

理解机器学习的交叉熵为何用来表示损失函数​                     

 那么为什么当初相对熵(KL散度)的定义不是这样呢:

理解机器学习的交叉熵为何用来表示损失函数

这个很好理解,我们在机器学习实验中每次改变的就是输出数据即q(xi),我们要探究的就是期望概率密度函数不变的情况,改变随机变量取值对于概率分布(信息量)的影响。



总结

算是对于交叉熵的由来有了更深层次的理解,对于损失函数为什么不用理解机器学习的交叉熵为何用来表示损失函数我的总结是,不符合实际含义,不像交叉熵那么具有可解释性,同时log函数在实际情况定量表示信息量的表现也十分不错。对于信息量为什么用log的推导也十分有意思,不禁感叹数学的强大!

上一篇:GAN 笔记


下一篇:Extjs 点击编辑的时候有一个省市级联,市ComboBox不能选中displayField