最优化方法问题总结

最近在学习得过程中感悟很大,即通过OKR的方法来形成自己学习内容中最小的闭环。另外对所谓学过的知识经常忘有了新的认识,所要做的不是以前的那套–所谓和遗忘作斗争不断去重复,而是思考清楚为什么会遗忘,一是自己没有真正理解,二是没有将知识点相互关联串起来。

一定要找到所学习内容中最小的闭环,然后,慢下来

Q: 解释梯度下降法和牛顿法原理:

梯度下降法:泰勒展开到一次项,忽略二次以上的项,用一次函数来线性代替,最后通过移项来得到迭代式;

牛顿法:把函数展开未二次,忽略二次以上的项,用二次函数来近似代替,最后通过对二次的函数求梯度,让梯度为0来得到迭代式;

Q: 一句话解释下梯度下降及牛顿法:

梯度下降法是沿初始点梯度向量的反方向进行迭代,进而得到函数的极值点,参数迭代公式为:

x k + 1 = x k − γ ∇ f ( x k ) x_{k+1} = x_k - \gamma \nabla f(x_k) xk+1=xkγf(xk)

牛顿法是直接使用驻点处导数为零,推导处参数迭代公式:

x k + 1 = x k − γ H k − 1 g k x_{k+1} = x_k - \gamma H_k^{-1} g_k xk+1=xkγHk1gk

Q: 梯度下降法的优缺点,如何改进?

  1. 梯度下降沿着负梯度方向走,向目标函数梯度为零的点收敛,因此迭代可能停止在鞍点处;

    什么是鞍点?->目标函数在此点上的梯度(一阶导数)值为 0,但从该点出发的一个方向是函数的极大值点,而在另一个方向是函数的极小值点。

    判断鞍点标准:函数在一阶导数为0处(驻点)的海森矩阵为不定矩阵;

    判断矩阵正定:对于n阶矩阵A,若有任意的非0向量X: $ X^{T} A X > 0 $

  2. 梯度下降法只会收敛到极小值点,而不一定是最小值点。当目标函数存在多个极小值点时,初始点 x 0 x_0 x0的选择就非常重要;

  3. 梯度下降法的学习率是人为设置的一个参数,当学习率较小时,达到收敛的迭代次数比较大。当学习率较大时,会存在极小值点处震荡无法收敛的情况。

改进方法:初始值的设定,步长的选择,迭代终止的判定规则;

Q: 梯度下降法中,为什么要沿着负梯度方向走?

由多元函数的泰勒公式:

f ( x ) = f ( x 0 ) + ∇ T f ( x 0 ) ( x − x 0 ) + ∘ ( ∣ x − x 0 ∣ ) f(x) = f(x_0)+\nabla ^ T f(x_0)(x-x_0)+\circ(|x-x_0|) f(x)=f(x0)+Tf(x0)(xx0)+(xx0)

当x在 x 0 x_0 x0的邻域内,则可以将高阶无穷小忽略,得到:

f ( x ) − f ( x 0 ) ≈ ∇ T f ( x 0 ) ( x − x 0 ) f(x)-f(x_0)\approx \nabla^T f(x_0)(x-x_0) f(x)f(x0)Tf(x0)(xx0)

因为目的是从 f ( x 0 ) f(x_0) f(x0)找更小的f(x),所以 f ( x ) − f ( x 0 ) f(x)-f(x_0) f(x)f(x0)小于等于0,即: ∇ T f ( x 0 ) ( x − x 0 ) \nabla^T f(x_0)(x-x_0) Tf(x0)(xx0)小于等于0;

解释一:凑法

∇ T f ( x 0 ) ( x − x 0 ) \nabla^T f(x_0) (x-x_0) Tf(x0)(xx0)可以看作是两个向量做内积,我们可以令 x − x 0 = − ∇ T f ( x 0 ) x-x_0= -\nabla^T f(x_0) xx0=Tf(x0),
代入得:

− ∇ T f ( x 0 ) ∇ T f ( x 0 ) -\nabla^T f(x_0) \nabla^T f(x_0) Tf(x0)Tf(x0),其一定小于等于0,故 x = x 0 − ∇ f ( x 0 ) x = x_0-\nabla f(x_0) x=x0f(x0)

解释二:向量内积

根据向量得内积公式,得: X T Y = ∣ ∣ X ∣ ∣ ∣ ∣ Y ∣ ∣ c o s θ X^TY = ||X|| ||Y|| cos\theta XTY=XYcosθ
θ \theta θ为钝角时即可保证函数是往降低得方向来进行移动,当取负方向时,即是梯度下降的最快的方向。

从原理解释,梯度下降中步长的作用?

梯度下降优化的基本理论是采用迭代法近似求解,逐步求精。

在近似求解的过程中,我们把无穷小量忽略掉了,而忽略了无穷小量的前提是x与 x 0 x_0 x0离得充分近,才能忽略泰勒展开中一次以上的项。而步长的作用就是和 x 0 x_0 x0的梯度相乘后,控制让x与 x 0 x_0 x0离得充分近。

Q: 牛顿法的优缺点,如何改进?

  1. 牛顿法不能保证每次迭代时函数值都下降,故当步长的值没取好的话可能会不收敛。所以解决的方法是直线搜索,即搜索最优步长,具体的做法是让步长取一些离散值:如->0.0001,0.001,0.01等,比较取哪个值时函数值下降最快,作为最优步长;
  2. 牛顿法的推导中,要求Hessian矩阵可逆,所以当Hessian矩阵不可逆时,牛顿法会失效;
  3. 当变量个数多,海森矩阵的规模大时,求解方程组会很消耗时间;(拟牛顿法对此进行了优化)
  4. 局部极小值和鞍点问题;

Q: 为什么说目标函数是二次函数时,无论初始点在什么位置,牛顿法就可以一步到位?

牛顿法的基本方法仍然是采用迭代法近似求解,逐步求精。和梯度下降法不同的是,其直接找
∇ f ( x ) \nabla f(x) f(x)等于0,采用迭代法向着梯度为0的点靠近。

多元函数的泰勒展开公式展开到二阶得到:

f ( x ) = f ( x 0 ) + ∇ T f ( x 0 ) ( x − x 0 ) + 1 2 ( x − x 0 ) T H ( x − x 0 ) + ∘ ( ∣ x − x 0 ∣ 2 ) f(x) = f(x_0)+\nabla ^ T f(x_0)(x-x_0) + \frac{1}{2}\quad(x-x_0)^TH(x-x_0) + \circ(|x-x_0|^2) f(x)=f(x0)+Tf(x0)(xx0)+21(xx0)TH(xx0)+(xx02)

如果x在 x 0 x_0 x0的邻域内,可以将无穷小给忽略掉,得到:

f ( x ) ≈ f ( x 0 ) + ∇ T f ( x 0 ) ( x − x 0 ) + 1 2 ( x − x 0 ) T H ( x − x 0 ) f(x)\approx f(x_0)+\nabla^T f(x_0)(x-x_0)+\frac{1}{2}\quad(x-x_0)^TH(x-x_0) f(x)f(x0)+Tf(x0)(xx0)+21(xx0)TH(xx0)

在这里我们为了凑出 ∇ f ( x ) \nabla f(x) f(x),对两边的x分别求梯度,由两个推导公式推得:

∇ W T x = W \nabla W^Tx = W WTx=W

∇ X T A X = ( A + A T ) X \nabla X^T A X = (A+A^T)X XTAX=(A+AT)X

∇ f ( x ) ≈ 0 + ∇ f ( x 0 ) + H ( x − x 0 ) \nabla f(x)\approx 0+\nabla f(x_0)+H(x-x_0) f(x)0+f(x0)+H(xx0)

令梯度值为0,得:

∇ f ( x 0 ) + H ( x − x 0 ) = 0 \nabla f(x_0)+H(x-x_0) = 0 f(x0)+H(xx0)=0

因为 f ( x 0 ) f(x_0) f(x0)已知,记为g,那么: H ( x − x 0 ) = − g H(x-x_0)=-g H(xx0)=g,如果海森矩阵可逆,则两边同时乘上 H − 1 H^{-1} H1,有:
X − X 0 = − H − 1 g X-X_0 = -H^{-1}g XX0=H1g

X = X 0 − H − 1 g X = X_0 - H^{-1}g X=X0H1g

同样,因为X需要在 X 0 X_0 X0的邻域内,所以也给加上步长,得:

x k + 1 = x k − γ H k − 1 g k x_{k+1} = x_k-\gamma H_k^{-1}g_k xk+1=xkγHk1gk

所以,当目标函数为二次函数时,海森矩阵为一个数,当步长为1时,可以直接得到最优的X

Q: 牛顿法中要求Hessian矩阵可逆在哪一步中体现?

在令 ∇ f ( x ) = 0 \nabla f(x)=0 f(x)=0后,需要对两边化简得出X时;

你可能感兴趣的:(机器学习,深度学习)