【花书】chapter4:数值计算

4.1 上溢和下溢

  • 在计算机中表示实数时,几乎总会引入一些误差。
  • 下溢是一种舍入误差,当接近0的数被四舍五入为0时发生下溢。
  • 上溢是一种极具破坏力的数值错误形式,当大量级的数被近似为 ∞ 或 − ∞ \infty或-\infty 时发生上溢。进一步的运算会使这些无限值变为数字。
  • 必须对上溢和下溢进行数值稳定的一个例子是softmax函数:
    s o f t m a x ( x ) i = exp ⁡ ( x i ) ∑ j = 1 n exp ⁡ ( x j ) softmax(x)_i = \frac{\exp(x_i)}{\sum_{j=1}^n\exp(x_j)} softmax(x)i=j=1nexp(xj)exp(xi)
    可能会导致上溢和下溢,解决方法是 z = x − max ⁡ i x i z = x-\max_ix_i z=xmaxixi.这样exp的参数最大为0,排除了上溢的可能性,同样地,分母中至少有一个值为1的项,排除了因分母下溢而导致被0除的可能性。

4.2 病态条件

  • 条件数表征函数对于输入的微小变化而变化的快慢程度。输入被轻微扰动而迅速改变的函数对于科学计算可能是有问题的,因为输入中的舍入误差可能导致输出的巨大变化。
  • 函数 f ( x ) = A − 1 x . 当 A ∈ R n × n f(x) = A^{-1}x.当A\in\mathbb R^{n\times n} f(x)=A1x.ARn×n具有特征值分解时,其条件数为 max ⁡ i , j ∣ λ i λ j ∣ \max_{i,j}|\frac{\lambda_i}{\lambda_j}| i,jmaxλjλi这是最大和最小特征值的模之比。当该数很大时,矩阵求逆对输入的误差特别敏感。

4.3 基于梯度的优化方法

  • 优化指的是改变x以最小化或最大化某个函数f(x)的任务。最大化优化可由最小化算法最小化-f(x)来实现。
  • 最大化或最小化的函数称为目标函数或准则。当对其进行最小化时,也称为代价函数、损失函数或误差函数。
  • 使用上标*来表示最小化或最大化函数的x值。如 x ∗ = arg min ⁡ f ( x ) x^* = \argmin f(x) x=argminf(x)
  • 根据函数导数表明如何缩放输入的小变化才能在输出获得相应的变化: f ( x + ϵ ) ≈ f ( x ) + ϵ f ′ ( x ) f(x+\epsilon) \approx f(x)+\epsilon f^{'}(x) f(x+ϵ)f(x)+ϵf(x).
  • 当导数为0的时候,这个点称为临界点或驻点。
    在这里插入图片描述
    使f(x)取得绝对的最小值(相对其他所有值)的点是全局最小点。函数可能只有一个全局最小点或存在多个全局最小点,还可能存在不是全局最优的局部极小点。
    我们经常最小化具有多维输入的函数: f : R n → R f:\mathbb R^n \rightarrow \mathbb R f:RnR.为了使最小化的概念有意义,输出必须是一维的(标量)。
  • 针对具有多维输入的函数,需要使用偏导数。偏导数 ∂ ∂ x i f ( x ) \frac{\partial}{\partial x_i}f(x) xif(x)衡量点x处只有 x i x_i xi增加时f(x)如何变化。
  • 梯度是相对一个向量求导的导数:f的导数是包含所有偏导数的向量,记为 ∇ x f ( x ) \nabla_xf(x) xf(x).梯度的第i个元素是f关于 x i x_i xi的偏导数。多数情况下,临界点是梯度中所有元素都为0的点。
  • u u u(单位向量)方向的方向导数是函数f在u方向的斜率。也就是说,方向导数是函数 f ( x + α u ) f(x+\alpha u) f(x+αu)关于 α \alpha α的导数(在 α = 0 \alpha=0 α=0时获得)。使用链式法则,当 α = 0 \alpha=0 α=0时, ∂ ∂ α f ( x + α u ) = u T ∇ x f ( x ) \frac{\partial}{\partial \alpha}f(x+\alpha u) = u^T\nabla_xf(x) αf(x+αu)=uTxf(x).
  • 为了最小化f,希望找到f下降最快的方向。计算方向导数:
  • min ⁡ u , u T u = 1 u T ∇ x f ( x ) = min ⁡ u , u T u = 1 ∣ ∣ u ∣ ∣ 2 ∣ ∣ ∇ x f ( x ) ∣ ∣ 2 cos ⁡ θ θ 是 u 与 梯 度 的 夹 角 。 将 ∣ ∣ u ∣ ∣ 2 = 1 代 入 , 并 忽 略 与 u 无 关 的 项 , 简 化 得 到 min ⁡ u cos ⁡ θ . 这 在 u 与 梯 度 方 向 相 反 时 取 最 小 值 。 \min_{u,u^Tu =1}u^T\nabla_xf(x) = \min_{u,u^Tu =1}||u||_2||\nabla_xf(x) ||_2\cos\theta\\\theta是u与梯度的夹角。将||u||_2=1代入,并忽略与u无关的项,简化得到\\\min_u\cos\theta.这在u与梯度方向相反时取最小值。 u,uTu=1minuTxf(x)=u,uTu=1minu2xf(x)2cosθθuu2=1uumincosθ.u
  • 也就是说,梯度向量指向上坡,负梯度向量指向下坡。我们在负梯度方向上移动可以减小f,这被称为最速下降或梯度下降。
  • 梯度下降建议新的点为 x ′ = x − ϵ ∇ x f ( x ) x^{'} = x-\epsilon\nabla_xf(x) x=xϵxf(x)
    其中 ϵ 为 学 习 率 。 梯 度 下 降 在 梯 度 的 每 一 个 元 素 为 0 时 收 敛 。 \epsilon为学习率。梯度下降在梯度的每一个元素为0时收敛。 ϵ0

4.4 约束优化

  • 有时候,在x的所有可能值下最大化或最小化一个函数f(x)不是我们希望的,相反,我们希望在x的某些集合S中找f(x)的最大值或最小值,这被称为约束优化。在约束优化术语中,集合S中的点x被称为可行点。
  • 约束优化的一个简单方法是将约束考虑在内后简单地对梯度下降进行修改。
  • 一个更复杂的方法是设计一个不同的、无约束的优化问题,其解可以转化为原始约束优化的问题

4.5 实例 最小二乘法

  • 假设我们想找到最小化下式的x值:
    f ( x ) = 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 f(x) =\frac{1}{2}||Ax-b||_2^2 f(x)=21Axb22
    怎么使用基于梯度的优化来解决这个问题呢?
    首先计算梯度:
    ∇ x f ( x ) = A T ( A x − b ) = A T A x − A T b \nabla_xf(x) = A^T(Ax-b) = A^TAx-A^Tb xf(x)=AT(Axb)=ATAxATb
    然后我们可以采用小的步长,并按照这个梯度下降。见下面算法:
    (其实就是寻找梯度为0的点,或者找到一个可以接受的区间,不断地通过梯度更新x的取值)在这里插入图片描述
    现在假设我们希望最小化同样的函数,但受 x T x ≤ 1 x^Tx\leq1 xTx1的约束。引入Lagrangian:
    L ( x , λ ) = f ( x ) + λ ( x T x − 1 ) L(x,\lambda) = f(x)+\lambda(x^Tx-1) L(x,λ)=f(x)+λ(xTx1)
    现在需要解决:
    min ⁡ x max ⁡ λ , λ ≥ 0 L ( x , λ ) \min_x\max_{\lambda,\lambda \geq 0}L(x,\lambda) xminλ,λ0maxL(x,λ)
    关于x对Lagrangian进行微分:
    A T A x − A T b + 2 λ x = 0 ⇒ x = ( A T A + 2 λ I ) − 1 A T b λ 的 选 择 必 须 服 从 约 束 , 可 以 关 于 λ 进 行 梯 度 上 升 找 到 这 个 值 。 观 察 ∂ ∂ λ L ( x , λ ) = x T x − 1 A^TAx-A^Tb+2\lambda x = 0\\\Rightarrow x = (A^TA+2 \lambda I )^{-1}A^Tb\\\lambda的选择必须服从约束,可以关于\lambda进行梯度上升找到这个值。观察\\\frac{\partial}{\partial \lambda}L(x,\lambda) = x^Tx-1 ATAxATb+2λx=0x=(ATA+2λI)1ATbλλλL(x,λ)=xTx1
    当x的范数超过1时,该导数是正的,所以为了跟随导数上坡并相对 λ \lambda λ增加Lagrangian,需要增加 λ \lambda λ。因为 x T x x^Tx xTx的惩罚系数增加了,求解关于x的线性方程现在将得到具有较小范数的解。求线性方程和调整 λ \lambda λ的过程将一直持续到x具有正确的范数并且关于 λ \lambda λ的导数为0.

???????

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值