卷积神经网络全面解析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

2015/9/17卷积神经网络全面解析­ji­shen­jing­wang­luo­quan­mian­jie­xi#toc_31/18Moonshile HomeArchiveWiki卷积神经网络全面解析Published on 2015­09­16卷积神经网络(CNN)概述从多层感知器(MLP)说起感知器多层感知器输入层­隐层隐层­输出层Back Propagation存在的问题从MLP到CNNCNN的前世今生CNN的预测过程卷积2015/9/17卷积神经网络全面解析­ji­shen­jing­wang­luo­quan­mian­jie­xi#toc_32/18下采样光栅化多层感知器预测CNN的参数估计多层感知器层光栅化层池化层卷积层昀后一公里:SoftmaxCNN的实现思路其他昀近仔细学习了一下卷积神经网络(CNN,Convolutional NeuralNetwork),发现各处资料都不是很全面,经过艰苦努力终于弄清楚了。为了以后备查,以及传播知识,决定记录下来。本文将极力避免废话,重点聚焦在推导过程上,为打算从零开始的孩纸说清楚“为什么”。另外,因本人才疏学浅(是真的才疏学浅,不是谦虚),肯定会有很多谬误,欢迎大家指出!卷积神经网络(CNN)概述由来:神经元网络的直接升级版相关:Yann LeCun和他的LeNet影响:在图像、语音领域不断突破,复兴了神经元网络并进2015/9/17卷积神经网络全面解析­ji­shen­jing­wang­luo­quan­mian­jie­xi#toc_33/18入“深度学习”时代卷积神经网络沿用了普通的神经元网络即多层感知器的结构,是一个前馈网络。以应用于图像领域的CNN为例,大体结构如图1。很明显,这个典型的结构分为四个大层次输入图像I。为了减小复杂度,一般使用灰度图像。当然,也可以使用RGB彩色图像,此时输入图像有三张,分别为RGB分量。输入图像一般需要归一化,如果使用Sigmoid激活函数,则归一化到[0, 1],如果使用tanh激活函数,则归一化到[­1, 1]。多个卷积(C)­下采样(S)层。将上一层的输出与本层权重W做卷积得到各个C层,然后下采样得到各个S层。怎么做以及为什么,下面会具体分析。这些层的输出称为FeatureMap。光栅化(X)。是为了与传统的多层感知器全连接。即将上一层的所有Feature Map的每个像素依次展开,排成一列。传统的多层感知器(N&O)。昀后的分类器一般使用Softmax,如果是二分类,当然也可以使用LR。接下来,就开始深入探索这个结构吧!2015/9/17卷积神经网络全面解析­ji­shen­jing­wang­luo­quan­mian­jie­xi#toc_34/18从多层感知器(MLP)说起卷积神经网络来源于普通的神经元网络。要了解个中渊源,就要先了解神经元网络的机制以及缺点。典型的神经元网络就是多层感知器。摘要:本节主要内容为多层感知器(MLP,Multi­LayerPerceptron)的原理、权重更新公式的推导。熟悉这一部分的童鞋可以直接跳过了~但是,一定一定要注意,本节难度比较大,所以不熟悉的童鞋一定一定要认真看看!如果对推导过程没兴趣,可直接在本节最后看结论。感知器感知器(Perceptron)是建立模型其中激活函数 act 可以使用{sign, sigmoid, tanh}之一。激活函数使用符号函数 sign ,可求解损失函数昀小化问题,通过梯度下降确定参数激活函数使用 sigmoid (或者 tanh ),则分类器事实上成为Logistic Regression(个人理解,请指正),可通过梯度上升极大化似然函数,或者梯度下降极小化损失函数,来确定参数如果需要多分类,则事实上成为Softmax Regression感知器比较简单,资料也比较多,就不再详述。多层感知器感知器存在的问题是,对线性可分数据工作良好,如果设定迭代次2015/9/17卷积神经网络全面解析­ji­shen­jing­wang­luo­quan­mian­jie­xi#toc_35/18数上限,则也能一定程度上处理近似线性可分数据。但是对于非线性可分的数据,比如昀简单的异或问题,感知器就无能为力了。这时候就需要引入多层感知器这个大杀器。多层感知器的思路是,尽管原始数据是非线性可分的,但是可以通过某种方法将其映射到一个线性可分的高维空间中,从而使用线性分类器完成分类。图1中,从X到O这几层,正展示了多层感知器的一个典型结构,即输入层­隐层­输出层。输入层­隐层是一个全连接的网络,即每个输入节点都连接到所有的隐层节点上。更详细地说,可以把输入层视为一个向量 x ,而隐层节点 j 有一个权值向量 θj 以及偏置 bj ,激活函数使用 sigmoid 或 tanh ,那么这个隐层节点的输出应该是也就是每个隐层节点都相当于一个感知器。每个隐层节点产生一个输出,那么隐层所有节点的输出就成为一个向量,即若输入层有 m 个节点,隐层有 n 个节点,那么 Θ = [θT] 为 n×m 的矩阵,x 为长为 m 的向量,b 为长为 n 的向量,激活函数作用在向量的每个分量上, f(x) 返回一个向量。隐层­输出层可以视为级联在隐层上的一个感知器。若为二分类,则常用LogisticRegression;若为多分类,则常用Softmax Regression。Back Propagation搞清楚了模型的结构,接下来就需要通过某种方法来估计参数了。2015/9/17卷积神经网络全面解析­ji­shen­jing­wang­luo­quan­mian­jie­xi#toc_36/18对于一般的问题,可以通过求解损失函数极小化问题来进行参数估计。但是对于多层感知器中的隐层,因为无法直接得到其输出值,当然不能够直接使用到其损失了。这时,就需要将损失从顶层反向传播(Back Propagate)到隐层,来完成参数估计的目标。首先,假设对于样本 x ,其标签为 t 。对于层 q ,假设其第 j 个节点输出为 oj ,其输入也就是上一层 p 的第 i 个节点输出为 oi ,连接 p 层第 i 个节点与 q 层第 j 个节点的权重为 θji ;再假设层 q 的下一层为 r 。若昀终输出为 y ,那么损失函数其中, φ 为激活函数。我们依旧通过极小化损失函数的方法,尝试进行推导。则式(4)(5)的等号右边部分的三个导数比较容易确定然后再看剩下的比较复杂的一个偏导数。考虑层 q 的下一层 r ,其节点 k 的输入为层 q 中每个节点的输出,也就是为 oq 的函数,考虑逆函数,可视 oq 为 or 的函数,也为 nr 的函数。则对每个隐层2015/9/17卷积神经网络全面解析­ji­shen­jing­wang­luo­quan­mian­jie­xi#toc_37/18令则对每个隐层考虑到输出层,有故有综合以上各式,有梯度结果本来到这里应该就结束了,不过同正向的时候一样,为了计算方2015/9/17卷积神经网络全面解析­ji­shen­jing­wang­luo­quan­mian­jie­xi#toc_38/18便,我们依然希望能够以矩阵或者向量的方式来表达。结论在这里:假设有层 p, q, r ,分别有 l, m, n 个节点,依序前者输出全连接到后者作为输入。层 q 有权重矩阵 [Θq]m×l ,偏置向量 [bq]m×1 ,层 r有权重矩阵 [Θr]n×m ,偏置向量 [br]n×1 。那么其中,运算 w = u○v 表示 wi = uivi 。函数作用在向量或者矩阵上,表示作用在其每个分量上。昀后,补充两个常用的激活函数的导数结果,推导很简单,从略。存在的问题多层感知器存在的昀大的问题就是,它是一个全连接的网络,因此在输入比较大的时候,权值会特别多。比如一个有1000个节点的隐层,连接到一个1000×1000的图像上,那么就需要 10^9 个权值参数(外加1000个偏置参数)!这个问题,一方面限制了每层能够容纳的昀大神经元数目,另一方面也限制了多层感知器的层数即深度。多层感知器的另一个问题是梯度发散,即在深度增加的情况下,从后传播到前边的残差会越来越小,甚至对更新权值起不到帮助,从而失去训练效果。(这个问题的具体原因还没有完全弄清楚,求指教!)2015/9/17卷积神经网络全面解析­ji­shen­jing­wang­luo­quan­mian­jie­xi#toc_39/18因为这些问题,神经元网络在很长一段时间内都被冷落了。从MLP到CNN卷积神经网络的名字怪吓人,实际理解起来也挺吓人的。哈哈,其实只要看明白了多层感知器的推导过程,理解卷积神经网络就差不多可以信手拈来了。摘要:首先解释卷积神经网络为什么会“长”成现在这般模样。然后详细推导了卷积神经网络的预测过程和参数估计方法。CNN的前世今生既然多层感知器存在问题,那么卷积神经网络的出现,就是为了解决它的问题。卷积神经网络的核心出发点有三个。局部感受野。形象地说,就是模仿你的眼睛,想想看,你在看东西的时候,目光是聚焦在一个相对很小的局部的吧?严格一些说,普通的多层感知器中,隐层节点会全连接到一个图像的每个像素点上,而在卷积神经网络中,每个隐层节点只连接到图像某个足够小局部的像素点上,从而大大减少需要训练的权值参数。举个栗子,依旧是1000×1000的图像,使用10×10的感受野,那么每个神经元只需要100个权值参数;不幸的是,由于需要将输入图像扫描一遍,共需要991×991个神经元!参数数目减少了一个数量级,不过还是太多。权值共享。形象地说,就如同你的某个神经中枢中的神经细胞,它们的结构、功能是相同的,甚至是可以互相替代的。也就是,在卷积神经网中,同一个卷积核内,所有的神经元的权值是相同的,从而大大减少需要训练的参数。继续上一个栗子,虽然需要991×991个神经元,但是它们的权值是共享2015/9/17卷积神经网络全面解析­ji­shen­jing­wang­luo­quan­mian­jie­xi#toc_310/18的呀,所以还是只需要100个权值参数,以及1个偏置参数。从MLP的 10^9 到这里的100,就是这么狠!作为补充,在CNN中的每个隐藏,一般会有多个卷积核。池化。形象地说,你先随便看向远方,然后闭上眼睛,你仍然记得看到了些什么,但是你能完全回忆起你刚刚看到的每一个细节吗?同样,在卷积神经网络中,没有必要一定就要对原图像做处理,而是可以使用某种“压缩”方法,这就是池化,也就是每次将原图像卷积后,都通过一个下采样的过程,来减小图像的规模。以昀大池化(Max Pooling)为例,1000×1000的图像经过10×10的卷积核卷积后,得到的是991×991的特征图,然后使用2×2的池化规模,即每4个点组成的小方块中,取昀大的一个作为输出,昀终得到的是496×496大小的特征图。现在来看,需要训练参数过多的问题已经完美解决。而梯度发散的问题,因为还不清楚具体缘由,依然留待讨论。下面我们来揭开卷积神经网络中“卷积”一词的神秘面纱。CNN的预测过程回到开头的图1,卷积神经网络的预测过程主要有四种操作:卷积、下采样、光栅化、多层感知器预测

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功