目录

上溢和下溢

  • 下溢(underflow)是一种极具毁灭性的舍入误差.当接近零的数被四舍五入为零时发生下溢
  • 上溢(overflow)是一种极具破坏力的数值错误形式.当大量级的数被近似为或者时发生上溢,进一步的运算通常会导致这些无限值变成非数字.
  • softmax 函数(softmax function)可以对上溢和下溢进行数值稳定的一个函数,softmax函数经常用于预测与Multinoulli分布相关联的概率,定义为:

基于梯度的优化方法

大多数深度学习算法都涉及某种形式的优化.优化指的是改变x以最小化或最大化某个函数f(x)的任务.我们通常以最小化f(x)指代大多数最优化问题,最大化可以经由最小化算法最小化f(x)来实现
我们把要最小化或最大化的函数称为目标函数(objective function)或者准则(criterion).当我们对其进行最小化时,也把它称为代价函数(cost function),损失函数(loss function)或者误差函数(error function)

导数

导数(derivative):设函数y=f(x)在点x0的某邻域U(x0)内有定义,当自变量x在点x0处取得增量x(x0x0+xU(x0))时,相应的函数y取得增量:

(1)y=f(x0+x)f(x0)

若极限
(2)limx0yx=limx0f(x0+x)f(x0)x

存在,则称函数y=f(x)在点x0可导,并称此极限值为函数y=f(x)在点x0的导数,记作f(x0)或者dydx|x=x0
由上面的定义可得若曲线y=f(x)存在一点(x0,y0),并且在这点上可导,导数为f(x0),那么导数f(x0)就是该点的斜率.
梯度下降(gradient descent)导数对最小化一个函数很有用,当x足够小时,f(xxsign(f(x)))是比f(x)小的,因此我们可以将x往导数的反方向移动一小步来减小f(x).这种技术称为梯度下降
《深度学习》学习笔记三——数值计算
在不断重复上面操作后,最终可以得到f(x)=0,改点称为临界点(critical point)或驻点(stationary),这个驻点可能是极大点(maximum),或者是极小点(minimum),还有可能是鞍点(saddle point),还要进一步计算.

  1. 当驻点的左边的x距离的f(x)小于0,而驻点的右边边的x距离的f(x)大于0,则该驻点是极小值
  2. 当驻点的左边的x距离的f(x)大于0,而驻点的右边边的x距离的f(x)小于0,则该驻点是极大值
  3. 当驻点的距离左右两边的x距离的f(x)=都小于0或都大于0,则该驻点是鞍点
    《深度学习》学习笔记三——数值计算
    在上面用到了sign函数,下面的就是sign定义:
    (3)sign(x)={1,x>00,x=01,x<0

    sign函数的坐标图:
    《深度学习》学习笔记三——数值计算

偏导数

当函数只有二维输入时,其只有一个驻点,所以这个驻点就是它的最小点或者最大点。但是通常遇到更多的是多维输入的函数,它具有多个驻点,所以它有多个极小点和极大点,如下图。所以通过上面的方法很难找到最大点或者最小点。
《深度学习》学习笔记三——数值计算
针对具有多维输入的函数,我们就需要用到偏导数(partial derivative)的概念了。
设函数z=f(x,y)在点(x0,y0)的某个领域内有定义,当y固定在y0xx0处有增量x时,相应地函数有增量

(4)f(x0+x,y0)f(x0,y0)

如果有极限
(5)limx0f(x0+x,y0)f(x0,y0)x

存在,则称此极限为函数z=f(x,y)在点(x0,y0)x的偏导数,记作:
(6)fx|x=x0,y=y0fx(x0,y0)

同理,函数z=f(x,y)在点(x0,y0)y的偏导数为:
(7)fy(x0,y0)=limy0f(x0,y0+y)f(x0,y0)y

例求f(x,y)=x2+3xy+y2在点(2,1)处的偏导数fx(2,1),fy(2,1).
:把y看作常数,对x求导得到
(8)fx(x,y)=2x+3y

x看作常数,对y求导得到
(9)fy(x,y)=3x2y

代入x=2,y=1,故所求偏导数为:
(10)fx(2,1)=7,fy(2,1)=4

梯度(gradient)是相对一个向量求导的导数:f的导数是包含所有偏导数的向量,记作xf(x)。梯度的第i个元素是f关于xi的偏导数。在多维情况下,临界点是梯度中所有元素都为零的点。


约束优化

有时候,在x的所有可能值下最大化或者最小化一个函数f(x)不是我们所希望的,相反,我们可能希望在x的某些集合S中找到f(x)的最大值或者最小值,这个称为约束优化(constrained optimization)
Karush-Kuhu-Tucker(KKT)方法是针对约束优化非常通用的解决方案,KKT方法是Lagrange乘子法(只允许等式约束)的推广


参考资料

  1. lan Goodfellow,Yoshua Bengio,Aaron Courville.深度学习(中文版).赵申剑,黎彧君,符天凡,李凯,译.北京:人民邮电出版社
  2. 郭游瑞,徐应祥,任阿娟,赵志琴.高等数学简明教程.上海:复旦大学出版社

相关文章: