李宏毅机器学习笔记-网络设计技巧

李宏毅机器学习笔记-网络设计技巧

1 局部最小

在这里插入图片描述

  • Loss在局部最小值或者鞍点处,梯度为0,因此没法继续下降。
  • 在局部最小值处,没有路可走,无法逃出来,但是在鞍点处,是可以走出来的,因此在梯度为0处要判断是否是鞍点。
1.1 利用Hessian矩阵判断鞍点

将Loss方程泰勒展开,其中二次项的系数矩阵,就是Hessian矩阵:

在这里插入图片描述

如下图所示当Hessian矩阵是正定阵或负定阵时,该点是局部最小值,否则,该点是鞍点。

在这里插入图片描述

1.2 实例

如下图所示,将w1,w2以及loss画在同一张图中,其中颜色越深代表loss越大,可以看出,在原点(0,0)出是鞍点,因为朝向135度方向走,loss会变大,朝向45度方向走,loss变小,即可以认为该点处的H矩阵,部分含有大于0的特征值,部分含有小于0的特征值。

在这里插入图片描述

在这里插入图片描述

在找到了 鞍点之后,我们可以利用鞍点找到L下降的方向:

方法就是找到特征值小于0时,对应的特征向量,沿着这个特征向量的方向前进,就可以让L下降

在这里插入图片描述

2 Batch与动量

batch方法是将数据分为N个小批次,分别进行参数更新,每个epoch会一次性看所有batch,到下一次epoch时,会shuffle一次,保证每次epoch下的batch不同。

在这里插入图片描述

batch-size 会影响训练的效果,当batch-size很大时,如下图左所示,可以发现,参数并没有更新很多次,而且参数最终的结果离最优值很远;当batch-size很小时,如下图右所示,参数更新了很多次,而且参数的轨迹在向最优值靠近,但是轨迹表面很不光滑。

在这里插入图片描述

除此之外,当batch-size很小时,参数更新一次的时间很短,因为数据量小;当batch-size很大时,参树更新一次的时间很长;

但是,对于一个epoch而言(即看完所有数据),batch-size很小时,完成一个epoch的时间长,batch-size很大时,完成一个epoch的时间短。

在这里插入图片描述

从下图的结果来看,在不同的数据集上,small batch有较好的训练结果

在这里插入图片描述

在利用大batch-size训练时,遇到的critical point,不一定在小batch-size训练时也遇到。

在这里插入图片描述

这篇论文通过不同的数据集,实验了不同的batch-size下,训练集与测试集的准确率

在这里插入图片描述

small batch-size 与 large batch-size 优缺点比较
在这里插入图片描述

在这里插入图片描述

2.2 动量

梯度下降加动量:

动量:上一次梯度更新的大小与方向

在这里插入图片描述

在这里插入图片描述

当使用梯度下降加动量时,原先在平坦的地方,单纯的梯度下降可能停滞,但是加上动量后,就有可能继续前进。
在这里插入图片描述

3 学习率

及时在没有critical point时,训练的效果也可能不够好

在这里插入图片描述

在这里插入图片描述

Adagrad算法:

在这里插入图片描述

在这里插入图片描述

RMSProp算法
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值