首先,有一种直观的、思考熵的方式。
咱们先来玩个游戏。
游戏1:
我将从一袋硬币中取出一枚硬币,袋子中的硬币为:蓝色、红色、绿色,橙色各一枚。你的任务是用最少的问题猜出拿出
首先,有一种直观的、思考熵的方式。
咱们先来玩个游戏。
游戏1:
我将从一袋硬币中取出一枚硬币,袋子中的硬币为:蓝色、红色、绿色,橙色各一枚。你的任务是用最少的问题猜出拿出来的硬币是什么颜色。
下图是最棒的策略之一:
每一枚硬币都有1 / 4被选中的概率,在问了两个问题后猜到了答案,所以猜硬币游戏预期的问题数是2。
游戏2:
现在,我将从一袋硬币中取出一枚硬币,这袋硬币中有1 / 2的概率是蓝色的,1 / 4是红色的,1 / 8是绿色的,1 / 8是橙色的。那么,你的最佳策略看起来应该像这样:
在这里,它是蓝色的概率有1 / 2,这需要问一个问题才能猜得出来。有1 / 4的概率是红色的,这需要两个问题才能猜出来。按照这个逻辑,在猜硬币游戏中,预计的提问数量是12×112×1个问题(蓝色)+ 14×214×2个问题(红色)+ 18×318×3个问题(绿色)+ 18×318×3个问题(橙色)= 1.75。
游戏3:
现在我们用一个极端例子来做一下对比说明,我从一袋全是蓝色硬币的口袋中拿出一枚硬币。很显然,根本不用提任何问题就能知道我所拿的硬币的颜色。又或者……我们可以写下log21 = 0。请注意,只有当你知道口袋里全是蓝色硬币的时候,所提问题数才会是0。
有趣的是,由此我们可以发现一个规律:正确猜出硬币p概率所需要的问题数是log21plog21。例如,当p = 1 / 4时,log24 = 2log24 = 2个问题。所以总的来说,这个游戏的预期数量的问题是∑ipi×log21pi∑ipi×log21pi,这就是熵的表达式。由此可以看出,在这个游戏的最佳策略下,猜出颜色的问题数量是预料之中的。设置越不确定(游戏1 >游戏2 >游戏3),其熵值越高。
现在,我们再来看交叉熵。
如果我们仍然使用第1个游戏的策略,来玩第2个游戏的话:
由此可见,硬币有1/8的概率是橙色的,这个答案需要2个问题才能猜中。有1 / 2的概率是蓝色的,不过仍然需要提2个问题才行。所以,平均需要1/8×2+1/8×2+1/4×2+1/2×2=21/8×2+1/8×2+1/4×2+1/2×2=2 个问题。因此,使用游戏1的策略来玩游戏2并不是个好主意,2就是在该设置中使用这种策略的交叉熵。
因此,给定策略的交叉熵只是根据该策略下所预期的问题数量来猜测颜色。对于给定的设置来说,策略越好,交叉熵就越低。而最小的交叉熵意味着最优策略,也就是上文中定义的熵。这就是在机器学习的分类问题上,人们试图将交叉熵最小化的原因。
交叉熵是∑ipi×log21pi ^∑ipi×log21pi ^,其中pi为正确概率(例如,硬币颜色是橙色和绿色的概率有1/8,是红色的概率有1/4,是蓝色的概率有1/2),而pi^是错误的假定概率(例如,使用策略1,我们假设硬币出现每一种颜色的概率是p = 1/4)。在对数方程式中,到底是p 还是 pi^很容易发生混淆。所以你可以这样来记:log是用来计算策略下的问题数量的,所以在log下面的是预测概率p ^ 。
所以,在决策树中,如果你的树并不是以最好的方式构建的,那么基本上你所假设的结果的概率分布就会是错误的,而交叉熵值也会偏高。
交叉熵不光适用于决策树,它适用于所有分类问题。在二分类问题中,标签y是1的可能性是你预测的y, y^;y=0的可能性是1−y^。所以,我们可以以一种巧妙的方法将可能性最大化: y^y(1−y^)(1−y)y^y(1−y^)(1−y)。当y是1时,第二项为1,最大可能性为y^;当y是0时,第一项为1,可能性最大值为(1−y ^)。记住,仅适用于y值为0或1的情况。
现在, log(y^y)log(y^y) is ylogy^ylogy^,和log(1−y^)(1−y)log(1−y^)(1−y),是(1−y)log(1−y^)。该对数最大值相当于最小化−ylogy^−(1−y)log(1−y^)−ylogy^−(1−y)log(1−y^),而这只是交叉熵的表达式。这就是交叉熵被称为损失函数的原因。交叉熵最小化等价于似然函数最大化。例如,在我的分类中有三个数据点,它们的标签是1,1,0,而我的预测值y是0.8,0.9,0.3。平均交叉熵是:
−13(1log0.8+1log0.9+(1–0)log(1–0.3))=−13(log0.8+log0.9+log0.7).−13(1log0.8+1log0.9+(1–0)log(1–0.3))=−13(log0.8+log0.9+log0.7).
如果我的预测值是1,1,0,那么交叉熵就是0。(从技术上来说,对数是0的定义并不清晰,不过我们可以忽略它)。使用硬币游戏类比,每一个对样本y的预测都是按游戏3那样设置的单独的硬币猜谜游戏。第一个样本y = 1,就像是从一个只包含了y = 1的袋子中取出一枚硬币,因为当y=1时,这样的概率是100%。现在,如果你的算法够完美,你也知道袋子里到底是什么。那么p^=1。第二个和第三个例子同理可证。因此,对于一个完美的算法来说,交叉熵是0。