Pytorch框架学习(10)——损失函数

1. 损失函数概念

  • 损失函数:衡量模型输出与真实标签的差异
    在这里插入图片描述
  • 损失函数(Loss Function):
    L o s s = f ( y ^ , y ) Loss = f(\hat{y}, y) Loss=f(y^,y)
  • 代价函数(Cost Function):
    L o s s = 1 N ∑ i N f ( y i ^ , y i ) Loss = \frac{1}{N}\sum^{N}_{i} f(\hat{y_i}, y_i) Loss=N1iNf(yi^,yi)
  • 目标函数(Objective Function):
    O b j = C o s t + R e g u l a r i z a t i o n ( 正 则 项 ) Obj = Cost + Regularization(正则项) Obj=Cost+Regularization()

在这里插入图片描述

2. 交叉熵损失函数

  • 1.nn.CrossEntropyLoss
    • 功能:nn.LogSoftmax()与nn.NLLLoss()结合,进行交叉熵计算
    • 主要参数:
      • weight:各类别的loss设置权值
      • ignore_index:忽略某个类别
      • reduction:计算模式,可为none/sum/mean
        • none:逐个元素计算
        • sum:所有元素求和,返回标量
        • mean:加权平均,返回标量

3. NLL/BCE/BCEWITHLogits Loss

  • 2.nn.NLLLoss

    • 功能:实现负对数似然函数的负号功能
    • 主要参数:
      • weight:各类别的loss设置权值
      • ignore_index:忽略某个类别
      • reduction:计算模式,可为none/sum/mean
        • none:逐个元素计算
        • sum:所有元素求和,返回标量
        • mean:加权平均,返回标量
  • 3.nn.BCELoss

    • 功能:二分类交叉熵,输入值取值在[0,1]
    • 主要参数:
      • weight:各类别的loss设置权值
      • ignore_index:忽略某个类别
      • reduction:计算模式,可为none/sum/mean
        • none:逐个元素计算
        • sum:所有元素求和,返回标量
        • mean:加权平均,返回标量
  • 4.BCEWITHLogits Loss

    • 功能:结合Sigmoid与二分类交叉熵,网络最后不加sigmoid函数
    • 主要参数:
      • pos_weight:正样本的权值
      • weight:各类别的loss设置权值
      • ignore_index:忽略某个类别
      • reduction:计算模式,可为none/sum/mean
        • none:逐个元素计算
        • sum:所有元素求和,返回标量
        • mean:加权平均,返回标量

数据回归模型中常用的损失函数:

  • 5.nn.L1Loss
    • 功能:计算inputs与target之差的绝对值
    • 公式: l n = ∣ x n − y n ∣ l_n = |x_n - y_n| ln=xnyn
  • 6.nn.MSELoss
    • 功能:计算inputs与target之差的平方
    • 公式: l n = ( x n − y n ) 2 l_n = (x_n - y_n)^2 ln=(xnyn)2

两个损失函数的主要参数为:

  • reduction:计算模式,可为none/sum/mean
    - none:逐个元素计算
    - sum:所有元素求和,返回标量
    - mean:加权平均,返回标量

  • 7.SmoothL1Loss

    • 功能:平滑的L1Loss
    • 参数:
      • reduction:计算模式,可为none/sum/mean
        • none:逐个元素计算
        • sum:所有元素求和,返回标量
        • mean:加权平均,返回标量
          在这里插入图片描述
          在这里插入图片描述
  • 8.PoissonNLLLoss

    • 功能:泊松分布的负对数似然损失函数
    • 主要参数:
      • log_input:输入是否为对数形式,决定计算公式
      • full:计算所有loss,默认为False
      • eps:修正项,避免log(input)为nan
        在这里插入图片描述
  • 9.nn.KLDivLoss

    • 功能:计算KLD(divergence),KL散度,相对熵
    • 注意:需提前将输入计算log-probabilities, 如通过nn.logsoftmax()
    • 主要参数:
      • reduction:计算模式,可为none/sum/mean/batchmean
        • batchmean:batchsize维度求平均值
        • none:逐个元素计算
        • sum:所有元素求和,返回标量
        • mean:加权平均,返回标量
          在这里插入图片描述
  • 10.nn.MarginRankingLoss

    • 功能:计算两个向量之间的相似度,用于排序任务
    • 特别说明:该方法计算两组数据之间的差异,返回一个n*n的loss矩阵
    • 主要参数:
      • margin:边界值,x1与x2之间的差异值
      • reduction:计算模式,可为none/sum/mean
        在这里插入图片描述
  • 11.nn.MultiLabelMarginLoss

    • 功能:多标签边界损失函数
    • 主要参数:
      • reduction:计算模式
    • 示例:四分类任务,样本x输入0类和4类,标签[0,3,-1,-1],不是[1,0,0,1]
      在这里插入图片描述
  • 12.nn.SoftMarginLoss

    • 功能:计算二分类的logistic损失
    • 参数:reduction:计算模式
      在这里插入图片描述
  • 13.nn.MultiLabelSoftMarginLoss

    • 功能:SoftMarginLoss多标签版本
    • 参数:
      • weight:各类别的loss设置权值
      • reduction:计算模式。
        在这里插入图片描述
  • 14.nn.MultiMarginLoss

    • 功能:计算多分类的折页损失
    • 参数:
      • p:可选1或2
      • weight:各类别的loss设置权值
      • margin:边界值
      • reduction:计算模式
        在这里插入图片描述
        在这里插入图片描述
  • 15.nn.TripletMarginLoss

    • 功能:计算三元组损失,人脸验证中常用
    • 主要参数:
      • p:范数的阶,默认为2
      • margin:边界值
      • reduction:计算模式
        在这里插入图片描述
  • 16.nn.HingeEmbeddingLoss

    • 功能:计算两个输入的相似性,常用于非线性embedding和半监督学习
    • 注意:输入x应为两个输入之差的绝对值
    • 主要参数:
      • margin:边界值
      • reduction:计算模式
        在这里插入图片描述
  • 17.nn.CosineEmbeddingLoss

    • 功能:采用余弦相似度计算两个输入的相似性
    • 主要参数:
      • margin:可取值[-1, 1],推荐为[0, 0.5]
      • reduction: 计算模式
        在这里插入图片描述
  • 18.nn.CTCLoss

    • 功能:计算CTC损失,解决时序类数据的分类
    • 主要参数:
      • blank:blank label
      • zero_infinity:无穷大的值或梯度置0
      • reduction:计算模式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aidanmomo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值