一、性能优化
1、常用技巧
1)模型初始化 :简单的考虑,把所有权值在[-1,1]区间内按均值或高斯分布 进行初始化。
2)训练数据与测试数据
数据包括: 训练数据,验证数据,测试数据,通常三者比例为70%,15%,15%或60,20,20 当数据很多时,训练和验证数据可适当减少
3) 训练数据与测试数据:𝐾折交叉验证
原始训练数据被分成K个不重叠的子集。然后执行K次模型 训练和验证,每次在K−1 个子集上进行训练,并在剩余的一 个子集(在该轮中没有用于训练的子集)上进行验证。最后, 通过对K 次实验的结果取平均来估计训练和验证误差。
4) 欠拟合与过拟合
欠拟合:误差一直比较大
过拟合:在训练数据集上误差小而在测试数据集上误差大
5) 权重衰减 (𝐿2正则化)
6) Dropout(暂退)
在整个训练过程的每一次迭代中,标准暂退法包括在计算下 一层之前将当前层中的一些节点置零。
2、动量法
3、自适应梯度算法
1)自适应梯度
学习率是单调递减的,训练后期学习率过小会导致训练困难, 甚至提前结束 , 需要设置一个全局的初始学习率
2)RMSProp算法
RMSProp解决AdaGrad方法中学习率过度衰减的问题
3)Adam算法
Adam 在RMSProp方法的基础上更进一步: 除了加入历史梯度平方的指数衰减平均(𝑟)外, , 还保留了历史梯度的指数衰减平均(𝑠),相当于动量。
二、卷积神经网络基础
1、PyTorch基本使用——基本概念
1)张量(Tensor) 是一个物理量,对高维 (维数 ≥ 2) 的物理量进行 “量纲分析” 的一种工具。简单的可以理解为:一 维数组称为矢量,二维数组为二阶张量,三维数组 为三阶张量 …
2)计算图 :用“结点”(nodes)和“线”(edges)的有向图来 描述数学计算的图像。“节点” 一般用来表示施加 的数学操作,但也可以表示数据输入的起点/输出的 终点,或者是读取/写入持久变量的终点。“线”表 示“节点”之间的输入/输出关系。这些数据“线” 可以输运“size可动态调整”的多维数据数组,即 “张量”(tensor)
3)池化(Pooling) ::使用局部统计特征,如均值或最大值。解 决特征过多问题
4)卷积神经网络结构
5)学习算法
8.误差反向传播
- 卷积NN的BP算法:卷积层+卷积层
- 卷积NN的BP算法:卷积层+全连接层
2、LeNet-5网络
- 6个Feature map构成
- 每个神经元对输入进行5*5卷积
- 每个神经元对应5*5+1个参数,共6个feature map, 28*28个神经元,因此共有 (5*5+1)*6*(28*28)=122,304连接
与现在网络的区别 :
- 卷积时不进行填充(padding)
- 池化层选用平均池化而非最大池化
- 选用Sigmoid或tanh而非ReLU作为非线性环节激活函数
- 层数较浅,参数数量小(约为6万)
3、AlexNet
- 网络一共有8层可学习层——5层卷积层和3层全连接层
- 池化层均采用最大池化
- 选用ReLU作为非线性环节激活函数
- 网络规模扩大,参数数量接近6000万
- 出现“多个卷积层+一个池化层”的结构
- 普遍规律:随网络深入,宽、高衰减,通道数增加