week3-Convolutional Neural Network

Convolutional Neural Network

CNN基本结构

卷积层(convolutional layer)

卷积 — — 提取特征

卷积层的通过卷积核的过滤提取出图片中局部的特征

卷积层大小计算

s = stride, p = padding, f = filter size (square)

𝑊𝑖,𝐻𝑖: The width and height of the input image

𝑊𝑜,𝐻𝑜: The width and height of the output image

公式计算:

  • padding情况下: W o = ⌊ W i − 1 s w ⌋ + 1  and  H o = ⌊ H i − 1 s h ⌋ + 1 W_{o}=\left\lfloor\frac{W_{i}-1}{s_{w}}\right\rfloor+1 \text { and } H_{o}=\left\lfloor\frac{H_{i}-1}{s_{h}}\right\rfloor+1 Wo=swWi1+1 and Ho=shHi1+1
  • no padding: W O = ⌊ W i − f w s w ⌋ + 1  and  H o = ⌊ H i − f h s h ⌋ + 1 W_{O}=\left\lfloor\frac{W_{i}-f_{w}}{s_{w}}\right\rfloor+1 \text { and } H_{o}=\left\lfloor\frac{H_{i}-f_{h}}{s_{h}}\right\rfloor+1 WO=swWifw+1 and Ho=shHifh+1

eg1:在这里插入图片描述

eg2:

在这里插入图片描述

eg3:

Convolution layer with multiple filters and feature maps 多重卷积

一个卷积核先和3个通道的左上角的矩阵卷积,然后将得到的值全部加在一起。依次计算。

多卷积核方式:

在这里插入图片描述

池化层(Pooling layer)

池化层简单说就是下采样,他可以大大降低数据的维度。

池化层相比卷积层可以更有效的降低数据维度,这么做不但可以大大减少运算量,还可以有效的避免过拟合。

  • Makes the representations smaller and more manageable

    使表示形式更小,更易于管理

  • Subsample the image

  • Operates over each activation map independently

    独立在每个激活图上运行

    公式:

    In practice, we don’t overlap, s=f.

    W O = ⌊ W i − 1 s ⌋ + 1 H O = ⌊ H i − 1 s ⌋ + 1 \begin{array}{l} W_{O}=\left\lfloor\frac{W_{i}-1}{s}\right\rfloor+1 \\ H_{O}=\left\lfloor\frac{H_{i}-1}{s}\right\rfloor+1 \end{array} WO=sWi1+1HO=sHi1+1

    eg:

max-pooling

将每次选取卷积核框中的里面的最大值代表整个方块的值

average pooling

将每次选取卷积核框中的里面元素求均值来代表表整个方块的值
在tf中的写法:

Fully connected layer 全连接层

  • The last tensor is flattened and some fully connected layers are added to classify the input.

    最后一个张量被扁平,并添加一些完全连接的层以对输入进行分类。

  • The last tensor [5,5,10] →1 layer with 5x5x10= 250 neurons

    最后一个张量[5,5,10]→1层,有5x5x10 = 250神经元

  • 全连接层(fully connected layers,FC) 在整个卷积神经网络中起到“分类器”的作用。

  • 每个神经元与其前一层进行全连接,将前期所提取的各种局部特征综合起来,最后通过输出层得到每个类别的后验概率。

  • 经过卷积层和池化层降维过的数据,全连接层才能”跑得动”,不然数据量太大,计算成本高,效率低下。

softmax

  • softmax位于卷积神经网络层的最后一层,用于分类问题。

  • softmax的输入是T * 1的向量,输出也是T * 1的向量,只不过输出的向量的每个值的大小范围为0到1。softmax的输出向量就是该样本属于各个类的概率。

Batch Normalization Layer 批规范化层

常见问题:

  1. covariate shift:
  • The distribution (nature) of training data is different from that of testing data

    培训数据的分布(性质)与测试数据的分布不同

    假设x是属于特征空间的某一样本点,y是标签。covariate这个词,其实就是指这里的x,那么covariate shift可以直接根据字面意思去理解:样本点x的变化。

  1. Internal covariate shift (ICS)

    本质上就是说将每一层的输入作为一个分布看待,由于底层的参数随着训练更新导致相同的输入分布得到的输出分布改变了即不是独立同分布了

  • 定义:深度神经网络涉及到很多层的叠加,而每一层的参数更新会导致上层的输入数据分布发生变化,通过层层叠加,高层的输入分布变化会非常剧烈,这就使得高层需要不断去重新适应底层的参数更新。为了训好模型,我们需要非常谨慎地去设定学习率、初始化权重、以及尽可能细致的参数更新策略。
  • 原因:W和b值的更新或者mini-batches 的改变

Batch Normalization 批标准化

详细资料:什么是批标准化 (Batch Normalization) - 知乎 (zhihu.com)

Batch normalization 的 batch 是批数据, 把数据分成小批小批进行 stochastic gradient descent. 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层都进行 normalization 的处理

优点:

  • Cope with internal covariate shift
  • Reduce gradient vanishing/exploding
  • Reduce overfitting
  • Make training more stable
  • Converge faster
    • Allow us to train with bigger learning rate

计算过程如下:

gamma和β的作用:用了BN之后,数据分布会集中在0-1之间,这一区间激活函数曲线比较线性(导数接近1),这样就不能很好的利用激活函数的非线性化性质了。所以加γ和β就是要在一定程度下抵消BN带来的线性化,做了一个trade off。

对于测试集:BN还有scale和shift参数要考虑,所以还是需要计算均值和方差,不能只输入一个点。计算所有批均值和方差的指数加权移动平均,然后再加上scale和shift,这样计算才完整

Dropout Layer

  • This is a cheap technique to reduce model capacity

    • Reduce overfitting
  • In each iteration, at each layer, randomly choose some neurons and drop all connections from these neurons

    在每一iteration中,在每一层中,随机选择一些神经元并从这些神经元中删除所有连接

    • odropout_rate = 1 – keep_prob

在这里插入图片描述

影响CNN性能的因素

  • 层数(深度)
  • 特征面的数目
  • 网络组织
  • 减少可学习权重的数量会减小CNN规模
  • 权重矩阵在内核/过滤器之间共享会减小CNN规模
  • 深层与大部分输入间接交互会减小CNN规模

CNN的优缺点

优点:

  • 共享卷积核,对高维数据处理无压力

  • 无需手动选取特征,训练好权重,即得特征分类效果好

  • 与传统的MLP相比,CNN中卷积层的权值共享使网络中可训练的参数边少,降低了网络模型复杂度,较少过拟合,从而获得一个更好的泛化能力。

  • CNN结构中使用池化操作使得模型中的神经元个数大大的减少,对输入空间的平移不变行也更有鲁棒性

  • CNN结构的拓展性很强,它可以采用很深的层数,深度模型具有更强的表达能力,能够处理更复杂的分类问题

  • CNN的局部连接、权值共享和池化操作比传统的MLP具有更少的连接和参数,更易于训练。

缺点:

  • 需要调参,需要大样本量,训练最好要GPU
  • 物理含义不明确

三大神经网络的优缺点

AlexNet

在这里插入图片描述

优点:

  • 首次使用GPU加速

  • 随机drop掉一些神经元,有效降低了过拟合

  • 使用ReLU替换之前的sigmoid的作为激活函数,ReLU部分解决了sigmoid的梯度饱和性

  • 计算简单

  • 收敛速度快

缺点:

  • 在小于0的地方会出现神经单元死亡,并且不能复活的情况。所以,有关于ReLU的改进方法的提出(leaky ReLU, parameterized ReLU, random ReLU)
  • 如果移除一个卷积层,那么整个AlexNet网络都会退化

GoogLeNet

优点:
  • 提高了网络内部的计算资源的利用率,能在保持现有计算预算不变的情况下增加网络的深度和宽度

缺点:

  • 使用更深的网络,但是这会导致参数太多,如果训练数据集有限,很容易产生过拟合;
  • 创建数据集的代价很大,尤其是如果数据集分类很麻烦的情况下;
  • 网络越深,容易出现梯度弥散问题(梯度越往后穿越容易消失),难以优化模型。

VGG

在这里插入图片描述

优点:

  • VGGNet的结构非常简洁,使用小卷积核和连续的卷积层,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)

  • 几个小滤波器(3x3)卷积层的组合比一个大滤波器(5x5或7x7)卷积层好

  • 验证了通过不断加深网络结构可以提升性能

缺点:

  • VGG耗费更多计算资源,并且使用了更多的参数(这里不是3x3卷积的锅),导致更多的内存占用(140M)。其中绝大多数的参数都是来自于第一个全连接层(VGG有3个全连接层)

411)]

优点:

  • VGGNet的结构非常简洁,使用小卷积核和连续的卷积层,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)

  • 几个小滤波器(3x3)卷积层的组合比一个大滤波器(5x5或7x7)卷积层好

  • 验证了通过不断加深网络结构可以提升性能

缺点:

  • VGG耗费更多计算资源,并且使用了更多的参数(这里不是3x3卷积的锅),导致更多的内存占用(140M)。其中绝大多数的参数都是来自于第一个全连接层(VGG有3个全连接层)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值