孪生神经网络Contrastive Loss (对比损失)

博客介绍了caffe的孪生神经网络中采用的对比损失函数。该函数能有效处理孪生网络中paired data的关系,最初用于降维。通过表达式可看出它能很好表达成对样本匹配程度,用于训练提取特征的模型,还展示了损失值与样本特征欧式距离的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Contrastive Loss (对比损失)

在caffe的孪生神经网络(siamese network)中,其采用的损失函数是contrastive loss,这种损失函数可以有效的处理孪生神经网络中的paired data的关系。contrastive loss的表达式如下: 

其中d=||an−bn||2,代表两个样本特征的欧氏距离,y为两个样本是否匹配的标签,y=1代表两个样本相似或者匹配,y=0则代表不匹配,margin为设定的阈值。

这种损失函数最初来源于Yann LeCun的Dimensionality Reduction by Learning an Invariant Mapping,主要是用在降维中,即本来相似的样本,在经过降维(特征提取)后,在特征空间中,两个样本仍旧相似;而原本不相似的样本,在经过降维后,在特征空间中,两个样本仍旧不相似。

观察上述的contrastive loss的表达式可以发现,这种损失函数可以很好的表达成对样本的匹配程度,也能够很好用于训练提取特征的模型。当y=1(即样本相似)时,损失函数只剩下∑yd2,即原本相似的样本,如果在特征空间的欧式距离较大,则说明当前的模型不好,因此加大损失。而当y=0时(即样本不相似)时,损失函数为∑(1−y)max(margin−d,0)2,即当样本不相似时,其特征空间的欧式距离反而小的话,损失值会变大,这也正好符号我们的要求。

 


这张图表示的就是损失函数值与样本特征的欧式距离之间的关系,其中红色虚线表示的是相似样本的损失值,蓝色实线表示的不相似样本的损失值。

转自https://blog.youkuaiyun.com/autocyz/article/details/53149760

### 孪生神经网络中的损失函数孪生神经网络(Siamese Network)中,常用的损失函数对比损失Contrastive Loss)。该损失函数能够有效地处理成对数据之间的关系[^1]。 #### 对比损失的定义 对比损失通过衡量两个输入样本的距离来工作。具体来说,如果两个输入属于同一类别,则希望它们在网络输出空间中的距离尽可能小;反之,如果来自不同类别,则期望它们的距离较大。对比损失的具体形式如下: \[ L(Y, D) = Y \cdot (\frac{D}{2})^2 + (1-Y)\cdot\left(\max(0, m-D)^2\right)/2 \] 其中 \(Y\) 表示标签(相同为0,不同为1),\(D\) 是两个样本经过编码后的欧氏距离,而 \(m\) 则是一个预设的边界阈值。 ```python import torch.nn as nn class ContrastiveLoss(nn.Module): def __init__(self, margin=2.0): super(ContrastiveLoss, self).__init__() self.margin = margin def forward(self, output1, output2, label): euclidean_distance = F.pairwise_distance(output1, output2) loss_contrastive = torch.mean((label) * torch.pow(euclidean_distance, 2)+ (1-label) * torch.pow(torch.clamp(self.margin - euclidean_distance, min=0.0), 2)) return loss_contrastive ``` 此代码实现了上述提到的对比损失计算方法,在实际应用中可以根据具体情况调整`margin`参数以获得更好的性能表现。 对于其他类型的损失函数,比如交叉熵和均方误差(MSE),虽然这些也广泛应用于不同的机器学习模型之中,但在处理配对数据方面并不如对比损失那样直观有效。特别是当涉及到度量学习或者图像验证等问题时,对比损失通常会带来更优的结果[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值