Datawhale X 李宏毅苹果书 AI夏令营(Task1)

一、学前概览

        任务内容:深度学习之中常见的概念

        任务目的:帮助调参侠从不同角度更好去优化神经网络

        本节出现术语:局部极小值、鞍点、自适应学习率、学习率调度、批量归一化

1.学前疑惑

        A.为什么收敛在局部极限值与鞍点会导致优化失败?

        B.如何理解批量归一化可以改变误差表面?

2.学中疑问

        C.如何去区分critical point(gradient为0的点)是属于local minima或者saddle point?

        D.参数update中,看的是gradient,但是当gradient为0,如果该点为saddle point,还可以再通过H(hessian),那么如何通过H去更新参数?

        E.saddle point和local minima哪一个更常见?

        F.为什么要用batch?

        G.为什么小的batch size在训练集上会取得比较好的结果?

3.学后解答

        A.因为达不到全局最优解

        B.批量归一化通过改变网络中数据的分布和引入正则化效应,使得误差表面更加有利于优化算法的搜索(并非本节学的内容)。

        C.见知识点1

        D.见知识点2

        E.见知识点3的图6

        F.我所理解的一种便是用GPU去加速计算,加快训练过程。

        G.见知识点5

二、Task1.1 局部极小值与鞍点

        实际优化过程中经常出现的问题:不管怎么更新参数,损失都无法下降(深有体会)或者是没有发挥它的力量。

        出现原因:该地方参数对损失的微分为0(local minima或者saddle point都有可能存在)

1.知识点1:loss function在给定参数下的近似表达

        给定某一组参数,比如θ′ ,在θ′ 附近的损失函数是有办法写出来的,似懂非懂,不过这不是我们学习的重点,我们知道这个公式的含义就可以了,具体证明是做数学的人来做。如图1所示。

给定参数下的损失函数的近似表达
图1:给定参数下的损失函数的近似表达

        当训练走到了critical point时,次微分结果为0,去除图1中间绿色项,所以可以通过红色项(即Hessian)去了解当前属于训练处于哪种状态(local min、local max或saddle point)。

        对红色项分析,将Hessian和两边的向量替换成一个向量v:
                当红色项>0时,意味着当前参数是Local minima;
                当红色项<0时,意味着当前参数是Local maxima;
                当红色项有时>0,有时<0,则意味着当前参数是saddle point

        更进一步地,上述问题可以转化为判断hessian矩阵特征值的大小,列出来的情况如图2所示

图2:根据hessian大小判断critical point

         举例子,有一个很废的神经网络,它的误差表面如图3右上角所示,坐标轴代表两个参数大小关系,假设输入是1,输出为1,那么该神经网络的误差表达式(损失)同图3左上角的L表达式所示。此时,可以算出每个参数对L的微分(梯度),如图3中绿色部分所示。找到其中一种梯度为0的情况是两个参数值都为0,这个时候能够确定critical point,但是不确定是哪种类型。

        需要注意一点是,hessian矩阵里放的是损失函数的二次微分,即图3中红线圈出来的部分。分别对两个参数求二次偏导,得到hessian矩阵,即H。再根据前面得出的结论,去判断该hessian矩阵的特征值(运用线性代数的知识),算出来得到一正一负,判断出为Saddle point。

图3:一个判断critical point的例子

 2.知识点2:通过saddle point去更新参数

        首先先区分一下特征值,矩阵和向量的关系(太久没学忘了):

        在线性代数中,对于n阶矩阵A,如果存在一个数λ以及非零n维列向量α,使得Aα=λα成立,则称λ是矩阵A的一个特征值。非零向量α是矩阵A属于特征值λ的一个特征向量。这个定义明确了特征值和特征向量的关系,即特征值是与矩阵A和其非零特征向量之间的特定关系相关的数。因此,当Aα=λα成立时,可以确定λ是矩阵A的一个特征值,而α是对应于这个特征值λ的特征向量‌。

        对应到损失函数中,假设μ是H的特征向量,λ是特征值,那么可以对图4中红圈部分进行替换。再根据等式换位,可以得出将参数沿着μ的方向进行更新,可以达到减少损失的目的。

图4:通过saddle point更新参数

        举例子,hessian矩阵算出了两个特征值分别为一正一负,取特征值-2,其存在有多个特征向量,这个时候有[1,1]是满足条件的,我们可以沿着[1,1]的方向去做参数的更新,实际上对应着从图5的右上角的误差表面的黑色箭头方向。

图5:一个更新saddle point的例子

        实际中并不会把hessian算出来,因为对于hessian需要做二次微分,如果参数增加,那么计算hessia矩阵的运算量就会变得超级无敌大,此外还需要找 它的特征值和特征向量,实际应用中并不会用这个方法去逃离saddle point。

3.知识点3:逃离鞍点的方法

        参数的数量代表了误差表面的维度。存在一个假说:维度很高,会不会有很多的路可以走?既然很多的路可以走,会不会local minima很少?

        如图6所示,每一个蓝点代表一个NN,纵轴代表损失收敛的临界,横轴代表最小值比例(minimum ratio),其是由大于零的特征值与所有特征值之比得来。最小值比例最大也不过处于 0.5~0.6的范围,代表只有约一半的特征值为正,另一半的特征值为负,代表在所有的维度里面有约一半的路可以让损失上升,还有约一半的路可以让损失下降从经验上看,local minima并没有那么常见。

图6:验证假设

 

三、Task1.2:批量与动量

        1.知识点4:batch,epoch的关系

        所有的data分成一个一个的batch,每次update参数时,模型会取一个batch去算loss,gradient,然后更新参数,然后再拿另外的一个batch,再算一个loss,gradient,然后更新参数。当所有的batch都被模型看过一遍,便是一个epoch。

        2.知识点5:small batch和large batch的区别

        结合图7,简单粗暴去理解(不考虑平行计算):large batch(图7左边)冷却时间长,但是稳;small batch(图7右边)冷却时间短,但是产生的噪声多。

        实际上左边并不一定用时长,如果考虑平行计算的时候,一个epoch大的batch花的时间可能比较小。

图7:small batch和large batch的区别

         一张图(图8)解释small batch的优势:full batch时,很可能会遇到gradient为0从而卡住的情况,但是训练已经结束;如果是small batch的话,这个batch不行我就换下一个,总有出现训练损失下降的一个。有一篇论文研究两者的关系,发现不管是small还是large,在训练的时候结果差不多,但是测试的时候,大的批量比小的批量差,对于large batch而言代表着过拟合。可以这么解释,small batch有很多的损失,其更新方向比较随机,其每次更新的方向都不太一样。即使 “峡谷”非常窄,它也可以跳出去,之后如果有一个非常宽的“盆地”,它才会停下来。

图8:small batch的优势

        以图9作为总结,比较large和small batch在不同情况下的性能优劣。

图9:largebatch和small batch的总结

        3.知识点6:momentum的运作原理

        假设loss走向是一个斜坡,而参数就像一个球从斜坡上滚下来,如果动量够大,如便不会被鞍点和局部极小值卡住。所以思考:能不能把物理中出现的这种现象运用到梯度下降里面?

        一般的梯度下降过程如图10所示,一直沿着gradient的反方向去更新参数。

图10:一般的梯度下降过程

        加上动量后的梯度下降如图11所示,此时,参数的更新方向为gradient的反方向和前一步移动的方向的矢量和。更进一步地,如今的参数优化方向为当前gradient反方向加上前面的移动方向的综合。

图11:加上动量的参数更新路径

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值