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

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

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


交叉熵损失详解


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,而且任意数字发生变化,对最终结果的影响都很大。为了避免这两种情况,可以使用对数转换将连续乘法转换为连续加法。对数函数是单调递增函数,转换后不会改变似然函数最优值的位置。前面负号,我们就将最大似然函数转换为求解最小损失函数。二分类问题的对数损失函数如下:


b987665d79474265ae1eb54ac9c22fe2.png


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


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


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

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


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


69602ba6e9ad407bb880cde7af0b16cb.png


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


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


 交叉熵、相对熵、熵之间可以相互推导。具体见下图。


相对熵用来衡量两个分布之间的不相似性。越不相似的相对熵越大,越相似的相对熵越小。例如,狗和猪的相似 性为0.02,猫和狗的相似性可能为0.2.


ad4cdf9e417342a89fd2a07d890a8fa1.png


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


3fa760ac63cf47029de3dba86975f192.png


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


Tips:什么是多分类?


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


4.1交叉熵的作用:


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


6a877cd4cd074b96a30963df774a81f9.png


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


c67ff59420204b24848e79b00431c4a1.png


 注意公式中 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却在一直的增加。


4958903c7f5745aaa876a8640b51c935.png

482ca43fa7fb4d348e7bf92ddc98936c.png


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

目录
相关文章
|
8月前
|
机器学习/深度学习 自然语言处理 算法
深度学习算法概念介绍
深度学习算法概念介绍
|
1月前
|
机器学习/深度学习 算法 安全
从方向导数到梯度:深度学习中的关键数学概念详解
方向导数衡量函数在特定方向上的变化率,其值可通过梯度与方向向量的点积或构造辅助函数求得。梯度则是由偏导数组成的向量,指向函数值增长最快的方向,其模长等于最速上升方向上的方向导数。这两者的关系在多维函数分析中至关重要,广泛应用于优化算法等领域。
95 36
从方向导数到梯度:深度学习中的关键数学概念详解
|
2月前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
84 8
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
通过深度学习实践来理解深度学习的核心概念
通过实践,不仅可以加深对深度学习概念的理解,还能发现理论与实际之间的差距,进而对模型进行改进和优化。实践中遇到的问题(如梯度消失、过拟合、训练效率低等)能促使你深入思考,进而更加全面地掌握深度学习的核心概念。
60 4
|
7月前
|
机器学习/深度学习 算法 数据可视化
【从零开始学习深度学习】46. 目标检测中锚框的概念、计算方法、样本锚框标注方式及如何选取预测边界框
【从零开始学习深度学习】46. 目标检测中锚框的概念、计算方法、样本锚框标注方式及如何选取预测边界框
|
4月前
|
机器学习/深度学习 分布式计算 数据可视化
对深度学习概念的基础理解与认识
一、神经网络的组成 人工神经网络(Artificial Neural Networks,简写为ANNs)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。 这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。 感知机 感知机是1957年,由Rosenblatt提出会,是神经网络和支持向量机的基础。 感知机是有生物学上的一个启发,他的参照对象和理论依据可以参照下图:(我们的大脑可以认为是一个神经网络,
对深度学习概念的基础理解与认识
|
6月前
|
机器学习/深度学习 人工智能 并行计算
现代深度学习框架构建问题之线性代数的常见概念定义如何解决
现代深度学习框架构建问题之线性代数的常见概念定义如何解决
55 3
|
6月前
|
机器学习/深度学习 自然语言处理 算法
深度学习的关键概念和网络结构
度学习是人工智能和机器学习的一个重要分支,它通过模拟人脑神经元的工作方式来处理复杂的模式识别和数据分析任务。深度学习已经在许多领域取得了显著的成果,如图像识别、语音识别和自然语言处理。
82 1
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
机器学习之深度学习算法概念
深度学习算法是一类基于人工神经网络的机器学习方法,其核心思想是通过多层次的非线性变换,从数据中学习表示层次特征,从而实现对复杂模式的建模和学习。深度学习算法在图像识别、语音识别、自然语言处理等领域取得了巨大的成功,成为人工智能领域的重要技术之一。
104 3
|
7月前
|
机器学习/深度学习 人工智能 算法
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
【机器学习】深度探索:从基础概念到深度学习关键技术的全面解析——梯度下降、激活函数、正则化与批量归一化
104 3