CNN

 

 

是什么

解决了什么问题

主要设计理念

CNN

CNN 是神经网络的一种,主要用于图像/视频分类或者自然语言处理。

它通过卷积操作来降低参数个数和计算成本,使得模型能够处理数据量很大的复杂问题(图像分类和文本识别)。

 

 

构建深度卷积的模式:

  • 随着网络的深入,提取的特征图片大小将会逐渐减小,但同时通道数量应随之增加;
  • Conv——Pool——Conv——Pool——Fc——Fc——Fc——softmax

CNN 主要用来解决数据量很大的图片问题。

传统的DNN, 随着输入数据的增大,要计算的参数也会同样增大,计算成本特别高。

而CNN的参数:

卷积层,取决于特征检测器filter的个数和大小。

全连接层,正常参数量

对于很大很大的图片,我们也可以用一定数量的filter来捕获足够的特征进行图片判断

  • 参数共享:一个特征检测器能够捕获到图片的一小部分的特征,也可以捕获到整张图片的特征
  • 链接的稀疏性:在每一层中,每个输出值只取决于少量的输入。

参数是由卷积核的个数和大小决定。每个卷积核负责一部分的特征检测,都会遍历整张图,找到其中的重要特征。

比如下图的filter主要是用来寻找垂直边缘

经过这个filter后的图片,很明显可以将边缘和非边缘区分出来

 

 

 

多核卷积

单个卷积核应用于图片时,提取图片特定的特征,不同的卷积核提取不同的特征。如两个大小均为3 × 3 × 3 3\times3\times33×3×3 的卷积核分别提取图片的垂直边缘和水平边缘。

 

Padding

在进行卷积运算前为图片加padding,用0值包围角落和边缘的像素,使得通过filter的卷积运算后,图片大小不变,也不会丢失角落和边沿的信息。

 

图片大小随着卷积变小

边缘信息容易丢失

 

图片卷积操作后大小会变小。

而且边缘和角落的像素和信息只参与一次卷积操作,可能会丢失有用的信息。(卷积过程中,当滑动的窗口落在图片外面时,就不再执行操作,丢弃边缘数值信息)

用0值对多出来的边缘空格进行填充

 

Pooling 池化

对前一层得到的特征图进行池化减小

加快训练速度

让特征检测更加有鲁棒性

 

 

平均池化与最大池化唯一不同的是其选取的是小区域内的均值来代表该区域内的值。

 

Resnet

在传播过程中,增加第i层的激活值A到第i+2层的激活函数之前的链接。

所以

 

 

对于中间的激活函数来说,有助于能够达到更深的网络,解决梯度消失和爆炸的问题

梯度消失:越深的网络可以学到更复杂的特征,但是也有梯度消失的风险:网络很深的时候,反向传播的时候,从最后一层到前面一层,每次都需要乘以权重,因为层数非常深,会导致前几层的gradient(损失函数相对于W的导数)变得很小,样就会让梯度下降得非常慢

  • Normal NN 中,训练的误差实际上是随着网络层数的加深,先减小再增加;(梯度消失/爆炸)

  • ResNet中,即使网络再深,训练误差都会随着网络层数的加深逐渐减小。

 

 

Transfer Learning

站在巨人的肩膀上

在数据集很小的情况下,使用别人预训练好的模型和参数,只修改最后一层。来支持新的学习任务

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值