深度学习:损失函数,平方差,交叉熵,指数,Hinge(SVM)

本文详细介绍了深度学习中的几种常见损失函数,包括平方误差函数、交叉熵损失(适用于分类问题)、指数损失(用于Adaboost算法)和Hinge损失(与SVM相关)。解释了它们的适用场景,如平方误差函数常用于回归问题,而交叉熵损失通常用于二分类和多分类任务。文章还探讨了这些损失函数的优缺点,以及在实际应用中如何选择合适的损失函数。
摘要由CSDN通过智能技术生成

参考博文:https://blog.csdn.net/App_12062011/article/details/56276228

一、损失函数

 

           损失函数和代价函数是同一个东西,目标函数是一个与他们相关但更广的概念,对于目标函数来说在有约束条件下的最小化就是损失函数(loss function)。度量模型,指导模型训练,因此损失函数的设计和模型结构设计一样的重要,损失函数用来评价预测值和真实值间的关系。

经验风险==》期望风险(大数定律)     经验风险+结构风险

经验风险最小化:最优模型              结构风险最小化:等价于正则化(regularization)防止过拟合,结构风险在经验风险的基础上加上表示模型复杂度的正则化项/罚项

            损失函数(loss function)是用来估量模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:

其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的Φ是正则化项(regularizer)或者叫惩罚项(penalty term),它可以是L1,也可以是L2,或者其他的正则函数。整个式子表示的意思是找到使目标函数最小时的θ值

理解:损失函数旨在表示出logit和label的差异程度,不同的损失函数有不同的表示意义,也就是在最小化损失函数过程中,logit逼近label的方式不同,得到的结果可能也不同。一般情况下,softmax和sigmoid使用交叉熵损失(logloss),hingeloss是SVM推导出的,hingeloss的输入使用原始logit即可。

二、LogLoss对数损失函数(逻辑回归,交叉熵损失) 分类问题

它描述了两个概率分布之间的距离,当交叉熵越小说明二者之间越接近。它是分类问题中使用比较广的一种损失函数。 

   有些人可能觉得逻辑回归的损失函数就是平方损失,其实并不是。平方损失函数可以通过线性回归在假设样本是高斯分布的条件下推导得到,而逻辑回归得到的并不是平方损失。在逻辑回归的推导中,它假设样本服从伯努利分布(0-1分布),然后求得满足该分布的似然函数,接着取对数求极值等等。而逻辑回归并没有求似然函数的极值,而是把极大化当做是一种思想,进而推导出它的经验风险函数为:最小化负的似然函数(即max F(y, f(x)) —> min -F(y, f(x)))。从损失函数的视角来看,它就成了log损失函数了。

log损失函数的标准形式

取对数是为了方便计算极大似然估计,因为在MLE(最大似然估计)中,直接求导比较困难,所以通常都是先取对数再求导找极值点。损失函数L(Y, P(Y|X))表达的是样本X在分类Y的情况下,使概率P(Y|X)达到最大值(换言之,就是利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值;或者说什么样的参数才能使我们观测到目前这组数据的概率最大)。因为log函数是单调递增的,所以logP(Y|X)也会达到最大值,因此在前面加上负号之后,最大化P(Y|X)就等价于最小化L了。(极大似然:已知模型,求取参数)

逻辑回归的P(Y=y|x)表达式如下(为了将类别标签y统一为1和0,下面将表达式分开表示)

 

逻辑回归最后得到的目标式子如下:

 

 

上面是针对二分类而言的。这里需要解释一下:之所以有人认为逻辑回归是平方损失,是因为在使用梯度下降来求最优解的时候,它的迭代式子与平方损失求导后的式子非常相似,从而给人一种直观上的错觉

这里有个PDF可以参考一下:Lecture 6: logistic regression.pdf.

注意:softmax使用的即为交叉熵损失函数,binary_cossentropy为二分类交叉熵损失,categorical_crossentropy为多分类交叉熵损失,当使用多分类交叉熵损失函数时,标签应该为多分类模式,即使用one-hot编码的向量。

1、自定义交叉熵:cross_entropy1=tf.reduce_mean(y_*tf.log(tf.clip_by_va

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
常用的深度学习损失函数有以下几种: 1. 均方误差(Mean Squared Error,MSE):适用于回归问题,计算预测值与真实值之间的平均差的平方。 2. 交叉熵损失(Cross-Entropy Loss):适用于分类问题,计算预测概率分布与真实标签之间的交叉熵。 3. 对数似然损失(Log-Likelihood Loss):适用于分类问题,计算预测概率分布与真实标签之间的对数似然。 4. Hinge损失:适用于支持向量机(SVM)等分类问题,用于最大间隔分类器。 5. KL散度(Kullback-Leibler Divergence):适用于概率分布的比较,计算两个概率分布之间的差异。 这些损失函数可以通过在深度学习框架中调用相应的API进行实现。例如,在TensorFlow中,可以使用tf.losses库来调用这些损失函数。在PyTorch中,可以使用torch.nn.functional库来实现这些损失函数。 以下是一个在PyTorch中使用交叉熵损失函数的示例: ```python import torch import torch.nn as nn # 定义模型 model = nn.Linear(10, 2) # 定义损失函数 loss_fn = nn.CrossEntropyLoss() # 随机生成输入和目标值 input = torch.randn(3, 10) # 输入数据 target = torch.empty(3, dtype=torch.long).random_(2) # 目标值 # 计算损失 loss = loss_fn(input, target) print(loss) ``` 在上述示例中,我们首先定义了一个线性模型和一个交叉熵损失函数。然后,我们随机生成了输入数据和目标值,并计算了模型的损失。最后,我们打印出了计算得到的损失值。 希望这个例子能够帮助你理解常用的深度学习损失函数的实现方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值