| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
卷积核(Convolution Kernel),也叫过滤器filter,由对应的权值W和偏置b体现
下图是3x3的卷积核在5x5的图像上做卷积的过程,就是矩阵做点乘之后的和

第i个隐含单元的输入就是:,其中
就时与过滤器filter过滤到的图片
另外上图的步长stride为1,就是每个filter每次移动的距离
卷积特征提取的原理
卷积特征提取利用了自然图像的统计平稳性,这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。
当有多个filter时,我们就可以学到多个特征,例如:轮廓、颜色等
多个过滤器filter(卷积核)
一张图片有RGB三个颜色通道,则对应的filter过滤器也是三维的,图像经过每个filter做卷积运算后都会得到对应提取特征的图像,途中两个filter:W0和W1,输出的就是两个图像
这里的步长stride为2(一般就取2,3)
在原图上添加zero-padding,它是超参数,主要用于控制输出的大小
同样也是做卷积操作,以下图的一步卷积操作为例:
与w0[:,:,0]卷积:0x(-1)+0x0+0x1+0x1+0x0+1x(-1)+1x0+1x(-1)+2x0=-2
与w0[:,:,1]卷积:2x1+1x(-1)+1x1=2
与w0[:,:,2]卷积:1x(-1)+1x(-1)=-2
最终结果:-2+2+(-2)+1=-1 (1为偏置)

-下图是使用最大Pooling的方法之后的结果









1)卷积层计算公式
可以对照到上面多个卷积核的例子看
j相当于是第几个卷积核
i相当于对应卷积核或是map的维度
2)卷积层梯度计算
paper中叫做使用BP计算当前层layer单元的灵敏度(sensitivity)
也就是误差的计算,之前我在BP神经网络中推导过,这里不再给出
当前层的第j个unit的灵敏度结果就是:先对下一层的节点(连接到当前层l的感兴趣节点的第l+1层的节点)的灵敏度求和(得到
),然后乘以这些连接对应的权值(连接第l层感兴趣节点和第l+1层节点的权值)W。再乘以当前层l的该神经元节点的输入u的激活函数f的导数值
下采样的“weights”可以定义为常量β(可以查看下面Pooling层输出的表示)
up表示上采样操作,因为我们之前假设每个卷积层之后跟着一个Pooling层,所以反向传播需要进行上采样
up上采样可以使用克罗内克积(Kronecker)实现,如果A是一个 m x n 的矩阵,而B是一个 p x q 的矩阵,克罗内克积则是一个 mp x nq 的矩阵,

所以偏置的梯度为: (因为神经网络中对b的梯度为:(
(δ就是误差,根据定义的代价函数E得来的),其中u为layer的输入:
)
所以卷积核权值的梯度为: (其中:
为
中在卷积运算中逐个与
相乘的patch,因为权重的系数就是对应的patch,对权重求导,就是这个系数)
1)子采样层计算公式
乘以一个常数权重β,再加上偏置,然后再调用激活函数(这里和上面的pooling的操作有所不同,但总的来数还是下采样的过程)
2)梯度计算
和上面的其实类似,就是换成下一层对应的权重k,rot180()是旋转180度,因为卷积的时候是将卷积核旋转180度之后然后在点乘求和的
对偏置b的梯度与上面的一样




(式子太长,直接截图的,没用LaTex解析)

............................................(3)
..........................................(4)对于正向和反向两种初始化权重的方式都是可以的,论文中的模型都能够收敛
所以也不是逐渐缩小的
实验给出了与第一篇论文的比较,如下图所示,当神经网络有30层时,Xavier初始化权重的方法(第一篇论文中的方法)已经不能收敛。

当a=0时就是对应的ReLu激励函数
当a=1是就是对应线性函数
如果输入数据是白化的(whitened),网络会更快的收敛
白化目的是降低数据的冗余性和特征的相关性,例如通过线性变换使数据为0均值和单位方差
并非直接标准化每一层那么简单,如果不考虑归一化的影响,可能会降低梯度下降的影响
标准化与某个样本和所有样本都有关系
解决上面的问题,我们希望对于任何参数值,都要满足想要的分布;
这样做的计算代价是非常大的,因为需要计算x的协方差矩阵
上面两种都不行或是不好,进而得到了BN的方法
既然白化每一层的输入代价非常大,我们可以进行简化
简化1
标准化特征的每一个维度而不是去标准化所有的特征,这样就不用求协方差矩阵了
标准化之后均值为0,方差为1,数据就会落在近似线性的函数区域内,这样激活函数的意义就不明显
从式子来看就是对标准化的数据进行缩放和平移,不至于使数据落在线性区域内,增加数据的表达能力(式子中如果:,
,就会使恢复到原来的值了)
但是这里还是使用的全部的数据集,但是如果使用随机梯度下降,可以选取一个batch进行训练
简化2
第二种简化就是使用mini-batch进行随机梯度下降
注意这里使用mini-batch也是标准化每一个维度上的特征,而不是所有的特征一起,因为若果mini-batch中的数据量小于特征的维度时,会产生奇异协方差矩阵, 对应的行列式的值为0,非满秩
假设mini-batch 大小为m的B
算法中的ε是一个常量,为了保证数值的稳定性
反向传播求梯度:
对于BN变换是可微分的,随着网络的训练,网络层可以持续学到输入的分布。

| Back | FazBrowse Home | New Git URL |