Caffe中的损失函数解析
Caffe中的损失函数解析
导言
在有监督的机器学习中,需要有标签数据,与此同时,也需要有对应的损失函数(Loss Function)。
在Caffe中,目前已经实现了一些损失函数,包括最常见的L2损失函数,对比损失函数,信息增益损失函数等等。在这里做一个笔记,归纳总结Caffe中用到的不同的损失函数,以及分析它们各自适合的使用场景。
欧式距离损失函数(Euclidean Loss)
输入:
预测的值:
标签的值:
输出:
损失的值:
适合场景:
回归,特别是其回归的值是实数值得时候。
对比损失函数(Contrastive loss)
输入:
形状:
形状:
形状:
输出:
形状:
对比损失函数为:
其中
适合场景:
可以用来训练Siamese网络
铰链损失函数(Hinge Loss)
输入:
形状:
所以,一个网络如果仅仅只有全连接层 + 铰链损失函数,而没有其它的可学习的参数,那么它就等价于SVM
标签值:
输出:
形状:
损失函数计算:
其中
应用场景:
在一对多的分类中应用,类似于SVM.
信息增益损失函数(InformationGain Loss)
输入:
形状:
(N×C×H×W) 预测值p ^ ∈[0,1] 内, 表示这预测每一类的概率,共K=CHW 个类, 每一个预测 概率p ^ n 的和为1:?n∑ k=1 K p ^ nk =1 .形状:
(N×1×1×1) 标签值:l , 是一个整数值,其范围是l n ∈[0,1,2,...,K?1] 表示着在K 个类中的索引。形状:
(1×1×K×K) (可选) 信息增益矩阵H .作为第三个输入参数,. 如果H=I , 则它等价于多项式逻辑损失函数
输出:
形状:
计算公式:
多项式逻辑损失函数(Multinomial Logistic Loss)
输入:
形状:
形状:
输出:
形状:
应用场景:
在一对多的分类任务中使用,直接把预测的概率分布作为输入.
Sigmoid 交叉熵损失函数(Sigmoid Cross Entropy Loss)
输入:
形状:
(N×C×H×W) 得分x∈[?∞,+∞] , 这个层使用 sigmoid 函数σ(.) 映射到概率分布p ^ n =σ(x n )∈[0,1] 形状:
(N×C×H×W) 标签y∈[0,1]
输出:
- 形状:
(1×1×1×1) 计算公式:E=?1n ∑ n=1 N [p n logp ^ n +(1?p n )log(1?p ^ n )]
应用场景:
预测目标概率分布
Softmax+损失函数(Softmax With Loss)
输入:
形状:
(N×C×H×W) 预测值x∈[?∞,+∞] 代表预测每个类的得分。 共K=CHW 类. 这一层把得分通过softmax映射到概率分布p ^ nk =exp(x nk )/[∑ k ′ exp(x nk ′ )] 形状:
(N×1×1×1) 标签值 是一个整数值,其范围是l n ∈[0,1,2,...,K?1] 表示着在K 个类中的索引。
输出:
- 形状:
(1×1×1×1) 计算公式:E=?1N ∑ n=1 N log(p ^ n,l n ) , 其中p ^ 为softmax输出的类概率。
应用场景:
在一对多分类中应用。