卷积神经网络预备知识
论文预备知识
一、神经网络
引言
一个经典的神经网络包含三个层次:输入层,中间层(隐藏层),输出层
例如图例中:输入层有三个单元,中间层四个(可以自由指定),输出层三个单元
神经元之间的连接线表示不同的“权重”和数据的流向
基本结构
传播的大小为a(输入)*w(权重)
对于一个神经元模型:z=g(a1w1+a2w2+a3*w3)(在MP模型中g是sgn函数,只取符号)
单层神经网络(感知器)
从输入层到输出层如图所示
可以用线性代数方程组表示这两个公式
输入的变量是[a1,a2,a3]T(代表由a1,a2,a3组成的列向量),用向量a来表示。方程的左边是[z1,z2]T,用向量z来表示。
系数则是矩阵W(2行3列的矩阵,排列形式与公式中的一样)。于是,输出公式可以改写成:
g(W * a) = z;
这个公式就是神经网络中从前一层计算后一层的矩阵运算。能实现分类的效果。
感知器效果
与神经元模型不同,感知器中的权值是通过训练得到的。因此,根据以前的知识我们知道,感知器类似一个逻辑回归模型,可以做线性分类任务。
我们可以用决策分界来形象的表达分类的效果。决策分界就是在二维的数据平面中划出一条直线,当数据的维度是3维的时候,就是划出一个平面,当数据的维度是n维时,就是划出一个n-1维的超平面。
两层神经网络(多层感知器)
两层神经网络中间增加了一个输出层
偏置节点
偏执节点与之后所有节点相连
在考虑了偏置以后的一个神经网络的矩阵运算如下:
g(W(1) * a(1) + b(1)) = a(2);
g(W(2) * a(2) + b(2)) = z;
多层感知器效果
与单层神经网络不同。理论证明,两层神经网络可以无限逼近任意连续函数。也就是说,面对复杂的非线性分类任务,两层(带一个隐藏层)神经网络可以分类的很好。
下面就是一个例子(此两图来自colah的博客),红色的线与蓝色的线代表数据。而红色区域和蓝色区域代表由神经网络划开的区域,两者的分界线就是决策分界。
训练
1、机器学习模型训练的目的,就是使得参数尽可能的与真实的模型逼近。具体做法是这样的。首先给所有参数赋上随机值。我们使用这些随机生成的参数值,来预测训练数据中的样本。样本的预测目标为yp,真实目标为y。那么,定义一个值loss,计算公式如下
loss = (yp - y)2
这个值称之为损失(loss),我们的目标就是使对所有训练数据的损失和尽可能的小。
如果将先前的神经网络预测的矩阵公式带入到yp中(因为有z=yp),那么我们可以把损失写为关于参数(parameter)的函数,这个函数称之为损失函数(loss function)。
算法
一般来说解决这个优化问题使用的是梯度下降算法。梯度下降算法每次计算参数在当前的梯度,然后让参数向着梯度的反方向前进一段距离,不断重复,直到梯度接近零时截止。一般这个时候,所有的参数恰好达到使损失函数达到一个最低值的状态。
在神经网络模型中,由于结构复杂,每次计算梯度的代价很大。因此还需要使用反向传播算法。反向传播算法是利用了神经网络的结构进行的计算。不一次计算所有参数的梯度,而是从后往前。首先计算输出层的梯度,然后是第二个参数矩阵的梯度,接着是中间层的梯度,再然后是第一个参数矩阵的梯度,最后是输入层的梯度。计算结束以后,所要的两个参数矩阵的梯度就都有了。
反向传播算法可以直观的理解为下图。梯度的计算从后往前,一层层反向传播。前缀E代表着相对导数的意思。
二、卷积
例如
使用如图卷积核对图像进行处理
过程为:把卷积核的9个值都依次与小图片中左上角的33区域的每一个值做完乘法之后, 再相加得到一个值, 作为这个区域的卷积结果。然后向右移动步长(n),依次进行如此处理。
卷积后图像的变化
它可以提取出垂直边缘, 即你如果把这个卷积核理解成一个深度网络的神经元, 则这个神经元对图像中的垂直排列的边缘像素非常敏感, 如下图, 经过这个卷积核, 这个杯子的垂直边缘保留了, 其他的部分被弱化了.
用我的理解,因为卷积核的形式如此,可以提取垂直的特征,而以此类推,利用其他形式的卷积核提取其他形式的特征。
卷积运用
1、识别手写数字
对于识别向右移动的数字1和7之间的区别,使用普通的神经网络提取一维数组
在这个竖线出现的部分, 向右移动的1, 跟7的像素, 看起来是很像的(相位层面)。这就导致, 最终, 单纯全连接的神经网络会认为这个向右移动的1, 更像7, 从而导致识别错误率较高, 因为它只能从一个维度上去看问题, 而无法了解二维方向上的生物特征.
而使用卷积神经网络提取垂直水平的特征
就会发现, 中间的1更像上面的1, 而不是7, 即7具备的横向特征, 中间的1没有。
卷积计算, 能够利用各种类型的卷积核, 对输入图像, 在不同的维度(层层池化)对特征进行提取, 比如有些层的卷积核负责提取边缘, 有些负责提取形状, 有些负责提取纹路, 有些提取特殊的颜色, 斑点等等, 最终形成了一个网络, 会对记住某类物体的综合的特征, 比如一个苹果, 首先它是圆的, 有圆圆的特征, 然后要么是红的, 要么是黄的, 取决于样本, 然后上面可能有些高光跟纹路, 等等, 组合起来形成了一个苹果的综合的印象被存储在模型的参数当中了, 这个神经网络学习的过程, 就类似于人类孩子们认知事物的过程。
卷积神经网络
卷积层
input-卷积核-output
padding边缘补偿:加大边缘元素的作用
池化层
池化层又称为下采样,也就是说,当我们进行卷积操作后,再将得到的特征图进行特征提取,将其中最具有代表性的特征提取出来,可以起到减小过拟合和降低维度的作用。
按照我的理解,类似于取极值的操作,一般取区域最大值。同时还有平均池化等操作。
池化层的好处很多,将其优点总结如下:
- 在减少参数量的同时,还保留了原图像的原始特征
- 有效防止过拟合
- 为卷积神经网络带来平移不变性
全连接层
经过两次卷积和最大池化之后,得到最后的特征图,此时的特征都是经过计算后得到的,所以代表性比较强,最后经过全连接层,展开为一维的向量,再经过一次计算后,得到最终的识别概率,这就是卷积神经网络的整个过程。