赞
踩
在有监督的机器学习中,需要有标签数据,与此同时,也需要有对应的损失函数(Loss Function)。
在Caffe中,目前已经实现了一些损失函数,包括最常见的L2损失函数,对比损失函数,信息增益损失函数等等。在这里做一个笔记,归纳总结Caffe中用到的不同的损失函数,以及分析它们各自适合的使用场景。
在caffe的孪生神经网络(siamese network)中,采用的就是Contrastive loss,对应的层是Contrastive_loss_layer;
代表两个样本特征的欧氏距离,y为两个样本是否匹配的标签,y=1代表两个样本相似或者匹配;
layer {
name: "loss"
type: "ContrastiveLoss"
bottom: "feat"
bottom: "feat_p"
bottom: "sim"
top: "loss"
contrastive_loss_param{
margin:1
}
}
layer {
name: "loss"
type: "Softmax"
bottom: "ip1"
top: "softmax"
}
layer {
name: "loss"
type: "MultinomialLogisticLoss"
bottom: "softmax"
bottom: "label"
top: "loss"
}
将SoftmaxWithloss操作拆成了两步,但这样计算结果不太理想,一般很少用。
Sigmoid Cross Entropy损失函数被用来处理一张图片具备多个二分类属性的场景。
例如苹果的颜色红不红,味道甜不甜,口感脆不脆,这一情况就是3个二分类的联合分布情况。
layer {
name: "loss"
type: "SigmoidCrossEntropyLoss"
bottom: "fc3" #预测结果
bottom: "label3" #标签值
top: "loss"
}
layer {
name: "loss"
type: "SoftmaxWithloss"
bottom: "ip1" #预测结果
bottom: "label3" #标签值
top: "loss"
}
欧式损失函数相对非常好理解,在检测任务中常用,对检测框进行精细化处理时会用到。
layer {
name: "loss"
type: "EuclideanLoss"
bottom: "ip1" #预测值
bottom: "label" #标签
top: "loss"
}
Hinge Loss适用于多分类任务,函数会输出一个向量,表示单个样本在某一类别上的概率。
在二分类上与逻辑回归差不多:
Hinge Loss 经常用于SVM中, 逻辑回归与SVM对比 :
# L1 Norm
layer {
name: "loss"
type: "HingeLoss"
bottom: "pred"
bottom: "label"
}
# L2 Norm
layer {
name: "loss"
type: "HingeLoss"
bottom: "pred"
bottom: "label"
top: "loss"
hinge_loss_param{
norm:L2
}
}
损失函数计算默认是 L1 范数;
L2 范数,正如在 L2-SVM中一样,也有实现。
例如赌桌上表情越多,信息增益也大,信息熵用于表示事件的不确定性的大小,有以下形式
infogain_loss函数的核心理念是从概率的意义出发,通过分布不确定程度的差异进行损失函数的计算。
适用场景:无监督学习的编码,聚类中经常使用。当然分类中也可以使用。
layer {
name: "infogainloss"
type: "InfogainLoss"
bottom: "topofprevlayer"
bottom: "label"
top: "infogainloss"
infogain_loss_param{
source:"infogainH.binaryproto"
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。