对交叉熵损失的一点感悟
这个问题需要从熵谈起, 根据香浓理论,熵是描述信息量的一种度量,如果某一事件发生的概率越小,也就是不确定性越大,那么熵就越大,或者说是信息量越大。 比如说,我们现实生活中,经常会有这样的场景,比如明星某薛,平时在我们这些吃瓜群众面前是一个人品极高,形象特别好,没有任何负面新闻,迷妹也是一波一波的。but, 突然有一天,被甩出各种有力证据,被证明是一个背!信!弃!义!的渣男!此刻,你有没有一种蒙圈的感觉,一时没缓过神来,因为信息量太大了 !有没有? 故事到此,我们以理论的角度来分析下,根据香浓理论,信息量 H = -log(p(X)), (至于为什么是-log函数来度量信息量,背后的数学原理,大家可以自己去深入了解下。)从H的函数表达中可以知道,信息量与事件发生的概率P(X)反相关。由于某薛之前在公众心目中的良好形象,大家认为他发生背信弃义之事(记为X)必定是小概率事件P(X),但事件X一旦发生,必定会满城风雨,因为香浓认为,这个信息量太大了,所以大家的反应会很强烈,都引发了UI界的妹纸们去用技术的手段证明证据的真伪,你说信息量大不大! 言归正传,在我们深度学习任务中,交叉熵经常被作为一种Loss Function(J),我们就以分类任务为例,给定假设函数h为Softmax, 由于假设函数softmax的定义完全满足概率的定义:非负性,规范性,可列可加性,所以softmax的输出完全可以理解为概率输出(通常说的置信度),即对某一输入X,预测输出为Y的事件可能性(概率)。
![](https://images2017.cnblogs.com/blog/1251601/201710/1251601-20171004115702646-186935996.png)
我们训练网络,目标是尽可能在我们给定的训练样本中,让网络学习到使得我们的训练样本预测输出与标定值一致的模型参数(本质是模型拟合问题,这里不展开讨论这个问题),这里,我们的重点是,预测输出与标定一致。当我们给网络的输入是X时, 我们希望网络输出Y尽可能等于X, 也就是(Y - X) -> 0。 对于同一类样本,网络输入可以抽象的理解为是同一个模式类(X),当然,网络应该输出一个确定的类别标签(Y)。在我们设定类别标签确定的情况下,这个事件必须是一个确定性的事件,而不是一个不确定的事件。(否则我们的训练模型就是一个不可用的模型 ), 既然最终模型输出应该是一个确定的事件,那么我们的输出概率P(X)应该是一个尽可能大的概率,尽可能是一个必然事件(P(X) -> 1), 反过来,如果我们的预测输出跟标定标签相差甚远,即(Y - X)较大,网络训练时,应该使得这个可能性尽可能的小。于是,此时交叉熵作为Loss Function该登场了,
![](https://images2017.cnblogs.com/blog/1251601/201710/1251601-20171004115806990-2064149420.png)
公式本质是度量信息量的,即越是确定的事件,发生的概率越大,交叉熵越小。而我们要最小化loss function,使得交叉熵(信息量)尽可能小,也就是要让模型学习到这样的能力:将训练样本以尽可能大的概率分类正确。所以,当y(i) = j时,使得概率:
![](https://images2017.cnblogs.com/blog/1251601/201710/1251601-20171004120006208-416724572.png)
(欢迎转载,但必须注明出处。欢迎大家交流:wujianping.2006@163.com)
(欢迎转载,但必须注明出处。欢迎大家交流:wujianping.2006@163.com)