关闭

阅读小结:Large-Margin Softmax Loss for Convolutional Neural Networks

1130人阅读 评论(2) 收藏 举报

徐博最近一直在看我博客,肯定是想看我什么时候不更新,然后好嘲笑我。当然,不排除徐博已经爱上我的可能。



What:

改进SoftmaxLoss,显式的鼓励类间差异和类内相似,防止过拟合。 


在minist上的效果如下,可以看到用Lsoftmax的每一类的宽度小。(对应余弦距离小)




回顾SoftmaxLoss:

1. Softmax

就是一个 把一个向量归一到[0,1]的函数,输出也是向量。在matlab里就3行代码:

% X is input vector,  Y is output vector
E = exp(X - max(X,[],3));
L = sum(E,3);
Y = E/L;

2. Softmax Loss

前向

Loss = -log(Y(c_gt)); 

c_gt 是一个one-hot向量,比如[0,0,1,0,0,0,0,0],1的那一维就是正确类所在的序号,这里就是第3类。

所以Y(c_gt)就是ground truth那一类的softmax score。  这个score越接近1越好,对应的Loss越小越好

带入Y的softmax公式,那么可以化简为:Loss = -log(exp(X_gt-Xmax) / L) = -(X_gt-Xmax) + log(L) = Xmax + log(L) - X_gt;

其中Xmax就是向量X中最大值,X_gt 就是ground truth那一维上X的值, L同上面代码中的一样,是exp的和。

比如在minist上,我输入一张1的手写图片(gt_label=2,因为minist有0),最后得到向量是10维的,

[0.1,0.2,0.3,0.4,0,0,0,0]   那么Xmax =0.4, X_gt =0.2(在第二维)


反向bp

bp要输出和输入一样维度的向量。

Loss = Xmax + log(L) - X_gt;

Loss' = mt + E/L  - gt = mt + Y  - gt;  (mt,gt 是一个one-hot向量,比如[0,0,1,0,0,0,0,0],1的那一维就是之前max的那一维和gt_label的那一维)

matlab代码如下:

gradient = Y;
gradient(c_gt) = gradient(c_gt) -1;

其实我觉得mt应该也要加的,但我参考的matconvnet代码中没有加。不是很明白。


 3. Large-Margin Softmax Loss

目标函数的目标是要score高,所以感性上正确那一类的W会渐渐变成input同向,而其他W则会和input正交。

所以作者想出了一个办法,让它们同向或者正交没辣么容易。

就是加大夹角

m = 1就是原来的softmax。

使用下面这张图更好说明:

x到W1的夹角是 θ1,到W2的夹角是θ2

如果使用了Lsoftmax,相当于要求 W1到 Decision Boundary Class2的夹角 为 mθ1。


在实际使用时,cos(mθ)可以用 cos(θ)来表示。而cos(θ)可以用 Wx/ llWll llxll 来得到。






1
0
查看评论

【论文笔记】Large-Margin Softmax Loss for Convolutional Neural Networks

参考文献: Liu W, Wen Y, Yu Z, et al. Large-Margin Softmax Loss for Convolutional Neural Networks[C]//Proceedings of The 33rd International Conference on...
  • shaoxiaohu1
  • shaoxiaohu1
  • 2016-11-25 21:54
  • 3879

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

最近几年网络效果的提升除了改变网络结构外,还有一群人在研究损失层的改进,这篇博文要介绍的就是较为新颖的Large-Margin softmax loss(L-softmax loss)。Large-Margin softmax loss来自ICML2016的论文:Large-Margin Softm...
  • u014380165
  • u014380165
  • 2017-08-08 08:23
  • 2454

大裕量Softmax 损失函数--Large-Margin Softmax Loss for Convolutional Neural Networks

ICML2016 Large-Margin Softmax Loss for Convolutional Neural Networks本文针对CNN网络中的 Softmax Loss 做出改进,使之成为 Large-Margin Softmax Loss 标准的CNN可以被看做由 Softma...
  • cv_family_z
  • cv_family_z
  • 2016-10-17 16:10
  • 2835

《Large-Margin Softmax Loss for Convolutional Neural Networks》

机器学习中的一个任务是学习具有判别性的特征,使得类内距离较小,类间距离较大,或者说使得学习到的特征具有类内的紧致性和类间的分离性。传统的做法是利用contrastive loss,triplet loss,还有最近提出来的center loss+softmax。参考论文提出了large-margin...
  • Dilusense
  • Dilusense
  • 2017-01-20 04:44
  • 1027

论文阅读:ICML 2016 Large-Margin Softmax Loss for Convolutional Neural Networks

待续
  • u014230646
  • u014230646
  • 2016-12-23 11:47
  • 394

最陌生的老朋友Softmax Loss

Softmax Loss Max Margin
  • LIYUAN123ZHOUHUI
  • LIYUAN123ZHOUHUI
  • 2017-08-11 17:12
  • 995

large margin-人脸识别

最近新出的 角度间隔使得在lfw 数据库上能达到一个比较好的效果。 重新读了一下large margin 的文章,感觉如出一辙。 思想是一样的,要把两个有重叠的区域,尽可能的分开。 largin margin 的 github 实现: https://github.com/wy1iu/LargeMa...
  • keyanxiaocaicai
  • keyanxiaocaicai
  • 2017-06-11 20:44
  • 404

Large-Margin Softmax Loss for Convolutional Neural Networks

大间隔softmax(Large-margin softmax,L-Softmax)使得学习到的特征分布类内高度内聚、类间距离足够大,同时也使得模型具有一定
  • cdknight_happy
  • cdknight_happy
  • 2018-02-02 16:30
  • 11

论文阅读:Reading Text in the Wild with Convolutional Neural Networks

来自 VGG 实验室,发表在 IJCV 上。实验步骤分为两部分,基于 region proposal mechanism 的检测文字部分,以及基于 CNN 的文字识别部分。在第一部分的 region proposal 部分,首先保证较高的 recall,尽量把所有可能的文字区域先检测出来;然后经过一...
  • u010167269
  • u010167269
  • 2016-08-27 21:41
  • 3168

卷积神经网络系列之softmax,softmax loss和cross entropy的讲解

我们知道卷积神经网络(CNN)在图像领域的应用已经非常广泛了,一般一个CNN网络主要包含卷积层,池化层(pooling),全连接层,损失层等。虽然现在已经开源了很多深度学习框架(比如MxNet,Caffe等),训练一个模型变得非常简单,但是你对这些层具体是怎么实现的了解吗?你对softmax,sof...
  • u014380165
  • u014380165
  • 2017-08-17 07:47
  • 7563
    个人资料
    • 访问:76952次
    • 积分:1155
    • 等级:
    • 排名:千里之外
    • 原创:33篇
    • 转载:0篇
    • 译文:3篇
    • 评论:45条
    文章分类
    关于我