卷积神经网络基础教程

卷积神经网络基础教程

卷积神经网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。

卷积神经网络是一种专门用来处理具有类似网格结构的数据的神经网络,例如时间序列(可以认为是在时间轴上有规律地采样形成的一维网格)和图像数据(可以看作是二维的像素网格)。

卷积运算

一维场合

卷积的一个重要物理意义是:一个函数(如:单位响应)在另一个函数(如:输入信号)上的加权叠加

对于线性时不变系统,如果知道该系统的单位响应,那么将单位响应和输入信号求卷积,就相当于把输入信号的各个时间点的单位响应 加权叠加,就直接得到了输出信号。
形象的物理含义见怎样通俗易懂地解释卷积? - 知乎

给定一个输入信号序列 x(t),t=1,,n ,和单位响应序列(有时也称滤波器) f(t),t=1,,m ,一般情况下单位响应的长度 m 远小于输入信号长度n
则卷积输出:

y(t)=(fx)(t)=k=1nf(k)x(tk+1))(1)

在卷积神经网络中,对于不在 [1,n] 范围之内的 x(t) 用零补齐(zero-padding),输出长度一般为 n+m1 。此时也称为 宽卷积。另一类是 窄卷积,输出长度为 nm+1

二维场合

二维卷积经常用在图像处理中。给定一个图像 xij,1iM,1jN ,和滤波器 fij,1im,1jn ,一般 m<<M,n<<N
卷积的输出为:

yij=u=1mv=1nfuvxiu+1,jv+1(2)

在图像处理中,常用的均值滤波(mean filter)就是当前位置的像素值设为滤波器窗口中素有像素的平均值,也就是 fuv=1mn

CNN中的卷积层

在全连接前馈神经网络中,如果第 l 层有nl个神经元,第 l1 层有 nl1 个神经元,连接边有 n(l)×n(l1) 个,也就是权重矩阵有 n(l)×n(l1) 个参数。当 m n都很大时,权重矩阵的参数非常多,训练的效率会非常低

如果用卷积来代替全连接,第 l 层的每一个神经元都只和第l1的一个局部窗口内的神经元相连,构成一个局部连接网络,就可以大大减少权重参数个数。第 l 层的第i个神经元的输入定义为:

a(l)i=f(j=1mw(l)a(l1)ij+m+b(l1)i)=f(j=1mw(l)a(l1)(ij+m):i+b(l1)i)(3)

其中 w(l)Rm m 维的滤波器,a(l1)(ij+m):i=[a(l1)(ij+m):i,,a(l)i]T
写成紧凑的向量形式:
a(l)=f(w(l)a(l1)+b(l1))(4)

从公式 (4) 中可以看到 w(l) b(l1) 对于第 l 层中的所有神经元都是相同的:权值共享;在卷积层里面,我们只需要m+1个参数;第 l+1 层的神经元个数不是任意选择的,而是满足 n(l+1)=n(l)m+1

上面是一维的卷积层,在图像处理中,图像是以二维矩阵的形式输入到神经网络中的。设假设 X(l)R(wl×hl) X(l1)R(wl1×hl1) 分别是第 l 层和第l1层的神经元活性。 X(l) 的每一个元素为:

X(l)s,t=f(i=1uj=1vW(l)i,jXsi+u,tj+v+b(l1))(5)

其中, W(l)i,jRu×v 为两维的滤波器, b(l1) 为偏置项。第 l 层的神经元个数为(wl×hl),并且 wl=wl1u+1,hl=hl1v+1
写成紧凑的向量形式:
X(l)=f(W(l)X(l1)+b(l1))(6)

为了增强卷积层的表示能力,我们可以使用 K 各不同的滤波器来得到K组输出,每一组输出都共享一个滤波器。如果把每个滤波器看成一个特征提取器,每一组输出都可以看成是输入图像经过一个特征提取后得到的新特征。因此,在卷积神经网络中每一组输出也叫做一组 特征映射(Feature Map)。

不失一般性,假设第 l1 层的特征映射组数为 nl1 ,每组特征映射的大小为 ml1=wl1×hl1 。则第 l1 层的总神经元数为 nl1×ml1 。第 l 层的特征映射组数为nl。再假设第 l 层的每一组特征映射的输入为第l1层的所有组特征映射,则第 l 层的第k组特征映射 X(l,k) 为:

X(l,k)=f(p=1nl1(W(l,k,p)X(l1,p))+b(l1,k))(7)

其中, W(l,k,p) 表示第 l1 层的第 p 组特征向量到第l层的第 k 组特征映射所需的滤波器。
l层的每一组特征映射都需要 nl1 个滤波器以及一个偏置 b 。假设每个滤波器的大小为u×v,那么共需要训练 nl×nl1×(u×v)+nl 个参数。这样,第 l 层就得到nl组特征映射,每一组特征映射的大小为 ml=(wl1u+1)×(hl1v+1) ,总的神经元个数为 nl×ml

有时,第 l 层的每一组特征映射并不依赖于第l1层的所有特征映射,也即不同层的特征映射并不是全连接的关系,它们的连接关系可以用一个连接表 T 来描述。如果第l层的第 k 组特征映射依赖于前一层的第p组特征映射,则 Tp,k=1 ,否则为0.

X(l,k)=f(p=1Tp,k=1nl1(W(l,k,p)X(l1,p))+b(l1,k))(8)

池化(Pooling)

卷积层虽然可以显著减少连接的个数,但是每一个特征映射的神经元个数并没有显著减少。为了解决这个问题,一般会在卷积层后面再加上一个池化(Pooling)操作,也被称为子采样(Subsampling),构成一个子采样层。子采样层可以大大降低特征为数,避免过拟合。
对于卷积层得到的一个特征映射 X(l) ,我们可以将 X(l) 划分为多个区域 Rk,k=1,,K 。这些区域可以重叠,也可以不重叠。则每个区域映射到下一层的神经元 X(l+1)k

X(l+1)k=f(Z(l+1)k)=f(wl+1down(Rk)+b(l))(9)

其中 down 是子采样函数, wl+1 b(l) 分别是可训练的权重和偏置参数。写成紧凑的向量形式:
X(l+1)=f(Z(l+1))=f(wl+1down(Xl)+b(l))(10)

注意到,对于每一组特征映射 Xl ,其内部的采样区域 Rk,k=1 用到的权重和偏置参数是一样的(参数共享)。
子采样函数 down 一般是取区域内所有神经元的最大值(Maximum Pooling)或平均值(Average Pooling)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值