美文网首页
-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