专栏介绍:本栏目为 “2021秋季中国科学院大学胡玥老师的自然语言处理” 课程记录,不仅仅是课程笔记噢~ 如果感兴趣的话,就和我一起入门NLP吧🥰
概述
为什么说CNN适用于处理图像问题呢?
- 在全连接前馈神经网络中,如果第l 层有nl 个神经元,第l -1 层有n(l-1)个神经元,连接边有n(l) * n(l-1)个,也就是权重矩阵有n(l) * n(l-1)个参数。当n 都很大时,权重矩阵的参数非常多,训练的效率会非常低。
- 尤其对于图像问题,设一张图像的大小为 10 x 10 ,如果第一隐藏层有 1024 个神经元, 则该层全连接参数 102400,参数太多难以训练,而卷积神经网络就能很好地解决这个问题。
CNN结构
卷积网络是由卷积层、池化层、全连接层交叉堆叠而成。
卷积层
对卷积运算不熟悉的同学可以先参考本篇博客的最后一个部分
全连接与卷积连接参数对比:如:图像 10 x 10,设第一隐藏层神经元约为 1024
- 全连接:第一层参数为10X10X1024
- 卷积连接:如果用16个3x3的卷积核,第一层的参数为16x(8x8)=1024,其中8x8是每个卷积核输出的大小8=10-(3-1)
- 卷积连接:如果用13个2x2的卷积和,第一层的参数为13x(9x9)=1053,其中9x9是卷积核输出的大小10-(2-1)=9
可以看到卷积层大大减少了参数的个数。
下面是两个卷积层常见的运算问题:
- 求卷积层输出尺寸
- output=(N+2xP-F)/stride+1
- N: 特征图原始尺寸
- P:pad值
- stride:步长
- F:卷积核尺寸
- 求卷积层参数个数
- (FxFxn+1)xk
- n:特征图个数
- F:卷积和尺寸
- k:卷积核个数
- +1:加上一个偏置值
实际上简单的情况直接画图就好了
池化层
卷积连接虽减少了参数,但网络规模(结点数)并没有减少
思想:对图像继续采样不会改变图像的分类
方法:通过采样缩小网络规模
好处:网络规模缩小,参数量进一步减少
采样(Pooling)方法:
- Max Pooling:取采样框中的最大值
- Mean Pooling:取采样框中的平均值
卷积层与池化层的连接方式
方法:对卷积层个特征图谱进行采样
网络训练时卷积层和池化层作为一个整体
全连接层
方法:将最后池化层的单元“平化”然后组成全连接输入网
总结:
卷积层:减少参数个数
池化层:降低模型规模
全连接层:将池化层输出平化
结构特性
CNN结构:
- 输入:X
- 输出:Y
- 参数:各卷积层中各过滤器值和偏置 ;卷积层到池化层权重和偏置;全连接输出网各连接权重和偏置
- 函数关系:X → Y : 若干(卷积层+采样层)+ 全连接层
- 局部连接
- 权重(参数)共享
- 空间或事件上的次采样
这些特性使得卷积神经网络具有一定程度上的平移、缩放和扭曲不变性
CNN学习
网络训练时卷积层和池化层作为一个整体
超参数
- 迭代轮数
- 学习率
- batch大小
- 卷积核大小
- 卷积步长
- 特征图个数
- 池化大小
权重变量
- 卷积核的权值
- 卷积核的偏置
- 全连接的权值
状态变量
- 输入图片数据
- 输入图片对应类别
卷积运算
- 卷积核大小:输入中每次提取特征区域大小
- 卷积核中参数:卷积运算中的一组共享参数,该参数随机化初值,然后根据误差函数通过反向传播梯度下降进行迭代优化,通过优化求出的参数才能实现特征提取的作用。
一维卷积
输出长度:当输入长度为 n 时,与输出长度与下列参数有关:
- 卷积核大小
- 步长
- 填充:补0的卷积称为等长卷积,不补0的卷积称为窄卷积(默认为窄卷积)
- 卷积核个数
二维卷积
多通道卷积
以三通道卷积为例:
CNN网络的pytorch实现可以参考这次的作业:
NLP作业一:RNN,DNN,CNN 进行猫狗分类(pytorch入门)【代码+报告】