Keras中Siamese网络对比损失标签为何与原论文相反?
Keras Siamese网络对比损失标签反转的原因
这其实是标签语义的直观化调整,损失的数学逻辑并没有改变,具体原因如下:
原论文的标签定义:相似样本对标记为
0,不相似为1。损失公式(1. - y_true) * square_pred + y_true * margin_square的逻辑是:- 相似样本(
y_true=0):损失仅保留square_pred(特征平方距离),目的是让相似样本距离尽可能小; - 不相似样本(
y_true=1):损失仅保留margin_square(距离未达阈值时的惩罚项),目的是让不相似样本距离至少拉开margin的差距。
- 相似样本(
Keras示例的标签调整:把相似样本标记为
1,不相似为0,但公式不变。此时公式逻辑自动适配新标签:- 相似样本(
y_true=1):1-y_true=0,损失仍为square_pred,和原论文要求一致; - 不相似样本(
y_true=0):y_true=0,损失仍为margin_square,同样和原论文逻辑一致。
- 相似样本(
调整的核心目的:让标签语义符合常规认知——通常用
1代表“同类/相似”、0代表“异类/不相似”,降低标注和理解数据的成本,不需要额外记忆反常识的标签定义。
内容的提问来源于stack exchange,提问作者Richard Tony
相关产品推荐
相关产品推荐

