深度学习的常见模型(CNN)

CNN的来源

CNN由纽约大学的Yann LeCun于1998年提出。CNN本质上是一个多层感知机,其成功的原因关键在于它所采用的局部连接和共享权值的方式。

一方面减少了的权值的数量使得网络易于优化,另一方面降低了过拟合的风险。CNN是神经网络中的一种,它的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。

权重共享:在卷积神经网络中,卷积层的每一个卷积滤波器重复的作用于整个感受野中,对输入图像进行卷积,卷积结果构成了输入图像的特征图,提取出图像的局部特征。每一个卷积滤波器共享相同的参数,包括相同的权重矩阵和偏置项。共享权重的好处是在对图像进行特征提取时不用考虑局部特征的位置。而且权重共享提供了一种有效的方式,使要学习的卷积神经网络模型参数数量大大降低。

CNN的网络架构

卷积神经网络结构包括:卷积层,降采样层,全链接层。每一层有多个特征图,每个特征图通过一种卷积滤波器提取输入的一种特征,每个特征图有多个神经元。

卷积层(Conv)

示例图片

示例图片

再举一个卷积过程的例子如下:我们有下面这个绿色的55输入矩阵,卷积核是一个下面这个黄色的33矩阵。卷积的步幅是一个像素。则卷积的过程如下面的动图。卷积的结果是一个3*3的矩阵。

示例图片

上面举的例子都是二维的输入,卷积的过程比较简单,那么如果输入是多维的呢?比如在前面一组卷积层+池化层的输出是3个矩阵,这3个矩阵作为输入呢,那么我们怎么去卷积呢?又比如输入的是对应RGB的彩色图像,即是三个分布对应R,G和B的矩阵呢?

示例图片

示例图片

池化层(Pooling)

示例图片

全连接层(Full Connecting)

示例图片

总结

示例图片

一般CNN的结构依次为

1、 input
2、 ((conv–>relu)N–>pool?)M
3、 (fc–>relu)*K
4、 fc

卷积神经网络的训练算法

  • 与一般的机器学习算法相比,先定义Loss function,衡量和实际结果之间的差距;
  • 找到最小化损失函数的W(权重)和b(偏置),CNN里面最常见的算法为SGD(随机梯度下降)。

卷积神经网络的优缺点

优点
  • 共享卷积核,便于处理高维数据;
  • 不像机器学习人为提取特征,网络训练权重自动提取特征,且分类效果好。
缺点
  • 需要大量训练样本和好的硬件支持(GPU、TPU…);

  • 物理含义模糊(神经网络是一种难以解释的“黑箱模型”,我们并不知道卷积层到底提取的是什么特征)。

卷积神经网络的典型结构

示例图片

实战演练

猫狗大战,即一个简单的二分类问题,训练出一个自动判别猫狗的模型

训练集(共25000张图片,猫狗各12500张)
测试集(共3000张图片,猫狗各1500张)

我们通过Tensorflow这个深度学习框架来构建我们的分类网络。通过其自带的可视化工具Tensorboard我们可以看到网络的详细结构,如下左图所示。
模型训练完成后,我们用测试集来测试模型的泛化能力,输入一张测试图片,导入模型,输出分类结果,示例见下右图。

示例图片

------ 本文结束------
bluesliuf wechat
坚持技术分享,欢迎大家扫码交流!