caffe详解之损失函数

【转】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

-------------本文结束 感谢您的阅读-------------
0%