卷积神经网络(Convolutional Neural Network,CNN)的主要应用领域是图像分析处理,如人脸识别、物体识别等
其中,构建一个神经网络模型是由人决定的,有几个隐藏层,每一个隐藏层包括多少个神经元节点,这些都不固定,靠人的经验和试错得出,找到一个合适的模型比较困难。也有机器自主建立模型的技术,但不流行。
示意图如下:
其中f为激活函数(activation function)
多层前馈神经网络(multi-layer feedforward neural network)
Fully Connected 的含义:
全连接,前一层的每一个神经元都和后一层的每一个神经元相连接
feedforward 的含义:
前馈神经网络,从输入的特征向量向前,经过隐藏层获得输出
隐藏层和输出层都是拥有激活函数的功能神经元
相关概念的理解
梯度下降算法如下
其中θt 为第t次迭代时的参数值, α为学习速率(learning rate),偏导符号的部分是梯度。
注意:
通过公式可以发现,梯度下降算法首先要计算所有训练样本的损失函数,求出损失函数对参数的梯度,然后取均值,最后更新梯度。算法中对所有训练样本损失函数的计算,以及梯度的求解可以是并行的,可以充分利用处理器并行计算的优势。
随机梯度下降算法如下
阅读算法可以发现,随机梯度下降算法每次只选取一个训练样本,计算损失函数,求出梯度,然后更新参数。由于每次只选取一个训练样本就更新一次参数,因此不能发挥处理器并行计算的优势。随机梯度下降算法相比于梯度下降算法的优势在于
我们想要一种方法,既能提升权重参数的性能又能发挥并行计算的优势,减少时间开销。
把训练样本若干个分为一组
梯度下降和和随机梯度下降的折中,兼顾随机梯度下降的有点,也可以提高训练效率
mini-batch 随机梯度下降算法,其中K即为batch size,为了提高计算效率,一般设置为2n
误差逆传播(error BackPropagation,BP),BP算法基于梯度下降策略
示例网络结构如下图所示,这里仅以隐藏层到输出层一个权重参数whj为例
对于反向传播的理解
神经网络的拟合能力太过强大,可能会很严格的拟合训练集上的每一条数据,但在测试集上的表现不尽人意
解决方法:早停(early stopping) 、正则化(regularization)
早停:一边训练一边检测模型在训练数据集和测试数据集上的表现,若在训练集上的表现很好,但在测试集上的表现效果出现下降,则可能出现了过拟合,找到临界点停止训练即可
正则化:在代价函数中增加用于描述网络复杂程度的部分
对于图像的处理,若使用传统的全连接神经网络模型,会面临的问题有
总之,对于计算机视觉方面,使用传统神经网络由于参数过多而不可行。为了解决传统神经网络在计算机视觉方面的不好表现,提出了卷积神经网络。
简单理解:
直接将图片作为一个输入矩阵,确定一个卷积核(过滤器),在图片上做卷积运算,得出来一个矩阵,这个矩阵能够帮助我们提取出图片的一些特征,进而从图片中获取我们需要的信息。卷积运算是以卷积核作为窗口,以特定步长进行矩阵内积的运算。显然,确定卷积核是提取图像特征的关键,卷积神经网络将卷积核作为参数,通过大量数据对卷积核进行训练,在提取出图片中需要的特征信息的基础上,实现某个计算机视觉的目标。
输入图像为7 * 7 * 3,3通道RGB图像
对每一个通道指定一个卷积核,卷积核大小为3*3,对整个图像来说,卷积核为3 * 3 * 3,即为一个过滤器(filter),一个过滤器在一个图像上应用卷积再加上偏置得出一个特征图
注意此处的计算细节,x0 * w0 + x1 * w1 + x2 * w2 + b0 = o0
池化是为了在保留图像特征的前提下,压缩特征值,减小数据规模
最大池化,在卷积之后,对特征图在某个区域中选择最大值
相当于一个传统神经网络层,先将卷积池化得到的结果展成一个1*n的向量,在对应到要分类的一个向量