【关于 CNN】那些你不知道的事(上)

DayNightStudy

共 2955字,需浏览 6分钟

 · 2022-01-16

贡献者:天骄,小猪呼噜,沐风,杨夕,芙蕖,李玲

NLP论文学习笔记:https://github.com/km1994/nlp_paper_study

个人介绍:大佬们好,我叫杨夕,该项目主要是本人在研读顶会论文和复现经典论文过程中,所见、所思、所想、所闻,可能存在一些理解错误,希望大佬们多多指正。

NLP 百面百搭 地址:https://github.com/km1994/NLP-Interview-Notes

推荐系统 百面百搭 地址:https://github.com/km1994/RES-Interview-Notes

关注公众号 【关于NLP那些你不知道的事】 加入 【NLP && 推荐学习群】一起学习!!!


一、动机篇

  • 全连接网络:任意一对输入与输出神经元间都存在连接,现成稠密结构

  • 局部特征存在相关性

二、CNN 卷积层篇

2.1 卷积层的本质是什么?

  • 稀疏交互

    • 动机:全连接网络,任意一对输入与输出神经元间都存在连接,现成稠密结构

    • 思路:卷积核尺度远小于输入维度,每个输出神经元仅与前一层特定局部区域内的神经元存在连接

    • 优点:全连接层的 参数 为 mn;卷积层为 kn (m为输入,n为输出,k 为 卷积维度)

  • 参数共享

    • NN:计算每层输出时,权值参数矩阵中每个元素只作用于每个输入元素一次

    • CNN:卷积核中每个元素将作用于每个局部输入的特定位置上

    • 思路:在同一模型的不同模块中使用相同参数,为卷积运算的固有属性

    • 区别

    • 物理意义:使卷积层具有平移不变性 (满足 f(g(x)) = g(f(x)) 时,称 f(x) 关于g 具有等变性)

2.2 CNN 卷积层与全连接层的联系?

  1. 卷积核中的权值每次滑动计算时只是局部连接,且在卷积列中的神经元共享参数——计算局部信息,而全连接层神经元的权值与所有输入相连——计算全局信息。

  2. 两者都是采用的矩阵点积运算,具有相似的计算形式,能够实现互相转化。

    1. 卷积——>全连接: 权重矩阵参数增大,权重补0,由于参数共享性质,在其中大部分块中,存在大量相等参数。

    2. 全连接——>全卷积: 将卷积核的尺寸设置为和输入数据体的尺寸一致(NxWxHxC)。除第一层全连接外,其他通道数都为1,N表示本层神经元的个数,为一个提前设定的超参数,结果与初始的那个全连接层一致。

  3. 一个深度卷积神经网络模型通常由若干卷积层叠加若干全连接层组成,中间也包含各种非线性操作以及池化操作。卷积层的作用是从输入数据中采集关键数据内容。全连接层在深度卷积神经网络中的作用是将前面经过多次卷积后高度抽象的特征进行整合。最后一层作归一化,然后输出概率。卷积层提供了一个有意义、低维度且几乎不变的特征空间,然后全连接层在这个空间里学习一个非线性的方程。通俗的说,卷积层是特征提取器,全连接层执行分类操作。

  4. 全连接层可以视作一种特殊的卷积。考虑下面两种情况:

    1. (1) 特征图和全连接层相连,AlexNet经过五次池化后得到7*7*512的特征图,下一层全连接连向4096个神经元,这个过程可以看作有4096个7*7*512的卷积核和7*7*512的特征图进行卷积操作,最终得到1*1*4096的特征图,等价于全连接得到4096个神经元。

    2. (2) 全连接层和全连接层相连,AlexNet的再下一层依然是4096个神经元,即4096个神经元和4096个神经元全连接,由(1)得到了1*1*4096的特征图,本次全连接过程可以看作存在4096个1*1*4096的卷积核,依次和1*1*4096的特征图进行卷积操作,等价于全连接。

2.3 channel的含义是什么?

在卷积神经网络中,channel的含义是每个卷积层中卷积核的数量。卷积层的卷积个数就等于卷积层输出的out_channels。这个值也与下一层卷积的in_channels相同。下面举例说明。

如下图,假设现有一个为 6×6×3 的图片样本,使用 3×3×3 的卷积核(filter)进行卷积操作。此时输入图片的 channels 为 3 ,而卷积核中的 in_channels 与 需要进行卷积操作的数据的 channels 一致(这里就是图片样本,为3)。

接下来,进行卷积操作,卷积核中的27个数字与分别与样本对应相乘后,再进行求和,得到第一个结果。依次进行,最终得到 4×4的结果。

上面步骤完成后,由于只有一个卷积核,所以最终得到的结果为 4×4×1, out_channels 为 1 。

在实际应用中,都会使用多个卷积核。这里如果再加一个卷积核,就会得到 4×4×2 的结果。

总结一下, channels 分为三种:

  1. 最初输入的图片样本的 channels ,取决于图片类型,比如RGB;

  2. 卷积操作完成后输出的 out_channels ,取决于卷积核的数量。此时的 out_channels 也会作为下一次卷积时的卷积核的 in_channels

  3. 卷积核中的 in_channels ,就是上一次卷积的 out_channels ,如果是第一次做卷积,就是样本图片的 channels 。

三、CNN 池化层篇

3.1 池化层针对区域是什么?

池化层针对区域是非重叠区域。

3.2 池化层的种类有哪些?

  • 均值池化

    • 思路:对领域内特征值取平均

    • 优点:抑制由领域大小受限造成的估计值方差增大现象

    • 特点:对背景的保留效果好

  • 最大值池化

    • 思路:取领域内最大值

    • 优点:抑制网络参数误差造成估计均值偏移问题

    • 特点:更好提取纹理信息

3.3 池化层的作用是什么?

除降低参数量外,能够保持对平移、伸缩、旋转操作的不变性

3.4 池化层 反向传播 是什么样的?

  • 动机:由于 Pooling 操作容易改变 feature map 的 尺寸大小,使得 Pooling 层不可导;

  • 举例说明:假定 22 的 池化,会生成 2222 = 16 个梯度,即梯度无法传递到对应的位置;

  • 方法:将一个像素的loss (梯度) 传递给4个像素,且需要保证传递的 loss (梯度)总和不变。

3.5 mean pooling 池化层 反向传播 是什么样的?

  • mean pooling 前向传播介绍:将 patch 中的值求平均来做 pooling;

  • mean pooling 反向传播介绍:将值的梯度均等分为 n*n 份 分配给上一层,以保证 池化 前后 梯度之和保存不变;


3.6 max pooling 池化层 反向传播 是什么样的?

  • max pooling 前向传播介绍:将 patch 中的值取 max 来做 pooling 结果 传递给下一层;

  • max pooling 反向传播介绍:把梯度直接传给前一层 值最大的一个像素,而其他像素不接受梯度,也就是为0;


待续!!!


参考

  1. 理解为什么要将全连接层转化为卷积层

  2. What do the fully connected layers do in CNNs?

  3. CNN全连接层和卷积层的转化

  4. 【CNN】理解卷积神经网络中的通道 channel

  5. 万字长文概述NLP中的深度学习技术

浏览 34
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报