《深度学习》 第4章 数值计算

《深度学习》 第4章 数值计算

数值计算通过迭代过程更新解的估计值来解决数学问题,而不是通过解析过程推导出公式来提供正确解。

常见的操作有优化和线性方程组的求解

上溢和下溢

必须对上溢和下溢进行数值稳定的一个例子是softmax函数。可通过计算softmax( z = x − max ⁡ i x i z=x-\max_ix_i z=xmaxixi)同时解决softmax函数分母的上溢和下溢问题。使用单独的logsoftmax函数来解决softmax函数分子的下溢问题。

病态条件

条件数表征函数相对于输入的微小变化而变化的快慢程度,即最大和最小特征值的模之比:
max ⁡ i , j ∣ λ i λ j ∣ \max \limits_ {i,j}\left|\frac{\lambda_i}{\lambda_j}\right| i,jmaxλjλi

基于梯度的优化方法

x ∗ = arg ⁡ min ⁡ f ( x ) x^* = \arg\min f(x) x=argminf(x)

微积分和优化的联系。

梯度之上:Jacobian和Hessian矩阵

函数 f : R m → R n f:\mathbb R^m \to \mathbb R^n f:RmRn,其Jacobian矩阵 J ∈ R n × m J \in \mathbb R^{n\times m} JRn×m定义为 J i , j = ∂ ∂ x j f ( x ) i J_{i,j} = \frac{\partial}{\partial x_j}f(x)_i Ji,j=xjf(x)i

函数 f : R m → R f:\mathbb R^m \to \mathbb R f:RmR f f f的一阶导数(关于 x j x_j xj)关于 x j x_j xj的导数记为 ∂ 2 ∂ x i ∂ x j f \frac{\partial^2}{\partial x_i \partial x_j}f xixj2f

Hessian矩阵$H(f)(x)定义为:
H ( f ) ( x ) x , j = ∂ 2 ∂ x i ∂ x j f ( x ) H(f)(x)_{x,j} = \frac{\partial^2}{\partial x_i \partial x_j} f(x) H(f)(x)x,j=xixj2f(x)

因为Hessian矩阵是实对称的,可将其分解为一组实特征值和一组特征向量的正交基。在特定方向 d d d上的二阶导数可以写成 d ⊤ H d d^⊤Hd dHd d d d H H H的一个特征向量时,这个方向的二阶导 数就是对应的特征值。对于其他的方向 d d d,方向二阶导数是所有特征值的加权平均, 权重在 0 0 0 1 1 1之间,且与 d d d夹角越小的特征向量的权重越大。最大特征值确定最大二阶导数,最小特征值确定最小二阶导数。

f ( x ) ≈ f ( x ( 0 ) + ( x − x ( 0 ) ) ⊤ g + 1 2 ( x − x ( 0 ) ) ⊤ H ( x − x ( 0 ) ) ) f(x) \approx f(x^{(0)} + (x-x^{(0)})^\top g+\frac 12(x-x^{(0)})^\top H(x-x^{(0)})) f(x)f(x(0)+(xx(0))g+21(xx(0))H(xx(0)))

使用学习率 ϵ \epsilon ϵ,新点将是 x ( 0 ) − ϵ g x^{(0)}-\epsilon g x(0)ϵg
f ( x ( 0 ) − ϵ g ) ≈ f ( x ( 0 ) − ϵ g ⊤ g + 1 2 ϵ 2 g ⊤ H g ) f(x^{(0)}-\epsilon g) \approx f(x^{(0)} - \epsilon g^\top g+\frac 12 \epsilon^2 g^\top H g) f(x(0)ϵg)f(x(0)ϵgg+21ϵ2gHg)

g ⊤ H g g^\top Hg gHg为零或负时,近似的泰勒级数表明增加 ϵ \epsilon ϵ将永远使 f f f下降。当 g ⊤ H g g^\top Hg gHg为正时,通 过计算可得,使近似泰勒级数下降最多的最优步长为
ϵ ∗ = g ⊤ g g ⊤ H g \epsilon^* = \frac{g\top g}{g \top H g} ϵ=gHggg

最坏的情况下, g g g H H H最大特征值 λ max ⁡ \lambda_{\max} λmax对应的特征向量对齐,则最优步长是 1 λ max ⁡ \frac{1}{\lambda_{\max}} λmax1

单纯使用梯度下降会在优化形如长峡谷的函数时浪费太多时间在峡谷壁下降上

牛顿法:
牛顿法原用于迭代求解函数的零点,因函数取极值的点处的导数值为0,故可用牛顿法求解优化问题。
函数临界点:
x ∗ = x ( 0 ) − H ( f ) ( x ( 0 ) ) − 1 ∇ x f ( x ( 0 ) ) x^* = x^{(0)} - H(f)(x^{(0)})^{-1}\nabla_xf(x^{(0)}) x=x(0)H(f)(x(0))1xf(x(0))

约束优化

Karush-Kuhn-Tucker(KKT)方法(加入不等式的拉格朗日乘数法)是针对约束优化非常通用的解决方案
L ( x , λ , α ) = f ( x ) + ∑ i λ i g ( i ) ( x ) + ∑ j α j h ( j ) ( x ) L(x,\lambda,\alpha) = f(x) + \sum_i\lambda_i g^{(i)}(x) + \sum_j \alpha_jh^{(j)}(x) L(x,λ,α)=f(x)+iλig(i)(x)+jαjh(j)(x)
求解
min ⁡ x max ⁡ λ max ⁡ α , α ≥ 0 L ( x , λ , α ) \min_x\max_\lambda\max_{\alpha,\alpha \geq 0}L(x,\lambda,\alpha) xminλmaxα,α0maxL(x,λ,α)

约束优化方法之拉格朗日乘子法与KKT条件

实例:线性最小二乘

找到最小化下式的 x x x值:
f ( x ) = 1 2 ∣ ∣ A x − b ∣ ∣ 2 2 f(x) = \frac 12 ||Ax-b||^2_2 f(x)=21Axb22

  • 梯度下降
  • 牛顿法
  • KKT
  • Moore-Penrose伪逆
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值