卷积神经网络的简单介绍
1. 什么是卷积神经网络
卷积神经网络常用于图像的识别和分类
2. 卷积神经网络的主要层次有哪些?
输入层,卷积层,**层,池化层,全连接层,批量正则化层
3. 常见的数据预处理的三种方式?
去均值:各个维度数据中心化到0
归一化:各个维度的数据归一到同一个范围
pca/白化:pca去掉性强的特征;白化在pca的基础上进行归一化。
4. 什么是卷积层?
一组固定的权重和滑动窗口中的数据做矩阵内积然后相加得到的数据就是卷积层。
5. **层又是做什么的?
对卷积层产生的结果做一次非线性的映射,这就是**层做的事情。如下图所示:
常用的**函数有:sigmoid,tanh(双曲正切),relu,leaky relu,maxout函数
6. 关于**函数的使用建议是?
除全连接层外不使用sigmoid函数;relu函数迭代速度快,但是效果可能不好,效果不好时可以考虑使用leaky relu函数;tanh函数使用的场景比较少。
7. 池化层的作用是什么?
减少参数的数量,防止过拟合发生。方式:最大池化(一般采用),平均池化;
8. 什么是全连接层?
两层之间的所有神经元都有权重连接。
9. 卷积过程中使用的权重w和偏差b如何初始化?
使用均值为0,符合高斯分布的随机数就可以。不要都初始化为0;
10. 出现过拟合现象如何解决?
正则化处理(L1或L2),dropout
L1,权重的绝对值累加再乘一个权重;L2,权重的平方累加再乘一个权重。
dropout,随机选取一些神经元不做乘积运算。
11. 简单介绍一下inception v1, inception v2,inception v3,inception v4
inception v1相对于之前的AlexNet来说,它将串行的结构改为了并行的结构,下面的图a是改进前的inception网络,b是改进后的inception网络。1*1卷积,3*3卷积,5*5卷积的过程是同时进行的,目的是同时抽取不同维度的图像特征。而图b的不同之处在于它在3*3,5*5的网络前面加入了1*1的卷积,乍看之下参数的个数增加了,但是由于通道数减少了,所以总的参数量还是变少了的。googleNet网络就是由9个这样的模块组成的。
inception v2的不同之处在于引入了BN算法进行归一化处理。BN算法的引入可以使学习率取一个较大的值,并且可以不用再考虑正则化或是dropout的使用。下面简单介绍一下BN算法
由于训练过程采用了batch随机梯度下降,因此指的是一批训练数据时,各神经元输入值的平均值;
指的是一批训练数据时各神经元输入值的标准差。
但是,这些应用到深度学习网络还远远不够,因为可能由于这种的强制转化导致数据的分布发生破话。因此需要对公式的鲁棒性进行优化,就有人提出了变换重构的概念。就是在基础公式的基础之上加上了两个参数γ、β。这样在训练过程中就可以学习这两个参数,采用适合自己网络的BN公式。公式如下:
每一个神经元都会有一对这样的参数γ、β。这样其实当:
时,是可以恢复出原始的某一层所学到的特征的。引入可学习重构参数γ、β,让网络可以学习恢复出原始网络所要学习的特征分布。
BN算法像卷积层,池化层、**层一样也输入一层。BN层添加在**函数前,对输入**函数的输入进行归一化。这样解决了输入数据发生偏移和增大的影响。
优点:
1、加快训练速度,能够增大学习率,及时小的学习率也能够有快速的学习速率;
2、不用理会拟合中的droupout、L2 正则化项的参数选择,采用BN算法可以省去这两项或者只需要小的L2正则化约束。原因,BN算法后,参数进行了归一化,原本经过**函数没有太大影响的神经元,分布变得明显,经过一个**函数以后,神经元会自动削弱或者去除一些神经元,就不用再对其进行dropout。另外就是L2正则化,由于每次训练都进行了归一化,就很少发生由于数据分布不同导致的参数变动过大,带来的参数不断增大。
3、 可以吧训练数据集打乱,防止训练发生偏移。
在inception3中引入大尺度滤波器的卷积(如5*5,7*7)的引入,会产生大量的计算。所以5*5的结构被转换成2个3*3的结构,7*7的结构被转换成7*1+1*7的结构。
在inception4中,引入resnet,并且更加统一了inception结构。
ResNet结构又是什么呢?