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

@[toc]

1. 损失函数概念

  • 损失函数:衡量模型输出与真实标签的差异


    Pytorch框架学习(10)——损失函数_第1张图片
    在这里插入图片描述
  • 损失函数(Loss Function):
  • 代价函数(Cost Function):
  • 目标函数(Objective Function):
Pytorch框架学习(10)——损失函数_第2张图片
在这里插入图片描述

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之差的绝对值
    • 公式:
  • 6.nn.MSELoss
    • 功能:计算inputs与target之差的平方
    • 公式:

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

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

  • 7.SmoothL1Loss

    • 功能:平滑的L1Loss
    • 参数:
      • reduction:计算模式,可为none/sum/mean
        • none:逐个元素计算
        • sum:所有元素求和,返回标量
        • mean:加权平均,返回标量


          Pytorch框架学习(10)——损失函数_第3张图片
          在这里插入图片描述

          Pytorch框架学习(10)——损失函数_第4张图片
          在这里插入图片描述
  • 8.PoissonNLLLoss

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


        Pytorch框架学习(10)——损失函数_第5张图片
        在这里插入图片描述
  • 9.nn.KLDivLoss

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


          Pytorch框架学习(10)——损失函数_第6张图片
          在这里插入图片描述
  • 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]


      Pytorch框架学习(10)——损失函数_第7张图片
      在这里插入图片描述
  • 12.nn.SoftMarginLoss

    • 功能:计算二分类的logistic损失
    • 参数:reduction:计算模式


      Pytorch框架学习(10)——损失函数_第8张图片
      在这里插入图片描述
  • 13.nn.MultiLabelSoftMarginLoss

    • 功能:SoftMarginLoss多标签版本
    • 参数:
      • weight:各类别的loss设置权值
      • reduction:计算模式。


        在这里插入图片描述
  • 14.nn.MultiMarginLoss

    • 功能:计算多分类的折页损失
    • 参数:
      • p:可选1或2
      • weight:各类别的loss设置权值
      • margin:边界值
      • reduction:计算模式


        Pytorch框架学习(10)——损失函数_第9张图片
        在这里插入图片描述

        在这里插入图片描述
  • 15.nn.TripletMarginLoss

    • 功能:计算三元组损失,人脸验证中常用
    • 主要参数:
      • p:范数的阶,默认为2
      • margin:边界值
      • reduction:计算模式


        Pytorch框架学习(10)——损失函数_第10张图片
        在这里插入图片描述
  • 16.nn.HingeEmbeddingLoss

    • 功能:计算两个输入的相似性,常用于非线性embedding和半监督学习
    • 注意:输入x应为两个输入之差的绝对值
    • 主要参数:
      • margin:边界值
      • reduction:计算模式


        Pytorch框架学习(10)——损失函数_第11张图片
        在这里插入图片描述
  • 17.nn.CosineEmbeddingLoss

    • 功能:采用余弦相似度计算两个输入的相似性
    • 主要参数:
      • margin:可取值[-1, 1],推荐为[0, 0.5]
      • reduction: 计算模式


        Pytorch框架学习(10)——损失函数_第12张图片
        在这里插入图片描述
  • 18.nn.CTCLoss

    • 功能:计算CTC损失,解决时序类数据的分类
    • 主要参数:
      • blank:blank label
      • zero_infinity:无穷大的值或梯度置0
      • reduction:计算模式

你可能感兴趣的:(Pytorch框架学习(10)——损失函数)