神经网络 05(损失函数)

这篇具有很好参考价值的文章主要介绍了神经网络 05(损失函数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、损失函数

在深度学习中, 损失函数是用来衡量模型参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异,损失函数在不同的文献中名称是不一样的,主要有以下几种命名方式:

损失函数 (loss function)
代价函数(cost function)
目标函数(objective function)
误差函数(error function) 

神经网络 05(损失函数),神经网络,人工智能,深度学习

二、分类任务

在深度学习的分类任务中使用最多的是 交叉熵损失函数

2.1 多分类任务

在多分类任务通常使用softmax将logits转换为概率的形式,所以多分类的交叉熵损失也叫做softmax损失,它的计算方法是:

神经网络 05(损失函数),神经网络,人工智能,深度学习

其中,y 是样本 x 属于某一个类别的真实概率(onehot编码,0或者1),而 f(x) 是样本属于某一类别的预测分数,S 是 softmax 函数,L 用来衡量 p,q 之间差异性的损失结果。

举例:

神经网络 05(损失函数),神经网络,人工智能,深度学习

从概率角度理解,我们的目的是最小化正确类别所对应的预测概率的对数的负值,如下图所示:

神经网络 05(损失函数),神经网络,人工智能,深度学习

在tf.keras中使用CategoricalCrossentropy实现,如下所示:

# 导入相应的包
import tensorflow as tf
# 设置真实值和预测值
y_true = [[0, 1, 0], [0, 0, 1]]
y_pred = [[0.05, 0.95, 0], [0.1, 0.8, 0.1]]# 两个交叉熵求平均值
# 实例化交叉熵损失
cce = tf.keras.losses.CategoricalCrossentropy()
# 计算损失结果
print(cce(y_true, y_pred).numpy()) # 1.176939

2.2 二分类任务

在处理二分类任务时,我们不再使用 softmax 激活函数,而是使用 sigmoid 激活函数,那损失函数也相应的进行调整,使用二分类的交叉熵损失函数:

神经网络 05(损失函数),神经网络,人工智能,深度学习

跟逻辑回归的损失函数是一样的

其中,y是样本x属于某一个类别的真实概率,而y^是样本属于某一类别的预测概率,L用来衡量真实值与预测值之间差异性的损失结果。

在 tf.keras 中实现时使用 BinaryCrossentropy(),如下所示:

# 导入相应的包
import tensorflow as tf
# 设置真实值和预测值
y_true = [[0], [1]]
y_pred = [[0.4], [0.6]]
# 实例化二分类交叉熵损失
bce = tf.keras.losses.BinaryCrossentropy() # 两个交叉熵求平均值

# 计算损失结果
print(bce(y_true, y_pred).numpy()) # 0.5108254

三、回归任务

3.1 MAE损失

Mean absolute loss(MAE)也被称为 L1 Loss,是以绝对误差作为距离:

神经网络 05(损失函数),神经网络,人工智能,深度学习

神经网络 05(损失函数),神经网络,人工智能,深度学习

特点是:

由于 L1 loss 具有稀疏性,为了惩罚较大的值,因此常常 将其作为正则项添加到其他 loss中作为约束

L1 loss 的最大问题是梯度在零点不平滑(不可导),导致会跳过极小值。

在 tf.keras 中使用MeanAbsoluteError 实现,如下所示:

# 导入相应的包
import tensorflow as tf
# 设置真实值和预测值
y_true = [[0.], [0.]]
y_pred = [[1.], [1.]]
# 实例化MAE损失
mae = tf.keras.losses.MeanAbsoluteError()
# 计算损失结果
print(mae(y_true, y_pred).numpy()) # 1.0

3.2 MSE损失

 Mean Squared Loss/ Quadratic Loss(MSE loss) 也被称为 L2 loss,或欧氏距离,它以误差的平方和作为距离

神经网络 05(损失函数),神经网络,人工智能,深度学习

神经网络 05(损失函数),神经网络,人工智能,深度学习

特点是:L2 loss 也常常作为正则项。当预测值与目标值相差很大时, 梯度容易爆炸

在 tf.keras 中通过 MeanSquaredError 实现:

# 导入相应的包
import tensorflow as tf
# 设置真实值和预测值
y_true = [[0.], [1.]]
y_pred = [[1.], [1.]]
# 实例化MSE损失
mse = tf.keras.losses.MeanSquaredError()
# 计算损失结果
print(mse(y_true, y_pred).numpy()) # 0.5

3.3 smooth L1 损失

神经网络 05(损失函数),神经网络,人工智能,深度学习

其中:𝑥=f(x)−y 为真实值和预测值的差值

神经网络 05(损失函数),神经网络,人工智能,深度学习

从上图中可以看出,该函数实际上就是一个分段函数,在[-1,1]之间实际上就是L2损失,这样解决了L1的不光滑问题,在[-1,1]区间外,实际上就是L1损失,这样就解决了离群点梯度爆炸的问题。通常在目标检测中使用该损失函数。

在 tf.keras 中使用 Huber 计算该损失,如下所示:文章来源地址https://www.toymoban.com/news/detail-708304.html

# 导入相应的包
import tensorflow as tf
# 设置真实值和预测值
y_true = [[0], [1]]
y_pred = [[0.6], [0.4]]
# 实例化smooth L1损失
h = tf.keras.losses.Huber()
# 计算损失结果
h(y_true, y_pred).numpy() # 0.18

到了这里,关于神经网络 05(损失函数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 神经网络中的损失函数(下)——分类任务

    上文主要介绍了回归任务中常用的几个损失函数,本文则主要介绍分类任务中的损失函数。 为了与回归任务的损失函数形式相统一,此处仅考虑某一条数据的损失函数。 在分类任务中,假设一共有 n n n 个类别。该数据的真实值 Y Y Y 一般用独热编码(只有某一位为1,其余都

    2024年01月17日
    浏览(8)
  • yolov5目标检测神经网络——损失函数计算原理

    yolov5目标检测神经网络——损失函数计算原理

    前面已经写了4篇关于yolov5的文章,链接如下: 1、基于libtorch的yolov5目标检测网络实现——COCO数据集json标签文件解析 2、基于libtorch的yolov5目标检测网络实现(2)——网络结构实现 3、基于libtorch的yolov5目标检测网络实现(3)——Kmeans聚类获取anchor框尺寸 4、C++实现Kmeans聚类算法获

    2024年02月02日
    浏览(17)
  • 人工智能 -- 神经网络

    人工智能 -- 神经网络

    什么是人工智能?通俗来讲,就是让机器能像人一样思考。这个无需解释太多,因为通过各种科幻电影我们已经对人工智能很熟悉了。大家现在感兴趣的应该是——如何实现人工智能? 从1956年夏季首次提出“人工智能”这一术语开始,科学家们尝试了各种方法来实现它。这

    2024年02月05日
    浏览(13)
  • 人工智能-神经网络

    人工智能-神经网络

    目录 1 神经元 2 MP模型 3 激活函数       3.1 激活函数       3.2 激活函数作用       3.3 激活函数有多种 4、神经网络模型 5、神经网络应用 6、存在的问题及解决方案 6.1 存在问题 6.2 解决方案-反向传播        神经元是主要由 树突、轴突、突出 组成, 树突 是从上面接收很

    2024年02月16日
    浏览(17)
  • 人工智能神经网络概念股,神经网络芯片概念股

    人工智能神经网络概念股,神经网络芯片概念股

    人工智能包含硬件智能、软件智能和其他。 硬件智能包括:汉王科技、康力电梯、慈星股份、东方网力、高新兴、紫光股份。 软件智能包括:金自天正、科大讯飞。 其他类包括:中科曙光、京山轻机。 谷歌人工智能写作项目:小发猫 1、苏州科达:苏州科达科技股份有限公

    2024年02月07日
    浏览(12)
  • 人工智能-卷积神经网络

    人工智能-卷积神经网络

            人和动物如何把看到的图像转化为大脑中的一个概念?         我们知道计算机是把图转换为一大堆数字,通过训练可以知道这堆数字代表什么含义。但通过前面学过神经网络模型和梯度下降法的方法训练费时费力,而且一旦图片进行改变如缩放、旋转或其他变换,

    2024年02月16日
    浏览(10)
  • 人工智能-线性神经网络

    线性神经网络 在介绍深度神经网络之前,我们需要了解神经网络训练的基础知识。 本章我们将介绍神经网络的整个训练过程, 包括:定义简单的神经网络架构、数据处理、指定损失函数和如何训练模型。 为了更容易学习,我们将从经典算法———— 线性 神经网络开始,介

    2024年02月06日
    浏览(12)
  • 人工智能:CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的知识梳理

    卷积神经网络(CNN),也被称为ConvNets或Convolutional Neural Networks,是一种深度学习神经网络架构,主要用于处理和分析具有网格状结构的数据,特别是图像和视频数据。CNN 在计算机视觉任务中表现出色,因为它们能够有效地捕获和识别图像中的特征,具有平移不变性(transla

    2024年02月05日
    浏览(15)
  • 【复习】人工智能 第 8 章 人工神经网络及其应用

    【复习】人工智能 第 8 章 人工神经网络及其应用

    因为计算牵扯到导数,所以这章难的部分不会考太难。 人工神经网络是对人脑或生物神经网络若干基本特性的抽象和模拟。 深度学习是神经网络的发展。 人工智能曾经历过很长一段时间的停滞不前。 浩瀚的宇宙中,也许只有包含数千忆颗星球的银河系的复杂性能够与大脑相

    2024年01月19日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包