4.1 Overflow and Underflow

  • 接近零的数被四舍五入为零时发生下溢,当大数被近似为 $+\infty$ 或 $-\infty$ 时发生上溢。
  • 以 softmax 函数为例, $\mathrm{softmax}(\pmb{x})_i=\frac{e^{x_i}}{\sum_{j=1}^ne^{x_j}}$ 。

    • 分母太小造成除零错误,解决方法:令 $a=\mathrm{max}x_i$ , $\mathrm{softmax}(\pmb{x}-a)_i=\frac{e^{x_i-a}}{\sum_{j=1}^ne^{x_j-a}}=\frac{e^{x_i}}{\sum_{j=1}^ne^{x_j}}$ 。这也就意味着求 $\mathrm{softmax}(\pmb{x}-a)_i$ 与原式是等价的。而新的公式中分母里至少有一项为 $e^0=1$ ,不会下溢。
    • 分子与分母太大造成undefined,解决方法同上,因为 $e^{x_i-a}\lt e^0$ 。
    • 在计算 $\mathrm{log}(\mathrm{softmax}(\pmb{x})_i)$ 时出现 $\mathrm{log}0$的错误,解决方法: $\mathrm{log}(softmax(\pmb{x}-a)_i)=(x_i-a)-\mathrm{log}(\sum\limits_{j=1}^n e^{x_j-a})$ ,这样在 $\sum\limits_{j=1}^n e^{x_j-a}$ 中至少有一项为 $1$ 。

4.2 Poor Conditioning

  • 条件数用于体现一个函数对于输入中微小变化的反应,如果条件数很大就意味着输入稍微一变就会扰乱最终结果。
  • 这里举了一个矩阵条件数的例子,$f(\pmb{x})=\pmb{A}^{-1}\pmb{x}$ 。当 $A$ 可以特征分解时,条件数为 $\max \limits_{i,j}|\frac{\lambda_i}{\lambda_j}|$ ,也就是最大和最小特征值之比。当这个数很大时,矩阵求逆会对于输入的误差很敏感。(然而我并不会这个条件数,我也不准备问师兄这个犄角旮旯了,hhhh跳!)

4.3 Gradient-Based Optimization

  • 临界点(驻点): $f'(x)=0$ 的点,分为局部极小点、局部极大点、鞍点
  • 全局最小点
  • 梯度

    • $\nabla_{\pmb{x}}f(\pmb{x})=(f_{x_1}',\dots,f_{x_n}')$
    • 梯度是方向导数最大的方向。
    • 局部极值点是 $\nabla_{\pmb{x}}f(\pmb{x})=\pmb{0}$ 的点。
  • 方向导数

    • 偏导数是相对于坐标轴方向的导数,方向导数是任意方向的导数。
    • $\lim\limits_{\alpha \to 0^+}\frac{f(\pmb{x}+\alpha\pmb{u})-f(\pmb{x})}{\alpha}=\pmb{u}^\mathrm{T}\nabla_{\pmb{x}}f(\pmb{x})=(\mathrm{cos}\theta_1,\dots,\mathrm{cos}\theta_n)\cdot(f_{x_1}',\dots,f_{x_n}')$
    • 让我回忆并理解方向导数和梯度的文章:如何直观形象的理解方向导数与梯度以及它们之间的关系?
  • 梯度下降法

    • 目标:总体目标是最小化损失函数 $f(\pmb{x})$ ,当前这一步的目标是找到一个损失函数下降最快的方向并迈出这一步。
    • 损失函数下降最快,也就是要方向导数最小,所以目标为 $\min \limits_{\pmb{u},\pmb{u}^\mathrm{T} \pmb{u}=1}\pmb{u}^\mathrm{T}\nabla_{\pmb{x}}f(\pmb{x})=\min \limits_{\pmb{u},\pmb{u}^\mathrm{T} \pmb{u}=1}||\pmb{u}||_2||\nabla_{\pmb{x}}f(\pmb{x})||_2\mathrm{cos}\theta$ ,其中 $\theta$ 为梯度方向和导数方向的夹角。显然 $\theta=\pi$ 时最小,也就是梯度方向是导数方向的反方向。
    • 综上,优化时当前这一步的方向为梯度的反方向,学习率为 $\epsilon$ 时, $\pmb{x}'=\pmb{x}-\epsilon\nabla_{\pmb{x}}f(\pmb{x})$ 。
    • 我一开始总觉得这一部分是反的,原因在于我忘记导数是有正负的了。只有斜率为正,也就是上山方向时,方向导数才是正的。
  • 梯度下降只用于连续空间,离散空间有类似算法例如爬山算法。

4.3.1 Beyond the Gradient: Jacobian and Hassian Matrices

最后修改:2020 年 11 月 14 日 11 : 52 AM
如果觉得我的文章对你有用,请随意赞赏