Datawhale X 李宏毅苹果书AI夏令营—进阶 task1

基本概念

神经网络: 神经网络是一种模仿动物神经网络行为特征的数学模型,通过大量神经元节点之间的相互连接关系进行信息处理,并依靠相关算法来调整其内部参数,以达到处理信息的目的。

批量标准化:BN通过对神经网络中每一层的输入进行标准化,使其更易于训练,减少了梯度消失和梯度爆炸等问题,并且可以加速神经网络的训练速度。

局部极小值与鞍点

在入门的时候遇到了全局最小值和局部最小值的问题。当梯度为0,说明变化率为0,机器停止学习。可是机器无法预测到未来还有更小的数值。

不仅如此,损失不是只在局部极小值的梯度是零,还有其他可能会让梯度是零的点,比如鞍点(saddle point。鞍点其实就是梯度是零且区别于局部极小值和局部极大值(localmaximum)的点。(三维看更加容易理解)

但是如何让机器学习逃离鞍点?就需要先判断临界值的种类。

文章中用到了泰勒级数近似的方法。就是把无穷级数保留前两项,将级数中含有高阶导数的项用与海森矩阵相关的函数项表示。第一项可以理解为函数值,第二项理解为delta(也就是梯度*Δx用来代替ΔL),第三项进一步进行弥补。海森矩阵是一个自变量为向量的实值函数的二阶偏导数组成的方块矩阵。

由于梯度为0,第二项为0.于是只有H海森矩阵发挥关键作用。Hessian 矩阵提供了函数局部极值的信息。在优化问题中,通过分析 Hessian 矩阵的特征值和特征向量,可以判断局部极值点的性质。比如:

当 Hessian 矩阵在某点是正定,这个点是局部最小值点。

当 Hessian 矩阵在某点是负定,这个点是局部最大值点。

当 Hessian 矩阵在某点的特征值有正有负,这个点是鞍点。

矩阵特征值:复习高等代数

不过好像由于海森矩阵的逆矩阵计算过于复杂,诞生了拟牛顿算法,即用一个正定矩阵代替海森矩阵的逆矩阵,从而减缓运算复杂度。

逃离鞍点

通过书中的示例,可以得知,低维度空间中的局部极小值点,在更高维的空间中,实际是鞍点。维度越高,需要考虑的就更多了。

示例中,定义了一个最小值比例 =正特征值数量/总特征值数量。然后发现,我们几乎找不到所有特征值都为正的临界点。训练到一个梯度很小的地方,参数不再更新,往往只是遇到了鞍点。局部极小值还是很是少见的。

批量

批量(batch):一组数据 计算梯度时的最小处理单位

回合(epoch):遍历所有批量的过程

批量梯度下降法(Batch Gradient Descent,BGD:批量梯度下降法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。

批量的具体原因:(问学长的)通常训练是在GPU上完成,所以需要把模型参数和数据集转移到显存上,才能由GPU进行计算,有的数据集比较庞大,直接全部加载到显存上不现实,所以需要分割数据集,再逐块加载。

同时,根据书中写的,GPU有并行计算的能力。根据图标,发现批量大—更新长—一回合时间快。反而批量大的似乎更有效率。但是同时,小批量的梯度方向有噪声,方便训练,得到的效果更好。

噪声让结果更好的原因:(还是问学长)噪声的梯度能让有的参数更新的更多,有利于数值逼近最佳参数吧

好处:全数据集的方向更好代替样本总体。样例越多,标准差越低。

坏处:数据太多了,跑不动。

随机梯度下降法(Stochastic Gradient Descent,SGD: 随机梯度下降是在每次迭代时使用一个样本来对参数进行更新(mini-batch size =1)。

好处:引入了噪声。速度快

缺点:不稳定。遇到局部极小值和鞍点会卡住。

小批量梯度下降法(mini-batch gradient descent):折中方法。挑一个批量计算损失,所以每一次更新参数的时候所使用的损失函数是有差异的。

动量法

动量法(momentum method是另外一个可以对抗鞍点或局部最小值的方法。引入动量后,每次在移动参数的时候,不是只往梯度的反方向来移动参数,而是根据梯度的反方向加上前一步移动的方向决定移动方向。放在式子中其实就是加了个权。式子复杂了一点但是更加灵活。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值