1. 疑问
今天突然想到了logloss,也就是 cross-entropyloss。
我们知道:entropy的计算公式如下:
为什么二分类的时候会写成如下公式:
首先,我们从交叉熵的由来分析:
2. 交叉熵由来
相对熵(KL散度):
如果对于两个分布P(x)和Q ( x ),则我们可以使用KL散度来衡量这两个概率分布之间的差异,如果两个分布越近似,其值越小。公式如下:
进行变形:
前面一项是信息熵,后面的公式就是我们的交叉熵。所以这个KL散度就等于 (交叉熵)- (信息熵)。
信息熵是固定的,我们要减小KL散度,就只需要关注前面的交叉熵,减小交叉熵。
3. 交叉熵和机器学习联系起来
这里,我们把ground truth看成不变的分布(标签是不变的)Q(x)。我们要做的是将我们预测出来的分布P(x)去逼近ground truth的标签的分布Q(x)。
所以我们如果用KL散度,就可以测出两个分布的接近程度。上一节也说了,只需要管交叉熵就好。所以我们要做的就是: min(-Q(x)*log(P(x)) = min(sum(qi(x)*log(p(x)))/n)
如此便推导出来了我们的cross-entropy loss。
4. 二分类情况
之所以这样写,是因为这个公式把Q(x)和P(x)具象化了。我们可以分析一下对于一个样本的标签分布是怎么样的:假设yi=True. 我的分布是不是{'True': 1.0, 'False':0.0},表示的是分布对应的概率。如果把True标签写成1,yi=1,我的分布可以这样写:{'1': yi, '0':1-yi}。
这样下来,模型预测的分布就是:{'1': yi_pred, '0':1-yi_pred}。对应位置带入公式:
min(sum(qi(x)*log(pi(x)))/n)
就得到了如下的形式。