深度学习全书:公式+推导+代码+TensorFlow全程案例
上QQ阅读APP看书,第一时间看更新

2-3-1 微分

微分用于描述函数的变化率(Rate of Change),如y=2x+5,表示x每增加一单位,y会增加2。因此,变化率就等于2,也称为斜率;5为截距(Intercept),或称偏差(Bias),如图2.9所示。

图2.9 斜率与截距

我们先不管截距,只看斜率,算法为:取非常相近的两个点(距离h趋近于0),y坐标值之差(Δy)除以x坐标值之差(Δx),有

这就是微分的定义,但上述极限值(limit)不一定存在,其存在的要素如下:

(1)h为正值时的极限值等于h为负值时的极限值,亦即函数在该点时是连续的。

(2)上述极限值不等于无穷大(∞)或负无穷大(-∞)。

如图2.10所示的函数在x=5的地方是连续的,由上方(5.25)逼近,或由下方(4.75)逼近是相等的,相关彩色图形可参考02_04_微分.ipynb

图2.10 连续函数

相反地,图2.11所示函数在x=0时是不连续的,逼近x=0时有两个解。

图2.11 不连续函数

接着来看看几个应用实例。

以下程序请参考02_04_微分.ipynb。

(1)试绘制一次方函数fx)=2x+5。程序代码如下:

执行结果:如图2.12所示。

图2.12 一次方函数执行结果

由执行结果可以看出,一次方函数每一点的斜率均相同。

(2)试绘制二次方曲线fx)=−10x2 +100x+5,求最大值。程序代码如下:

执行结果:如图2.13所示。由执行结果可以得到以下结论。

图2.13 二次方曲线执行结果

①一次方函数整条在线的每一个点的斜率都相同,但是二次方曲线上的每一个点的斜率就都不一样了,如图2.13所示,相关彩色图形可参考02_04_微分.ipynb

● 绿线(细拋物线):二次曲线,是一条对称的拋物线。

● 紫线(斜线):拋物线的一阶导数。

● 红线(拋物线的切线):三个点(2, 5, 8)的斜率。

②每一个点的斜率即该点与二次曲线的切线(红线),均不相同,斜率值可通过微分求得一阶导数(图中的斜线),随着x变大,斜率越来越小,二次曲线的最大值就发生在斜率等于0的地方,当x=5时,fx)=255。

(3)试绘制二次方曲线fx)=x2+2x+7,求最小值。程序代码如下:

执行结果:如图2.14所示。

图2.14 二次方曲线执行结果

由执行结果可得:斜率值可通过微分求得一阶导数(图中的斜线),随着x变大,斜率越来越大,二次曲线的最小值就发生在斜率等于0的地方,当x=-1时,fx)=6。

综合范例(2)(3),可以得知微分两次的二阶导数(f"(x))为常数,且为正值时,函数有最小值,反之,为负值时,函数有最大值。但若fx)为三次方(以上)的函数,一阶导数等于0的点,可能只是区域的最佳解(Local Minimum/Maximum),而不是全局最佳解(Global Minimum/Maximum)。

(4)试绘制三次方曲线fx)= x3−2x+100,求最小值。程序代码如下:

执行结果:如图2.15所示。由执行结果可以得到以下结论。

图2.15 三次方曲线执行结果

①三次方曲线fx)= x3−2x+100在斜率等于0的点只是区域的最佳解。

②三次方曲线一般为凸函数时才有全局最佳解。