Torch/nn中的损失函数(Criterions)详解

Torch/nn中的损失函数(Criterions)详解

【免费下载链接】nn 【免费下载链接】nn 项目地址: https://gitcode.com/gh_mirrors/nn/nn

什么是损失函数?

损失函数(Criterions)在神经网络训练中起着至关重要的作用。它们用于计算模型预测输出与真实目标之间的差异程度,并产生梯度用于反向传播。简单来说,损失函数衡量的是模型预测的"错误程度"。

在Torch/nn模块中,提供了多种针对不同任务的损失函数,主要分为以下几类:

分类任务损失函数

1. BCECriterion (二元交叉熵损失)

适用于二分类问题,常与Sigmoid激活函数配合使用。计算公式为:

loss = -1/n Σ [y*log(p) + (1-y)*log(1-p)]

其中y是真实标签(0或1),p是预测概率。

2. ClassNLLCriterion (负对数似然损失)

用于多分类问题,要求输入是经过LogSoftMax处理的对数概率。计算公式简单直接:

loss = -x[class]

其中x是对数概率向量,class是目标类别索引。

3. CrossEntropyCriterion (交叉熵损失)

将LogSoftMax和ClassNLLCriterion合并为一个模块,简化使用流程。计算公式为:

loss = -log(exp(x[class])/Σexp(x[j]))

4. ClassSimplexCriterion (类单纯形损失)

一种新颖的分类损失函数,将每个类别嵌入到(N-1)维单纯形空间中。特别适合与归一化线性层配合使用。

5. MarginCriterion (边界损失)

用于二分类的边界损失,鼓励正样本得分高于边界值,负样本得分低于边界值。公式为:

loss = max(0, margin - y*x)

6. MultiMarginCriterion (多类边界损失)

MarginCriterion的多类扩展版本,适用于多分类问题。

回归任务损失函数

1. AbsCriterion (平均绝对误差)

计算预测值与目标值的绝对差平均值:

loss = 1/n Σ |x_i - y_i|

2. MSECriterion (均方误差)

最常用的回归损失,计算预测值与目标值的平方差平均值:

loss = 1/n Σ (x_i - y_i)^2

3. SmoothL1Criterion (平滑L1损失)

结合了L1和L2损失的优点,在接近零点处更平滑,对异常值更鲁棒。

4. DistKLDivCriterion (KL散度)

用于衡量两个概率分布之间的差异,常用于概率分布回归任务。

嵌入任务损失函数

1. HingeEmbeddingCriterion

用于学习嵌入表示,根据输入距离计算损失。

2. CosineEmbeddingCriterion

基于余弦相似度的嵌入损失,常用于学习相似性度量。

复合损失函数

1. MultiCriterion

多个损失函数的加权和,应用于相同的输入和目标。

2. ParallelCriterion

多个损失函数的加权和,每个应用于不同的输入和目标。

损失函数的基本操作

所有损失函数都继承自Criterion基类,提供两个核心方法:

  1. forward(input, target):计算损失值
  2. backward(input, target):计算梯度

以及两个状态变量:

  • output:存储最后一次forward调用的结果
  • gradInput:存储最后一次backward调用的梯度

使用技巧

  1. 对于不平衡数据集,可以使用带权重的损失函数(如ClassNLLCriterion(weights))
  2. 通过设置sizeAverage=false可以改为求和而非平均
  3. 某些损失函数(如ClassNLLCriterion)支持ignoreIndex参数忽略特定类别
  4. 组合使用多个损失函数可以实现更复杂的训练目标

示例代码

-- 二分类示例
mlp = nn.Sequential()
mlp:add(nn.Linear(10, 1))
mlp:add(nn.Sigmoid())

criterion = nn.BCECriterion()

-- 训练步骤
pred = mlp:forward(input)
loss = criterion:forward(pred, target)
grad = criterion:backward(pred, target)
mlp:backward(input, grad)
mlp:updateParameters(learningRate)

理解并正确选择损失函数是深度学习模型成功的关键因素之一。Torch/nn提供的丰富损失函数库能够满足绝大多数深度学习任务的需求。

【免费下载链接】nn 【免费下载链接】nn 项目地址: https://gitcode.com/gh_mirrors/nn/nn

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

抵扣说明:

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

余额充值