• 卷积神经网络基础知识


    构建卷积神经网络主要包含3种不同的网络层,分别是convolution layer,pooling layer以及fully connected layer。下文将针对这个三个方面进行解读。

    一、 卷积层

    在介绍卷积层之前,我们首先需要了解窗口的概念。我们在网络中进行计算时,我们采取的是通过窗口遍历的方法。我们知道图片是由像素组成的,下面是一个4*4的矩阵,我们首先不考虑RGB三个channel的情况。下面这个矩阵意味着一个channel。

     
    1 2 1 1
    4 5 1 1
    1 1 1 1
    1 1 1 11

     然后我们假设一个窗口(filter),如下一个3*3的矩阵。这是一个常用的用于检测垂直线段的窗口。

    1 0 -1
    1 0 -1
    1 0 -1

    当进行计算时,我们取图片矩阵右上角9个数,分别与窗口中的数字相乘累加。这里的结果是1+4+1-1-1-1=3;得到的结果将表示为下面的矩阵。

    3 6
    3 -6

    这里我们进行了一个简单的计算。

    接下来我们引入更加复杂的概念:填充padding和步幅strides。

    填充

    通过我们上面的计算,我们可以发现,图片矩阵中左上角的数字1只用了一次;而中心的数字如5却用了4次。为了解决这个问题,我们引入了填充的方法。在原图片的四周填充。如padding=1的情况。

    0 0 0 0 0 0
    0 1 2 1 1 0
    0 4 5 1 1 0
    0 1 1 1 1 0
    0 1 1 1 11 0
    0 0 0 0 0 0

    常见的padding有两种模式一种是valid,即不作处理;另一种是same即让输出的矩阵与原图片矩阵大小一模一样。这个时候p=(f-1)/2

    步幅

    我们刚刚的计算是每次向右移动一格。有时我们并不想这样,因此引入了步幅的概念。即每次移动窗口的格数。上述计算的步幅即是1。

    Note

    事实上,以上计算在数学上并不是卷积,而是一种交叉相关。真正的卷积需要原图片矩阵上下翻转后左右翻转,然后进入计算。但是这并不影响我们神经网络的影响,因此大多数神经网络并不关注这一点。

    卷积层的窗口很值得推敲,我们上面举的例子用于检测竖直边,同样我们可以推出水平边等特征的表达方式。实际网络中filter中的数字将作为我们的参数存在。

    窗口的大小一般是奇数,一方面这使得窗口有中心;另一方面是为了便于确定padding的大小。

    以上例子的channel是一,常见的图片RGB是channel为3,而filter也就是窗口的channel的大小是与图片相同的。

    二、 池化层

     

    池化层和卷积层不同的时,它可以发现更多的相同特征。常见的池化层有max和average两种。池化层也是有窗口的,但是它在移动的过程中,会计算图片矩阵中的max值或者平均值。

    池化层同样有步幅和填充的概念。这里不做赘述。

    我们假设最大(amx)池化层的filter的大小为2*2,s=2;那我们对原图片矩阵计算得到的结果为:

    5 1
    1 11

    三、 fully connected layer

    这种神经网络层的作用类似于flatten,即把高维的图片变成一维的向量,然后计算接下来的计算。

    将高维的图片变成一维的向量就很多方式,一种方式是使用1*1的卷积层,另外一种方式则是直接将数字flatten。

    四、 激活函数

    事实上,上述每个过程都是有激活函数的。如当我们通过卷积层得到一个2*2的矩阵时,这个数字将作为A与W相乘并加上一个常数b,然后取relu之类的激活函数,随后再进入下一层。

    五、 卷积神经网络为什么有效?

    这里主要有两个原因:

    1. 参数共享;我们可以看到filter的参数用于图片中各个地方的计算,这对于发现图像中的相似特征非常有效。

    2. 连接稀疏;每一层的输出仅仅取决于非常小数量的参数,这对于防止过拟合有很大的帮助。

  • 相关阅读:
    从零开始——PowerShell应用入门(全例子入门讲解)
    详解C# Tuple VS ValueTuple(元组类 VS 值元组)
    How To Configure VMware fencing using fence_vmware_soap in RHEL High Availability Add On——RHEL Pacemaker中配置STONITH
    DB太大?一键帮你收缩所有DB文件大小(Shrink Files for All Databases in SQL Server)
    SQL Server on Red Hat Enterprise Linux——RHEL上的SQL Server(全截图)
    SQL Server on Ubuntu——Ubuntu上的SQL Server(全截图)
    微软SQL Server认证最新信息(17年5月22日更新),感兴趣的进来看看哟
    Configure Always On Availability Group for SQL Server on RHEL——Red Hat Enterprise Linux上配置SQL Server Always On Availability Group
    3分钟带你了解PowerShell发展历程——PowerShell各版本资料整理
    由Find All References引发的思考。,
  • 原文地址:https://www.cnblogs.com/siyuan-Jin/p/12391695.html
Copyright © 2020-2023  润新知