精华内容
下载资源
问答
  • 卷积神经网络卷积层,池化层,全连接层

    万次阅读 多人点赞 2019-02-18 17:50:39
    转于:《入门PyTorch》 卷积层卷积神经网络的核心, 大多数计算都是在卷积层中进行的。... 举例来说, 卷积神经网络的第一层卷积一个典型的滤波器的尺寸可以是5×5×3( 宽和高都是5) , 或者是3×3...

    转于:《入门PyTorch》

    卷积层是卷积神经网络的核心, 大多数计算都是在卷积层中进行的。

    1 卷积层


    1.1 概述


    首先介绍卷积神经网络的参数。 这些参数是由一些可学习的滤波器集合构成的, 每个滤波器在空间上( 宽度和高度) 都比较小, 但是深度和输入数据的深度保持一致。 举例来说, 卷积神经网络的第一层卷积一个典型的滤波器的尺寸可以是5×5×3( 宽和高都是5) , 或者是3×3×3( 宽和高都是3) , 这里的宽度和高度可以任意定义, 但是深度必须是3, 因为深度要和输入一致, 而输入的图片是3通道的。 在前向传播的时候, 让每个滤波器都在输入数据的宽度和高度上滑动( 卷积) , 然后计算整个滤波器和输入数据任意一处的内积。

    当滤波器沿着输入数据的宽度和高度滑动时, 会生成一个二维的激活图, 激活图上的每个空间位置表示了原图片对于该滤波器的反应。 直观来看, 网络会让滤波器学习到当它看到某些类型的视觉特征的时候就激活, 具体的视觉特征可以是边界、 颜色、 轮廓、 甚至可以是网络更高层上的蜂巢状或者车轮状图案。

    在每个卷积层上, 会有一整个集合的滤波器, 比如20个, 这样就会形成20张二维的、 不同的激活图, 将这些激活图在深度方向上层叠起来就形成了卷积层的输出。

    如果用大脑和生物神经元做比喻, 那么输出的3D数据中的每个数据都可以看成是神经元的一个输出, 而该神经元只是观察输入数据中的一种特征, 并且和空间上左右两边的所有神经元共享参数( 因为这些输出都是使用同一个滤波器得到的结果) 。 下面介绍卷积神经网络中的神经元连接, 它们在空间中的排列, 以及它们参数共享的模式。

     

    1.2 局部连接


    在处理图像这样高维度输入的时候, 让每个神经元都与它那一层中的所有神经元进行全连接是不现实的。 相反, 让每个神经元只与输入数据的一个局部区域连接是可行的, 为什么可以这样做呢? 其实这是因为图片特征的局部性, 所以只需要通过局部就能提取出相应的特征。

    与神经元连接的空间大小叫做神经元的感受野( receptive field) , 它的大小是一个人为设置的超参数, 这其实就是滤波器的宽和高。 在深度方向上, 其大小总是和输入的深度相等。 最后强调一下, 对待空间维度( 宽和高) 和深度维度是不同的, 连接在空间上是局部的, 但是在深度上总是和输入的数据深度保持一致。

    图4.6形象地展示了感受野在空间和深度上的大小, 左边表示输入的数据, 中间是感受野, 右边每个小圆点表示一个神经元。 下面举一个具体的例子来说明一下。 比如输入的数据尺寸为32×32×3, 如果感受野( 滤波器尺寸) 是5×5, 卷积层中每个神经元会有输入数据中5×5×3区域的权重, 一共5×5×3=75个权重。 这里再次强调感受野深度的大小必须是3, 和输入数据保持一致。 比如输入数据体尺寸是16×16×20, 感受野是3×3, 卷积层中每个神经元和输入数据体之间就有3×3×20=180个连接, 这里的深度必须是20, 和输入数据一致。

    1.3 空间排列


    前面介绍了每个神经元只需要与输入数据的局部区域相连接, 但是没有介绍卷积层中神经元的数量和它们的排列方式、 输出深度、 滑动步长, 以及边界填充控制着卷积层的空间排布。


    首先, 卷积层的输出深度是一个超参数, 它与使用的滤波器数量一致, 每种滤波器所做的就是在输入数据中寻找一种特征。 比如说输入一张原始图片, 卷积层输出的深度是20, 这说明有20个滤波器对数据进行处理, 每种滤波器寻找一种特征进行激活。


    其次, 在滑动滤波器的时候, 必须指定步长。 比如步长为1, 说明滤波器每次移动1个像素点。 当步长为2的时候, 滤波器会滑动2个像素点。 滑动的操作会使得输出的数据在空间上变得更小。

    最后介绍边界填充, 可以将输入数据用0在边界进行填充, 这里将0填充的尺寸作为一个超参数, 有一个好处就是, 可以控制输出数据在空间上的尺寸, 最常用来保证输入和输出在空间上尺寸一致。输出的尺寸到底是多少呢? 其实可以用一个公式来计算, 就是\frac{W-F+2P}{S}+1, 其中W 表示输入的数据大小, F 表示卷积层中神经元的感受野尺寸, S表示步长, P 表示边界填充0的数量。 比如输入是7×7, 滤波器是3×3, 步长是1, 填充的数量是0, 那么根据公式, 就能得到 , 即输出的空间大小是5×5, 如果步长是2,那么 , 输出的空间大小就是3×3。 可以用图4.7所示的这个一维的例子来具体说明。


    右上角表示神经网络的权重, 其中输入数据的大小为5, 感受野的大小为3; 左边表示滑动步长为1, 且填充也为1; 右边表示滑动步长为2, 填充为1。

    1.4 零填充的使用


    从上面的例子中, 我们看到输入的维度是5, 输出的维度也是5。之所以如此, 是因为感受野是3, 并且使用了1的零填充。 如果不使用零填充, 那么输出数据的维度也就只有3, 因为\frac{5-3+2*0}{1}+1=3 。 一般来说, 当步长S=1时, 零填充的值为P=P=\frac{F-1}{2} , 这样就能够保证输入的数据和输出的数据具有相同的空间尺寸。


    1.5 步长的限制


    通过上面的公式我们知道步长的选择是有所限制的, 举例来说,当输入尺寸W=10的时候, 如果不使用零填充, 即P=0, 滤波器尺寸F=3, 这样步长S=2就行不通, 因为\frac{10-3+0}{2}+1=4.5 , 结果不是一个整数, 这就说明神经元不能整齐对称地滑过输入数据体, 这样的超参数设置是无效的, 使用PyTorch的时候就会报错, 可以使用零填充让设置变得合理。 在后面卷积神经网络的结构设计中, 需要合理地设计网络的尺寸, 使得所有维度都能够正常工作, 这件事并没有看上去那么容易。


    1.6 参数共享


    在卷积层使用参数共享可以有效地减少参数的个数, 这样之所以能够行得通, 是因为之前介绍的特征的相同性, 也就是说相同的滤波器能够检测出不同位置的相同特征。 比如说一个卷积层的输出是20×20×32, 那么其中神经元的个数就是20×20×32=12800, 如果窗口大小是3×3, 而输入的数据体深度是10, 那么每个神经元就有3×3×10=900个参数, 这样合起来就有12800×900=11520000个参数,单单一层卷积就有这么多参数, 这样运算速度显然是特别慢的。

    根据之前介绍的, 一个滤波器检测出一个空间位置( x1, y1) 处的特征, 那么也能够有效检测出( x2, y2) 位置的特征, 所以就可以用相同的滤波器来检测相同的特征, 基于这个假设, 我们就能够有效减少参数个数。 比如上面这个例子, 一共有32个滤波器, 这使得输出体的厚度是32, 每个滤波器的参数为3×3×10=900, 总共的参数就有32×900=28800个, 极大减少了参数的个数。

    由参数共享我们知道输出体数据在深度切片上所有的权重都使用同一个权重向量, 那么卷积层在向前传播的过程中, 每个深度切片都可以看成是神经元的权重对输入数据体做卷积, 这也就是为什么要把这些3D的权重集合称为滤波器, 或者卷积核。

    需要注意的是, 参数共享之所以能够有效, 是因为一个特征在不同位置的表现是相同的, 比如一个滤波器检测到了水平边界这个特征, 那么这个特征具有平移不变性, 所以在其他位置也能够检测出
    来。 但是有时候这样的假设可能是没有意义的, 特别是当卷积神经网络的输入图像呈现的是一些明确的中心结构的时候, 希望在图片的不同位置学习到不同的特征。 一个具体的例子就是人脸识别, 人脸一般位于图片的中心, 我们希望不同的特征能够在不同的位置被学习到,比如眼睛特征或者头发特征, 正是由于这些特征在不同的地方, 才能够对人脸进行识别。

    2 池化层

    上一部分介绍完卷积神经网络中最核心的内容——卷积层, 下面来介绍一下第二种层结构——池化层。


    通常会在卷积层之间周期性插入一个池化层, 其作用是逐渐降低数据体的空间尺寸, 这样就能够减少网络中参数的数量, 减少计算资源耗费, 同时也能够有效地控制过拟合。


    下面先来介绍到底什么是池化层。 池化层和卷积层一样也有一个空间窗口, 通常采用的是取这些窗口中的最大值作为输出结果,然后不断滑动窗口, 对输入数据体每一个深度切片单独处理, 减少它的空间尺寸, 如图4.8所示。

    从图4.8能够看出池化层能够有效降低数据体空间的大小, 图4.9形象地说明了窗口大小是2, 滑动步长是2的最大值池化是如何计算
    的: 每次都从2×2的窗口中选择最大的数值, 同时每次滑动2个步长进入新的窗口。

    池化层之所以有效, 是因为之前介绍的图片特征具有不变性, 也就是通过下采样不会丢失图片拥有的特征, 由于这种特性, 我们可以将图片缩小再进行卷积处理, 这样能够大大降低卷积运算的时间。最常用的池化层形式是尺寸为2×2的窗口, 滑动步长为2, 对图像进行下采样, 将其中75%的激活信息都丢掉, 选择其中最大的保留下来, 这其实是因为我们希望能够更加激活里面的数值大的特征, 去除一些噪声信息。


    池化层有一些和卷积层类似的性质。
    ( 1) 输入数据体的尺寸是W1 ×H1 ×D1。
    ( 2) 有两个需要设置的超参数, 空间大小F 和滑动步长S。
    ( 3) 输出数据体的尺寸是W2×H2×D2, 其中W2=\frac{W1-F}{S}+1,H2=\frac{H1-F}{S}+1,D2=D1
    ( 4) 对输入进行固定函数的计算, 没有参数引入。
    ( 5) 池化层中很少引入零填充。
    在实际中, 有两种方式: 一种是F=3, S=2, 这种池化有重叠;另外更常用的一种是F=2, S=2, 一般来说应该谨慎使用比较大的池化窗口, 以免对网络有破坏性。

    除了最大值池化之外, 还有一些其他的池化函数, 比如平均池化, 或者L2范数池化。 在实际中证明, 在卷积层之间引入最大池化的效果是最好的, 而平均池化一般放在卷积神经网络的最后一层。

    3 全连接层

    全连接层 每个神经元与前一层所有的神经元全部连接, 而卷积神经网络只和输入数据中的一个局部区域连接, 并且输出的神经元每个深度切片共享参数。一般经过了一系列的卷积层和池化层之后, 提取出图片的特征图, 比如说特征图的大小是3×3×512, 这个时候, 将特征图中的所有神经元变成全连接层的样子, 直观上也就是将一个3D的立方体重新排列, 变成一个全连接层, 里面有3×3×512=4608个神经元, 再经过几个隐藏层, 最后输出结果。在这个过程中为了防止过拟合会引入Dropout。 最近的研究表明, 在进入全连接层之前, 使用全局平均池化能够有效地降低过拟合。

    展开全文
  • 典型的卷积神经网络由卷积层、池化层、全连接层构成。 卷积层 卷积:在原始的输入上进行特征的提取。特征提取简言之就是,在原始输入上一个小区域一个小区域进行特征的提取。 直观的理解卷积 以上图为例: 第一次...
  • 卷积神经网络(CNN)输入层、卷积层、激活函数、池化层、全连接层组成。过拟合是训练数据过小网络会出现问题,dropout用于全连接层,可以防止过拟合。 卷积神经网络(CNN)输入层、卷积层、激活函数、池化层...

    卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成。

    卷积层

           使用卷积核对图像的每个点赋予一个权值。一个神经元就是特征图的一个像素点,是一个数学表达式,有多个输入,多个权值。设计好神经网络后,用样本训练网络,就是求解神经元的权值。

    卷积核(滤波器)特点

    卷积核的大小应该是奇数,这样它才有一个中心,例如3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。卷积核矩阵所有的元素之和应该要等于1,这样卷积前后图像的亮度保持不变。如果卷积核矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。

    不同卷积核对图像的处理

    卷积层权值共享

    若特征图由10个32*32*1的特征图组成,即每个特征图上有1024个神经元,每个神经元对应输入图像上一块5*5*3的区域,即一个神经元和输入图像的这块区域有75个连接,即75个权值参数,则共有75*1024*10=768000个权值参数,这是非常复杂的,因此卷积神经网络引入“权值”共享原则,即一个特征图上每个神经元对应的75个权值参数被每个神经元共享这样则只需75*10=750个权值参数,而每个特征图的阈值也共享,即需要10个阈值,则总共需要750+10=760个参数。卷积层只有一个卷积核也就是卷积层权值共享原则。

    卷积调用

    tensorflow:tf.nn.conv2d(x,w,strides=[1,1,1,1],padding='SAME')x是输入描述,eg.[batch,28,28,3] w是卷积核描述 ed.[3,3,3,16]. 分别是行列分辨率,通道数,核个数

     

    激活函数

    在神经网络中,对于图像,我们主要采用了卷积的方式来处理,也就是对每个像素点赋予一个权值,这个操作显然就是线性的。激活函数作用是加入非线性因素,增加模型的非线性表达能力。因为神经网络的数学基础是处处可微的,所以选取的激活函数要能保证数据输入与输出也是可微的,运算特征是不断进行循环计算,所以在每代循环过程中,每个神经元的值也是在不断变化的。

    池化层

    原始图片经卷积后提取的特征仍然很大,池化相当于减少特征数量。

    一般在浅层使用最大池化去除无用信息,在深层使用平均池化,因为网络深层每个神经元都包含高级语义信息。

    最大池化和均值池化

    最大值池化可以提取图片纹理,均值池化可以保留背景特征。

    池化调用

    tensorflow:pool=tf.nn.max_pool(输入描述,eg.[batch,28,28,6] 

                                       池化核描述(仅大小),ed.[1,2,2,1]

                                       池化核滑动步长,eg.[1,2,2,1],中间的2*2表示行列滑动步长都是2

                                       padding='SAME')

                                       padding=same 表示加0填充  padding=valad表示不加0填充

    池化层的两个参数在误差逆传播时不变。常用的参数值为f=2,s=2,应用频率非常高,其效果相当于高度和宽度缩减一半。

    全连接层

    全连接层作用:

    全连接层的作用主要就是实现分类(Classification),卷积取的是局部特征,全连接就是把以前的局部特征加权(通过权值矩阵)因为用到了所有的局部特征,所以叫全连接。全连接层参数特多(可占整个网络参数80%左右)。全连接层减少了特征位置对分类带来的影响,因为空间结构特性被忽略了,所以全连接层不适合用于在方位上找Pattern的任务,比如segmentation。

    全连接层实现

    全连接层实际就是卷积核大小为上层特征大小的卷积运算。以VGG-16为例,对224x224x3的输入,最后一层卷积可得输出为7x7x512,如后层是一层含4096个神经元的FC,则可用卷积核为7x7x512x4096的全局卷积来实现这一全连接运算过程,其中该卷积核参数如下:

    “filter size = 7, padding = 0, stride = 1, D_in = 512, D_out = 4096”

    经过此卷积操作后可得输出为1x1x4096。

    如需再次叠加一个2048的FC,则可设定参数为“filter size = 1, padding = 0, stride = 1, D_in = 4096, D_out = 2048”的卷积层操作。

    全连接层别的作用(特殊的好处)

    在迁移学习中,若目标域(target domain)中的图像与源域图像差异过大,FC能保持模型表示能力的迁移。所以冗余的参数并不是一无是处。

    全连接层的的层数加深,模型非线性表达能力提高。

    单个全连接层的神经元数(宽度),宽度增加,神经元个数增加。

    提高全连接层层数和宽度理论上都可以提高模型学习能力,但是学习能力太好会造成过拟合。另外,运算时间也是问题。

    全连接层与1*1卷积的关系:

    全连接层的坏处就在于其会破坏图像的空间结构,因此人们便开始用卷积层来“代替”全连接层,通常采用1×1的卷积核,这种不包含全连接的CNN成为全卷积神经网络(FCN),FCN最初是用于图像分割任务,之后开始在计算机视觉领域的各种问题上得到应用,事实上,Faster R-CNN中用来生成候选窗口的CNN就是一个FCN。FCN的特点就在于输入和输出都是二维的图像,并且输入和输出具有相对应的空间结构,在这种情况下,我们可以将FCN的输出看作是一张热度图,用热度来指示待检测的目标的位置和覆盖的区域。在目标所处的区域内显示较高的热度,而在背景区域显示较低的热度,这也可以看成是对图像上的每一个像素点都进行了分类,这个点是否位于待检测的目标上。

    过拟合

    过拟合具体描述

    训练一个特定的网络,随着迭代次数增多,网络对训练集拟合的很好(在训练集上loss很小),但是对验证集的拟合程度很差。过拟合一般是训练数据过少网络会出现的问题。

    过拟合理解

    把某些训练样本的自身特点当成一般性质。举一个典型例子(来源于keras教程)可助于理解:如果您作为一个人,只能看到三位伐木工人的图像,三位是水手的图像,并且其中只有一个伐木工戴着帽子,您可能会开始觉得戴一顶帽子是成为伐木工人(而不是水手)的标志。然后,您将做出一个非常糟糕的伐木工人/水手分类器。

    有什么方法可以避免过拟合?

    使用交叉验证法训练模型

    在代价函数上加入正则化项

    使用dropout(用在全连接层)

     

     

    dropout

    dropout来源于这样的假设

    当网络对训练集拟合的很好而对验证集的拟合的很差时,可不可以让每次跌代随机的去更新网络参数(weights),而不是全部更新,引入这样的随机性就可以增加网络generalize 的能力。所以就有了dropout 。

    dropout作用原理?

    每层神经元代表一个学习到的中间特征,当数据量过小,出现过拟合时,显然这时神经元表示的特征相互之间重复和冗余。dropout直接作用是:减少冗余,即增加每层各个特征之间的正交性。每次迭代只有一部分参数更新,减慢收敛速度

    dropout的具体方法?

    Dropout 一般在全连接层使用,被drop的神经元不参加当前轮的参数优化。只有训练时使用dropout,测试时所有神经元都参与运算。

    在训练的时候,我们只需要按一定的概率(retaining probability)p 来对weight layer 的参数进行随机采样,将这个子网络作为此次更新的目标网络。可以想象,如果整个网络有n个参数,那么我们可用的子网络个数为 2^n 。 

    测试时,不对网络的参数做任何丢弃,这时dropout layer相当于进来什么就输出什么。然后,把测试时dropout layer的输出乘以训练时使用的retaining probability  p 。是为了使得dropout layer 下一层的输入和训练时具有相同的“意义”和“数量级”。

    dropout调用?

    在tensorflow中:tf.nn.dropout(上层输出,暂时舍弃的概率)

    展开全文
  • 卷积神经网络

    2021-06-14 09:35:41
    卷积神经网络5.1 卷积5.2 卷积神经网络5.2.1 卷积层5.2.2 汇聚层5.2.3 卷积网络的整体结构5.3 几种典型的卷积神经网络5.3.1 LeNet-55.3.2 AlexNet5.3.3 Inception 网络5.3.4 残差网络5.4 其他卷积方式5.4.1 转置卷积...

      卷积神经网络( Convolutional Neural Network , CNN 或 ConvNet )是一种具有局部连接、权重共享等特性的深层前馈神经网络.

      目前的卷积神经网络一般是由卷积层、汇聚层和全连接层交叉堆叠而成的前馈神经网络.卷积神经网络有三个结构上的特性:局部连接、权重共享以及汇聚.

      卷积神经网络主要使用在图像和视频分析的各种任务(比如图像分类、人脸识别、物体识别、图像分割等)上,其准确率一般也远远超出了其他的神经网络模型.近年来卷积神经网络也广泛地应用到自然语言处理、推荐系统等领域.

    5.1 卷积

      卷积( Convolution ),也叫褶积,是分析数学中一种重要的运算.在信号处理或图像处理中,经常使用一维或二维卷积.

    一维卷积:

    二维卷积:

      在图像处理中,卷积经常作为特征提取的有效方法.一幅图像在经过卷积操作后得到结果称为特征映射( Feature Map ).

      在具体实现上,一般会以互相关操作来代替卷积,从而会减少一些不必要的操作或开销.互相关和卷积的区别仅仅在于卷积核是否进行翻转.因此互相关也可以称为不翻转卷积.

      在卷积的标准定义基础上,还可以引入卷积核的滑动步长和零填充来增加卷积的多样性,可以更灵活地进行特征抽取.

    • 步长( Stride )是指卷积核在滑动时的时间间隔.
    • 零填充( Zero Padding )是在输入向量两端进行补零.

      假设卷积层的输入神经元个数为 M,卷积大小为 K ,步长为 S ,在输入两端各填补 P 个 0 ( zero padding ),那么该卷积层的神经元数量为 (M −K +2P)/S +1

    5.2 卷积神经网络

      卷积神经网络一般由卷积层、汇聚层和全连接层构成.

    根据卷积的定义,卷积层有两个很重要的性质:

    • 局部连接:在卷积层(假设是第 l 层)中的每一个神经元都只和前一层(第 l − 1层)中某个局部窗口内的神经元相连,构成一个局部连接网络.
    • 权重共享:权重共享可以理解为一个卷积核只捕捉输入数据中的一种特定的局部特征.

    5.2.1 卷积层

      卷积层的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器.

      特征映射( Feature Map )为一幅图像(或其他特征映射)在经过卷积提取到的特征,每个特征映射可以作为一类抽取的图像特征.

    假设一个卷积层的结构如下:

    1. 输入特征组:XRM×N×DX∈R^{M×N×D}为三维张量.其中每个切片矩阵XdRM×NX^d∈R^{M×N}.
    2. 输出特征映射组:YRM×N×PY∈R^{M'×N'×P}为三维张量.其中每个切片矩阵YpRM×NY^p∈R^{M'×N'}.
    3. 卷积核:WRU×V×P×DW∈R^{U×V×P×D}为四维张量,其中每个切片矩阵 Wp.dRU×VW^{p.d}∈R^{U×V} 为一个二维卷积核

    图 5.6 给出卷积层的三维结构表示.

    整个计算过程如图 5.7 所示.

      在输入为XRM×N×DX∈R^{M×N×D},输出为YRM×N×PY∈R^{M'×N'×P}的卷积层中,每一个输出特征映射都需要D 个卷积核以及一个偏置.假设每个卷积核的大小为 U × V ,那么共需要 P × D × (U × V) + P 个参数.

    5.2.2 汇聚层

      汇聚层( Pooling Layer )也叫子采样层( Subsampling Layer ),其作用是进行特征选择,降低特征数量,从而减少参数数量.

      常用的汇聚函数有两种:最大汇聚和平均汇聚.

    5.2.3 卷积网络的整体结构

      一个典型的卷积网络是由卷积层、汇聚层、全连接层交叉堆叠而成.

    目前常用的卷积网络整体结构如图 5.9 所示.

      目前,卷积网络的整体结构趋向于使用更小的卷积核(比如 1 × 1 和 3 × 3 )以及更深的结构(比如层数大于 50 ).

    5.3 几种典型的卷积神经网络

    5.3.1 LeNet-5

      LeNet-5虽然提出的时间比较早,但它是一个非常成功的神经网络模型.基于 LeNet-5 的手写数字识别系统在 20 世纪 90 年代被美国很多银行使用,用来识别支票上面的手写数字. LeNet-5 的网络结构如图 5.10 所示.

      LeNet-5 共有 7 层,接受输入图像大小为 32 × 32 = 1024 ,输出对应 10 个类别的得分

    5.3.2 AlexNet

      AlexNet是第一个现代深度卷积网络模型.AlexNet 的结构如图 5.12 所示,包括 5 个卷积层、 3 个汇聚层和 3 个全连接层(其中最后一层是使用 Softmax 函数的输出层).

      AlexNet 的输入为 224×224×3 的图像,输出为 1000 个类别的条件概率,

    5.3.3 Inception 网络

      在卷积网络中,如何设置卷积层的卷积核大小是一个十分关键的问题.在Inception 网络中,一个卷积层包含多个不同大小的卷积操作,称为 Inception 模块. Inception 网络是由有多个 Inception 模块和少量的汇聚层堆叠而成.

    5.3.4 残差网络

      残差网络( Residual Network , ResNet )通过给非线性的卷积层增加直连(ZShortcut Connection )(也称为残差连接( Residual Connection ))的方式来提高信息的传播效率.

      如果将目标函数拆分成两部分:恒等函数( Identity Function )xx和残差函数(esidue Function )h(x)xℎ(x)− x

      根据通用近似定理,一个由神经网络构成的非线性单元有足够的能力来近似逼近原始目标函数或残差函数,但实际中后者更容易学习 .

      图 5.15 给出了一个典型的残差单元示例.残差单元由多个级联的(等宽)卷积层和一个跨层的直连边组成,再经过 ReLU 激活后得到输出.

      残差网络就是将很多个残差单元串联起来构成的一个非常深的网络.和残差网络类似的还有 Highway Network.

    5.4 其他卷积方式

    5.4.1 转置卷积

      我们将低维特征映射到高维特征的卷积操作称为转置卷积( Transposed Convolution ) ,也称为反卷积( Deconvolution ) .

      我们可以通过减少转置卷积的步长 S < 1来实现上采样操作,大幅提高特征维数.步长 S < 1 的转置卷积也称为微步卷积.

    5.4.2 空洞卷积

      对于一个卷积层,如果希望增加输出单元的感受野,一般可以通过三种方式
    实现:

    1. 增加卷积核的大小;
    2. 增加层数,比如两层 3 × 3 的卷积可以近似一层 5 × 5 卷积的效果;
    3. 在卷积之前进行汇聚操作.

    前两种方式会增加参数数量,而第三种方式会丢失一些信息.

      空洞卷积( Atrous Convolution )是一种不增加参数数量,同时增加输出单元感受野的一种方法,也称为膨胀卷积( Dilated Convolution ).

    图 5.18 给出了空洞卷积的示例.

    展开全文
  • 卷积神经网络,卷积和池化

    千次阅读 2019-03-13 11:15:10
    卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。...这是一个最典型的卷积网络,由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷积组,逐层...

    卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。

    卷积网络通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。CNN最早由Yann LeCun提出并应用在手写字体识别上(MINST)。LeCun提出的网络称为LeNet,其网络结构如下:

    这是一个最典型的卷积网络,由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。

    卷积层完成的操作,可以认为是受局部感受野概念的启发,而池化层,主要是为了降低数据维度。

    综合起来说,CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。

    降低参数量级

    为什么要降低参数量级?从下面的例子就可以很容易理解了。

    如果我们使用传统神经网络方式,对一张图片进行分类,那么,我们把图片的每个像素都连接到隐藏层节点上,那么对于一张1000x1000像素的图片,如果我们有1M隐藏层单元,那么一共有10^12个参数,这显然是不能接受的。(如下图所示)

    但是我们在CNN里,可以大大减少参数个数,我们基于以下两个假设:

    1)最底层特征都是局部性的,也就是说,我们用10x10这样大小的过滤器就能表示边缘等底层特征

    2)图像上不同小片段,以及不同图像上的小片段的特征是类似的,也就是说,我们能用同样的一组分类器来描述各种各样不同的图像

    基于以上两个,假设,我们就能把第一层网络结构简化如下:

    我们用100个10x10的小过滤器,就能够描述整幅图片上的底层特征。

    卷积(Convolution)

    卷积运算的定义如下图所示:

    如图所示,我们有一个5x5的图像,我们用一个3x3的卷积核:

    1  0  1

    0  1  0

    1  0  1

    来对图像进行卷积操作(可以理解为有一个滑动窗口,把卷积核与对应的图像像素做乘积然后求和),得到了3x3的卷积结果。

    这个过程我们可以理解为我们使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。

    在实际训练过程中,卷积核的值是在学习过程中学到的。

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

    卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT-CONV-RELU-POOL-FC

    (1)卷积层:用它来进行特征提取,如下:

    输入图像是32*32*3,3是它的深度(即R、G、B),卷积层是一个5*5*3的filter(感受野),这里注意:感受野的深度必须和输入图像的深度相同。通过一个filter与输入图像的卷积可以得到一个28*28*1的特征图,上图是用了两个filter得到了两个特征图;

    我们通常会使用多层卷积层来得到更深层次的特征图。如下:

     

    关于卷积的过程图解如下:

    输入图像和filter的对应位置元素相乘再求和,最后再加上b,得到特征图。如图中所示,filter w0的第一层深度和输入图像的蓝色方框中对应元素相乘再求和得到0,其他两个深度得到2,0,则有0+2+0+1=3即图中右边特征图的第一个元素3.,卷积过后输入图像的蓝色方框再滑动,stride=2,如下:

    如上图,完成卷积,得到一个3*3*1的特征图;

    如果现在特征图由10个32*32*1的特征图组成,即每个特征图上有1024个神经元,每个神经元对应输入图像上一块5*5*3的区域,即一个神经元和输入图像的这块区域有75个连接,即75个权值参数,则共有75*1024*10=768000个权值参数,这是非常复杂的,因此卷积神经网络引入“权值”共享原则,即一个特征图上每个神经元对应的75个权值参数被每个神经元共享,这样则只需75*10=750个权值参数,而每个特征图的阈值也共享,即需要10个阈值,则总共需要750+10=760个参数。

    池化(Pooling)

    池化听起来很高深,其实简单的说就是下采样。池化的过程如下图所示:

    上图中,我们可以看到,原始图片是20x20的,我们对其进行下采样,采样窗口为10x10,最终将其下采样成为一个2x2大小的特征图。

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

    之所以能这么做,是因为即使减少了许多数据,特征的统计属性仍能够描述图像,而且由于降低了数据维度,有效地避免了过拟合。

    在实际应用中,池化根据下采样的方法,分为最大值下采样(Max-Pooling)与平均值下采样(Mean-Pooling)。

    池化层:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征,如下:

    池化操作一般有两种,一种是Avy Pooling,一种是max Pooling,如下:

    同样地采用一个2*2的filter,max pooling是在每一个区域中寻找最大值,这里的stride=2,最终在原特征图中提取主要特征得到右图。

    (Avy pooling现在不怎么用了(其实就是平均池化层),方法是对每一个2*2的区域元素求和,再除以4,得到主要特征),而一般的filter取2*2,最大取3*3,stride取2,压缩为原来的1/4.

    注意:这里的pooling操作是特征图缩小,有可能影响网络的准确度,因此可以通过增加特征图的深度来弥补(这里的深度变为原来的2倍)。

    全连接层:连接所有的特征,将输出值送给分类器(如softmax分类器)。

    总的一个结构大致如下:

    另外:CNN网络中前几层的卷积层参数量占比小,计算量占比大;而后面的全连接层正好相反,大部分CNN网络都具有这个特点。因此我们在进行计算加速优化时,重点放在卷积层;进行参数优化、权值裁剪时,重点放在全连接层。

    展开全文
  • 卷积神经网络(CNN)

    2018-11-02 15:31:00
    典型的卷积网络由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。 卷积层完成的操作,可以认为是受局部感受野概念的启发,而池化层,...
  • 一个典型的卷积神经网络由卷积层,汇聚层,全连接层交叉堆叠而成。 卷积神经网络有三个结构上的特性:局部连接,权重共享,汇聚 卷积层 它的作用是提取一个局部区域的特征,不同的卷积核相当于不同的特征提取...
  • 卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。...这是一个最典型的卷积网络,由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷积组,逐层...
  • 上图是一个典型的卷积神经网络,主要由卷积层、全连接层构成。卷积层主要包括特征提取、池化,下面也将进行介绍。我们知道计算机对颜色没有任何感知能力,任何图片在计算机看来都是一些数字,如下图所示。各种彩色的...
  • 1.卷积神经网络使深度学习卷土重来是因为卷积神经网络非常适合计算机视觉应用的模型。 2.卷积神经网络基本原理包括:卷积算子,卷积的特征,卷积...5.一个典型的卷积网络由三种类型的层构成:卷积层,池化层和全连接...
  • 通常只统计具有权重和参数层,即将一个卷积层+一个池化层算作一个层layer 1,因为池化层没有权重参数,只有一些超参数(filter_size、stride)。也有将卷积层和池化层各自算为一层情况。 一、LeNet-5 1998年...
  • 文章目录前言卷积神经网络-CNN 的基本原理典型的 CNN 3个部分构成:1、卷积层卷积层的作用:为什么卷积能够提取图像特征?2、池化层3、全连接层【待修正】全连接层运行流程?运行流程举例 前言 暂无 卷积神经网络-...
  • 4D立方英尺 ... 此修改旨在防止网络超出反卷积层的典型伪像。 可以在这里找到关于此问题非常好描述: : 。 我们输入/输出对应于448 x 448 cbct轴向切片。 数据 数据SPARE Challenge提供。
  • 比如,一张像素1000x1000x3RGB图片,若用传统的神经网络(只有全连层),会有3百万参数。这样处理起来,会非常费资源,又耗时,效率很低。 而CNN就是将问题‘复杂简单化’,通过卷积降低数据维度,再作全连层...
  • CNN卷积层、池化层、全连接层

    万次阅读 多人点赞 2019-03-02 14:25:00
    卷积神经网络是通过神经网络反向传播自动学习的手段,来得到各种有用的卷积核的过程。 卷积神经网络通过卷积和池化操作,自动学习图像在各个层次上...典型的卷积神经网络通常以下三种层结构共同组成:卷积层(Conv...
  • 举例来说, 卷积神经网络的第一层卷积一个典型的滤波器的尺寸可以是5×5×3( 宽和高都是5) , 或者是3×3×3( 宽和高都是3) , 这里的宽度和高度可以任意定义, 但是深度必须是3, 因为深度要和输入一致, 而...
  • 一个典型的卷积神经网络一般全连接层、卷积层和池化层组成。 全连接层是层与层之间所有神经元节点都两两相互连接,所以重要的参数只有两个,输入节点个数和输出节点个数。 卷积层的层与层之间的神经元节点是采用...
  • 深度学习笔记

    2019-08-08 09:50:24
    深度学习笔记 资料地址 ... 在神经网络模型中,前几层神经网络能检测到边界,后几...典型的卷积神经网络由卷积层、池化层、全连接层 1. 卷积 2. 池化 通过卷积操作,我们完成了对输入向图像的降维和特征抽取,但特征图...
  • 典型CNN神经网络结构

    千次阅读 2017-12-19 16:42:39
    LeNet-5,用来识别数字的卷积网络  C1层是一个卷积层6个特征图Feature Map构成。特征图中每个神经元与输入为5*5的邻域相连。特征图的大小为28*28,这样能防止输入的连接掉到边界之外(32-5+1=28)。C1有156...
  • Pytorch入门——神经网络

    千次阅读 2017-09-01 17:39:05
    1.Pytorch实现神经网络的典型训练过程在这里以Lenet模型为例,两个卷积层,两个池化层,以及两个全连接层组成。 卷积核大小为5*5,stride为1,采用MAX池化。以该网络分类数字图像为例: Pytorch实现神经网络的...
  • 一、卷积神经网络介绍: 卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。 卷积网络通过一系列方法,成功将数据量庞大...这是一个最典型的卷积网络,由卷积层(conv)、池化层(pool
  • 文章目录原理LeNet的简单介绍Minist数据集的特点 原理 卷积神经网络参考:https://www.cnblogs.com/chensheng-zhou/p/6380738.html ... ...LeNet是一个最典型的卷积神经网络由卷积层、池化层、全连接层组成。...
  • 大家好,这是专栏《TensorFlow2.0》的第四篇文章,讲述网络模型的搭建。我们知道在不考虑输入层的情况下,一个典型的卷积神经网络通常若干个卷积层、激活层、池化层及...
  • 8.2 卷积神经网络 卷积神经网络(CNN)是深度学习模型的典型代表,在AI...以图片识别的卷积神经网络为例: C1层是一个卷积层6个Feature Map特征图构成。C1层特征图中每个神经元与输入中55的邻域相连。C1层特征图...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

典型的卷积神经网络由卷积层