卷积神经网络(CNN)

本文章是听李宏毅教授深度学习课程之后的课程总结

 

卷积神经网络的基本结构大致包括:卷积层、激活函数、池化层、全连接层、输出层。

卷积层:卷积运算的目的是提取输入的不同 特征,通过多层网络不断提取复杂的特征

f986b7770310452dab36f1187ead6571.png

       用一张图片做例子,一般颜色是由红绿蓝三种颜色组成,所以在输入层当中图片会被分成三个channel,分别代表红绿蓝三种颜色,每个channel还有长和宽代表照片的像素,这些数据组合起来成为receptive filed作为输入。在进行卷积的时候需要定义一个kernel size作为卷积提取特征的范围,一般采用3x3的格式,除此之外还需要设定步长进行移动方便找到重要的特征,一般用1或者2作为步长。当receptive filed移动到边缘的时候会缺少数据,这时需要采用padding(填充)的方式补齐数据,补齐的数据可以是全为0,也可以是整个数据的平均值。

f358c45de16d46baa5df769f035f987e.png

为了简化模型有时候我们会让一些neurons共享参数,因为他们的receptive filed范围不同,所以即使参数相同,他们的输出值也是不同的。为什么要参数共享呢?一方面,重复单元能够对特征进行识别,而不考虑它在可视域中的位置。另一方面,权值共享使得我们能更有效的进行特征抽取,因为它极大的减少了需要学习的自由变量的个数。通过控制模型的规模,卷积网络对视觉问题可以具有很好的泛化能力。

7a6e1b1a7df4425490d79ce19079d318.png

这是他们之间的关系,范围表示的时弹性度,Fully Connected Layer可以选择部分数据或者全部数据进行分析,而receptive filed可以选择neurons的参数相同也可以不同,Parameter Sharing只能让neurons共享参数。

卷积的另一种说法:

b23d50eac0aa417089c256ab5800e4df.png

定义一个Filter和image里面的数据相乘再相加,他也需要定义步长来进行移动。与第一种不同的是,这种方法是要遍历整个照片。

a0281da6a12b4ca98096ae4884677ac4.png

Convolution有时候也会和pooling(池化)一起使用,经常是交替使用。pooling的作用是把图片变小,提取重要的特征值,但如果算力足够大或者有些模型所研究的对象比较追求精细化,则可能不会使用pooling,比如下围棋。

池化的作用:

  • 减少网络中的参数计算量,从而遏制过拟合
  • 增强网络对输入图像中的小变形、扭曲、平移的鲁棒性(输入里的微 小扭曲不会改变池化输出——因为我们在局部邻域已经取了最大值/ 平均值)
  • 帮助我们获得不因尺寸而改变的等效图片表征。这非常有用,因为 这样我们就可以探测到图片里的物体,不管它在哪个位置

下面是CNN的全过程:

1f9d7c299d2b4df3845a393811c6e4f5.png

卷积神经网络的步骤:

Step 1:用随机数初始化所有的卷积核和参数/权重

Step 2:将训练图片作为输入,执行前向步骤(卷积, ReLU,池化以及全连接层的前向传播)并计算每个类别的对应输出概率。

Step 3:计算输出层的总误差

Step 4:反向传播算法计算误差相对于所有权重的梯度,并用梯度下降法更新所有的卷积核和参数/权重的值,以使输出误差最小化

 

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值