
数学基础
更新: 2025/2/24 字数: 0 字 时长: 0 分钟
在计算机科学中,尤其是涉及算法、人工智能、深度学习等领域,背后都有深厚的数学基础,需要一定的数学背景知识来理解其原理和算法。所以在学习深度学习之前,复习数学知识是非常有益的。
量的部分
常量变量
- 常量:不随条件变化的量。在数学、物理等领域,常量的值在整个过程中不会变化。例如,数学中的圆周率 始终为 ,物理学中的真空光速和重力加速度也是典型的常量。在计算机编程中,常量指程序运行时不会被修改的量。
- 变量:随条件变化的量。根据其性质,变量分为自变量、因变量。
- 自变量:研究者可以主动操控和改变的量,用于观察它对其他变量的影响。例如,实验中改变药物的剂量,剂量就是自变量。
- 因变量:受自变量影响而变化的量。通过观察因变量的变化来评估自变量的效果。例如,观察药物剂量对康复时间的影响,康复时间就是因变量。
提醒
在科学实验中,研究者通常通过操控自变量来观察其对因变量的影响,从而得出结论。
圆的面积
为直观说明常量和变量的区别,以圆的面积计算公式为例:
- 代表圆周率,其值恒定为 ,因此它是常量。
- 代表圆的半径,其值由计算者决定,因此它是自变量。
- 代表圆的面积,其值受到 和 共同影响,因此它是因变量。
函数部分
函数是数学中描述变量之间关系的一个基本概念。简单来说,函数是将每一个输入值与唯一一个输出值相关联的规则或关系。形式上,一个函数 可以表示为:
- 是自变量(输入值)。
- 是因变量(输出值)。
- 是函数,它将每个 值映射到一个唯一的 值。
自变量个数
根据自变量的个数,函数可以分为一元函数和多元函数。
- 一元函数(Unary Function)是只包含一个自变量的函数。在表示一元函数时,一般会写成 、、 等形式,其中 、、 表示了自变量与函数值的对应关系。
- 多元函数(Multivariate Function)是指包含多个自变量的函数。在表示多元函数时,一般会使用 、 等等形式表示多元函数,例如 是一个二元函数, 是一个三元函数。
自变量关系
根据自变量和因变量的关系,函数可以分为线性函数和非线性函数。
- 线性函数(Linear Function)是指函数图像为一条直线的函数,其通常为 形式的函数,其中 和 是常数,并且 不等于零。线性函数具有以下特性:
- 比例性质:如果你将 放大 倍,那么 也会放大 倍。这是因为线性函数的图像是一条直线,直线上的点在平移和缩放时保持直线性。
- 加法性质:。这表示函数值在两个输入的和上具有可加性。
- 非线性函数(Nonlinear Function)是指不满足线性函数定义的函数。它们的图像不是一条直线。非线性函数可以具有各种形状,包括曲线、波浪形等。一般而言,任何不符合 形式的函数都被认为是非线性函数。非线性函数可能具有以下特性:
- 曲率:非线性函数的图像通常有曲率,而线性函数的图像总是直线。
- 不可加性:在一般情况下,非线性函数不满足 。
- 复杂性:非线性函数的图像可能表现出更复杂的行为,如周期性、振荡等。
建议
在机器学习和深度学习中,非线性函数常常用于神经网络的激活函数,以增加网络的表示能力,使其能够学习更复杂的模式和关系。典型的激活函数如 ReLU(Rectified Linear Unit)就是一种非线性函数。
极限部分
极限是数学中用来描述一个量在不断变化时,接近某个固定值(极限值)的过程。简单来说,极限表示一个变量在某种条件下趋近于某个值的趋势,即使它可能永远不会真正等于这个固定值(极限值)。
案例说明
举一个案例来说明极限,看下面一个数列:在这个数列中,从左至右每一项的分母都相比前一项的分母增加了 ,直到第 项的 。
小学学过分数的我们都知道,在分子和分母都为正数时,在分子不变的情况下,分母的数值越大,整体的值就越小。这也就意味着,当 越大时, 就越趋近于 ,因此我们可以写出如下等式( 为常数):
按照上面的定义也可以反向使用,在分子和分母都为正数时,在分子不变的情况下,分母的数值越小,整体的值就越大。这也就意味着,当 越小时, 就越趋近于 ,因此我们可以写出如下等式( 为常数):
极限求解
理解了上面的两个案例后,我们看看下面两个例子如何极限求解。
- 类型的案例,解法如下:
- 类型的案例,解法如下:
导数部分
导数是函数关于自变量的变化率的一种数学表示。它描述了函数在某一点附近的瞬时变化率,即当自变量发生微小变化时,函数值的变化速度。
导函数
导函数,也就是函数的导数,是描述函数变化率的函数。如果给定一个函数 ,它的导数 表示的就是 在 处的瞬时变化率,即函数在该点的斜率。导函数的公式如下( 是自变量 的一个非常小的增量):
定义一个函数 ,现求其导数 ,将其带入到导函数公式中,推导过程如下:
通过推算得知,函数 的导数是 ,这意味着函数 在 处的瞬时变化率为 。假设 ,那么函数 在此处的瞬时变化率就是 。如果此时 增加一个非常小的量,例如 从 增加到 ,那么 大约会增加呢?我们可以用一个近似公式表示这个变化( 是函数值的增量),推导过程如下:
通过推算得知,当 有一个非常小的增量 时,函数 的值大约会增加 这么多,所以当 从 增加到 时, 大约会增加 。总而言之,通过 公式,我们可以估算出当 增加一个非常小的量时,函数值会发生多少变化,虽然这是一个近似值,但导数给了我们一个很好的预估。
偏导数
偏导数中的“偏”,是指仅观察一个变量的改变,对整体结果的影响。在多元函数中包含了多个自变量,多元函数关于某个自变量的变化率,就是多元函数对这个自变量的偏导数。例如,多元函数 关于自变量 的变化率就是 对 的偏导数 , 同理多元函数 关于自变量 的变化率就是 对 的偏导数 。在计算某个函数关于某个变量的偏导数时,那么就只关注这个变量,将其他变量看做是常数即可。计算推导过程如下:
了解了上面的推导过程,我们再来计算一个复杂点的二元函数 关于 的偏导数 ,在推导过程中需要将 看作常数,对各项中的 求导,步骤如下:
同理,计算二元函数 关于 的偏导数 ,在推导过程中需要将 看作常数,对各项中的 求导,步骤如下:
计算部分
在深度学习的模型训练过程中,我们会使用一个函数来描述模型预测值与实际值之间的差距,这函数被称之为“代价函数”。代价函数通常是一个多元函数,它以模型参数(自变量)为输入,通过调整这些参数以不断逼近函数最小值为模型的优化方向。所以深度学习模型优化的核心目标,就是要计算使代价函数取得最小值时的模型参数(自变量)的取值。
极值最值
在数学中函数的“极值”和“最值”是两个不同概念,它们的区别如下:
- 极值:指的是在某一点附近的局部最大或最小值,强调的是函数在某一点附近的局部概念。
- 最值:指的是在整个定义域或特定区间上的最大或最小值,强调的是函数在给定区间的整体概念。
简而言之,极值关注的是函数在某一点的变化趋势,而最值关注的是函数在整个区间或定义域上的整体表现。
最值难点
虽然我们的最终目标是找到使代价函数取得最小值时的模型参数(自变量)的取值,但在深度学习中,我们通常不直接计算代价函数的全局最值点,而是寻找其极值点(特别是最小值点),这主要是由于以下两点原因:
- 复杂性与不可知性:深度学习模型通常包含大量的参数,因此其代价函数通常也是一个高维的、非凸的多元函数,这意味着在高维空间中,它的形状可能包含许多峰谷、鞍点以及平坦区域,具有多个局部极小值和局部极大值。因此,直接找到全局最小值(即最值点)是非常困难的,甚至可能是不可行的。
- 局部极值的可行性:由于深度学习模型的代价函数通常很复杂,所以我们往往只能通过优化算法(如梯度下降)找到局部极小值,而且在大多数情况下,找到的局部极小值已经能够很好地优化模型,尤其是在模型表现与训练数据的实际情况比较贴近时。实践中,局部极小值也可以为模型提供足够好的泛化性能,模型也可能在测试集上表现良好,所以全局最小值并非总是必要。
综上所述,虽然我们希望能直接计算出代价函数的全局最值点,但由于代价函数的复杂性和非凸性,直接找到全局最值点在实践中很难实现。所以在实际的深度学习中,我们会使用优化算法来找到代价函数的极值点(局部极小值),这通常也能达到足够好的模型优化效果。
必要条件
到这里我们就能明白模型优化过程,其实就是在代价函数的参数空间中寻找使函数值最小的点,即求解多元函数的极小值问题。在求解函数的极值点前,我们需要记住极值点的必要条件,也就是极值点一定会满足的条件,但满足该条件的点就不一定是极值点了。
设函数 在 处有极值,如果函数在 处有偏导数,那么该点的偏导数一定为 。
基于这个情况,我们令函数 所有的一阶偏导数同时为 ,这时可以求出具体的点 ,这个点被称为“驻点”。
函数的极值点一定是驻点,但驻点不一定是极值点,因此驻点是极值点的必要不充分条件。为了求出函数极值点,需要先求出函数的驻点。
例如,点 是函数 的驻点,但是从图中观察到,点 并不是函数的极值点。
充分条件
如果要准确的判断一个驻点是极值点,还需要依赖多元函数极值的充分条件。当通过多元函数求极值的必要条件,求出函数的全部驻点后,再使用充分条件,从驻点中筛选出极值点。设函数 在点 的某邻域内连续,并且有连续的一阶和二阶偏导数。 对 的一阶偏导数是 ,对 的一阶偏导数是 ,联立方程求出所有驻点:
接着计算 的二阶偏导数,也就是 对 继续求导得到 , 对 继续求导得到 , 对 继续求导得到 ,将这三个二阶偏导数求出后将 的值分别代入其中,可以得到 、、 三个值:
然后需要判断 、、 的大小关系,这里可能会出现如下三种情况(需要牢记):
求解极值
学习了求解函数的极值点的必要条件和充分条件,最后我们求二元函数 的极值点,步骤如下:
- 求所有驻点:求函数 关于 和 的偏导数,令它们同时等于 ,解方程求出所有驻点,这里我们可以求出 4 个驻点。
- 带入二阶偏导:计算 的二阶偏导数,将这 4 个驻点带入到 3 个二阶偏导数中,可以求出 4 组 、、 的值。
- 判断是否是极值点:最后判断 4 组 、、 的大小关系,依据情况判断 是极小值点, 是极大值点。
建议
需要说明的是,我们可以将二元函数求极值,推广到三元函数到 N 元函数求极值,计算方法是一样的,都需要先求出驻点,再判断驻点是否是极值点。