李宏毅-2021春-机器学习/深度学习学习笔记-Deep Learning【1】

一、When Gradient Is Small: Local Minimum and Saddle Point
1、为什么你的训练损失会停留在一定的数值?
  • 原因1:达到了局部最小,意味着网络训练已经达到了收敛的情况;
  • 原因2:达到了鞍点(saddle point),此时的梯度也是0,故网络损失可能不会再继续下降;
2、判断鞍点

  首先,就要知晓损失函数的形状,但是我们无法知道完成的损失函数的形状,因为参数可能很多,模型比较复杂,但是如果给定某一组参数 θ ′ \theta^\prime θ,在其附近的损失函数,是有办法被写出来的:
L ( θ ) ≈ L ( θ ′ ) + ( θ − θ ′ ) T g + 1 2 ( θ − θ ′ ) T H ( θ − θ ′ ) , L(\theta)\approx L(\theta^\prime)+(\theta-\theta^\prime)^Tg+\frac 12(\theta-\theta^\prime)^TH(\theta-\theta^\prime), L(θ)L(θ)+(θθ)Tg+21(θθ)TH(θθ),
上述公式的来源是泰勒展开,其中, g g g表示的是一个向量,就是对所有 θ i \theta_i θi所算得的 g r a d i e n t gradient gradient,计算方法如下:
g = ∇ L ( θ ′ ) g i = ∂ L ( θ ′ ) ∂ θ i , g=\nabla L(\theta^\prime)\qquad g_i=\frac {\partial L(\theta^\prime)}{\partial\pmb{\theta}_i}, g=L(θ)gi=θθθiL(θ),
其中, H H H是一个矩阵,计算方法如下:
H i j = ∂ 2 L ( θ ′ ) ∂ θ i ∂ θ j , H_{ij}=\frac {\partial^2L(\theta^\prime)}{\partial\pmb{\theta}_i\partial\pmb{\theta}_j}, Hij=θθθiθθθj2L(θ),
如果,此时的训练的损失已经进入"收敛"状态,此时 g r a d i e n t gradient gradient为0,即 ( θ − θ ′ ) T g (\theta-\theta^\prime)^Tg (θθ)Tg该项此时为0,所以我们只需要看余项来对损失函数的形状进行判别即可,即
L ( θ ) ≈ L ( θ ′ ) + 1 2 ( θ − θ ′ ) T H ( θ − θ ′ ) , L(\theta)\approx L(\theta^\prime)+\frac 12(\theta-\theta^\prime)^TH(\theta-\theta^\prime), L(θ)L(θ)+21(θθ)TH(θθ),
为了符号撰写的方便,这里用 v v v来表示 ( θ − θ ′ ) (\theta-\theta^\prime) (θθ),由此有

  • 若对于所有的 v v v而言,有 v T H v > 0 v^THv>0 vTHv>0,即在 θ ′ \theta^\prime θ附近,所有的 L ( θ ) L(\theta) L(θ)都大于 L ( θ ′ ) L(\theta^\prime) L(θ),所以其是局部最小;
  • 若对于所有的 v v v而言,有 v T H v < 0 v^THv<0 vTHv<0,即在 θ ′ \theta^\prime θ附近,所有的 L ( θ ) L(\theta) L(θ)都小于 L ( θ ′ ) L(\theta^\prime) L(θ),所以其是局部最大;
  • 若对于部分 v v v,有 v T H v > 0 v^THv>0 vTHv>0,另外一部分有 v T H v < 0 v^THv<0 vTHv<0,则其表示为鞍点;

但是这里你无法带入所有的 v v v,只需要计算 H H H的特征值都大于0即可,numpy中计算特征值的函数为np.linalg.eig(H)

3、逃离鞍点

  设 u u u H H H的一个特征向量, λ \lambda λ u u u的特征值,此时寻找到一个 λ < 0 \lambda<0 λ<0那么有
v T H v → u T H u = u T ( λ u ) = λ u T u = λ ∣ ∣ u ∣ ∣ 2 , v^THv→u^THu=u^T(\lambda u)=\lambda u^Tu=\lambda ||u||^2, vTHvuTHu=uT(λu)=λuTu=λu2,
  此时, λ < 0 \lambda<0 λ<0,则 u T H u < 0 u^THu<0 uTHu<0,所以 L ( θ ′ ) + 1 2 u T H u = L ( θ ) < L ( θ ′ ) L(\theta^\prime)+\frac 12u^THu=L(\theta)<L(\theta^\prime) L(θ)+21uTHu=L(θ)<L(θ),所以只需要让此时的 θ \theta θ沿着 u u u更新参数即可:
θ − θ ′ = u θ = θ ′ + u , \theta-\theta^\prime=u\qquad\theta=\theta^\prime+u, θθ=uθ=θ+u,
  但是,实际上并没有这么做(讲了这么半天结果没人这么干…),李老师的意思是卡在了鞍点并没有那么可怕,那么平时我们遇到情况更多的是高维鞍点

4、笔者注

  在我刚开始接触机器学习与深度学习的时候,对于该领域中的维度有一段时间我理解的不是很明白,经过了一段时间的学习,我稍稍加深了一点对于该名词的理解,当然这可能也比较浅薄,但我希望能加深大家对其的理解:

  对于某一个函数,比如 y = a x + b y=ax+b y=ax+b中,在深度学习领域中,我们常将其写成 y = θ 0 x + θ 1 y=\theta_0x+\theta_1 y=θ0x+θ1,其中, θ 0 \theta_0 θ0就是我们常说的偏置(bias),对于这样的一个函数,我们会称其为参数量居于二维空间之中,因为函数中我们要学习的参数只有 θ 0 \theta_0 θ0 θ 1 \theta_1 θ1两个,而稍微扩展一点,对于一个简单的线性分类器来说,如 y = θ 0 x + θ 1 + θ 2 + . . . + θ n − 1 y=\theta_0x+\theta_1+\theta_2+...+\theta_{n-1} y=θ0x+θ1+θ2+...+θn1而言,其参数量就属于 N N N维空间之中。

  课程中,李老师说到对于低纬的局部最优,可能在高维看上去不过是一个鞍点而已,我们可以这么理解:当我们在一张纸上画一条二次曲线(如 y = a x 2 y=ax^2 y=ax2),并将该张纸揉得很杂乱,对于那张纸而言 ( 0 , 0 ) (0,0) (0,0)这个点永远是局部最小值的点,但是对于现实的三维世界而言,由于我们把其揉的很乱,肯定纸张中有部分是低于 ( 0 , 0 ) (0,0) (0,0)那个点,有部分是 ( 0 , 0 ) (0,0) (0,0)那个点的,我们要找的,则是三维空间中最低(即全局最优解)的那个点。

  所以,这样我们也就可以理解为什么,我们倾向于让模型更加复杂,让模型拥有更多的参数,但是如此一来会带来的种种其他问题,解决方法就需要用到我们以后学得的更优异的数学模型和网络构架(如resNet)了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>