host error什么意思_为什么使用交叉熵作为损失函数

fde97f7bf525b3e8a4d9691f89926661.png

现在,有一个分类问题:

  • feature是2维的向量
  • 目标类别有3种
  • 一共有4个样本:

我们准备用一个只有一层的全连接神经网络来解决这个问题(使用多层神经网络推导太复杂,并且不利于理解,多层神经网络不是讲清此问题的关键)。

首先,我们需要使用one-hot来表示目标类别(为什么使用one-hot是另一个问题),所以,全连接神经网络的最后一层有三个数字。

哎呀!样本数太多了写起来很复杂,在计算loss时,只是简单地对多个样本产生的损失求均值,所以下面我们改一下问题:假设只有一个样本,这个样本的特征为

,这个样本经过全连接神经网络之后输出为:
,真实值为

不妨设这个样本的类别为1,它的one-hot真实向量为(1,0,0)。

其实,在最后一层输出的时候,我们需要使用softmax把

进行归一化。softmax的过程此处就省略了,
就当
已经是softmax之后的结果了吧(因为softmax不是解释此问题的关键)

下面看平方误差:

再看交叉熵误差:

其中,

表示真实值,
表示预测值。三部分是完全相同的,它们反向传播时效果是相似的。所以,我们只分析
对权值的影响,和
有关的三个权值是
,别的权值不用看。我们只分析损失z对
的影响。

对于平方误差:

我们想知道的是什么?我们想知道的是

。也就是
调整的幅度和绝对误差
之间的关系。

记绝对误差

因为我们使用了one-hot,所以

的真实值只能取0和1,而one-hot之后
的值必然在0到1之间。

时,
,代入
得到

此式中,

是常量,不必关心,我们只看
的形状

这个函数长啥样子?

import 

8b8d30ff80445df2fc9248d64309acfb.png
随着绝对误差的增大,权值需要调整的幅度先变大后变小,这就导致当绝对误差很大时,模型显得“自暴自弃”不肯学习

随着绝对误差的增大,权值需要调整的幅度先变大后变小,这就导致当绝对误差很大时,模型显得“自暴自弃”不肯学习

对于交叉熵误差:

可以看到,使用交叉熵之后,绝对误差和需要调整的幅度成正比。

我们回过头来比较平方损失和交叉熵损失的区别,会发现:

  • 平方损失的“罪魁祸首”是sigmoid函数求导之后变成
    ,平白无故让曲线变得非常复杂,如果前面能够产生一个
    把后面多余项“吃掉”多好
  • 交叉熵的优势就是:它求导之后只提供了一个
    去中和后面的导数。

以上都只是理论推导,那么实际上到底是不是这么回事呢?我们可以做个实验:

,其中x=1,y=1。w始终在变化,b始终固定为0.2。在w变化过程中,我们记录下绝对误差和w的梯度。
import 

fa0d2aa56f950e1d7604b64fab39e3e2.png
实验证明,理论推导是正确的:交叉熵使得梯度与绝对误差成正比,二范数导致梯度变得扭曲

参考资料

简单的交叉熵损失函数,你真的懂了吗?​www.jianshu.com
0fbe54e420b297e5d4fb136d5d52eeee.png
红色石头:简单的交叉熵损失函数,你真的懂了吗?​zhuanlan.zhihu.com
bb20646f1b77e29e51b21e486a74ceac.png
蔡杰:简单的交叉熵,你真的懂了吗?​zhuanlan.zhihu.com
cab61ce84a2d44622c980ba0b53de9dd.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值