赞
踩
笼统来说,就是若干卷积层 + Pooling层 + 全连接层组成的神经网络。所用架构模式为INPUT -> [[CONV]*N -> POOL?]*M -> [FC]*K。
如下图所示
在最近新的卷积神经网络中,激活函数选择了<Relu函数,定义为:
f
(
x
)
=
m
a
x
(
0
,
x
)
f(x) = max(0,x)
f(x)=max(0,x)。
具有以下优点:
卷积就会得到Feature Map,在上图中的3代表了三套参数,每个Filter可以输入图像进行卷积得到F M,有多少个Filter就能得到多少个Feature Map。
下采样会得到更小的Feature Map,由Pooling层完成。
全连接层中的神经元和上一层的Feature中每个神经元相连,并且输出层的神经元也都全相连于上一个全连接层,这样就得到了输出。
老样子,先举例说明。
例:55的图像,33的filter,卷积后会得到什么样的feature map呢?
我们需要用这样的公式进行卷积后值的计算。
这里面参数很多,所以要简单介绍一下参数的含义:
x
i
,
j
x_i,j
xi,j:图像的i行j列的元素
w
m
,
n
w_m,n
wm,n:第m行n列的filter权重
w
b
w_b
wb:filter的偏置项
a
i
,
j
a_i,j
ai,j:feature map的第i行j列元素
f:激活函数(relu)
下面是计算举例:
举例之后,下面可以看到整个feature map的计算过程:
需要说明的是,在上述卷积计算中,步幅(stride)均为1。当然也可以设置大于1的数,当步幅为2的时候,feature map计算就如下图所示:
步幅变动之后,feature map大小也会随之发生变化,这说明图像的大小、步幅和卷积后的feature map大小满足一定的关系:
解释一下参数:
W
2
W_2
W2:feature map 卷积前的值
W
1
W_1
W1:卷积前图像的宽度
F
F
F:filter的宽度
P
P
P:Zero Padding的数量(补几圈0)
S
S
S:步幅
H
2
H_2
H2:卷积后的feature map高度
H
1
H_1
H1:卷积前的图像的宽度
下面是深度大于1的卷积计算公式,和式1大同小异:
d代表了层数,D为深度
有多少个filter卷积后就有多少个feature map
下面即为两个filter计算卷积的过程:
PS:上述即为体现出了局部连接和权值共享。
参数数量大大减少。
Pooling层主要是用来进行下采样操作。去掉feature map中不重要的样本来进一步减少参数数量。
最常用的Pooling方法为Max Pooling,顾名思义,在样本中取最大值作为样本值。
下图即为2*2的Max Pooling:
此外,Meaning Pooling则是取各个样本的平均值作为样本值。
详情见上一节
万变不离其宗,训练原理和全连接神经网络相同:利用链式法则求导计算出损失函数对每个权重的偏导数(即为梯度),根据梯度下降公式更新权重,应用反向传播训练算法。
卷积神经网络还涉及到了局部连接、下采样等操作,会影响到误差项的计算,权值共享会影响权重
w
w
w的梯度(偏导数)计算方法。
步长为1,输入深度为1,filter为1个:
输入33,filter为22,stride=1,得到2*2的feature map。
上图中参数的关系可以理解成下面公式:
具体参数都解释过了,不再赘述。权重为filter的,a为神经元的,net表示加权,f表示激活函数,conv为卷积,net、W、a都是数组。 so easy~
误差项这么求:
而后通过blabla的先举例再推导:
结果就出来啦!
还可以写成卷积形式:
卷积步长为S时的误差传递:
步长为S与步长为1的区别:
简答总结就是:步长为2的卷积得到的feature map跳过了步长为1时的相应部分,反向计算误差时候,可以对步长为S的sensitivity map进行相应位置补0。
输入层深度为D时的误差传递:
输入深度为D时,filter的深度也必须为D。
反向计算时:利用filter的第
d
i
d_i
di通道权重对第
l
l
l层的sensitivity map进行卷积,得到
l
−
1
l-1
l−1层
d
i
d_i
di通道的sensitivity map:
filter数量为N时的误差传递:
filter数量为N时,输出层的深度也为N。
反向计算误差项时,需要使用全导数公式。因为
l
−
1
l-1
l−1层加权输入影响到了
l
l
l层所有的feature map。
最后在各组之间将N个偏sensitivity map 按元素相加,得到最终的N$l-1%个层的sensitivity map。
在得到第层sensitivity map的情况下,计算filter的权重的梯度。卷积层是权重共享的,因此梯度的计算稍有不同。
通过计算之后,就能得出相应结果了。
Pooling层没有需要学习的参数,所以它仅仅是把误差传递给上一层即可,不用计算梯度。
假设第
l
−
1
l-1
l−1层大小为44,pooling filter大小为22,步长为2,这样,max pooling之后,第
l
l
l层大小为2*2。
经过blabla的运算之后,得到规律:对于max pooling,下一层的误差项的值会原封不动的传递到上一层对应区块中的最大值所对应的神经元,而其他神经元的误差项的值都是0。
还是blabla运算推导(此处省略1w字),得到规律:对于mean pooling,下一层的误差项的值会平均分配到上一层对应区块中的所有神经元。
他还有个高端大气上档次的形式:即克罗内克积(Kronecker product)形式。
至此,介绍完毕啦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。