数据分析-神经网络-损失函数

目录

前言

均方误差(MSE)

平均绝对误差(MAE)

二元交叉熵

(tf.keras.losses.binary_crossentropy)

多分类交叉熵

(tf.keras.losses.categorical_crossentropy)

稀疏多分类交叉熵

(tf.keras.losses.sparse_categorical_crossentropy)


前言

损失函数就是神经网络每次迭代的前向计算表达式与真实值的差,是神经网络优化的基础,神经网络模型据此调整权重和bias,使得神经网络模型的输出值向真实值靠近。

  1. 用随机值初始化权重和bias;
  2. 输入样本,模型输出的预测值;
  3. 用损失函数计算预测值和真实值的差;
  4. 对损失函数求导(对权重和bias),沿梯度最大方向将误差回传,修正权重与bias;
  5. goto 2, 直到损失函数值足够小或到迭代次数上限。

均方误差(MSE)

神经网络做回归时,可以选择均方误差作为损失函数(真实值和预测值的平方差的平均值)。

可以认为模型输出为实数时,可使用此损失函数。输出层不使用激活函数。

平均绝对误差(MAE)

神经网络做回归时,除了可以选择均方误差作为损失函数,也可以使用MAE(真实值和预测值差的绝对值的平均值)。

同样模型输出为实数时,可使用此损失函数。

输出层不使用激活函数。

二元交叉熵

(tf.keras.losses.binary_crossentropy

神经网络用于二元分类任务时,输出层一个节点,输出通常使用sigmoid激活函数,输出在(0-1)范围,为样本属于0,1类别的概率。可使用二元交叉熵损失函数。

例如,神经网络对猫狗图像分类。如果输出大于0.5,则网络将其分类为猫(猫的标签为1);如果输出小于0.5,则网络将其分类为狗。即概率得分值越大,猫的机会越大。

在二分类的情况下,模型最后需要预测的结果只有两种情况,对于每个类别我们的预测得到的概率为p_{i}1-p_{i},此时交叉熵计算公式为:

1/n\sum(-y_{i}*lnp_{i})-(1-y_{i})*ln(1-p_{i})

 其中:
- 其中y_{i} 表示样本i 的label,正类为1,负类为 0
-  p_{i}表示样本  预测为正类的概率

预测真实是否正确
0.30  (狗-负类)正确
0.61  (猫-正类)正确

 交叉熵为:

1/2(-0*ln(0.3)+(1-0)ln(1-0.3)+(-1*ln(0.6)-(1-1)ln(0.4))

多分类交叉熵

tf.keras.losses.categorical_crossentropy

对于多类分类任务,可以选择多分类交叉熵损失函数。使用多分类交叉熵损失函数,输出节点的数量必须与这些类相同。最后一层的输出应该通过softmax激活函数,以便每个节点输出介于(0-1)之间的概率值,所有输出节点的概率之和为1,概率最大的输出对应的类别为该样本的类别。样本的标签为one-hot编码。

例如,在一个多分类神经网络中,它读取图像并将其分类为T恤,背心,鞋子,裙子,裤子。如果鞋子输出节点具有最高概率得分,则将图像分类为鞋子。

多分类的交叉熵计算公式为:

 

稀疏多分类交叉熵

(tf.keras.losses.sparse_categorical_crossentropy

该损失函数与多分类交叉熵基本相同,区别在使用稀疏多分类交叉熵损失函数时,不需要对数据集标签进行one-hot形式的编码,使用标签编码即可。模型输出和多分类交叉熵一样,多少类别就对应多少输出节点。激活函数使用softmax。

待完善......

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ITLiu_JH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值