二分类问题的sigmoid交叉熵损失函数推导

本文章参考deeplearning 一书第六章6.2.2.2  Sigmoid Units for Bernoulli Output Distributions  

要建立一个模型,不可或缺的有:1、数据,2、损失函数,3、模型算法,4、优化算法。

今天我们讨论下损失函数这块。损失函数的设计,与模型最后输出的内容是有一定关联的。所以我们今天讨论二分类问题的损失函数时,主要讲两方面,一方面是模型的输出,一方面是最大似然估计。

sigmoid输出值 和 伯努利概率之间的关系

就二分类问题而言,我们现在都了解,一般情况下计算出\mathbf{w}^{^{T}}\cdot \mathbf{h}+b之后,会将σ(\mathbf{w}^{^{T}}\cdot \mathbf{h}+b)作为模型的输出,并且当作是P(y=1|x)  (这里的P(y=1|x) 是伯努利分布中随机变量为1的概率)。那么σ(\mathbf{w}^{^{T}}\cdot \mathbf{h}+b)和 P(y=1|x)之间有怎样的关系呢?deeplearning一书中的6.2.2.2给出了推导。

以下都以书中的公式为准。

一个sigmoid output unit 是这样定义的:(这里的h指的是隐藏层单元,这里的σ就是 logistic sigmoid function,有忘记公式的可以搜一下)

\hat{y}=\sigma (\mathbf{w}^{^{T}}\cdot \mathbf{h}+b)       

那么在线性层输出\mathbf{w}^{^{T}}\cdot \mathbf{h}+b的基础上,作用一个sigmoid函数就可以表示一个概率值了吗?我们的目的就是要证明\sigma (\mathbf{w}^{^{T}}\cdot \mathbf{h}+b)确实能表示为一个伯努利分布中随机变量为1时的概率值,书里做了如下的推导:

第一步:假设z=\mathbf{w}^{^{T}}\cdot \mathbf{h}+b

第二步:构造一个\tilde{P}(y),使其满足 log\tilde{P}(y)=yz ,也就是\tilde{P}(y)=exp(yz)。 (构造的\tilde{P}(y)是一个unnormalized probability distribution,也就是没有归一化的概率分布。这是构造法,只要构造的这个概率分布可以满足我们的需求即可,但是这个构造也是基于对最大似然估计的梯度下降法有利这样一个目的)。

第三步:将构造的\tilde{P}(y)进行归一化(除以一个常数),使其成为一个有效的概率分布P(y)。那么P(y)=\frac{exp(yz)}{exp(0z)+exp(z)} =\frac{exp(yz)}{1+exp(z)},此时满足P(y=0)+P(y=1)=1,满足伯努利概率分布。

第四步:接下来看这个构造好的归一化的P(y),是否可以和\sigma (z)联系起来,

当y=0时,P(y=0)=\frac{1}{1+exp(z)}=\sigma(-z)=1-\sigma(z);

当y=1时,P(y=1)=\frac{exp(z)}{1+exp(z)}=\sigma(z)

上述两个推导,可以表明我们的输出\sigma (z)是一个伯努利分布中随机变量为1时的概率值,并且这个伯努利分布就是构造出来的P(y)

将上边两个推导式子归纳一下,可得P(y)=\sigma((2y-1)z)。 (不妨假设将(ay+b)z 作为sigmoid函数的输入, 其中a,b是两个参数,可以得出此解,利用\sigma (-z)=1-\sigma (z)哦)

第五步:总结。\sigma (z)对应着P(y=1),\sigma (-z)=1-\sigma (z)对应着P(y=0),并且这里的这个伯努利分布P(y)等于\sigma((2y-1)z) 。这样就证实了我们使用sigmoid函数是有依据的,不单单只是因为sigmoid函数输出值位于(0,1)区间,看似是概率这么简单。

通过上述的推导,可以得出在线性层输出\mathbf{w}^{^{T}}\cdot \mathbf{h}+b的基础上,作用一个sigmoid函数得到的值确实可以表示为一个伯努利分布中随机变量为1时的概率值。这个伯努利分布就是\sigma((2y-1)z)(公式中的z为:z=\mathbf{w}^{^{T}}\cdot \mathbf{h}+b)。

 

使用sigmoid作为输出,利用最大似然方法优化

对于大部分的任务(回归 or 分类),最大似然估计的应用比较常见。最大似然估计是点估计的一种。「最大化 log likelihood」  可以间接理解为 「最小化交叉熵」。(有关这部分知识如果有不明白的同学可以在评论区留言哦~)

利用最大似然法估计参数时,损失函数是-log(P(y))  (也可以理解为交叉熵)。把我们上边的推导出来的结果带入损失函数公式里,我们记 \hat{y}=\sigma (z) ,也就是将模型输出当作是预测为1的概率,那么:

当y=0时,损失函数为-log(P(y=0)) =-log(\sigma (-z)) =-log(1-\sigma (z)) =-log(1-\hat{y})

                                                              =-(1-y)log(1-\hat{y})

当y=1时,损失函数为-log(P(y=1))=-log(\sigma (z))=-log(\hat{y})=-ylog(\hat{y})

将上边两个公式合起来就是-ylog(\hat{y})-(1-y)log(1-\hat{y})

自此,将输出设置为sigmoid函数,利用最大似然估计时(也可以理解为最小化交叉熵),损失函数的推导就结束啦~有不正确的地方欢迎各位大佬留言~

猜你喜欢

转载自blog.csdn.net/qq_32103261/article/details/108713763