一、导数和高阶导数

1.导数的意义

导数:用来衡量函数的变化程度。
导数和函数的单调性密切相关。
二阶导数决定了函数的凸凹性(二阶导数大于0,为凸函数;二阶导数小于0,为凹函数)。
可导:如果函数值变化量与自变量变化量比值的极限存在,则函数在某点可导。
驻点:导数等于0的点称为函数的驻点。
拐点:二阶导数为0的点称为函数的拐点。

2.导数公式

image.png

3.导数存在的前提

导数存在,要求函数连续,例如:y=3x;
但函数连续时,导数不一定存在,一般当某点的左导数≠右导数时,该点上的导数不存在。
例如:y=3|x|

4.工程上的应用

机器学习中,函数一般都是连续的。对于导数不存在的情况,一般采取如下处理方式:

  • 随机选取左导数、右导数;
  • 取左、右导数的平均值


二、极值和最值

1.数学知识

函数不一定有最大值或最小值,例如:逻辑回归的函数。
极大值、极小值的导数都为0。
最大值不一定是极大值;
极小值不一定比极大值小。

极值的判别

极大值:左边导数为正数,右边导数为负数。
极小值:左边导数为负数,右边导数为正数。
一元函数的极值判别法:
在驻点处,如果二阶导数>0,则为函数的极小值点;二阶导数<0,则为极大值点;二阶导数=0,情况不定。

2.工程上的应用

最小值vs极小值

机器学习中,Loss损失函数,理想情况下,是找到最小值;但参数w取值范围无穷,实际无法得知最小值是否存在,也无法求得最小值。
退一步,可以求得极小值,例如:使用GD梯度下降法,当导数=0时,参数不再更新。
也可能找不到极小值,
退一步,可以找到一个相对小的值,例如:随着参数变化,Loss无限趋近于0,导数始终不为0,此时可以取一个相对小的值,因为此时追求极小值没有太大的意义。
【结论】机器学习和人工智能上的数学问题是相对粗糙的,并不像数学学科本身那样严谨。

局部极小值

GD中,也可能找到的是局部极小值。
解决:梯度下降的出发点很重要,多次随机初始化出发点,可以改善局部极小的问题。
神经网络中,陷入局部极小的概率较小,因为:
主流神经网络经过工程考验,即便有多个局部极小值,相互差异也不大,都比较小;
特征项往往是高维的,陷入局部极小的概率较低。