2.3 高等数学
看到这节,你可能会问:搞AI算法还需要学习高等数学?大家知道,高等数学涵盖的知识点比较多,并且比较难以理解。别担心,本书只讲解高等数学中与AI算法最相关的两个知识点——导数和梯度。这两个知识点在AI算法的公式推导中至关重要,有助于帮助我们理解算法模型在实际应用中起作用的原因。
2.3.1 导数
简单地说,导数主要用于描述函数图像中某一点切线的倾斜程度,这个倾斜程度又称为斜率。所谓连续函数,就是函数图像随着x值的连续变化,y值的变化也是连续的。连续函数不一定处处可导,可导函数的图像一定是处处连续的。
三角函数处处连续,同时处处可导。以正弦函数y=sin x为例,函数图像上的每个点都是光滑的,可以计算函数图像在该点处的切线斜率,如图2-1所示。
图2-1 正弦函数y=sin x的图像
如图2-2所示,用线性绝对值函数y=|x|作为对比,可以看到该函数图像同样处处连续。但是,在坐标为(0, 0)的点的位置虽然连续,却无法计算出切线的斜率,因此该函数是不可导的。
图2-2 线性绝对值函数y=|x|的图像
在中学数学中,通常使用极限求解导数。在AI算法中不用那么复杂,只需掌握以下两点。第一,弄清楚导数的意义。导数是函数切线的斜率,因此可以用于表示函数值变化的快慢和趋势。例如,朝着变大的方向还是变小的方向,变大变小的速度如何,等等。第二,记住AI算法中常用的几个求导公式及导数的运算法则。下面介绍AI算法中常用的几个求导公式。
常数求导公式如下。
(C)'=0
幂函数的求导公式如下。
指数函数求导公式如下。
对数函数求导公式如下。
自然对数函数求导公式如下。
现有函数u和函数v,函数四则运算的求导法则如下。
函数加减法的求导法则如下。
函数乘法的求导法则如下。
函数除法的求导法则如下。
此外,在使用神经网络的AI算法中,神经元的层数一般不止一层,相邻层的输出是下一层的输入,即一个函数的因变量是另一个函数的自变量,在求导过程中会用到一种称为链式法则的复合函数求导方法。复合函数f(x)=g[h(x)]的链式法则如下。
f'(x)=g'[h(x)]h'(x)
此外,AI算法中的特征维数通常不止一维,即多维自变量。包含多维自变量的函数称为多维函数,多维函数的导数称为偏导数。偏导数的求法很简单,在对多维函数中的某一维变量求导时,将其他维变量视为常量即可。
2.3.2 梯度
函数的导数值又称为梯度,梯度是带有方向的,多维自变量所在的每个维度均代表一个方向。在AI算法中,特征数据通常是多维的,每个维度都有一个梯度,不同维度上的自变量对应的偏导数大小不一样,梯度的大小也就不一样。在算法训练过程中常说的某个特征学得快一点,就是因为这个特征在维度方向上的梯度较大。梯度传递是算法训练过程中的一个重点,其中的梯度消失和梯度爆炸问题会严重影响模型的最终效果,这部分内容将在第4章详细讲解。