美文网首页
Caffe详解(九)损失函数

Caffe详解(九)损失函数

作者: AI异构 | 来源:发表于2020-05-06 10:23 被阅读0次
Caffe详解

从零开始,一步一步学习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\{l_n = 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_{l_n,k} \log(\hat{p}_{n,k})
    其中 H_{l_n} 表示 ln 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

相关文章

  • Caffe详解(九)损失函数

    Caffe详解从零开始,一步一步学习caffe的使用,期间贯穿深度学习和调参的相关知识! Caffe中的损失函数解...

  • 交叉熵损失函数原理详解

    交叉熵损失函数原理详解 之前在代码中经常看见交叉熵损失函数(CrossEntropy Loss),只知道它是分类问...

  • Caffe详解(四)激活函数

    Caffe详解从零开始,一步一步学习caffe的使用,期间贯穿深度学习和调参的相关知识! 激活函数参数配置 在激活...

  • 各种损失函数详解

    1. 损失函数、代价函数与目标函数 损失函数(Loss Function):是定义在单个样本上的,是指一个样本的误...

  • Caffe 代码学习 1: 入口及common

    入口 我们先从caffe的入口main函数入手. 该函数定义在caffe.cpp中 (caffe.hpp只是包含了...

  • bert的trick理解-gelu损失函数

    GELU 激活函数 损失函数详解:https://mp.weixin.qq.com/s/pA9JW75p9J5e5...

  • 2020-05-11

    详解机器学习中的损失函数https://www.jianshu.com/p/00a405962dca?from=s...

  • 机器学习:常见的损失函数

    损失函数简要介绍 0-1损失 绝对值损失 log对数损失函数 平方损失函数 指数损失函数 Hinge损失函数 损失...

  • 机器学习-损失函数详解

    损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数...

  • (4)损失函数

    损失函数用来表示输出与实际值的差距。常用的损失函数为0-1损失函数、平方损失函数、绝对损失函数、对数损失函数、交叉...

网友评论

      本文标题:Caffe详解(九)损失函数

      本文链接:https://www.haomeiwen.com/subject/nfsightx.html