tiled卷积神经网络(tiled CNN)
这个结构是10年Quoc V.Le等人提出的,这里的tiled,按照 Lecun的解释是Locally-connect non shared.即是局部连接,而且不是共享的,这是针对于权重来说的。本文翻译如有错误,还望指正,谢谢!!这篇论文是10年的,相比较来说四年的东西,比较旧了,可是这个tcnn在ng的ufldl最后也有提及(只有目录部分,ng没写完),而且也算是个cnn的变化,不过看效果没有获得the state of art。因为在cifar-10数据集上当前的效果都达到了91%,而且NIN结构也很不错(还没看)。
Tiled convolutional neural networks
摘要:卷积神经网络(cnn)已经成功的应用于许多的任务上,比如数字或者对象识别。使用卷积(tied)权重显然可以大幅度的减少所需要学习的参数的数量,并且可以使得在这个结构中能够硬编码(估计就是结构自身所特有的属性的意思吧)平移不变性。在本文中,我们考虑学习不变性的问题,而不是只依赖于硬编码。我们提出了tiled卷积神经网络,它通过使用一个tied权重的规则‘tiled’模式(个人理解就是在卷积上加个tiled规则),即不需要毗邻的隐藏单元共享同样的权重,而是隐藏单元之间距离k步远的单元有tied权重。通过在邻居单元上进行池化,这个结果能够去学习复杂的不变性(例如缩放和旋转不变性)而不只是平移不变性。更进一步,它有着大多数CNN的优势:有着相对小数量所需要学习的参数
例如 容易学习和更大的可扩展性。我们提出一个基于的高效的学习算法去训练TCNN,并显示学习到的复杂的不变性特征能让我们获得在数据集和CIFAR-10上高度竞争性的结果。
1 引言
卷积神经网络已经成功的应用到许多的识别任务上了。这些任务包括数字识别(MNIST ),对象识别(NORB)和自然语言处理。CNN有着同样基函数的平移不变,而且在他们上面进行池化去构建平移不变特性。通过在不同的图像的局部位置共享同样的基函数,CNN显然只需要学习更少的参数:这使得比那些在不同的部位(非卷积权重)学习整个不同的基函数的情况使用更少的样本。。更进一步,CNN天生的拥有平移不变性,因为这个网络结构的硬编码有着这样的特性。然而这个硬编码的一个缺点是这个池化结构只能抓取平移不变形;例如,这个网络不能在相互之间旋转的单元上进行池化或者抓取更复杂的不变性,例如平面外的旋转。
是否有着比硬编码平移不变性更好的-这是先验知识的一个有用的形式-或是让这个网络先从无标签数据中自己学习它的不变性?本文中,显示后者是更好的选择,并介绍一个能够这样做的算法,优于卷积的方法。具体来说,我们提出了tiled卷积神经网络(TCNN),这通过使用一个新颖的权重绑定方案(‘tiling’),能够不但有着减少所需要学习参数的好处,还能弹性的去学习其他的不变性。我们的方法是基于相互之间距离为k步的权重/基函数是相等的(当k等于1的时候这就是普通的卷积网络)。
为了从无标签数据中学习这些不变性,我们采用无监督预训练方法,这已经在【5 6 7】中被证实是很有帮助的方法,我们使用一个TICA的改进版本【8】,通过在相关特征组之间池化来形成一个拓扑映射。通过对局部特征组一起池化,它产生的表征对局部变换具有鲁棒性【9】。我们在本文中显示TICA如何通过使用局部正交来高效的去预训练TCNN。
使用TICA预训练得到的TCNN的确能够学习不变性表征,池化的单元具有缩放和旋转的鲁棒性。我们发现这提升了分类的效果,确保TCNN能够与之前在数据集NORB和CIFAR-10上其他公布的算法具有竞争性。
图1:左:有着局部感受野和卷积权重的卷积神经网络。右:部分非卷积感受野网络-tiled CNN。相同颜色的单元是属于相同的映射,有着同样填充纹理的单元是tied权重。(网络图表都是以1d形式说明的)
2 tiled CNN
CNN是基于两个关键的概念:局部感受野,权值绑定。使用局部感受野是是的每个单元都只能看到输入图像中很小的,局部区域。这比那些全感受野具有更高效的计算速率,并且允许CNN能够很好的应对图像的缩放。权值绑定可以强制每个第一层(simple)单元共享同样的权值(见图1左)。这减少了所需要学习的参数的数量,并且(在邻居单元上进行池化)使得能够将平移不变性硬编码到模型中。
尽管权值绑定允许硬编码平移不变性,他同样使得池化单元不能获取更复杂的不变性,例如缩放和旋转不变性。这是因为第二层单元被限制只在同样的基上进行平移的池化。在本文中,不使用在网络中所有的权重进行绑定的方法,而是让毗邻的单元untied,让远离的单元tied。(这个想法来自于tica中,靠近的无关,远离的相关)。这使得第二层单元在有着不同基函数的simple单元上进行池化,因此学习到了更复杂的不变性。
我们称这种局部权重非绑定为“tiling”。 TCNN是通过一个tile size k进行参数化:我们考虑相互远离k步的单元是tied的。通过改变k,我们获得了模型的图谱,这个模型能够学习复杂的不变性,并且有着很少的必须要学习的参数。在图谱的一端我们显示传统的CNN(k=1),在图谱的另一端,我们显示一个全untied simle 单元。
接下来,我们允许我们的模型使用多“映射”,以便去学习高超完备基。一个映射是池化单元和在整个图像上收集的simple单元(图1 右)的集。当我们改变tiling的大小,我们会改变每个映射中权重绑定的程度;例如,如果k=1,每个映射的simple单元会有相同的权值。在我们的模型中,不同映射中的simple单元是不会tied的。不同映射中的单元学习不同的特征,我们的模型能够学习一个丰富和多样的特征集合。有着多映射的TCNN(i)拥有表现复杂不变性的好处,而且在(部分)untied
权重上池化(ii)这个模型也有着相对较少所需要学习的参数的特性。
不幸的是,现今用来对CNN预训练的方法【11 12】都不适合在有着untied权重的结构上使用,例如,这个CDBN算法【11】没有权重绑定的限制。在接下来的章节中,我们讨论一个基于TICA的算法来对TCNN进行预训练。
图2:左:TICA网络。右:TICA第一层过滤器(2d拓扑,W的25行)
3 通过TICA进行无监督特征学习
TICA是一个无监督学习算法,他能从无标签图像块中学习特征。一个TICA网络能够被描述称一个两层的网络(图2左,就是将TICA的过程写成神经网络的形式,ng的ufldl的后面有这样的思想),在第一层是平方,第二层是开平方。第一层中的权重W是学习得到的,第二层中的权重V是固定并且硬编码去表现第一层中神经元的邻居/拓扑结构。具体来说,第二层中每个单元是在小范围内毗陵第一层单元hi
上池化得到的。我们称hi和pi是simple 和池化单元。
更具体的说,在给定输入模式下,第二层中的单元的激活值是。TICA通过在第二层上找到他的稀疏特征表征来学习参数W,通过解决:
(公式1)
这里输入模式是白化过的。这里和,n是输入的大小,m是一层中隐藏单元的数量。V是一个固定矩阵(Vij=1或者0)去编码隐藏单元hi的2d拓扑。具体的说,位于一个2d网格上的hi单元,这个网格中每个pi与hi单元的连续3*3块连接的。这里的每个pi连着准确的一个hi的情形是相对应于标准的ICA。这里的正交限制WWT=I
提供了竞争力并确保学到的特征是多样的。
TICA的一个重要的特性是甚至当在无标签数据上训练也能得到不变性,参考【8 9】。这归功于它的池化结构和学习算法:提出的池化单元对于他们的输入数据的局部变换具有鲁棒性;这个学习算法通过对稀疏性的优化来推动选择。这个鲁棒性和选择的相结合是特征不变性的核心,这对于识别任务【13】来说也是至关重要的。
如果我们在TCNN中的simple和池化单元都分别选择平方和开方,我们能将TCNN视为一个TICA网络的特殊情况,这里的池化单元的拓扑指定为矩阵V。最重要的,TCNN包含局部感受野,这在加速TICA中也起到很重要的角色。我们在下面讨论这些。
4 TICA中的局部感受野
TCNN当学到的表征包含多个特征映射(图1 右)是在对象识别上会有更好的效果。这相对于去训练一个有着超完备(m>n,即学到的特征维度要多于样本的维度)表征的TICA。当学习超完备表征【14】,这个正交限制不能够精确的满足,(即不可能完全的正交),所以我们试图去满足一个近似的正交限制【15】。不幸的是,这些近似的正交限制都是计算复杂和有着超参数的,这需要大量的调整。在通过使用得分匹配【16】后,大部分的调整可以避免掉,但是计算甚至会变得更加复杂,同时正交会与有着拓扑稀疏编码一起被避免掉,这些模型同样代价巨大,因为他们需要进一步的工作,不论是在预测阶段的推论【9
14】还是在训练阶段学习一个解码器单元【17】。
我们能够通过使用局部感受野来避免近似正交化,这是TCNN中内建的。通过这些,每个simple单元的权重矩阵都限制的去在一个小局部区域外都是0(即只有那个区域有值,区域外都是0看待)。这个局部受限自动的确保任何两个没有感受野重叠的simple单元的权重是正交的,不需要明显的正交限制。经验上来说,我们发现正交部分重叠感受野对于学习不同的、信息化特征是不必要的。
然而,正交化对于那些各自映射中占用同样位置的去关联单元是需要的,因为他们是感受图片中相同的区域(即图1右中有着相同纹理的隐藏单元,他们感受着图片的相同的位置,但是却在不同的映射中,所以他们需要正交化)。幸运的是,这个局部正交的计算代价不大:例如,如果有 l 个映射,每个感受野都是被限制感受一个有着s个像素的输入块,我们只需要正交一个 l*s矩阵的行去确保在这些s像素上的 l 特征是正交的。具体的说,当l <=s,我们能要求这些 共享一个输入块的l
单元是正交的。使用这个方法,我们能学习一个通过大约s的因子去超完备一个网络(即学习l =s 映射),而不必只正交化l*s矩阵。这显然比标准的TICA有着更低的损失。对于 l 映射,我们的计算代价是 O(l *s^2*n),而标准的TICA是O(l^2*n^3)。
通常来说,对于大小是n的输入来说我们有l * k * s个所需要学习的参数。我们设置k成他的最大值 n-s+1 (这里的k就是输入的n 减去一个局部感受野s 加上1,得到的就是一共可以有几个感受野k)给出准确的untied局部TICA模型,在前面部分介绍过。 (%这里的意思是不是tiled就是将之前一个卷积的权重相同换成隔几个相同,原来只有一个权重共享给所有人,现在不止一个而已%)
5 用局部TICA来预训练TCNN
我们的预训练算法,是在TICA目标函数(1)上使用梯度下降算法获得的,在算法1中显示。这最内部循环是一个简单的回朔线性搜索算法。在orthogonalize_local_RF(w^new),我们只正交有着完全重叠感受野的权重。在tie_weights,中,我们通过对每个tied权重集合进行平均化来得到权值绑定。
这个算法是通过批量投影梯度下降训练的,通常几乎不需要最优化参数的调整。这是因为TICA的 较易于处理的目标函数允许我们很容易的监控收敛情况。相比较来说,其他的无监督特征学习算法例如RBM和AE需要更多的参数调整,特别是在最优化期间。
6实验
6.1加速
我们首先将局部感受野建立在TCNN中,这使得我们能够以一种更高效的方法去让TICA学习超完备表征。
图3显示在标准TICA上预训练TCNN的加速,通过使用近似不动点正交的方法【15】.这些实验都是在大小为32*32或者50*50的1w张图片上运行的,其中s=8;
我们注意到是严重的权重是全untied的,即k=n-s+1.因此,这里观察到的加速不是来自于一个高效的卷积操作,但是完全是因为这个局部感受野。克服计算量这个问题的关键是允许TCNN成功的使用TICA去从无标签数据中学习特征。
图3TCNN的加速与标准TICA的对比
6.2 在NORB上的分类
接下来,我们说明对TCNN进行TICA的预训练在对象识别上的效果。以NORB的normalized-uniform集开始,这里包含了来自5类的24300个训练样本和24300个测试样本。在我们的实验中,每个样本都是先预处理成32*32大小的图片。
在我们的分类实验中,我们固定每个局部感受野的大小为8*8,设置V使得第二层中的池化单元pi 能够在第一层的simple单元的3*3块上进行池化,没有对边界进行特殊的处理。每个映射中的池化单元的数量等于simple单元的数量。我们使用重叠8*8的局部感受野来密集的对输入图像进行tile,这里每个步长为1(stride = 1)。这使我们在一个32*32的图像上的每个映射都得到25*25=625个simple单元和625个池化单元。
结果显示在table 1中。
6.2.1 无监督预训练
我们受限特征完全来自于无监督数据的情况、具体来说,我们使用NORB训练几自身(剔除标签)作为无监督数据的来源,通过这个数据集来训练我们需要的TCNN的权重W。我们称这个初始化阶段叫无监督预训练阶段。
在从无标签数据中学习特征表征之后,我们在有标签训练集上的TCNN网络的输出部分训练一个线性分类器(即在池化单元的激活值上训练)。在这个有i监督训练阶段,只有线性分类器的权重被训练,TCNN模型的其他权重是固定不变的。(相当于TCNN得到的池化特征 作为另一个分类器的输入)。
我们训练一系列的模型去观察tile size k和映射数量 l 在这其中起的作用。这些模型的测试集的准确度结果在图4-左。使用一个从训练集中随机采样出的验证集,其中有2430个样本(占了总的样本的10%),我们选择一个有着48个映射的卷积模型,并在测试集上获得了94.5%的准确率,这说明只在无监督数据上学到的TCNN可以和NORB上许多的state of the art 算法有的一拼。
6.2.2 W的有监督微调
接下来,我们研究通过无监督预训练阶段得到的模型上的有监督微调的影响。有监督微调发生在无监督预训练之后,但是发生在分类器的有监督训练之前。
使用softmax回归去计算这个梯度,我们将错误信号从输出端(应该是池化单元部分)到学到特征端(应该是simple部分)进行反向传播去更新W(就是BP算法),这里的W是TCNN模型中simple单元的权重。在微调过程中,权重W是没有正交化的调整的。
在我们的模型上的有监督微调的结果显示在图4-右。和上面一样,我们使用训练数据的10%的验证集来作为模型的选择。有着更大数量映射会使得过拟合,因此在验证集上效果不好。在验证集上最好的调整结果是 l =16和k=2,这获得了一个96.1%的测试集准确度。这个基本上优于标准TICA,和到目前为止NORB上公布的最好的结果。
图4:左:在不同的tile大小和map大小下NORB的测试集准确度,没有微调;右:NORB测试集准确度,有微调。
6.2.3 限制训练数据
tiled卷积神经网络(tiled CNN)的更多相关文章
- Deep learning with Theano 官方中文教程(翻译)(四)—— 卷积神经网络(CNN)
供大家相互交流和学习,本人水平有限,若有各种大小错误,还请巨牛大牛小牛微牛们立马拍砖,这样才能共同进步!若引用译文请注明出处http://www.cnblogs.com/charleshuang/. ...
- 卷积神经网络(CNN)新手指南 1
http://blog.csdn.net/real_myth/article/details/52273930 卷积神经网络(CNN)新手指南 2016-07-29 18:22 Blake 1条评论 ...
- Tensorflow之卷积神经网络(CNN)
前馈神经网络的弊端 前一篇文章介绍过MNIST,是采用的前馈神经网络的结构,这种结构有一个很大的弊端,就是提供的样本必须面面俱到,否则就容易出现预测失败.如下图: 同样是在一个图片中找圆形,如果左边为 ...
- 深度学习之卷积神经网络(CNN)
卷积神经网络(CNN)因为在图像识别任务中大放异彩,而广为人知,近几年卷积神经网络在文本处理中也有了比较好的应用.我用TextCnn来做文本分类的任务,相比TextRnn,训练速度要快非常多,准确性也 ...
- 卷积神经网络总结CNN【转载】
卷积神经网络CNN总结 从神经网络到卷积神经网络(CNN)我们知道神经网络的结构是这样的: 那卷积神经网络跟它是什么关系呢?其实卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经 ...
- 深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统
基于卷积神经网络(CNN)的人脸在线识别系统 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集.CNN神经网络模型训练.人脸检测.人脸 ...
- 深入学习卷积神经网络(CNN)的原理知识
网上关于卷积神经网络的相关知识以及数不胜数,所以本文在学习了前人的博客和知乎,在别人博客的基础上整理的知识点,便于自己理解,以后复习也可以常看看,但是如果侵犯到哪位大神的权利,请联系小编,谢谢.好了下 ...
- 吴恩达深度学习笔记(deeplearning.ai)之卷积神经网络(CNN)(上)
作者:szx_spark 1. Padding 在卷积操作中,过滤器(又称核)的大小通常为奇数,如3x3,5x5.这样的好处有两点: 在特征图(二维卷积)中就会存在一个中心像素点.有一个中心像素点会十 ...
- 卷积神经网络(CNN)之一维卷积、二维卷积、三维卷积详解
作者:szx_spark 由于计算机视觉的大红大紫,二维卷积的用处范围最广.因此本文首先介绍二维卷积,之后再介绍一维卷积与三维卷积的具体流程,并描述其各自的具体应用. 1. 二维卷积 图中的输入的数据 ...
随机推荐
- lcn 分布式事务协调者集群原理
lcn集群原理图: 1.实现原理: 1.1 LCN获取tm协调者注册地址 1. LCN客户端项目启动的时候,首先会注册到事务协调者中去,然后读取配置文件tm事务协调者的注册地址. 2. 向该事务协调者 ...
- 安卓开发_浅谈DatePicker(日期选择器)
DatePicker继承自FrameLayout类,日期选择控件的主要功能是向用户提供包含年.月.日的日期数据并允许用户对其修改.如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker ...
- 如何解决用CMake未定义引用`JNI_CreateJavaVM'?
我需要从C ++运行Java,一般来说问题已经解决,但我的make系统或脚本出了问题,有一个创建JVM的C ++文件: #include <jni.h> #include <iost ...
- NoHttp封装--05 文件下载
xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:la ...
- List基础操作
/** * List基础操作 * Created by zhen on 2018/11/14. */ object ListDemo { def main(args: Array[String]) { ...
- persist与checkpoint
1.当反复使用某些RDD时建议使用persist(缓存级别)(采用默认缓存级别时为cache())来对数据进行缓存. 2.如果某个步骤的RDD计算特别耗时或经历很多步骤的计算,当重新计算时代价特别大, ...
- tkinter中combobox下拉选择控件(九)
combobox控件,下拉菜单控件 combobox控件在tkinter中的ttk下 简单的实现下: import tkinter from tkinter import ttk # 导入ttk模块, ...
- 第七章 鼠标(CHECKER3)
/*--------------------------------------------- CHECKER3.C -- Mouse Hit-Test Demo Program No.3 (c) C ...
- python曲线拟合
http://blog.sina.com.cn/s/blog_aed5bd1d0102vid7.html 1.多项式拟合范例: import matplotlib.pyplot as plt impo ...
- JMeter乱码常见的解决方案
方法一.直接将JMeter中http请求中Content encoding改为utf-8 方法二.编辑JMeter安装目录:apache-jmeter-3.2\bin中的jmeter.properti ...