损 失 函 数 篇 损失函数篇 损失函数篇
什么是损失函数(Loss Function):损失函数是衡量模型输出与真实标签的差异,我更愿意说为距离
什么是代价函数(Cost Function):是对真个数据集的模型输出与真实标签的差异求和之后的均值
什么是目标函数(Objective Function):代价函数+正则项(惩罚项)
但在实际中,我们去说的时候,这三者都会被叫作loss函数
在实际训练代码中loss是这样运作的
for i,data in enumerate(dataloader):
# forward:前向传播
inputs,labels = data
outputs = net(inputs)
# backward:反向传播,更新模型参数
optimizer.zero_grad()
loss = loss_function(outputs,labels)
loss.backward()
# 更新模型参数
optimizer.step()
inputs,labels,outputs都是一个batchsize的数据量,所以在真正训练时候,loss的计算是以batchsize个来计算的
组 合 L o s s 组合Loss 组合Loss
- Combined_Bce_Dice_Loss
- DFN_Loss
一 CrossEntropyLoss(交叉熵损失函数)
二 L1Loss
三 NLLLoss
四 MSELoss
五 CTCLoss
六 PoissonNLLLoss
七 KLDivLoss
八 BCELoss
九 BCEWithLogitsLoss
十 SoftDiceLoss
十一 MarginRankingLoss
十二 HingeEmbeddingLoss
十三 MultiLabelMarginLoss
十四 SmoothL1Loss
十五 SoftMarginLoss
十六 MultiLabelSoftMarginLoss
十七 CosineEmbeddingLoss
十八 MultiMarginLoss
十九 TripletMarginLoss
二十 TripletMarginWithDistanceLoss
二十一 Focal Loss
Softmax损失能够要求特征具有类间的可分离性,但不能约束特征的类内紧凑性
contrastive loss的思想是最小化一对同类样本特征的距离,最大化一对不同样本特征之间的距离。
Triplets loss则把一对变成3个。
contrastive loss 和 triplets loss 需要把样本两两配对或三三组合起来,导致样本急剧增大,加长了训练的时间,提高训练难度。
Center loss 能够直接对样本特征之间的距离进行约束
Center loss 添加的约束是,特征与同类别的平均特征的距离要足够小,这要求同类特征要接近它们的中心点,公式如下表示:
其中xi 表示第i个样本的提取特征,c y i 表示样本i所对应的类别的所有样本特征的平均特征,或者说同类别样本特征的中心点,m表示样本个数。