损失函数改进之Large-Margin Softmax Loss

2023-05-16

最近几年网络效果的提升除了改变网络结构外,还有一群人在研究损失层的改进,这篇博文要介绍的就是较为新颖的Large-Margin softmax loss(L-softmax loss)。Large-Margin softmax loss来自ICML2016的论文:Large-Margin Softmax Loss for Convolutional Neural Networks
论文链接:http://proceedings.mlr.press/v48/liud16.pdf,
MxNet代码链接:https://github.com/luoyetx/mx-lsoftmax

先来直观看下Large-Margin Softmax Loss的效果,也是论文的核心:

这里写图片描述

什么意思呢?上面一行表示training set,下面一行表示testing set。每一行的第一个都是传统的softmax,后面3个是不同参数的L-softmax,看看类间和类内距离的差距!

因为L-softmax loss是在原来传统的softmax loss上改进的,因此还是先从softmax loss讲起:
softmax loss的公式如下:

这里写图片描述

fj表示class score f向量的第j个元素。N表示训练数据的数量。log函数的括号里面的内容就是softmax,(如果不是很理解softmax,softmax loss,可以参看这篇博文:softmax,softmax-loss,BP的解释)简单讲就是属于各个类别的概率,因此fyi就可以理解为全连接层的输出,也就是:

这里写图片描述

上面这个式子就是W和x的内积,因此可以写成下面这样:

这里写图片描述

因此Li就变成下式:

这里写图片描述

那么Large Margin Softmax Loss是什么意思?
假设一个2分类问题,x属于类别1,那么原来的softmax肯定是希望:

这里写图片描述

也就是属于类别1的概率大于类别2的概率,这个式子和下式是等效的:

这里写图片描述

那么Large Margin Softmax就是将上面不等式替换成下式:

这里写图片描述

因为m是正整数,cos函数在0到π范围又是单调递减的,所以cos(mx)要小于cos(x)。m值越大则学习的难度也越大,这也就是最开始Figure2中那几个图代表不同m值的意思。因此通过这种方式定义损失会逼得模型学到类间距离更大的,类内距离更小的特征。不过个人认为可能需要迭代次数多点才能看到效果。

这样L-softmax loss的Li式子就可以在原来的softmax loss的Li式子上修改得到:

这里写图片描述

Figure4是从几何角度直观地看两种损失的差别,L-softmax loss学习到的参数可以将两类样本的类间距离加大。通过对比可以看到L-softmax loss最后学到的特征之间的分离程度比原来的要明显得多。

这里写图片描述

因此L-softmax loss的思想简单讲就是加大了原来softmax loss的学习难度。借用SVM的思想来理解的话,如果原来的softmax loss是只要支持向量和分类面的距离大于h就算分类效果比较好了,那么L-softmax loss就是需要距离达到mh(m是正整数)才算分类效果比较好了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

损失函数改进之Large-Margin Softmax Loss 的相关文章

  • 了解边距折叠

    我已经成功地将 h2 元素的边距包含在其容器 section 元素 中 这样它就不会与 p 元素的边距一起折叠 我已经通过设置来完成此操作overflow节元素的auto 我的问题是 由于元素与overflow设置为除visible不能让它
  • 比较 MSE 损失和交叉熵损失的收敛性

    For a very simple classification problem where I have a target vector 0 0 0 0 and a prediction vector 0 0 1 0 2 1 would
  • 将 div 居中对齐

    我想漂浮一个div到中心 是否可以 text align center不能在 IE 中工作 本身没有浮动到中心 如果要将块元素置于另一个块元素的中心 请执行以下操作 div div Stuff to center div div with
  • 内层div的边距影响外层div

    我有三个嵌套的 DIV 元素 如下所示 div div div This br is br a br multiline br testcase br This br is br a br multiline br testcase br
  • 如何删除 div 和页面顶部之间的空间?

    这可能已经被问过一百万零一次了 但如果有人能向我解释 div 的行为 我将不胜感激 我有一个容器 div 我将其对齐在页面的中心 页面的顶部和顶部之间有一个间隙 我希望它与页面顶部齐平 我假设有某种我需要删除的边距或填充 但我无法想象它可能
  • 在显示表格单元格中使用边距[重复]

    这个问题在这里已经有答案了 我尝试在 li 中添加 margin left margin right 但它没有给它们之间留出空间 我应该添加什么来在列表之间留出一个空格 CSS btn top float right height 40px
  • 如何为所有 div 的每一侧提供相同的空间

    您好 我有一个关于布局的问题 我有一个网站 我在 div 中填充信息 这些 Div 需要彼此相邻 它们之间以及容器 div 两侧之间的空间大小相同 我正在为手机制作它 所以我不知道屏幕的宽度 它应该在所有不同的屏幕分辨率上看起来都很好 目前
  • 计算网络两个输出之间的 cosine_proximity 损失

    我正在使用 Keras 2 0 2 功能 API Tensorflow 1 0 1 来实现一个接受多个输入并产生两个输出的网络a and b 我需要使用 cosine proximity 损失来训练网络 这样b是标签a 我该怎么做呢 在这里
  • 为什么 CSS 中引入了边距折叠规则?

    这套巧妙的规则什么时候可以发挥作用 它们打破了盒子模型的简单性 当您将不同的布局组合在一起时 它们会带来无限的麻烦 那么原因是什么呢 Rules http www w3 org TR css3 box collapsing margins供
  • jQuery 如何获取元素的边距和填充?

    只是想知道 如何使用 jQuery 我可以获得格式化的总填充和边距等元素 即 30px 30px 30px 30px 或 30px 5px 15px 30px 等 I tried var margT jQuery img css margi
  • 填充与有边距的子项

    让我们首先说我理解盒子模型 在我作为开发人员的短暂时间里 我一直试图非常严格地遵循语义 html 并使用响应式设计实践 我最近在一家新公司找到了一份初级开发人员的工作 而我的先生则坚决反对填充 就像他无论如何都不希望它被使用一样 他希望我在
  • 我想删除 HTML 空白

    我有一个新问题困扰着我 我正在制作一个网页 我希望在不滚动的情况下进行修复 最重要的是我希望我的主 Div 填满我的所有可用空间 我做了这个代码
  • 删除 div 元素之间的“空白”

    这是我的 HTML 代码 div div div div div div div br div div div div div div div My CSS div1 width 150px height 100px white space
  • div 不会以 margin: 0 auto 居中;

    我的问题只是将 div 居中 目前 我只有一个简单的 html 文件 我不知道为什么margin 0 auto不工作 这是我的 html 的布局
  • 3 个流体 Div 宽度 2 个固定边距?

    我有以下设置 但是将 div 的宽度设置为 30 左右并不能始终如一地工作 一旦窗口宽度小于某个数字 第三个 div 就会低于某个数字 有没有更好的方法来做到这一点 以便我的 div 始终保持内联并不断变得越来越小 同时它们之间的边距保持固
  • 删除 CSS 中的正文边距

    我是网络开发新手 在删除正文边距时遇到了问题 There s space between the very top of the browser and logo text And my code is here on jsbin http
  • 意外的 身体行为,因为它被孩子的 margin-top 向下推 [重复]

    这个问题在这里已经有答案了 HTML 问题看起来总是那么简单 以至于我几乎觉得问这些问题很尴尬 但不管怎样 我不知道为什么会发生这种情况 在这个小提琴里http jsfiddle net o5ee1oag 2 http jsfiddle n
  • 调整容器 div 内部 div 的 margin-top 会将内部 div 和容器 div 从 body 向下推

    我觉得这一定是我做了一些愚蠢的事情的问题 但我无法弄清楚 这是显示我的问题的演示页面 http boxofbaskets com html demo html页面来源
  • 在 Tensorflow 对象检测 API 中绘制验证损失

    我正在使用 Tensorflow 对象检测 API 来检测和定位图像中的一类对象 为了这些目的 我使用预先训练的faster rcnn resnet50 coco 2018 01 28 model 我想在训练模型后检测拟合不足 过度拟合 我
  • 使用边距与填充? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我最近开始自己在线学习周三开发 并且是这个领域的新手 所以对我的基本查询表示歉意 我知道边距和填充之间的区别 用逻辑术语 但不太确定 何时应该使

随机推荐