美文网首页
-0.1- 分类问题 & 交叉熵损失

-0.1- 分类问题 & 交叉熵损失

作者: emm_simon | 来源:发表于2020-04-16 14:17 被阅读0次

[参考link]

-1- 话不多说,先上公式

L_{_{cross\_entropy}} = - \frac {\sum_{i=1}^N {y_i·log(\hat{y_i}) + (1-y_i)·log(1 - \hat{y_i})} } {N}

其中:
* N是样本集的样本量
* i表示第i条样本
* y_i为当前这条样本的真实label值
* \hat y_i为模型预测该条样本label为1的概率P

-2- 二分类问题的Loss定义

我们知道,对于二分类问题,样本的标签为0 or 1,模型的预测概率为该条样本取1 label的概率,概率值的范围为[0.0, 1.0]

-2.1- 对于样本,模型预测取label为1的概率

P(y=1|x) = \widehat y
对于正样本,我们希望模型的预测结果\widehat y越大越好,越接近1.0越好,即P(y=1|x)越大越好。

-2.2- 对于样本,模型预测取label为0的概率

则当前样本取label为0的概率为:
P(y=0|x) = 1 - \widehat y
对于负样本,我们希望模型的预测结果\widehat y越小越好,越接近0.0越好,即P(y=0|x)越大越好。

-2.3- 对于所有样本,模型预测取该条样本真实label的概率

由于y的取值只可能是0或1,经过巧妙的转化,上面两个式子可以改写成:
P(label=y|x) = ( \widehat y )^{y}·(1 - \widehat y )^{1-y}\ \ \ \ \ \ \ \ y\in{\{0,1\}}

也即:
*当真实样本标签为1时,模型预测label取1的概率就是
P(label=y=1|x) = \widehat y
*当真实样本标签为0时,模型预测label取0的概率就是
P(label=y=0|x) = 1 - \widehat y
两种情况下概率表达式跟之前的完全一致,只不过我们把模型预测label取1的概率模型预测label取0的概率两种情况整合在一起了,统一为模型预测取该样本真实label的概率

-2.4- 模型预测取该样本真实label的概率P(y|x)越大越好

现在不用纠结是P(y=1|x)越大越好还是P(y=0|x)越大越好,而是可以很直接地说,我们希望模型预测出样本真实label的概率越大越好,即我们希望的是概率P(y|x)越大越好,而且是对所有的样本整体而言,\prod{P(y|x)}越大越好
我们知道一个模型就是由模型结构各单元的参数矩阵来定义,则通过训练我们希望得到的模型就是:
Model_{\ _{Weight\_Matrix}} = arg\,\max_{w} {\prod{P(y|x)}}
* -2.4.1- 引入log()函数,连乘变连加
首先,我们对 P(y|x) 引入 log 函数,因为 log 运算并不会影响函数本身的单调性。而且log运算可以把概率的连乘操作改成连加操作,更适用于计算机计算,则有:
\begin{equation}\begin{split} Model_{\ _{Weight\_Matrix}} &=arg\,\max_{w} {\prod{P(y|x)}} \\ &=arg\,\max_{w} log({\prod{P(y|x)}}) \\ &=arg\,\max_{w}{\sum{ log(P(y|x))}} \end{split}\end{equation}

其中,log(P(y|x))可以拆成:
\begin{equation}\begin{split} log(P(y|x)) &= log(( \widehat y )^{y}·(1 - \widehat y )^{1-y})\\ &= y·log(\widehat{y}) + (1-y)·log(1 - \widehat{y}) \end{split}\end{equation}

* -2.4.2- 损失函数
我们希望 P(y|x) 越大越好,反过来,只要取负值之后越小就行了。自然地,我们引入损失函数 Loss = -log P(y|x) 即可:
\begin{equation}\begin{split} Model_{\ _{Weight\_Matrix}} &=arg\,\max_{w} {\prod{P(y|x)}} \\ &=arg\,\max_{w} log({\prod{P(y|x)}}) \\ &=arg\,\max_{w}{\sum{ log(P(y|x))}} \\ &=arg\,\min_{w} -{\sum{ log(P(y|x))}} \\ &=arg\,\min_{w} -{\sum{y·log(\widehat{y}) + (1-y)·log(1 - \widehat{y})}} \end{split}\end{equation}

至此就是完整的交叉熵损失函数的推导过程。

-3- 交叉熵损失函数的直观理解

通过以上的推导过程,我们知道了样本集上交叉熵的计算公式:
L_{_{cross\_entropy}} = - \frac {\sum_{i=1}^N {y_i·log(\hat{y_i}) + (1-y_i)·log(1 - \hat{y_i})} } {N}
*假设,样本集全是正样本,取y=1,可得:
L_{_{cross\_entropy}} = - \frac {\sum_{i=1}^N {log(\hat{y_i})} } {N}

可以看出,对于一条样本,预测概率\hat y越接近1,损失越小。

*假设,样本集全是负样本,取y=0,可得:
L_{_{cross\_entropy}} = - \frac {\sum_{i=1}^N {log(1 - \hat{y_i})} } {N}


可以看出,对于一条样本,预测概率越接近0,损失越小。

相关文章

网友评论

      本文标题:-0.1- 分类问题 & 交叉熵损失

      本文链接:https://www.haomeiwen.com/subject/xsprvhtx.html