首页 > 代码库 > 关于卷积神经网络旋转不变性的一点研究
关于卷积神经网络旋转不变性的一点研究
今天一直在思考CNN的旋转不变性,众所周知,CNN具有平移不变性,但是是否具有旋转不变性呢。我们来研究下吧。
1 查阅资料
查阅了许多国内外资料,在解释旋转不变性的时候,普遍得出来,CNN具有一定的旋转不变性,但是这个旋转不变性是有一定的角度控制的,当然起作用的是maxpooling 层,当我们正面拍一些照片的时候,在某些地方会得到activation.然后旋转一定的角度之后,这个依然在相同的点得到activation区域。当然决定这个区域的是maxpooling 层,所以说maxpooling越大可以旋转保持抽取特征不变性的角度就越大。现在很多人解决这种问题的方法都是用data augmentation。
data augmentation:人工增加训练集的大小. 通过平移, 翻转, 加噪声等方法从已有数据中创造出一批"新"的数据
当然这位仁兄介绍的比较仔细,传送门:http://www.cnblogs.com/love6tao/p/5841648.html,但是这种方法,很容易导致模型过拟合。有没有一种方法能解决这个问题呢,下面我来介绍一篇CVPR 2016上的文章。
2 论文介绍
论文名字:RIFD-CNN: Rotation-Invariant and Fisher Discriminative Convolutional Neural Networks for Object Detection
当然这篇文章介绍了旋转不变性改进,和判别改进,但是我这里只介绍一种。
R-CNN模型图:
它这个模型其实很简答,前面就是data augmentation. 然后放上传统的CNN层(VGGNet,AlexNet).是传统网络分类层的前一层。本模型是在之间加了层以保证模型的旋转不变性。
模型分为两层:一层data augmentation 和model training.
Data augmentation:给一些列初始的训练样本,我们通过旋转变化得到了一系列新的训练样本:,其中是正样本,是负样本,是一些列的k个旋转角度。
model training:为了达到旋转不变的特性,文章增加了一个旋转不变全连接层。中的m是除了分类层次的所有层数。不像传统的卷积神经网络,仅仅优化多项逻辑斯蒂回归,即y的值是多项的,是大于2分类的(0,1,2)。具体不多说,传送门,讲的很详细:http://www.docin.com/p-586309778.html
但是本文提出的R-CNN模型,通过加上正则约束项优化一个新的目标函数,以确保训练样本在旋转之前和之后分享相似的特征。
为了减少训练损耗,直接把之前神经网络训练好的参数,带进去。假设是层的输出,是的输出。是分类层。和的参数。那么我们就可以得到:
其中,是RELU 和softmax激活函数。关于激活函数我这里就不说了。
那么给出训练样本以及他们对应的标签,假设总的参数为和.
那么就可以得到下面的优化公式:
其中和为平衡三个目标公式的约束项。其中为softmax 分类器的损失函数:. 其中N是训练样本个数,K是每个样本旋转的次数。
第二,是作为旋转不变正则化约束项。可以表示为:
是RI-CNN旋转之后特征的平均值,表示为:
目标函数的第三项作为一个权值衰减组,为了控制权重,防止过拟合。
整个模型的优化都是用随机梯度下降来优化。
下面贴出这个算法:
总结:算法不是太难,但是想法很好。
关于卷积神经网络旋转不变性的一点研究