2 性能优化
2.1动量法
2.1.1病态曲率
图为损失函数轮廓。在进入以蓝色标记的山沟状区域之前随机开始。颜色实际上表示损失函数在特定点处的值有多大,红色表示最大值,蓝色表示最小值。我们想要达到最小值点,为此但需要我们穿过山沟。这个区域就是所谓的病态曲率。
梯度下降沿着山沟的山脊反弹,向极小的方向移动较慢。这是因为脊的表面在W1方向上弯曲得更陡峭。
2.1.2动量法
如果把原始的 SGD 想象成一个纸团在重力作用向下滚动,由于质量小受到山壁弹力的干扰大,导致来回震荡;或者在鞍点处因为质量小速度很快减为 0,导致无法离开这块平地。
动量方法相当于把纸团换成了铁球;不容易受到外力的干扰,轨迹更加稳定;同时因为在鞍点处因为惯性的作用,更有可能离开平地。
动量法更新公式
动量法效果比较
2.2自适应梯度算法
2.2.1 Adagrad
Adaptive Gradient:自适应梯度
参数自适应变化:具有较大偏导的参数相应有一个较大的学习率,而具有小偏导的参数则对应一个较小的学习率
具体来说,每个参数的学习率会缩放各参数反比于其历史梯度平方值总和的平方根
问题:
学习率是单调递减的,训练后期学习率过小会导致训练困难,甚至提前结束需要设置一个全局的初始学习率。
2.2.2 RMSProp
RMSProp: Root Mean Square Prop
RMSProp解决 AdaGrad方法中学习率过度衰减的问题
RMSProp使用指数衰减平均以丢弃遥远的历史,使其能够快速收敛;此外,RMSProp还加入了超参数控制衰减速率。具体来说(对比 AdaGrad的算法描述),即修改
为
RMSProp算法
2.2.3 Adam算法
Adam 在 RMSProp方法的基础上更进一步:除了加入历史梯度平方的指数衰减平均()外,还保留了历史梯度的指数衰减平均(
),相当于动量。
Adam 行为就像一个带有摩擦力的小球,在误差面上倾向于平坦的极小值。
3. 卷积神经网络基础
3.1 深度学习平台介绍
3.1.1深度学习平台简介
3.1.2 PyTorch简介
PyTorch是一个Python的深度学习库。它最初由Facebook人工智能研
究小组开发,而优步的Pyro软件则用于概率编程。
最初,PyTorch由Hugh Perkins开发,作为基于Torch框架的LusJIT的Python包装器。PyTorch在Python中重新设计和实现Torch,同时为后端代码共享相同的核心C库。
除了Facebook之外,Twitter、GMU和Salesforce等机构都采用了PyTorch。到目前,据统计已有80%的研究采用PyT orch,包括Google。
PyTorch 和TensorFlow2 的对比
3.1.3 基本概念
张量(Tensor)
是一个物理量,对高维 (维数 ≥ 2) 的物理量进行“量纲分析”的一种工具。简单的可以理解为:一维数组称为矢量,二维数组为二阶张量,三维数组为三阶张量 …
计算图
用“结点”(nodes)和“线”(edges)的有向图来描述数学计算的图像。“节点” 一般用来表示施加
的数学操作,但也可以表示数据输入的起点/输出的终点,或者是读取/写入持久变量的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)
使用 tensor 表示数据
使用 Dataset、DataLoader读取样本数据和标签
使用变量 (Variable) 存储神经网络权值等参数
使用计算图 (computational graph) 来表示计算任务
在代码运行过程中同时执行计算图
3.2 卷积神经网络基础
3.2.1 进化史
3.2.2 基本概念
全连接网络:链接权过多,难算难收敛,同时可能进入局部极小值,也容易产生过拟合问题
e.g. 输入为96x96图像,要学习100个特征
局部连接网络:顾名思义,只有一部分权值连接。部分输入和权值卷积。
填充(Padding),也就是在矩阵的边界上填充一些值,以增加矩阵的大小,通常用0或者复制边界像素来进行填充。
多通道卷积:如RGB
3.2.3 池化(Pooling)
思想:使用局部统计特征,如均值或最大值。解决特征过多问题
3.2.4 卷积神经网络结构
构成:由多个卷积层和下采样层构成,后面可连
接全连接网络
卷积层:k个滤波器
下采样层:采用mean或max
后面:连着全连接网络
3.2.5 学习算法
递推:
前向传播定义为:
如果第层是卷积+池化层,则:
3.3 LeNet-5网络
网络结构
6个Feature map构成
每个神经元对输入进行5*5卷积
每个神经元对应5*5+1个参数,共6个feature map,
28*28个神经元,因此共有
(5*5+1)*6*(28*28)=122,304连接
Pooling层(原始论文)
卷积层
输出层
由欧式径向基函数单元构成
每类一个单元
输出RBF单元计算输入向量和参数向量之间的欧式距离
网络结构