您当前的位置:首页 > IT编程 > 深度学习
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:损失函数改进之Large-Margin Softmax Loss

51自学网 2020-10-08 08:05:36
  深度学习
这篇教程损失函数改进之Large-Margin Softmax Loss写得很实用,希望能帮到您。

最近几年网络效果的提升除了改变网络结构外,还有一群人在研究损失层的改进,这篇博文要介绍的就是较为新颖的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是正整数)才算分类效果比较好了。


二分类问题中,大量的负样本会影响到网络的训练吗?
19种深度学习损失函数公式详解
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1