深度学习相关概念:交叉熵损失

  • 交叉熵损失详解
    • 1.激活函数与损失函数
      • 1.1激活函数:
      • 1.2损失函数:
    • 2.对数损失函数(常用于二分类问题):
    • 3.交叉熵、熵、相对熵三者之间的关系
    • 4.交叉熵损失函数(常用于多分类问题)
      • 4.1交叉熵的作用:
    • 5.交叉熵损失 VS 多类支撑向量机损失

  我在学习深度学习的过程中,发现交叉熵损失在分类问题里出现的非常的频繁,但是对于交叉熵损失这个概念有非常的模糊,好像明白又好像不明白,因此对交叉熵损失进行了学习。

交叉熵损失详解

1.激活函数与损失函数

  首先我们要知道的一点是,交叉熵损失是损失函数的一种。但是在神经网络中,我们常常又听到另外一种函数:激活函数,这2种函数到底有什么区别呢?他们的作用是什么?

1.1激活函数:

   激活函数就是将神经网络上一层的输入,经过神经网络层的非线性变换转换后,通过激活函数,得到输出。常见的激活函数包括:Sigmoid、Tanh、 Relu等。
不同的激活函数之间有以下的区别:

  1. 梯度特性不同,Sigmoid函数和Tanh函数的梯度在饱和区非常平缓,接近于0,很容易造成梯度消失的问题,减缓收敛速度。但梯度平缓使得模型对噪声不敏感
  2. Relu函数的梯度大多数情况下是常数,有助于解决深层网络的收敛问题。Relu函数的另一个优势在于其生物方面的合理性,它是单边的,更符合生物神经元的特征。Relu更容易学习优化,是因为其分段线性性质,导致其前传、后传、求导都是分段线性,而传统的Sigmoid函数,由于两端饱和,在传播中容易丢失信息

1.2损失函数:

  损失函数是度量神经网络的输出的预测值与实际值之间的差距的一种方式。常见的损失函数包括:对数损失函数、交叉熵损失函数、回归中的Mae(L1 Loss) Mse(L2 Loss)损失函数等。

2.对数损失函数(常用于二分类问题):

Tip:什么是二分类问题?
  即某一事件只存在是(1)或者不是(0)的现象。如果分类任务中有两个类别,比如我们想识别一幅图片是不是狗。我们训练一个分类器,输入一幅图片,输出是不是狗,用y=0或1表示。

对数损失函数(二分类交叉熵损失,逻辑回归损失):

  对数损失函数的基本思想是极大似然估计,极大似然估计简单来说,就是如果某一个事件已经发生了,那么就认为这事件发生的概率应该是最大的。似然函数就是这个概率,我们要做的就是基于现有数据确定参数从而最大化似然函数。在进行似然函数最大化时,会对多个事件的概率进行连续乘法。连续乘法中很多个小数相乘的结果非常接近0,而且任意数字发生变化,对最终结果的影响都很大。为了避免这两种情况,可以使用对数转换将连续乘法转换为连续加法。对数函数是单调递增函数,转换后不会改变似然函数最优值的位置。前面负号,我们就将最大似然函数转换为求解最小损失函数。二分类问题的对数损失函数如下:

   y_i表示实际情况下某类事件是否发生(0或1),p_i表示事件发生的概率,由sigmoid函数得到概率p。

  如果样本只有一个的话,会有如下两种情况:

    当y=1时,损失函数为 -ln§,如果想要损失函数尽可能的小,那么概率p就要尽可能接近1。
    当y=0时,损失函数为 -ln(1-p),如果想要损失函数尽可能的小,那么概率p就要尽可能接近0。

  但是如果有m个样本的时候,则损失函数公式如下:


  假设有三个独立事件,1 表示事件发生,现在三个事件发生情况为(1,1,0),通过神经网络得到三个事件发生的概率为(0.8, 0.7, 0.1),使用上面的公式计算损失值为0.69,损失值很小,说明神经网络预测的这组概率正确的可能性很大;同样的这组概率,三个事件发生情况为(0,0,1),计算得到的损失值5.12,损失值很大,说明神经网络预测的这组概率正确的可能性很小。

3.交叉熵、熵、相对熵三者之间的关系

  交叉熵、相对熵、熵之间可以相互推导。具体见下图。
相对熵用来衡量两个分布之间的不相似性。越不相似的相对熵越大,越相似的相对熵越小。例如,狗和猪的相似 性为0.02,猫和狗的相似性可能为0.2.

  当事件分布满足one-hot分布,即A,B,C三件事的发生概率为(1 0 0)或(0 1 0)或(0 0 1)时,交叉熵=熵,也就是说交叉熵损失函数等于对数损失函数,具体推导见下图。

4.交叉熵损失函数(常用于多分类问题)

Tips:什么是多分类?

  多类分类(Multiclass classification): 表示分类任务中有多个类别, 比如对一堆动物图片分类, 它们可能是猫、狗、鸟等. 多类分类是假设每个样本都被设置了一个且仅有一个标签: 一个动物可以是狗或者猫, 但是同时不可能是两者。

4.1交叉熵的作用:

衡量多分类器输出与预测值之间的关系

  交叉熵损失函数的标准形式如下:

  注意公式中 x 表示样本, y表示实际的标签,a 表示预测的输出, n表示样本总数量。

5.交叉熵损失 VS 多类支撑向量机损失

  在下面的图中,第二行居然有一个0.23,接近0.24的损失,而多类支撑向量机损失确是零,为什么会有这样的损失?因为你把这(10(鸟) 9(猫) 9(狗))归一化以后是不是近似于接近于这个事情的概率是1/3,就可能是1.2/3、0.9/13、0.9/3,第一个就比第二个强了一丢丢。但是从概率的角度讲,这个地方的损失是负的,接近于-log(1/3),但是虽然鸟是比猫狗和猫大了,但是鸟的概率值还很小,鸟的概率我是0.34,其他两个都0.33,鸟是最大的。我们做分类输出的时候,我们是会把它判断成鸟,但是神经网络输出的时候你是属于鸟,但是你的概率只有0.34,所以神经网络不希望这样,神经网络希望输出的结果训练以后说的,我告诉你属于鸟,其实而且鸟类的概率比较高,最好是0.9以上。但是多类支撑向量机损失在这个情况下,他会把损失判断为0,不在优化算法,但是由于3者之间差距实在太小,你这次可能预测为鸟类是正确的,但是下次就未必正确,这就导致我们神经网络的训练精度不能提高。但是交叉熵损失,在这种情况下他并没有停止训练,这个时候他依然有很大的损失,他会要求这个分数尽量的高。而且不仅要求鸟类高,我还要求猫和狗的概率低,所以交叉商损失就是这个作用,就是我高的时候不是要压低别人的分数,而多类支持向量机损失呢,我只要比别人高一分就行了,我不管你是多少分,我这比你高一分儿我就完事儿了。这就是这两类损失最大区别。所以有些时候在我们有些时候训练分类器的时候,我们会遇到这样的情况:我这个损失函数一直没怎么变的,但是我的预测精度acc却在一直的增加。



  如上图,尽管A组和B组的损失几乎是一样的,但是却是预测正确和预测错误,在我反向传播时权重稍微调整一下,我就能让我预测正确,但是我的损失并没有怎么样的改变,这就是为什么我的总损失并没有怎么样变化,但是我的精度在一直在上升,就是因为我们这个概率预测的这个值略微比其他的渗出了一点点,大家还处于势均力敌的状态。

深度学习相关概念:交叉熵损失相关推荐

  1. 深度学习中交叉熵_深度计算机视觉,用于检测高熵合金中的钽和铌碎片

    深度学习中交叉熵 计算机视觉 (Computer Vision) Deep Computer Vision is capable of doing object detection and image ...

  2. 简要介绍 | 交叉熵损失:原理和研究现状

    注1:本文系"简要介绍"系列之一,仅从概念上对交叉熵损失进行非常简要的介绍,不适合用于深入和详细的了解. 注2:"简要介绍"系列的所有创作均使用了AIGC工具辅 ...

  3. 深度学习相关概念:感知器

    深度学习相关概念:交叉熵损失 摘要 背景 应用于深度学习的感知器. 数学定义 训练感知器 误差 学习率 摘要   如今,Keras.TensorFlow 或 PyTorch 等框架提供了对大多数深度学 ...

  4. 交叉熵损失函数和focal loss_理解熵、交叉熵和交叉熵损失

    交叉熵损失是深度学习中应用最广泛的损失函数之一,这个强大的损失函数是建立在交叉熵概念上的.当我开始使用这个损失函数时,我很难理解它背后的直觉.在google了不同材料后,我能够得到一个令人满意的理解, ...

  5. 图像分类_03分类器及损失:线性分类+ SVM损失+Softmax 分类+交叉熵损失

    2.3.1 线性分类 2.3.1.1 线性分类解释 上图图中的权重计算结果结果并不好,权重会给我们的猫图像分配⼀个⾮常低的猫分数.得出的结果偏向于狗. 如果可视化分类,我们为了⽅便,将⼀个图⽚理解成⼀ ...

  6. 神经网络适用于分类问题的最后一层-Softmax和交叉熵损失介绍及梯度推导

    前言 传统机器学习中两大经典任务就是回归与分类.分类在深度学习中也很常见,令我印象最深的是图像分类.当然,在NLP中,分类也无处不在.从RNN与其变体,到Transformer.Bert等预训练模型, ...

  7. 常用损失函数:交叉熵损失

    目录 什么是损失函数 均方误差与交叉熵 为什么要使用交叉熵 交叉熵与KL散度之间的关系 参考文献 什么是损失函数 对于损失函数网上已经有充分的解释:"机器学习中所有的算法都需要最大化或最小化 ...

  8. 机器学习中的损失函数(交叉熵损失、Hinge loss)

    损失函数 文章目录 损失函数 1 交叉熵损失 1.1 从最大似然估计到交叉熵损失 概率论中的MLE 机器学习中的MLE 交叉熵损失 1.2 多分类的交叉熵损失函数 1.3 比较 2. Hinge lo ...

  9. Softmax函数下的交叉熵损失含义与求导

    交叉熵损失函数(CrossEntropy Function)是分类任务中十分常用的损失函数,但若仅仅看它的形式,我们不容易直接靠直觉来感受它的正确性,因此我查阅资料写下本文,以求彻底搞懂. 1.Sof ...

最新文章

  1. 神经网络初始化与集体无意识
  2. 1.2 进阶-对称的二叉树
  3. java高级-多线程编程
  4. Swift开发:NSLayoutConstraint纯代码实现自动布局-初级篇
  5. 解读ASP.NET 5 MVC6系列(9):日志框架
  6. maven 文件上传下载_使用Maven将文件上传和下载到S3
  7. 【转】C#中StreamWriter与BinaryWriter的区别兼谈编码。
  8. java android aes加密解密_AES加密解密在JAVA和ANDROID下互通
  9. 使用C语言和Java分别实现冒泡排序和选择排序
  10. 视频流调试过程(海康威视+Kurento)
  11. 【运动学】基于Matlab模拟斜抛运动
  12. ThunderBird 突然收不到邮件
  13. Foxmail与QQ邮箱关联创建新账户
  14. 逃离华强北后 他们去哪儿?采访身边真实故事——华强北电脑维修 内迁 张家界电脑维修 电子市场电脑维修
  15. s22服务器未响应,王者荣耀资源包升级失败怎么办_王者荣耀S22资源包升级失败解决办法_玩游戏网...
  16. c语言作业报告,C语言程序设计综合作业报告——作业管理系统
  17. 修改微信文件的默认保存位置
  18. CCF CSP认证——201312
  19. C语言实现状态机(二)
  20. python对mp3格式文件标题专辑封面等信息修改

热门文章

  1. QQ无法安装 系统时间问题
  2. Pycharm 快捷键无效的解决方法
  3. 〖产品思维训练白宝书 - 核心竞争力篇④〗- 产品经理核心竞争力解读之创造力
  4. 用vue写h5小游戏时mouted不能及时操作dom
  5. java-php-python-足球赛会管理系统计算机毕业设计
  6. java计算机毕业设计宠物美容网站源码+数据库+系统+lw文档+部署
  7. 服务器上登录网页ip地址,服务器ip作为网页地址
  8. 易维帮助台让IT服务从部门级应用到企业级应用
  9. js中event.timeStamp的用法
  10. 罗布勒斯显示服务器错误怎么办,罗布乐思常见问题解答汇总 编辑器注意事项介绍...