卷积神经网络 — Convolutional Neural Network

卷积神经网络相较于 B P BP BP神经网络的进步主要是极大地减少了构建网络所需要的参数。对于一个 1000 ∗ 1000 1000*1000 10001000像素的 R G B RGB RGB图像( w i d t h = 1000 , h e i g h t = 1000 , d e p t h = 3 width=1000, height=1000, depth=3 width=1000,height=1000,depth=3),如果应用单层、十个神经元的BP神经网络构建网络模型,那么该网络就需要计算 10 ∗ 1000 ∗ 1000 ∗ 3 + 10 10*1000*1000*3+10 10100010003+10个参数的梯度。如果网络的层数或神经元数目增加,该模型的计算成本将无比巨大。Hubel和Wiesel在研究猫脑皮层时发现了局部感受野(某些神经细胞对于特定部分的视觉区域敏感),并据此提出了卷积神经网络,不再像 B P BP BP神经网络那样采用全连接。如下图(图取自):

这里写图片描述

Filter

根据局部感受野,卷积神经网络引入了 f i l t e r filter filter(在部分学术文章中,也称 k e r n e l kernel kernel)的概念。假设我们有一张 5 ∗ 5 5*5 55像素的灰度图像 i n p u t input input 2 ∗ 2 2*2 22 f i l t e r filter filter i n p u t input input卷积后的结果如下图 o u t p u t output output所示。有一点需要注意! f i l t e r filter filter d e p t h depth depth值始终和其输入数据的 d e p t h depth depth值一致,且 o u t p u t output output d e p t h = 1 depth=1 depth=1。但是可以应用多个 f i l t e r filter filter对同一个输入数据卷积,并将其 o u t p u t s outputs outputs叠在一起形成网络下一层的输入, o u t p u t s outputs outputs d e p t h depth depth等于 f i l t e r filter filter的数目。
这里写图片描述

下面给出卷积的公式:
O u t p u t = C o n v f ( I n p u t ) O u t p u t i , j = ∑ h = 0 H f − 1 ∑ w = 0 W f − 1 ∑ d = 1 D f I n p u t i + h , j + w , d ∗ f i l t e r i + h , j + w , d Output = Conv_f(Input) \\ Output_{i,j} = \sum\limits_{h=0}^{H_f-1} \sum\limits_{w=0}^{W_f-1} \sum\limits_{d=1}^{D_f} Input_{i+h,j+w,d}*filter_{i+h,j+w,d} Output=Convf(Input)Outputi,j=h=0Hf1w=0Wf1d=1DfInputi+h,j+w,dfilteri+h,j+w,d

其中, i ∈ { 1 , 2 , … , H I − H f + 1 } ; j ∈ { 1 , 2 , … , W I − W f + 1 } i \in \{1,2,\dots,H_I-H_f+1\}; j \in \{1,2,\dots,W_I-W_f+1\} i{1,2,,HIHf+1};j{1,2,,WIWf+1} H I H_I HI H f H_f Hf表示 I n p u t Input Input f i l t e r filter filter h e i g h t height height W I W_I WI W f W_f Wf表示 I n p u t Input Input f i l t e r filter filter w i d t h width width

Zero-Padding

观察上例可以发现,直接对原始数据 I n p u t Input Input进行卷积,会造成每个像素对输出的贡献不均衡。例如, I n p u t [ 1 , 1 ] Input[1,1] Input[1,1] O u t p u t Output Output只有一次影响,而 I n p u t [ 3 , 3 ] Input[3,3] Input[3,3] O u t p u t Output Output有四次影响。或者是想控制 O u t p u t Output Output h e i g h t height height w i d t h width width。都可以通过对原始数据的上下、左右四侧填充 0 0 0
这里写图片描述

Stride

同时,我们也可以调整 f i l t e r filter filter的移动步伐。如下图:
这里写图片描述

结合 P a d d i n g Padding Padding S t r i d e Stride Stride I n p u t Input Input f i l t e r filter filter O u t p u t Output Output之间的维度关系如下:
D e p t h f i l t e r = D e p t h I n p u t H e i g h t O u t p u t = H e i g h t I n p u t + 2 ∗ P a d d i n g − H e i g h t f i l t e r S t r i d e + 1 W i d t h O u t p u t = W i d t h I n p u t + 2 ∗ P a d d i n g − W i d t h f i l t e r S t r i d e + 1 D e p t h O u t p u t = 1 Depth_{filter} = Depth_{Input} \\ Height_{Output} = \frac {Height_{Input} + 2*Padding - Height_{filter}}{Stride} + 1 \\ Width_{Output} = \frac {Width_{Input} + 2*Padding - Width_{filter}}{Stride} + 1 \\ Depth_{Output} = 1 Depthfilter=DepthInputHeightOutput=StrideHeightInput+2PaddingHeightfilter+1WidthOutput=StrideWidthInput+2PaddingWidthfilter+1DepthOutput=1

卷积层

至此,我们已经可以构建出 C N N CNN CNN的卷积层了。如下图:
这里写图片描述

Pooling层

通过增减卷积层 f i l t e r filter filter的数目,可以控制该卷积层输出数据的 d e p t h depth depth,避免过拟合。而 P o o l i n g Pooling Pooling层的目的则是控制输出数据的 h e i g h t height height w i d t h width width P o o l i n g Pooling Pooling主要有 a v e r a g e   p o o l i n g average\ pooling average pooling m a x   p o o l i n g max\ pooling max pooling,故名思义,前一个是在计算 f i l t e r filter filter覆盖范围内值的均值,后一个选取 f i l t e r filter filter覆盖范围内的最大值。如下图:
这里写图片描述

请注意! P o o l i n g Pooling Pooling层中 f i l t e r filter filter d e p t h depth depth始终为1,不改变输入数据的 d e p t h depth depth值。输入数据与输出数据的深度一致。结合上面的卷积层, C N N CNN CNN网络演变如下:
这里写图片描述

全连接层

最后,介绍卷积神经网络中的最后一种网络层——全连接层。在 C N N CNN CNN中,继输入层后,会连续交替放置若干个卷积层和 P o o l i n g Pooling Pooling层的组合,然后将最后一层 P o o l i n g Pooling Pooling层向量化,放置全连接层,输出层多采用 S o f t m a x Softmax Softmax L o g i s t i c   R e g r e s s i o n Logistic\ Regression Logistic Regression做分类输出。完整的 C N N CNN CNN网络如下图:
这里写图片描述

请注意!卷积层和 P o o l i n g Pooling Pooling层可以有多个接替组合,而上图仅包含一个组合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值