卷积神经网络的数学推导

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

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

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

资源描述

卷积神经网络的数学推导Author:idiomerTypesetting:CaterWu2016年8月10日目录1神经网络11.1前向传导..........................................21.1.1输入层.......................................21.1.2隐藏层.......................................21.1.3输出层.......................................21.1.4前向传导......................................31.2反向传播..........................................32卷积神经网络42.1卷积.............................................42.2池化.............................................42.3卷积神经网络........................................52.3.1前向传导......................................52.3.2反向传播......................................6导言卷积神经网络(ConvolutionalNeuralNetwork,CNN)是一种前馈神经网络,每个神经元都只影响邻层的一部分神经元,具有局部感受野,因此,网络具有极强的捕捉局部特征的能力;另一方面,通过权值共享和池化,显著地降低了网络的计算复杂度,使得CNN得到广泛应用。CNN是图像分类和语音识别领域的杰出算法,也是目前大部分计算机视觉系统的核心技术,从facebook的图像自动标签到自动驾驶汽车,乃至AlphaGo都在使用。与此同时,近两年CNN逐渐被应用于NLP任务,在sentenceclassification中,基于CNN的模型取得了非常显著的效果。本文假设读者比较熟悉神经网络的相关知识,特别是反向传播算法的过程,从数学推导的角度来理解CNN的内部原理。1神经网络神经网络是由多个感知器(神经元)构成的全连接的网络,本质上来说,这样的连接只是简单的线性加权和而已,所以每个神经元加上同一个非线性函数(如sigmoid￿tanh等),使得网络能拟合非线性。通常,称这个非线性函数为激活函数。一个典型的全连接神经网络如下所示:1图1:一个典型的全连接神经网络1.1前向传导上图中,每个圆圈代表一个神经元(标上“+1”的是偏置节点,不算入神经元),从神经元引出的连接是参数矩阵w,从偏置节点引出的是参数向量b。w和b是整个网络最重要的参数。1.1.1输入层假设输入x=[x1;x2;x3],令第一层的输入z(1)和激活输出a(1)相等,即z(1)=a(1)=x。1.1.2隐藏层第二层的输入为:z(2)1=a(1)1w(2)11+a(1)2w(2)12+a(1)3w(2)13+b(2)1z(2)2=a(1)1w(2)21+a(1)2w(2)22+a(1)3w(2)23+b(2)2z(2)3=a(1)1w(2)31+a(1)2w(2)32+a(1)3w(2)33+b(2)3用向量简洁表达为:z(2)=w(2)a(1)+b(2)其中,z(2)2R31;w(2)2R33;a(1)2R31;b(2)2R31第二层的激活输出为:a(2)=f(z(2))其中,f为激活函数,a(2)2R31。1.1.3输出层第三层输入:z(3)=w(3)a(2)+b(3)其中,z(3)2R11;w(3)2R13;a(2)2R31;b(3)2R112第三层激活输出:a(3)=f(z(3))其中,f为激活函数,a(3)2R11。特别地,记a(3)为hw;b(x)1.1.4前向传导因此,前向传导可以表示为:z(l+1)=w(l+1)a(l)+b(l+1)a(l+1)=f(z(l+1))其中,l=1;2;:::;L1,L为神经网络的层数。1.2反向传播假设神经网络的代价函数为J(w;b)=1mm∑i=1J(w;b;x(i);y(i))其中:J(w;b;x(i);y(i))=12(y(i)hw;b(x(i)))2即,网络的整体代价为所有训练样例的平均代价。此处我们是要找到最佳的w;b使得J(w;b)即代价函数的值最小,因此J是关于w;b的函数,其中w;b也不是标量,是很多wij;bi的集合。代价函数中没有显式的看到w;b的表达式,那是因为用简洁的hw;b(x(i))替换了。因此要强调的是:J的展开表达式(假设能展开)中只有w;b才是变量,其他都是已知的。因此,根据梯度下降法的思想,对于每个w(l)ij;b(l)ij,我们只要往负梯度方向更新就可以了,即:w(l)ij:=w(l)ij @J@w(l)ijb(l)ij:=b(l)ij @J@b(l)ij向量化表达即为:w(l):=w(l) @J@w(l)b(l):=b(l) @J@b(l)其中, 是学习率。因此,只要能求出w;b的偏导数就能迭代更新,从而完成整个算法。看似简单,但却困难。因为J(w;b)是很难写出显式表达式的,从而很难对每个wij;bij都求出偏导,主要原因是网络是分层的进而w;b也是分层,这才导致了偏导的难求,从而才有了反向传播。既然w;b是分层的,那么很自然地也可以分层地求w;b的偏导。那么很自然的,需要找到一个递推的结构来表达偏导。观察到前向传导中的结构z(l+1)=w(l+1)a(l)+b(l+1),只要求出z(l+1)的偏导,自然就可以求出w(l+1);b(l+1)的偏导(矩阵、向量的求导形式类似标量,a(l)视为常量)。3考虑单个样例的情形,当l为输出层时(l=3),有:(3)=@J@z(3)=@@z(3)12(yh(x))2=@@z(3)12(ya(3))2=@@z(3)12(yf(z(3)))2=(yh(x))◦f′(z(3))其中,◦是按元素(element-wise)相乘。当l为非输出层(隐藏层)时(l=2),有:(2)=@J@z(2)=@J@z(3)@z(3)@z(2)=(3)@z(3)@z(2)=(3)@@z(2)[w(2)f(z(2))+b(2)]=w(2)f′(z(2))◦(3)因此:(L)=(yh(x))a(L)(l)=w(l)a(l)(l+1);(l=2;:::;L1)所以:@J@w(l)=@J@z(l)@z(l)@w(l)=(l)(a(l1))T@J@b(l)=@J@z(l)@z(l)@b(l)=(l);(l=2;:::;L)2卷积神经网络2.1卷积假设有矩阵A33和B22:A=26641234567893775B=[1234]那么B卷积A的结果就是让B在矩阵A上滑动,换言之,就是B与A的所有2×2连续子矩阵做“对应元素积之和”运算,所以,此时的结果C应该为:C=[37476777]因此,假设A的大小为hawa,B的大小为hbwb(其中hahb;wawb),则C的大小为(hahb+1)(wawb+1),矩阵B称为卷积核或滤波器(filter),矩阵C称为特征图(featuremap)。上述运算称为窄卷积,若矩阵A预先上下各添加hb1行零向量,左右各添加wb1列零向量,再与B卷积,则称为宽卷积。窄卷积和宽卷积分别用conv2(A,B,’valid’)和conv2(A,B,’full’)表示。2.2池化假设矩阵C为64的矩阵,池化窗口为22,则按照池化窗口大小将矩阵C分割成6块不相交的22小矩阵,对对每个块中的所有元素做求和平均操作,称为平均池化,取最大值则称为最大池化。得到的矩阵S称为poolmap。如:C=26666666664123412345678567890129012377777777754若平均池化,则:S=26641:53:55:57:54:51:53775若最大池化,则:S=26642468923775由于池化也称为下采样,用S=down(C)表示,为了使得池化层具有可学习性,一般令:S= down(C)+b其中, 和b为标量参数。2.3卷积神经网络卷积神经网络是权值共享,非全连接的神经网络。以2个卷积层和2个池化层的卷积神经网络为例,其结构图如下:cnn2.3.1前向传导C1层:卷积神经网络的输入是2828的矩阵A,经过F1个55的卷积核K1i(i=1;2;:::;F1)的卷积生成F1个2424大小的featuremaps:C1i=conv2(A;K1i;′valid′)+b1iu1i=C1ia1i=f(u1i)S2层:接着池化,池化窗口为22,一个2424的featuremap池化成一个1212大小的poolmap,共生成F1个poolmaps:S2i= 2idown(a1i)+b2iu2i=S2ia2i=f(u2i)C3层:接着再次卷积,C3层中每个88的featuremapC3i都由S2中的所有F1个poolmaps经过F1个55的卷积核K3ij(j=1;2;:::;F1),共生成F3个featuremaps:C3i=F1∑j=1conv2(a2j;k3ij;′valid′)+b3iju3i=C3ia3i=f(u3i)5S4层:接着再次池化,池化窗口为22,一个88的featuremap池化成一个44大小的poolmap,共生成F3个poolmaps:S4i= 4idown(a3i)+b4iu4i=S4ia4i=f(u4i)全连接层:最后,将a4i(i=1;2;:::;F3)顺序展开成向量,并有序连接成一个长向量,作为全连接层网络的输入。2.3.2反向传播卷积神经网络的反向传播本质上是和BP神经网络是一致的,区别在于全连接和非全连接:在反向求导时,卷积神经网络要明确参数连接了哪些神经元;而全连接的普通神经网络中的相邻两层的神经元都是与另一层的所有神经元相连的,因此反向求导时非常简单。全连接层全连接层的反向求导是与普通神经网络的反向求导是一致的:@J@w(l)=(l)(a(l1))T@J@b(l)=(l)卷积层假设当前卷积层为l,下一层为池化层l+1,上一层也为池化层l1。那么从l1层到l层有:a(l)i=f(u(l)i)=f(Nl1∑j=1conv2(a(l1)j;K(l)ij)+b(l)ij)其中,Nl1为l1层poolmaps的个数。如,当l=1时,Nl1=1;当l=3时,Nl1=F1。为了求得卷积层l的各个神经元的,关键是要必须弄清楚该神经元与l+1层中的哪些神经元连接,因为求该神经元的时,只与这些神经元相关。递推的方式与全连接的神经网络的不同之处在于:1.卷积层l的各个神经元的只和l+1层的相关神经元有关2.卷积层l到池化层l+1做了下采样运算,使得矩阵维度减小,因此,(l+1)i需要上采样up成卷积层的矩阵维度。定义up运算为(若上采样窗口为22):up([1234])=2666641122112233443344377775因此,有:(l)i= (l+1)i(a(u(l)i)◦up(l+1i))@J@b(l)i=∑s;t(i)st@J@K(l)ij=∑st((l)i)st(P(l1)j)st其中,()st遍历的所有元素,(P(l1)j)st是((l)i)所连接的l1层中al1j中相关的元素构成的矩阵。6池化层假设当前池化层为l,下一层为全连接层,那么当前池化层就是全连接层的输入,可以根据全连接层的BP求导公式递推算出。因此只需讨论下一层l+1为卷积层的情形,上一层l1也为卷积层,该情形下有:a(l)i=f( (l)idown(a(l1)i)+b(l)i)同样地,为了求得池化层l的各个神经元的,关键是要必须弄清楚该神经元与l+1层中的哪些神经元

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

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

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

×
保存成功