CNN 相关观念的理解
CNN的基本组件包括:感知器、**函数、卷积层、池化层、正则化、全连接层、Softmax回归。下面分别对这些组件进行介绍。
1、感知器
感知器是神经网络的组成单元。一个感知器可以接受多个输入(x1,x2…,xn),每个输入上有一个权值wi,此外还有一个偏置项b(一般用w0表示)。感知器的**函数可以有很多选择,比如我们可以选择如下阶跃函数f来作为**函数:
感知器的输出则为下面的公式表示:
2、**函数
**函数的作用是为了给神经网络加入一些非线性性因素,使得神经网络可以更好地解决较为复杂的问题。常用的**函数有三种:sigmoid函数、Tanh函数、ReLU函数。下面对这些函数进行介绍。
-
sigmoid函数
sigmoid函数的输出映射在(0,1)之间,单调连续,输出范围有限,优化较为稳定,求导容易。但是当网络较深,容易存在梯度消失。函数的公式和图形如下:
sigmoid的导数=f(x)*(1-f(x)) -
Tanh函数
Tanh函数相比sigmoid函数,其输出以0为中心,以0为均值。由于存在负值,收敛速度比sigmoid更快。也存在梯度消失。tanh(x)的函数形式及图形如下。 -
ReLU函数
ReLU函数相比起sigmoid,ReLU在SGD中能够快速收敛。sigmoid涉及很多运算大的操作(指数),ReLU可以更加简单的实现。同时ReLU有效缓解了梯度消失的问题。函数形式及图形如下,也可以表示成f(x)=max(0,x)。
3、卷积层
卷积层具有 局部感知、参数共享、层层递进的特点。在深度学习网络模型中,卷积层用于提取特征。
权值共享:指的是在一次计算中,滤波器的值保存不变,滤波器的值只在一次迭代后改变。
局部感知:滤波器的卷积核最大为11*11,每层卷积计算的是局部特征。
层层递进:通过卷积,池化的层层递进获取全局特征。
卷积层的计算涉及卷积核和滤波器两个概念。输入图片经过滤波器的卷积计算,得到特征图。
输入特征图(通道)的数量决定了一个滤波器的卷积核数量。
滤波器的数量决定了输出特征图的数量。
卷积层的计算参考下图:
为了加深对卷积核,滤波器的理解。可以访问仿真器链接
4、池化层
池化层包括两种:最大池化和平均池化。池化层用于删除 冗余,输出特征图不变。
深度模型中的降维
池化层滤波器步长为1,不能实现降维。不管是卷积层还是池化层,实现降维的方法只能是调整步长。(降维针对的是大维度,按倍数降维。小维度能实现降维,当输入99维,滤波器33,步长1,池化后为7*7。)
5、正则化
正则化包括L1正则和L2正则。
L1正则化,对参数约束添加L1范数惩罚项。
L2正则化,对参数约束添加L2范数惩罚项。
6、全连接层
全连接层的作用相当于分类器
7、Softmax分类器
softmax用于将前向传播的结果变成概率分布。
防止过拟合
在深度学习模型中,模型的参数非常非常多,容易产生过拟合。防止过拟合的常用技术包括如下:
- 参数添加约束,例如L1、L2正则化。
- 训练集合扩充,例如数据增强、添加噪声、同义词替换。增加训练集合,训练集合越大过拟合概率越小。
- Dropout,Dropout在训练过程中随机的丢弃一部分输入,此时丢弃部分对应的参数不会更新。
- BatchNorm