二次代价函数和softmax交叉熵损失函数原理及分析

首先看一下二次代价函数:

以二分类问题,常见的sigmoid激活函数为例,假设x表示输入值,y表示真实标签(0或1),a表示预测输出,则二次代价函数可表示为:

C=\frac{(y-a)^2}{2}

其中a=\sigma (z)=\sigma (wx+b)=\frac{1}{1-e^{-x}}

那么代价函数对权重w和偏置b的偏导数分别为:

\frac{\partial C}{\partial w}=(\sigma (z)-y)\cdot \sigma '(z)\cdot x

\frac{\partial C}{\partial b}=(\sigma (z)-y)\cdot \sigma '(z)

从上式可以分析:当代价较大即输入输出差别较大时,\sigma (z)的值趋于0或1,此时\sigma '(z)的值趋于0,既权重w和偏置b的梯度趋于0。这与我们所期望的当代价较大即输入输出差别较大时,以较大的梯度下降更新权重w和偏置b相违背。

再看交叉熵损失函数:

同样以二分类问题为例,损失函数为:

C=-(yln(a)+(1-y)ln(1-a))

简单分析一下:当y为1时,上式变为:C=-ln(a),当预测结果越接近真实标签时损失越小。当y为0时,上式变为:C=-ln(1-a),当预测结果越接近真实标签时同样损失越小。这么看来交叉熵函数具有作为损失函数的性质。

接下来先推导一下交叉熵损失函数是怎么来的,再从导数角度分析其作为损失函数的可行性:

首先sigmoid函数的输出可以表征预测标签的概率,假设预测标签为1的概率表示为a=P(y=1|x),那么预测标签为0的概率则为1-a=P(y=0|x)。根据最大似然估计,有:

P(y|x)=a^y\cdot (1-a)^{(1-y)}

我们希望P(y|x)最大,对其取对数,再取负数,有:

C=-ln(P(y|x))=-(yln(a)+(1-y)ln(1-a))

即变成最小化C的问题,这便是交叉熵损失函数推导过程。

再看交叉熵损失函数对权重w和偏置b的偏导数,分别为:

\frac{\partial C}{\partial w}=-\left [ \frac{y}{\sigma (z)}\cdot \sigma '(z)-\frac{1-y}{1-a}\cdot \sigma '(z)]\cdot \frac{\partial z}{\partial w}\right ]=\left [ \frac{\sigma (z)-y}{\sigma (z)\left ( 1-\sigma (z) \right )}\cdot \sigma '(z) \right ]\cdot x

\sigma '(z)=\sigma (z)\left ( 1-\sigma (z) \right )带入上式,得:

\frac{\partial C}{\partial w}=x\left [ \sigma (z)-y \right ]

同理得:\frac{\partial C}{\partial b}=\sigma (z)-y

从上式可以分析:当代价较大即输入输出差别较大时,权重w和偏置b的梯度越大。这与我们所期望的当代价较大时以较大的梯度下降更新权重w和偏置b相符。因此,相比二次代价函数交叉熵损失函数更好。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值