卷积神经网络基础知识(一)

前言:工作一段时间后一直想着做些自己的总结资料,奈何没有时间,只能慢慢的抽时间进行总结。

1、卷积神经网络简单介绍:

   1986年   Rumelhar和Hinton等人提出反向传播(Back Propagation 简称BP)算法。

   1998年   LeCun的利用BP算法训练LeNet5网络,标志着CNN的真正面试。

   2006年   Hinton在他们Science Paper中首次提出了深度学习(Deep Learning)的概念。

   2012年   Hinton的学生Alex Krizhevsky在寝室用GPU死磕一个Deep Learning模型,一举拿下了视觉领域竞赛ILSVRC 2012的桂冠,在百万量级别的ImageNet数据集合上,效果大幅度的超过了传统方式,从传统的70%提升到80%多。

     首先什么是卷积神经网络呢?我是这样理解的,只要包含了卷积层的网络都可以叫卷积神经网络。

2、卷积神经网络包含部分:

    2.1、卷积层


            卷积层就是一个滑动窗口在我们的特征图上进行滑动,它是CNN网络特有的一部分,他有两个特点:
                      1:拥有局部感知机制
                      2:权值共享

以下图为例 是一个3*3的卷积核,在一个5*5的特征图上进行滑动并计算,它是通过我们卷积核上的数字与特征图上对应位置的数字进行相乘并相加得到一个值。

 每滑动一步得到一个值,最后会得到我们的一个卷积结果。

 

卷积的作用就是对图像进行特征提取。因为我们是以滑动窗口的一个形式对特征图进行滑动计算,所以它是具有局部感知能力的特点,在计算过程中卷积核的值是不会发生变的,所以它还具有权值共享的特点。
 

这里着重讲解一下权值共享 以下图为例(以灰度图为例通道为1)

 我们对一张1280*720的图片进行处理,假设第一层为1000,我们需要921600000个参数进行计算,假设我们使用1000个5*5的卷积核,那我们所需的参数就是25000个,对比一下这两个参数,
我们可以发现他的变化是有多大,所以这就体现了卷积神经网络权值共享的一个特点。

接下来我们在站在多维的角度上去了解卷积层(一般都是使用彩图进行训练,彩图有rgb三个通道) 

我们输入一张彩色图像他有RGB三个通道,它就会有3个分量(可以理解为深度),所以我们的卷积核的深度也要与我们的输入特征矩阵(特征图)的深度一样,然后我们将每一个深度对应的卷积核进行滑动操作(上文有讲解)在进行求和,就得到一个卷积层

 如卷积核1 通过对RGB三个特征图分别进行滑动,滑动后对应位置再相加就得到黄色的输出结果,然后卷积核1和卷积核2的结果在进行拼接就得到了整个图像的卷积结果

要点:通过对彩图进行卷积我们能发现   卷积核的通道(深度)是和输入特征层的通道(深度)是相同的,输出的特征矩阵的通道(深度)与卷积核的个数是相同的 如上图我们使用了两个卷积核所以他有两个特征矩阵的输出。

    三个小问题:

   1、加上偏移量(偏执)bias该如何计算? 
          如上图中的黄色矩阵是我们卷积核1通过卷积得到的 1 3 1 1,如果我们对他加上一个偏移量(比如偏移量是 -1)那就是黄色矩阵的每一个数都加上 -1 得到一个 0 2 0 0的矩阵,这就是加上偏移量的结果

   2、加上激活函数该如何计算?
           我们为什么要加入激活函数呢?那是因为在我们的计算过程中它是一个线性的计算过程,为了引入非线性因素使其具备解决非线性问题的能力,所以我们需要引入一个非线性函数。以下是两个常见的激活函数

   3,如果卷积过程中出现越界的情况应该怎么办?


假如我们使用一个3*3的卷积核对一个4*4的特征图进行处理我们设置步长为2,我们发现他到第2步的时候就已经越界了,一般我们都是使用Padding进行补0的操作如下图:

    2.2、池化层

             池化层和卷积层比较类似,不过但他它相对于卷积层来说比较简单,池化层的目的就是对特征图进行稀疏处理,减少数据的运算量,下图是一个下采样的过程

最大池化:

 比方我们使用的是一个2*2大小的池化核,它会选取对应位置上最大的一个数作为池化的结果

平均池化:

 它跟最大池化是类似的只不过他是计算平均值

池化层的特点:

            1、它没有训练参数
            2、只改变特征矩阵(特征图)的w(宽)和 h(高),不改变通道(深度)
            3、一般池化核的大小是和它的步长是相同的

    2.3、全连接层

              全连接层顾名思义就是连接,就是我们神经元 进行连接得来的,

 如果我们将神经元按列进行排列,并进行全连接我们就会得到一个简单的BP网络如下图:

BP算法主要包括两部分,前向传播和反向传播两部分,我们从左到右的正向传播(前向传播)过程我们会得到一个输出值,然后我们将输出值与我们期望的输出值进行对比就能得到一个误差值。然后我们计算每一个节点(一个神经元就是一个节点)的偏导数就能得到每一个节点的误差梯度,这样我们将我们得到的损失值反向运用到损失梯度上 就达到了误差的反向传播。

我们的输出个数是有我们的全连接层进行控制的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值