卷积神经网络算法的一个实现
10月6日 九阙忬投稿 从理解卷积神经到实现它,前后花了一个月时间,现在也还有一些地方没有理解透彻,CNN还是有一定难度的,不是看哪个的博客和一两篇论文就明白了,主要还是靠自己去专研,阅读推荐列表在末尾的参考文献。目前实现的CNN在MINIT数据集上效果还不错,但是还有一些bug,因为最近比较忙,先把之前做的总结一下,以后再继续优化。卷积神经网络
卷积神经网络CNN是DeepLearning的一个重要算法,在很多应用上表现出卓越的效果,〔1〕中对比多重算法在文档字符识别的效果,结论是CNN优于其他所有的算法。CNN在手写体识别取得最好的效果,〔2〕将CNN应用在基于人脸的性别识别,效果也非常不错。前段时间我用BP神经网络对手机拍照图片的数字进行识别,效果还算不错,接近98,但在汉字识别上表现不佳,于是想试试卷积神经网络。
1、CNN的整体网络结构
卷积神经网络是在BP神经网络的改进,与BP类似,都采用了前向传播计算输出值,反向传播调整权重和偏置;CNN与标准的BP最大的不同是:CNN中相邻层之间的神经单元并不是全连接,而是部分连接,也就是某个神经单元的感知区域来自于上层的部分神经单元,而不是像BP那样与所有的神经单元相连接。CNN的有三个重要的思想架构:
局部区域感知
权重共享
空间或时间上的采样
局部区域感知能够发现数据的一些局部特征,比如图片上的一个角,一段弧,这些基本特征是构成动物视觉的基础〔3〕;而BP中,所有的像素点是一堆混乱的点,相互之间的关系没有被挖掘。
CNN中每一层的由多个map组成,每个map由多个神经单元组成,同一个map的所有神经单元共用一个卷积核(即权重),卷积核往往代表一个特征,比如某个卷积和代表一段弧,那么把这个卷积核在整个图片上滚一下,卷积值较大的区域就很有可能是一段弧。注意卷积核其实就是权重,我们并不需要单独去计算一个卷积,而是一个固定大小的权重矩阵去图像上匹配时,这个操作与卷积类似,因此我们称为卷积神经网络,实际上,BP也可以看做一种特殊的卷积神经网络,只是这个卷积核就是某层的所有权重,即感知区域是整个图像。权重共享策略减少了需要训练的参数,使得训练出来的模型的泛华能力更强。卷积神经网络
采样的目的主要是混淆特征的具体位置,因为某个特征找出来后,它的具体位置已经不重要了,我们只需要这个特征与其他的相对位置,比如一个8,当我们得到了上面一个o时,我们不需要知道它在图像的具体位置,只需要知道它下面又是一个o我们就可以知道是一个’8了,因为图片中8在图片中偏左或者偏右都不影响我们认识它,这种混淆具体位置的策略能对变形和扭曲的图片进行识别。
CNN的这三个特点是其对输入数据在空间(主要针对图像数据)上和时间(主要针对时间序列数据,参考TDNN)上的扭曲有很强的鲁棒性。CNN一般采用卷积层与采样层交替设置,即一层卷积层接一层采样层,采样层后接一层卷积这样卷积层提取出特征,再进行组合形成更抽象的特征,最后形成对图片对象的描述特征,CNN后面还可以跟全连接层,全连接层跟BP一样。下面是一个卷积神经网络的示例:
卷积神经网络的基本思想是这样,但具体实现有多重版本,我参考了matlab的DeepLearning的工具箱DeepLearnToolbox,这里实现的CNN与其他最大的差别是采样层没有权重和偏置,仅仅只对卷积层进行一个采样过程,这个工具箱的测试数据集是MINIST,每张图像是2828大小,它实现的是下面这样一个CNN:
2、网络初始化:
CNN的初始化主要是初始化卷积层和输出层的卷积核(权重)和偏置,DeepLearnToolbox里面对卷积核和权重进行随机初始化,而对偏置进行全0初始化。卷积神经网络
3、前向传输计算:
前向计算时,输入层、卷积层、采样层、输出层的计算方式不相同。
3。1输入层:
输入层没有输入值,只有一个输出向量,这个向量的大小就是图片的大小,即一个2828矩阵;
3。2卷积层:
卷积层的输入要么来源于输入层,要么来源于采样层,如上图红色部分。卷积层的每一个map都有一个大小相同的卷积核,Toolbox里面是55的卷积核。下面是一个示例,为了简单起见,卷积核大小为22,上一层的特征map大小为44,用这个卷积在图片上滚一遍,得到一个一个(421)(421)33的特征map,卷积核每次移动一步,因此。在Toolbox的实现中,卷积层的一个map与上层的所有map都关联,如上图的S2和C3,即C3共有612个卷积核,卷积层的每一个特征map是不同的卷积核在前一层所有map上作卷积并将对应元素累加后加一个偏置,再求sigmod得到的。还有需要注意的是,卷积层的map个数是在网络初始化指定的,而卷积层的map的大小是由卷积核和上一层输入map的大小决定的,假设上一层的map大小是nn、卷积核的大小是kk,则该层的map大小是(nk1)(nk1),比如上图的2424的map大小24(2851)。斯坦福的深度学习教程更加详细的介绍了卷积特征提取的计算过程。
3。3采样层(subsampling,Pooling):
采样层是对上一层map的一个采样处理,这里的采样方式是对上一层map的相邻小区域进行聚合统计,区域大小为scalescale,有些实现是取小区域的最大值,而ToolBox里面的实现是采用22小区域的均值。注意,卷积的计算窗口是有重叠的,而采用的计算窗口没有重叠,ToolBox里面计算采样也是用卷积(conv2(A,K,’valid’))来实现的,卷积核是22,每个元素都是14,去掉计算得到的卷积结果中有重叠的部分,即:
4、反向传输调整权重
反向传输过程是CNN最复杂的地方,虽然从宏观上来看基本思想跟BP一样,都是通过最小化残差来调整权重和偏置,但CNN的网络结构并不像BP那样单一,对不同的结构处理方式不一样,而且因为权重共享,使得计算残差变得很困难,很多论文〔1〕〔5〕和文章〔4〕都进行了详细的讲述,但我发现还是有一些细节没有讲明白,特别是采样层的残差计算,我会在这里详细讲述。卷积神经网络
4。1输出层的残差
和BP一样,CNN的输出层的残差与中间层的残差计算方式不同,输出层的残差是输出值与类标值得误差值,而中间各层的残差来源于下一层的残差的加权和。输出层的残差计算如下:
公式来源
这个公式不做解释,可以查看公式来源,看斯坦福的深度学习教程的解释,http:deeplearning。stanford。eduwikiindex。php反向传导算法。
4。2下一层为采样层(subsampling)的卷积层的残差
当一个卷积层L的下一层(L1)为采样层,并假设我们已经计算得到了采样层的残差,现在计算该卷积层的残差。从最上面的网络结构图我们知道,采样层(L1)的map大小是卷积层L的1(scalescale),ToolBox里面,scale取2,但这两层的map个数是一样的,卷积层L的某个map中的4个单元与L1层对应map的一个单元关联,可以对采样层的残差与一个scalescale的全1矩阵进行克罗内克积进行扩充,使得采样层的残差的维度与上一层的输出map的维度一致,Toolbox的代码如下,其中d表示残差,a表示输出值:
1:hrnet。layers{l}。d{j}net。layers{l}。a{j}。(1net。layers{l}。a{j})。expand(net。layers{l1}。d{j},〔net。layers{l1}。scalenet。layers{l1}。scale1〕)
扩展过程:
利用卷积计算卷积层的残差:
4。3下一层为卷积层(subsampling)的采样层的残差
当某个采样层L的下一层是卷积层(L1),并假设我们已经计算出L1层的残差,现在计算L层的残差。采样层到卷积层直接的连接是有权重和偏置参数的,因此不像卷积层到采样层那样简单。现再假设L层第j个mapMj与L1层的M2j关联,按照BP的原理,L层的残差Dj是L1层残差D2j的加权和,但是这里的困难在于,我们很难理清M2j的那些单元通过哪些权重与Mj的哪些单元关联,Toolbox里面还是采用卷积(稍作变形)巧妙的解决了这个问题,其代码为:
投诉 评论 卡西欧没电了什么表现没电就会电子显示屏不显示了,有指针的手表会停止转动。一般在快没电的时候就会出现走时不准和显示不清晰的情况。这种情况下需要更换电池,如果是太阳能手表可以放到有阳光处晾晒一会。……
所以还要雇主值得注意关心招聘会数据年会、年终总结、年终谈话、年终盘点每到年底,杂七杂八的事情便会爆发式聚集。由于现场招聘会上因为人流量较大,企业较容易从中发现合适的人才而快速招揽进来,一个好职位可能很快就招满了……
做微商怎么找客源做微商怎么加人现在有很多人做微商,那么做微商怎么找aclasstaghrefwiki10240IF2Enbb1。html客源a,怎么加人呢?一起来看看吧。操作方法01:hr在群聊……
朋友圈标签来了热门流量关键词带动视频号用户其实并不会按照你的内容多少来决定它的时间分配,但我觉得这是很合理的。2019年1月,张小龙在广州的微信公开课Pro上进行了一场4小时的超时演讲,在演讲中,他举了一个和……
三哥分享一个人人都可以做赚钱的项目你想不想试试在客家地区,有钱能使鬼推磨,是家喻户晓、妇孺皆知的口头禅。大多数人可以理解为,只要你肯出钱,什么事都有人替你干。赚钱的项目钱的重要性,对于我们来说,不用再多解释。关键是,……
卷积神经网络算法的一个实现从理解卷积神经到实现它,前后花了一个月时间,现在也还有一些地方没有理解透彻,CNN还是有一定难度的,不是看哪个的博客和一两篇论文就明白了,主要还是靠自己去专研,阅读推荐列表在末……
鬼谷子智慧人生如戏全靠演技鬼谷子教你我们这个世界很奇妙,有人把人分为君子和小人,君子在扮演君子,小人在扮演小人。正所谓人生如戏,全靠演技。不知道你有没想过,如果我夸你是君子,你会高兴吗?你会的,每个人都喜欢……
宝宝哭闹的解决技巧宝宝的哭闹在宝宝还不会用语言表达自己的心思之前,只能用简单而直白的哭声表达复杂多样的身体和心理需求。因此,解读宝宝哭闹的心思成为新妈妈的一项基本功。1、心理性需求……
种夏季败火小零食女性夏季最佳选择生活中,我们经常会吃一些容易上火的食物。假如你有以下症状,那么你很有可能上火。比如胃火可以有胃疼、大便干、口臭等症状,肺火可以有咯血、咳嗽、黄痰等症状,肝火会有一些烦躁、失眠、……
佛山蜜月旅游攻略佛山蜜月旅游攻略,介绍了佛山蜜月旅游景点、美食、特产、旅游最佳时间等蜜月旅游信息。了解更多蜜月旅游攻略就在wed114结婚网。佛山蜜月旅游简介佛山简称禅,是一座历史……
新生儿睡眠不安怎么办充足的睡眠岁新生儿的发育有着至关重要的作用,正常情况下新生儿每天大约有18~22小时是在睡眠中。新生儿睡眠不安是常遇到的问题。当遇到这种情况应该怎么办呢?新生儿除哺乳时间……
古代人过年老百姓一般吃什么说到现在逢年过节的小编觉得一直有一个问题,那就是好像只要过节什么的,好像都在吃饺子,其实感觉现在人都变懒了,很多时候也并不是这样的,什么节日吃什么还是有不少的讲究的,那么小编就……
干性皮肤早上用什么洗面奶好现在市面上的洗面奶已经是琳琅满目了,什么品牌、什么包装、什么质地的都有,面对那么多类型的洗面奶,而我们只需要选择一支就可以了,我们该选哪一支才适合我们自己呢?在这里将跟大家分享……
游泳时戴跟屁虫有用吗游泳的人必定喝过泳池的水。可是咱们也不用过火忧虑,因为人的胃会发生强酸,很少有细菌和微生物能逃过这一关。可是咱们也不得不留意,假如很多喝了含氯的水对胃也会有损害,在游泳时尽量带……
呛奶为什么会引起肺炎宝宝如果只是偶尔呛奶,多半是母亲喂养的姿势不正确,如婴儿躺在床上吃奶,或是抱着半醒半睡时吃奶,或是孩子鼻塞、感冒。但是如果婴儿经常性吃奶呛咳,则多是由于维生素A缺乏。不会影响智……
怎么处理蔬菜上的韭蛆如今人们已经渐渐朝向减少使用农药或不使用农药之有机栽培法从事耕作,以确保使用者及消费者之安全。目前蔬菜害虫种类繁多,以下介绍蔬菜主要害虫种类之危害特性及其防治要点,期能对农民有……
边坡滑坡处理方法不稳定边坡带来的危害与影响是巨大的。因此,应十分重视不稳定边坡的监控,并及时研究采取合适的工程技木治理措施,从而确保人民生命财产的安全。边坡分类:1。露天矿边坡:露……
如何防治盆栽花卉上的稻飞虱稻飞虱若虫近梭形长约27毫米,初孵时乳白色,有灰斑,后呈淡黄色,体背有灰褐色或灰青色斑纹。褐飞虱生长发育的适宜温度为20~30,最适温度为26~28,相对湿度80以上。在长江中……
衣服被碳素笔染色了怎么洗掉衣服上要是不小心染上了碳素笔,那么肯定让衣服的主人觉得很不舒服,因为一件漂亮的衣服变得有了瑕疵,尤其是白色衣服更加的明显,衣服被碳素笔染色了怎么洗掉?衣服被碳素笔染色可以……
雨季如何预防树木病虫害我国森林覆盖率逐年降低,生态环境越来越受到国家和人民的重视,树木在生长中常见多种病虫害,严重影响了树木的生长,破坏生态平衡,所以加强树木在生长中病虫害的防治是非常有现实意义的,……
盘中木马病毒的危害是什么很多重大的木马、病毒的始发地都是U盘,尤其是公共场所,比如网吧、学校机房、打印复印店等,U盘已经成为除了网络传播外,木马、病毒的离线传播途径。那么,u盘中木马病毒的危害是什么呢……
孕妇爱穿丈夫衣服的几大原因伴随着一系列适应性的生理变化,孕妈妈常会有许多复杂而深刻的心理体验,在情感、兴趣、爱好和生活习惯等方面也会发生微妙的变化,例如孕妇喜欢穿丈夫的衣服。特别是在妊娠后期和临盆时刻,……
辐射对胎儿有什么影响在科技如此发达的时代,各种家电的发明,让人类的生活更便利,也更有效率,但是这些用品所产生的电磁波却可能对身体有害,尤其是孕妇,更要留意胎儿的安全,远离电磁波带来的伤害,那么辐射……
出现胎停育有多大的几率相信大家非常想知道胎停育的几率是多少,经过统计和调查,每年自然流产人数在120万至150万左右,其中胎停育就占了自然流产的50,也就是说每年60万到75万人在饱受胎停育的折磨,……