在有监督的机器学习中,需要有标签数据,与此同时,也需要有对应的损失函数(Loss Function)。
在Caffe中,目前已经实现了一些损失函数,包括最常见的L2损失函数,对比损失函数,信息增益损失函数等等。在这里做一个笔记,归纳总结Caffe中用到的不同的损失函数,以及分析它们各自适合的使用场景。
输入:
预测的值: y ^ ∈[−∞,+∞] , 其中,它们的形状为: N×C×H×W
标签的值: y∈[−∞,+∞] , 其中,它们的形状为: N×C×H×W
输出:
损失的值: Loss=12N ∑ N n=1 ∥y ^ n −y n ∥ 2 2
适合场景:
回归,特别是其回归的值是实数值得时候。
输入:
形状: (N×C×1×1) 特征 a∈[−∞,+∞]
形状: (N×C×1×1) 特征 b∈[−∞,+∞]
形状: (N×1×1×1) 相似性 y∈[0,1]
输出:
形状: (1×1×1×1)
对比损失函数为: E=12N ∑ n=1 N (y)d+(1−y)max(margin−d,0)
其中 d=||a n −b n || 2 2 .
适合场景:
可以用来训练Siamese网络
输入:
形状: (N×C×H×W) 预测值 t∈[−∞,+∞] 代表着预测 K=CHW 个类中的得分(注:CHW表示着在网络设计中,不一定要把预测值进行向量化,只有其拉直后元素的个数相同即可。) . 在SVM中, t 是 D 维特征 X∈R D×N , 和学习到的超平面参数 W∈R D×K 内积的结果 X T W
所以,一个网络如果仅仅只有全连接层 + 铰链损失函数,而没有其它的可学习的参数,那么它就等价于SVM
标签值:
(N×1×1×1) 标签 l , 是一个整数类型的数 l n ∈[0,1,2,...,K−1] 其代表在 K 个类中的正确的标签。
输出:
形状: (1×1×1×1)
损失函数计算: E=1N ∑ n=1 N ∑ k=1 K [max(0,1−δ{l n =k}t nk )] p , L p 范数 (默认是 p=1 , 是 L1 范数; L2 范数,正如在 L2-SVM中一样,也有实现),
其中 δ{条件}={1−1 成立不成立
应用场景:
在一对多的分类中应用,类似于SVM.
输入:
形状: (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 , 则它等价于多项式逻辑损失函数
输出:
形状: (1×1×1×1)
计算公式: E=−1N ∑ n=1 N H l n log(p ^ n )=−1N ∑ n=1 N ∑ k=1 K H l n ,k log(p ^ n,k ) , 其中 H l n 表示 行 l n of H .
输入:
形状: (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×1×1) 计算公式: E=−1N ∑ n=1 N log(p ^ n,l n )
应用场景:
在一对多的分类任务中使用,直接把预测的概率分布作为输入.
输入:
形状: (N×C×H×W) 得分 x∈[−∞,+∞] , 这个层使用 sigmoid 函数 σ(.) 映射到概率分布 p ^ n =σ(x n )∈[0,1]
形状: (N×C×H×W) 标签 y∈[0,1]
输出:
应用场景:
预测目标概率分布
输入:
形状: (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 个类中的索引。
输出:
应用场景:
在一对多分类中应用。