卷积神经网络理论合集(卷积层,激活函数,池化层,全连接层,过拟合,dropout)

本文详细介绍了卷积神经网络(CNN)的结构,包括输入层、卷积层、激活函数、池化层和全连接层。卷积层通过卷积核提取特征,权值共享减少参数数量;激活函数如ReLU增加非线性;池化层减少特征尺寸。此外,文章讨论了过拟合问题及解决方案,如正则化和dropout策略。
摘要由CSDN通过智能技术生成

卷积神经网络(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(上层输出,暂时舍弃的概率)

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值