专栏首页贾志刚-OpenCV学堂一文综述神经网络中常用的损失函数 | DL入门

一文综述神经网络中常用的损失函数 | DL入门

点击上方↑↑↑“OpenCV学堂”关注我

来源:公众号 磐创AI 授权转载

译者|VK

来源|Towards Data Science

不同的损失函数可用于不同的目标。在这篇文章中,我将带你通过一些示例介绍一些非常常用的损失函数。这篇文章提到的一些参数细节都属于tensorflow或者keras的实现细节。

损失函数的简要介绍

损失函数有助于优化神经网络的参数。我们的目标是通过优化神经网络的参数(权重)来最大程度地减少神经网络的损失。通过神经网络将目标(实际)值与预测值进行匹配,再经过损失函数就可以计算出损失。然后,我们使用梯度下降法来优化网络权重,以使损失最小化。这就是我们训练神经网络的方式。

均方误差

当你执行回归任务时,可以选择该损失函数。顾名思义,这种损失是通过计算实际(目标)值和预测值之间的平方差的平均值来计算的。

例如,你有一个神经网络,通过该网络可以获取一些与房屋有关的数据并预测其价格。在这种情况下,你可以使用MSE(均方误差)损失。基本上,在输出为实数的情况下,应使用此损失函数。

二元交叉熵

当你执行二元分类任务时,可以选择该损失函数。如果你使用BCE(二元交叉熵)损失函数,则只需一个输出节点即可将数据分为两类。输出值应通过sigmoid激活函数,以便输出在(0-1)范围内。

例如,你有一个神经网络,该网络获取与大气有关的数据并预测是否会下雨。如果输出大于0.5,则网络将其分类为会下雨;如果输出小于0.5,则网络将其分类为不会下雨。即概率得分值越大,下雨的机会越大。

训练网络时,如果标签是下雨,则输入网络的目标值应为1,否则为0。

重要的一点是,如果你使用BCE损失函数,则节点的输出应介于(0-1)之间。这意味着你必须在最终输出中使用sigmoid激活函数。因为sigmoid函数可以把任何实数值转换(0–1)的范围。(也就是输出概率值)

如果你不想在最后一层上显示使用sigmoid激活函数,你可以在损失函数的参数上设置from logits为true,它会在内部调用Sigmoid函数应用到输出值。

多分类交叉熵

当你执行多类分类任务时,可以选择该损失函数。如果使用CCE(多分类交叉熵)损失函数,则输出节点的数量必须与这些类相同。最后一层的输出应该通过softmax激活函数,以便每个节点输出介于(0-1)之间的概率值。

例如,你有一个神经网络,它读取图像并将其分类为猫或狗。如果猫节点具有高概率得分,则将图像分类为猫,否则分类为狗。基本上,如果某个类别节点具有最高的概率得分,图像都将被分类为该类别。

为了在训练时提供目标值,你必须对它们进行一次one-hot编码。如果图像是猫,则目标向量将为(1,0),如果图像是狗,则目标向量将为(0,1)。基本上,目标向量的大小将与类的数目相同,并且对应于实际类的索引位置将为1,所有其他的位置都为零。

如果你不想在最后一层上显示使用softmax激活函数,你可以在损失函数的参数上设置from logits为true,它会在内部调用softmax函数应用到输出值。与上述情况相同。

稀疏多分类交叉熵

该损失函数几乎与多分类交叉熵相同,只是有一点小更改。

使用SCCE(稀疏多分类交叉熵)损失函数时,不需要one-hot形式的目标向量。例如如果目标图像是猫,则只需传递0,否则传递1。基本上,无论哪个类,你都只需传递该类的索引。

这些是最重要的损失函数。训练神经网络时,可能会使用这些损失函数之一。

以下链接是Keras中所有可用损失函数的源代码。

(https://github.com/keras-team/keras/blob/c658993cf596fbd39cf800873bc457e69cfb0cdb/keras/backend/numpy_backend.py?source=post_page-----dd1ed0274718----------------------#L325)

本文分享自微信公众号 - OpenCV学堂(CVSCHOOL)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 写 Python 代码不可不知的函数式编程技术

    近来,越来越多人使用函数式编程(functional programming)。因此,很多传统的命令式语言(如 Java 和 Python)开始支持函数式编程技...

    OpenCV学堂
  • OpenCV图像噪声与去噪函数方法对比使用介绍

    图像去噪在二值图像分析、OCR识别预处理环节中十分重要,最常见的图像噪声都是因为在图像生成过程中因为模拟或者数字信号受到干扰而产生的,常见的噪声类型有如下:

    OpenCV学堂
  • 基于OpenCV与tensorflow实现实时手势识别

    基于OpenCV与tensorflow object detection API使用迁移学习,基于SSD模型训练实现手势识别完整流程,涉及到数据集收集与标注、V...

    OpenCV学堂
  • 一文综述神经网络中常用的损失函数 | DL入门

    不同的损失函数可用于不同的目标。在这篇文章中,我将带你通过一些示例介绍一些非常常用的损失函数。这篇文章提到的一些参数细节都属于tensorflow或者keras...

    磐创AI
  • 深度学习: 目标函数

    目标函数 (object function) = 损失函数 (loss function) = 代价函数 (cost function)

    JNingWei
  • Excel公式技巧53: 使用TEXTJOIN函数反转文本

    在《Excel公式技巧48:生成从大到小连续的整数》中,我们使用LEN函数和ROW函数组合,可以生成从大到小的连续整数,再将其与MID配合,则可从结尾至开头逐个...

    fanjy
  • 要做好深度学习任务,不妨先在损失函数上「做好文章」

    损失函数对于机器学习而言,是最基础也最重要的环节之一,因此在损失函数上「做好文章」,是一个机器学习项目顺利进行的前提之一。Deep Learning Demys...

    AI科技评论
  • 损失函数详解

    在任何深度学习项目中,配置损失函数是确保模型以预期方式工作的最重要步骤之一。损失函数可以为神经网络提供很多实际的灵活性,它将定义网络的输出如何与网络的其他部分连...

    AiTechYun
  • 基于深度学习的自然图像和医学图像分割:损失函数设计(1)

    作者:李慕清 https://zhuanlan.zhihu.com/p/106005484 本文已由原作者授权,不得擅自二次转载

    Amusi
  • 【学习】笨办法学R编程(二)

    经历了前面两个小挑战,你应该对R有点理解了。我们继续推进,今天的问题有点点复杂,复杂的不是R,而是一个数学概念:质数和质因子。任何一个合数都可以...

    小莹莹

扫码关注云+社区

领取腾讯云代金券