卷积神经网络 – CNN简介

概念

人工神经网络(Artificial Neural Networks,ANN)是一种模拟生物神经系统的结构和行为,进行分布式并行信息处理的算法数学模型。ANN通过调整内部神经元与神经元之间的权重关系,从而达到处理信息的目的。而卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,是一种深度学习模型,它由若干卷积层和池化层组成,尤其在图像处理方面CNN的表现十分出色。-
在这里插入图片描述

卷积神经网络与传统多层神经网络对比

  • 传统意义上的多层神经网络是只有输入层、隐藏层、输出层。其中隐藏层的层数根据需要而定,没有明确的理论推导来说明到底多少层合适
  • 卷积神经网络CNN,在原来多层神经网络的基础上,加入了更加有效的特征学习部分,具体操作就是在原来的全连接的层前面加入了部分连接的卷积层与池化层。卷积神经网络出现,使得神经网络层数得以加深,深度学习才能实现

传统多层神经网络

在这里插入图片描述

卷积神经网络:

在这里插入图片描述

卷积神经网络-CNN 的基本原理

典型的 CNN 由3个部分构成:

  • 卷积层
  • 池化层
  • 全连接层-
    在这里插入图片描述

卷积——提取特征

卷积层的运算过程如下图,用一个卷积核扫完整张图片:-
在这里插入图片描述-
这个过程我们可以理解为我们使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。

在具体应用中,往往有多个卷积核,可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。如果我们设计了6个卷积核,可以理解:我们认为这个图像上有6种底层纹理模式,也就是我们用6中基础模式就能描绘出一副图像。以下就是25种不同的卷积核的示例:-
在这里插入图片描述

池化层(下采样)——数据降维,避免过拟合

池化层简单说就是下采样,他可以大大降低数据的维度。其过程如下:-
在这里插入图片描述-
上图中,我们可以看到,原始图片是20×20的,我们对其进行下采样,采样窗口为10×10,最终将其下采样成为一个2×2大小的特征图。

之所以这么做的原因,是因为即使做完了卷积,图像仍然很大(因为卷积核比较小),所以为了降低数据维度,就进行下采样。

全连接层——输出结果

这个部分就是最后一步了,经过卷积层和池化层处理过的数据输入到全连接层,得到最终想要的结果。

经过卷积层和池化层降维过的数据,全连接层才能”跑得动”,不然数据量太大,计算成本高,效率低下。

在这里插入图片描述-
典型的 CNN 并非只是上面提到的3层结构,而是多层结构,例如 LeNet-5 的结构就如下图所示:

卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层

在这里插入图片描述

卷积神经网络的几点说明

1. 训练算法

1.同一般机器学习算法,先定义 Loss function,衡量和实际结果之间差距。

2.找到最小化损失函数的 W 和 b, CNN 中用的算法是 SGD(随机梯度下降)。

2.优缺点

1)优点

- 共享卷积核,对高维数据处理无压力

- 无需手动选取特征,训练好权重,即得特征分类效果好

(2)缺点

- 需要调参,需要大样本量,训练最好要 GPU

- 物理含义不明确(也就说,我们并不知道没个卷积层到底提取到的是什么特征,而且神经网络本身就是一种难以解释的“黑箱模型”)

3. 典型 CNN

  • LeNet,这是最早用于数字识别的 CNN

  • AlexNet, 2012 ILSVRC 比赛远超第 2 名的 CNN,比

  • LeNet 更深,用多层小卷积层叠加替换单大卷积层。

  • ZF Net, 2013 ILSVRC 比赛冠军

  • GoogLeNet, 2014 ILSVRC 比赛冠军

  • VGGNet, 2014 ILSVRC 比赛中的模型,图像识别略差于 GoogLeNet,但是在很多图像转化学习问题(比如 object detection)上效果奇好

4. fine-tuning

何谓 fine-tuning?

fine-tuning 就是使用已用于其他目标、预训练好模型的权重或者部分权重,作为初始值开始训练。

那为什么我们不用随机选取选几个数作为权重初始值?原因很简单,第一,自己从头训练卷积神经网络容易出现问题;第二,fine-tuning 能很快收敛到一个较理想的状态,省时又省心。

那 fine-tuning 的具体做法是?

  • 复用相同层的权重,新定义层取随机权重初始值

  • 调大新定义层的的学习率,调小复用层学习率

5. 常用框架

Caffe

- 源于 Berkeley 的主流 CV 工具包,支持 C++,python,matlab

- Model Zoo 中有大量预训练好的模型供使用

PyTorch

- Facebook 用的卷积神经网络工具包

- 通过时域卷积的本地接口,使用非常直观

- 定义新网络层简单

TensorFlow

- Google 的深度学习框架

- TensorBoard 可视化很方便

- 数据和模型并行化好,速度快

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值