【转】Caffe中的损失函数解析
导言
在有监督的机器学习中,需要有标签数据,与此同时,也需要有对应的损失函数(Loss Function
)。
在Caffe
中,目前已经实现了一些损失函数,包括最常见的L2
损失函数,对比损失函数,信息增益损失函数等等。在这里做一个笔记,归纳总结Caffe
中用到的不同的损失函数,以及分析它们各自适合的使用场景。
欧式距离损失函数(Euclidean Loss)
- 输入:
预测的值: $\hat{y} \in [-\infty,+\infty] $
其中,它们的形状为:$N \times C \times H \times W $
标签的值: $y \in [- \infty, + \infty]$
其中,它们的形状为:$N \times C \times H \times W$ - 输出:
- 损失函数: $ loss =\frac{1}{2N}\sum \parallel pred - truth \parallel _{2}^{2} $
- 适合场景:
回归,特别适合其回归的值是实数值的时候。
对比损失函数(Contrastive loss)
- 输入:
形状:$ (N \times C \times 1 \times 1) $特征 $a \in [-\infty, +\infty]$
形状:$ (N \times C \times 1 \times 1) $特征 $b \in [-\infty, +\infty]$
形状:$ (N \times 1 \times 1 \times 1) $相似性 $y \in [0, 1] $ - 输出:
形状:$(1 \times 1 \times 1 \times 1) $ - 损失函数: $ E = \frac{1}{2N} \sum\limits_{n=1}^N \left(y\right) d + \left(1-y\right) \max \left(margin-d, 0\right) $
其中 $ d = \left| \left| a_n - b_n \right| \right|_2^2 $ - 适合场景:
可以用来训练Siamese
网络
铰链损失函数(Hinge Loss)
输入:
形状:$(N \times C \times H \times W) $预测值 $t \in [-\infty, +\infty] $代表着预测 K= CHW 个类中的得分(注:CHW表示着 在网络设计中,不一定要把预测值进行向量化,只有其拉直后元素的个数相同即可。) . 在SVM中, t t 是 D 维特征$ X \in \mathcal{R}^{D \times N} $, 和学习到的超平面参数$W \in \mathcal{R}^{D \times K} $内积的结果 $X^T W X^T W$所以,一个网络如果仅仅只有全连接层 + 铰链损失函数,而没有其它的可学习的参数,那么它就等价于
SVM
标签值:$(N \times 1 \times 1 \times 1) $标签 l l , 是一个整数类型的数$l_n \in [0, 1, 2, …, K - 1]$ 其代表在 K 个类中的正确的标签。
输出:
形状:$(1 \times 1 \times 1 \times 1) $- 损失函数: $ E = \frac{1}{N} \sum\limits{n=1}^N \sum\limits{k=1}^K [\max(0, 1 - \delta{ln = k} t{nk})] ^ p$ $L^p$范数(默认是 p=1,是 L1 范数; L2 范数,正如在 L2-SVM中一样,也有实现),
其中 $\delta{\mathrm{条件}} = \left{ \begin{array}{lr} 1 & \mbox{成立} \ -1 & \mbox{不成立} \end{array} \right. $ - 应用场景:
在一对多的分类中应用,类似于SVM.
信息增益损失函数(InformationGain Loss)
- 输入:
形状:$(N \times C \times H \times W) $预测值 $\hat{p} \in [0, 1] $内,
表示这预测每一类的概率,共 $K = CHW$ 个类,
每一个预测 概率$\hat{p}n$ 的和为1:$K p ^ nk =1 \forall n \sum\limits{k=1}^K \hat{p}_{nk} = 1 $.
形状: $(N \times 1 \times 1 \times 1) $
标签值: l, 是一个整数值,其范围是 $ l_n \in [0, 1, 2, …, K - 1]$表示着在 K 个类中的索引。
形状:$(1 \times 1 \times K \times K) $ (可选)
信息增益矩阵H作为第三个输入参数,.如果 $H=I$,则它等价于多项式逻辑损失函数 - 输出:
形状:$(1 \times 1 \times 1 \times 1)$ - 损失函数: $E = \frac{-1}{N} \sum\limits{n=1}^N H{l_n} \log(\hat{p}n) = \frac{-1}{N} \sum\limits{n=1}^N \sum\limits{k=1}^{K} H{ln,k} \log(\hat{p}{n,k}) $
其中 $H_{l_n}$ 表示 $l_n of H $.
多项式逻辑损失函数(Multinomial Logistic Loss)
- 输入:
形状:$(N \times C \times H \times W) $ 预测值 $\hat{p} \in [0, 1] $范围中,
表示这预测的每一类的概率,共$K = CHW$ 个类.
每一个预测概率$\hat{p}n$ 的和为1:$K p ^ nk =1 \forall n \sum\limits{k=1}^K \hat{p}_{nk} = 1$
形状:$(N \times 1 \times 1 \times 1)$
标签 l,是一个整数值,其范围是 $_n \in [0, 1, 2, …, K - 1]$表示着在 K 个类中的索引。 - 输出:
- 形状:$(1 \times 1 \times 1 \times 1)$
- 损失函数: $E = \frac{-1}{N} \sum\limits{n=1}^N \log(\hat{p}{n,l_n}) $
- 应用场景:
在一对多的分类任务中使用,直接把预测的概率分布作为输入.
Sigmoid 交叉熵损失函数(Sigmoid Cross Entropy Loss)
- 输入:
形状: $(N \times C \times H \times W) $得分 $x \in [-\infty, +\infty]$,
这个层使用 sigmoid 函数$\sigma(.) $映射到概率分布$\hat{p}_n = \sigma(x_n) \in [0, 1]$
形状:$(N \times C \times H \times W) $标签$y \in [0, 1] $ - 输出:
形状:$(1 \times 1 \times 1 \times 1) $ - 损失函数:$E = \frac{-1}{n} \sum\limits_{n=1}^N \left[ p_n \log \hat{p}_n + (1 - p_n) \log(1 - \hat{p}_n) \right] $
- 应用场景:
预测目标概率分布
Softmax+损失函数(Softmax With Loss)
- 输入:
形状:$(N \times C \times H \times W)$预测值$x \in [-\infty, +\infty]$代表预测每个类的得分。
共 $K=CHW$ 类.
这一层把得分通过softmax映射到概率分布$\hat{p}{nk} = \exp(x{nk}) / \left[\sum{k’} \exp(x{nk’})\right] $
形状:$(N \times 1 \times 1 \times 1)$
标签值是一个整数值,其范围是 $_n \in [0, 1, 2, …, K - 1] $表示着在 K 个类中的索引。 - 输出:
形状:$(1 \times 1 \times 1 \times 1)$ - 损失函数: $E = \frac{-1}{N} \sum\limits{n=1}^N \log(\hat{p}{n,l_n})$
其中 $ \hat{p}$为softmax
输出的类概率。 - 应用场景:
在一对多分类中应用。
总结
欧式距离损失函数:一般适用于回归问题,特别是回归的值是实数的时候。
对比损失函数:用来训练siamese
网络时候。Hinge loss
:在一对多的分类中应用,类似于SVM
。
多项式逻辑损失函数:一般在一对多的分类任务中应用,直接把预测的概率分布作为输入。sigmoid
交叉熵损失函数:预测目标概率分布。softmax
+损失函数:在一对多分类中的应用。
参考
来源:Caffe中的损失函数解析 http://www.aichengxu.com/other/10039373.htm