为什么交叉熵代价函数能够取代均方误差函数

我们设计神经网络的目的是为了实现一种模型,这个模型能够对数据做出合适的处理。比如分类问题,网络能够 以尽可能高的准确率对样本分类。
那么如何评价网络的性能?
这就需要使用代价函数(Cost function)。代价函数能够体现网络的处理结果和实际数据差别程度。
下面介绍为什么现在的神经网络要使用交叉熵代价函数。
首先,先说一下MSE,均方误差函数,这个函数在很多地方(常见于线性回归问题上,针对不同的问题会使用不同的代价函数)都会用,用来评价算法性能。
MSE的表达式是
在这里插入图片描述
一般的神经网络结构如下
在这里插入图片描述
根据梯度下降算法更新网络权重的公式是
在这里插入图片描述
其中J代表代价函数,使用均方误差函数即
在这里插入图片描述
在这里插入图片描述
--------------------------------------------------------------------------------------下面符号进行统一
为了方便,仅看w1的更新,根据权值更新公式
在这里插入图片描述
代表α学习率, 代表J代价函数, 代表第k次更新后的第i个权值
在这里插入图片描述
在这里插入图片描述
a代表激活函数(一定记住,数据在经过每层输出时一般要经过一个激活函数)根据链式法则,偏微分表达式可以看成如下形式
在这里插入图片描述
第一部分是
在这里插入图片描述
第二部分是
在这里插入图片描述
第三部分是
在这里插入图片描述
整合三部分可得
在这里插入图片描述
观察(7),其大小与激活函数的导数有关
以sigmoid激活函数为例,演示为什么二次均方误差不用来当做代价函数

Sigmoid函数图像
Sigmoid函数图像
Sigmoid函数的导数图像
在这里插入图片描述
在这里插入图片描述
解决这个问题的办法,可从以下几个方面入手
1.改变激活函数
2.改变代价函数
3.不使用上面那个权值更新公式
此处,只讨论2途径,即使用交叉熵代价函数。
交叉熵代价函数
在这里插入图片描述
利用在这里插入图片描述
在这里插入图片描述
此时激活函数仍用sigmoid函数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可见上面的表达式中,不含导数项,也就解决了梯度更新缓慢的问题。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值