Numerical Computation

总结Deep Learning第四章Numerical Computation知识点。

1.Overflow and Underflow

书中指出在数字计算机系统中最大的连续计算问题是用有限的位运算表示无限多个实数。对于一些实数,当我们在计算机中表示时会出现近似错误,最常见的就是舍入错误。例如将近似0的数舍入成0,这就是Underflow。而当舍入的0出现在分母时,就会出现大的计算错误问题。而Overflow是当数组是一个很大的数时,计算机可能会将该近似无限大数表示成一个非数字(not-a-number)。
所以为预防出现Overflow和Underflow问题,我们使用Softmax函数,Softmax函数形式为:Softmax函数

2.Poor Conditioning

Conditioning表示函数在输出发生小改变时输出值的变化情况。如果函数对于输入的扰动输出值产生很大的改变的话,科学计算会出现问题。为衡量函数的变化情况,提出了condition number(条件数):函数函数,当A是n*n的,且A有特征值时,定义条件数为条件数。条件数越大,代表函数的抗干扰能力越弱。

3.Gradient-Based Optimization

当我们计算目标函数的最大或最小值时可以采用梯度下降(Gradient descent)算法。梯度下降算法是指我们每次讲x沿当前点x的导数相反方向移动来更新f(x)。更新方法表示为:梯度下降。其中学习率是学习率。学习率的选择下一节谈到。
梯度下降算法当每个元素的导数都为0时收敛,导数等于0的点叫做critical point(临界点),但此时的最小(大)值可能不是全局的最小(大)值,可能是局部最小(大)值或鞍点(Saddle point)。

4.Jacobian and Hessian Matrices

Jacobian Matrix(雅克比矩阵)中包含的是函数的导数值。例如映射,则雅克比矩阵是J,其中每个元素是J元素
Hessian Matrix(黑塞矩阵)中包含的是二次导数,定义为hessian。Hessian Matrix是实对称矩阵。
二次导数表示的是一次导数的斜率,使用泰勒展开式将f(x)展开得到:Taylor series。使用梯度下降将x移到新x带入到上面方程式中化简得到新
由上式得到,若参数是非正数,则f(x)的变化是同一次导数和学习率的方向变化的;但是若参数2是正数,则可能出现f(x)的变化随二次导数的变化,为避免这种情况,可以选择学习率为学习率选择
并从二次导数判断当在在临界点时,如果Hessian矩阵是正定矩阵(所有的特征值都是正值),则该点是局部最小值;同理若Hessian矩阵是负定矩阵(特征值全是负数),点是局部最大值;若特征值至少有一个是负数且至少有一个是正数,则点是鞍点。
对于多维变量来说,若Hessian矩阵条件数太大的话,会出现在某个点沿某方向变化剧烈,而沿另外一方向变化缓慢。而对于梯度下降法来说,它不知道导数的变化,所以也不会优先知道在哪个方向上导数会一直保持负数很长时间。同时由上面式子也可以得出学习率不好选择。所以书中提出了Newton’s method(牛顿方法)。重新写出二阶泰勒展开式如下:
二阶泰勒展开
我们使用下式作为x的下一步的取值:
牛顿方法的x
牛顿方法有很多特性:当f(x)是正定二次矩阵时,使用牛顿方法可以一步取得最小值。而牛顿方法多用于来计算最小值,对于计算最小值(所有特征值都是正数)有很多良好的特性。
5.Constrained Optimization
第5小节讲带约束条件的优化问题,主要介绍了广义拉格朗日和KKT条件。具体内容单独总结。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值