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

原创 2016年09月26日 21:30:26

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



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 来得到。






版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

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

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

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

ICML2016 Large-Margin Softmax Loss for Convolutional Neural Networks本文针对CNN网络中的 Softmax Loss 做出改进,使...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

【论文笔记】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]//P...

《Large-Margin Softmax Loss for Convolutional Neural Networks》

机器学习中的一个任务是学习具有判别性的特征,使得类内距离较小,类间距离较大,或者说使得学习到的特征具有类内的紧致性和类间的分离性。传统的做法是利用contrastive loss,triplet lo...

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

待续

深度学习笔记(六):Encoder-Decoder模型和Attention模型

这两天在看attention模型,看了下知乎上的几个回答,很多人都推荐了一篇文章Neural Machine Translation by Jointly Learning to Align and ...

深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

最近在看Google的Deep Learning一书,看到优化方法那一部分,正巧之前用tensorflow也是对那些优化方法一知半解的,所以看完后就整理了下放上来,主要是一阶的梯度法,包括SGD, M...

行人重识别之重排序(re-ranking)

行人重识别简称Re-identification,目前研究这个方向的大神主要有,UTS的郑良,郑哲东,CUHK的xiaotong等。 这里想分析下,2017年的cvpr, Re-ranking Pe...

人群密度估计之MCNN

该方法源自论文,Single-Image CrowdCounting via Multi-Column Convolutional Neural Network,是上海科技大学张营营的作品。论文在各个...

人脸识别“SphereFace: Deep Hypersphere Embedding for Face Recognition”

在开放集中进行人脸识别,理想的特征最大的类内差距应小于最小的类间差距。作者提出了angular softmax(A-Softmax)损失函数学习angularly discriminative fea...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)