拉格朗日乘子法:支持向量机理论(第二部分:不可分离情况)
本教程是拉格朗日乘子法:支持向量机理论(第一部分:可分离情况))的扩展,讲解了不可分离情况。在实际问题中,正负训练样本可能无法完全通过线性决策边界分开。本教程解释了如何构建容忍一定错误的软间隔。
在本教程中,我们将介绍线性 SVM 的基础知识。我们不会深入探讨使用核技巧推导出的非线性 SVM。内容足以理解 SVM 分类器背后的基本数学模型。
完成本教程后,你将知道:
-
软间隔的概念
-
如何在允许分类错误的情况下最大化间隔
-
如何制定优化问题并计算拉格朗日对偶
让我们开始吧。
拉格朗日乘子法:支持向量机理论(第二部分:不可分离情况)。
摄影师:Shakeel Ahmad,保留所有权利。
教程概述
本教程分为两部分;它们是:
-
SVM 问题在正负样本不可线性分离的情况下的解决方案
-
分离超平面及其对应的放松约束
-
寻找软间隔的二次优化问题
-
-
一个实例
先决条件
本教程假设你已经熟悉以下主题。你可以点击各个链接以获取更多信息。
本教程中使用的符号
这是第一部分的续集,因此将使用相同的符号。
-
m m m: 总训练点数
-
x x x: 数据点,是一个 n n n维向量。每个维度由 j j j索引。
-
x + x^+ x+: 正例
-
x − x^- x−: 负例
-
i i i: 用于索引训练点的下标。 0 ≤ i < m 0 \leq i < m 0≤i<m
-
j j j: 用于索引数据点维度的下标。 1 ≤ j ≤ n 1 \leq j \leq n 1≤j≤n
-
t t t: 数据点的标签。它是 m m m维向量
-
T T T: 转置操作符
-
w w w: 权重向量,表示超平面的系数。它是 n n n维向量
-
α \alpha α: 拉格朗日乘子向量,是 m m m维向量
-
μ \mu μ: 拉格朗日乘子向量,同样是 m m m维向量
-
ξ \xi ξ: 分类中的错误。一个 m m m维向量
想要开始学习机器学习中的微积分吗?
现在获取我的 7 天免费邮件速成课程(包含示例代码)。
点击注册,还可以获得课程的免费 PDF 电子书版本。
分隔超平面与放宽约束
让我们找出正例和负例之间的分隔超平面。回顾一下,分隔超平面由以下表达式给出,其中 w j w_j wj为系数, w 0 w_0 w0为任意常数,决定了超平面距离原点的距离:
$$
w^T x_i + w_0 = 0
$$
由于我们允许正例和负例位于超平面的错误侧面,我们有了一组放宽的约束。对于正例,我们定义 ξ i ≥ 0 , ∀ i \xi_i \geq 0, \forall i ξi≥0,∀i。
$$
w^T x_i^+ + w_0 \geq 1 – \xi_i
$$
对于负例,我们也要求:
$$
w^T x_i^- + w_0 \leq -1 + \xi_i
$$
通过使用类标签 t i ∈ { − 1 , + 1 } t_i \in \{-1,+1\} ti∈{−1,+1}结合上述两个约束,我们得到所有点的以下约束:
$$
$t_i(w^T x_i + w_0) \geq 1 – \xi_i
$$
变量 ξ \xi ξ为我们的模型提供了更多的灵活性。它有以下解释:
-
ξ i = 0 \xi_i =0 ξi=0: 这意味着 x i x_i xi被正确分类,这个数据点在超平面的正确侧面并远离边距。
-
0 < ξ i < 1 0 < \xi_i < 1 0<ξi<1: 当满足此条件时, x i x_i xi 位于超平面的正确侧面但在边距内。
-
ξ i > 0 \xi_i > 0 ξi>0: 满足此条件意味着 x i x_i xi被错误分类。
因此, ξ \xi ξ量化了训练点分类中的错误。我们可以定义软错误为:
$$
E_{soft} = \sum_i \xi_i
$$
二次规划问题
我们现在可以制定目标函数以及其约束。我们仍然想要最大化边距,即我们希望最小化权重向量的范数。同时,我们还希望将软错误保持在尽可能小的范围内。因此,我们的新目标函数由以下表达式给出,其中 C C C是用户定义的常数,代表惩罚因子或正则化常数。
$$
\frac{1}{2}||w||² + C \sum_i \xi_i
$$
因此,总的二次规划问题由以下表达式给出:
$$
\min_w \frac{1}{2}||w||² + C \sum_i \xi_i ;\text{ 使得 } t_i(w^Tx_i+w_0) \geq +1 – \xi_i, \forall i ; \text{ 以及 } \xi_i \geq 0, \forall i
$$
C 的角色,正则化常数
要理解惩罚因子 C C C,考虑要最小化的乘积项 C ∑ i ξ i C \sum_i \xi_i C∑iξi。如果 C C C 较大,那么软间隔 ∑ i ξ i \sum_i \xi_i ∑iξi 就会自动较小。如果 C C C 接近零,则允许软间隔变大,从而使整体乘积变小。
简而言之, C C C 值较大意味着我们对错误有很高的惩罚,因此我们的模型不能犯太多错误。 C C C 值较小则允许错误增加。
拉格朗日乘数法解法
让我们使用拉格朗日乘数法来解决我们之前制定的二次规划问题。拉格朗日函数如下所示:
$$
L(w, w_0, \alpha, \mu) = \frac{1}{2}||w||² + \sum_i \alpha_i\big(t_i(w^Tx_i+w_0) – 1 + \xi_i\big) – \sum_i \mu_i \xi_i
$$
要解决上述问题,我们设定以下内容:
\begin{equation}
\frac{\partial L}{ \partial w} = 0, \
\frac{\partial L}{ \partial \alpha} = 0, \
\frac{\partial L}{ \partial w_0} = 0, \
\frac{\partial L}{ \partial \mu} = 0 \
\end{equation}
解上述方程给出:
$$
w = \sum_i \alpha_i t_i x_i
$$
和
$$
0= C – \alpha_i – \mu_i
$$
将以上内容代入拉格朗日函数给出以下优化问题,也称为对偶问题:
$$
L_d = -\frac{1}{2} \sum_i \sum_k \alpha_i \alpha_k t_i t_k (x_i)^T (x_k) + \sum_i \alpha_i
$$
我们需要在以下约束条件下进行最大化:
\begin{equation}
\sum_i \alpha_i t_i = 0 \ \text{ 并且 }
0 \leq \alpha_i \leq C, \forall i
\end{equation}
类似于可分离情况,我们可以用拉格朗日乘数表示 w w w。目标函数中没有 w w w 项。每个数据点都有一个与之相关的拉格朗日乘数 α \alpha α 和 μ \mu μ。
数学模型的解释和 w 0 w_0 w0 的计算
每个训练数据点 x i x_i xi 都满足以下情况:
-
α i = 0 \alpha_i = 0 αi=0: 第 i 个训练点位于超平面的正确一侧,远离边界。该点在测试点的分类中不起作用。
-
0 < α i < C 0 < \alpha_i < C 0<αi<C: 第 i 个训练点是支持向量,位于边界上。对于此点 ξ i = 0 \xi_i = 0 ξi=0,且 t i ( w T x i + w 0 ) = 1 t_i(w^T x_i + w_0) = 1 ti(wTxi+w0)=1,因此可以用于计算 w 0 w_0 w0。实际上, w 0 w_0 w0 是从所有支持向量计算出来并取平均值。
-
α i = C \alpha_i = C αi=C: 第 i 个训练点要么位于超平面内边界的正确一侧,要么位于超平面错误的一侧。
下图将帮助您理解以上概念:
决定测试点的分类
任何测试点 x x x的分类可以使用以下表达式来确定:
$$
y(x) = \sum_i \alpha_i t_i x^T x_i + w_0
$$
y ( x ) y(x) y(x)的正值表示 x ∈ + 1 x\in+1 x∈+1,负值表示 x ∈ − 1 x\in-1 x∈−1。因此,测试点的预测类别是 y ( x ) y(x) y(x)的符号。
Karush-Kuhn-Tucker 条件
上述受限优化问题满足 Karush-Kuhn-Tucker(KKT)条件,如下所示:
\begin{eqnarray}
\alpha_i &\geq& 0 \
t_i y(x_i) -1 + \xi_i &\geq& 0 \
\alpha_i(t_i y(x_i) -1 + \xi_i) &=& 0 \
\mu_i \geq 0 \
\xi_i \geq 0 \
\mu_i\xi_i = 0
\end{eqnarray}
一个已解决的例子
上图展示了一个为二维训练点解决的例子,以阐明所有概念。需要注意该解决方案的一些事项如下:
-
训练数据点及其对应的标签作为输入。
-
用户定义的常量 C C C被设置为 10。
-
该解决方案满足所有约束条件,然而,它不是最优解决方案。
-
我们必须确保所有的 α \alpha α介于 0 和 C 之间。
-
所有负例的 alpha 之和应等于所有正例的 alpha 之和。
-
点(1,2)、(2,1)和(-2,-2)位于软间隔的超平面正确侧。它们的值被任意设置为 3、3 和 6,以平衡问题并满足约束条件。
-
α = C = 10 \alpha=C=10 α=C=10的点位于间隔内或在超平面的错误侧。
进一步阅读
如果你希望深入了解此主题,本节提供了更多资源。
图书
- 模式识别与机器学习 由 Christopher M. Bishop 编写。
文章
-
关于模式识别的支持向量机教程 由 Christopher J.C. Burges 编写。
总结
在本教程中,你了解了使用拉格朗日乘子法找到 SVM 分类器中软间隔的方法。
具体来说,你学到了:
-
如何为不可分情况制定优化问题。
-
如何使用拉格朗日乘子法找到超平面和软间隔。
-
如何找到非常简单问题的分隔超平面方程。
对于这篇文章中讨论的 SVM,你有任何问题吗?请在下方评论中提出你的问题,我会尽力回答。
《优化 / 数学编程的温和介绍》
machinelearningmastery.com/a-gentle-introduction-to-optimization-mathematical-programming/
无论是监督学习问题还是无监督学习问题,都将有一些优化算法在后台工作。几乎任何分类、回归或聚类问题都可以转化为优化问题。
在本教程中,你将发现什么是优化及其相关概念。
完成本教程后,你将会了解:
-
什么是数学编程或优化
-
最大化问题与最小化问题的区别
-
局部最优解与全局最优解的区别
-
有约束与无约束优化的区别
-
线性编程与非线性编程的区别
-
优化的实例
让我们开始吧。
一个温和的优化介绍。照片由 Mehtab Farooq 提供,保留部分权利。
教程概述
本教程分为两个部分,它们是:
-
与优化相关的各种入门主题
-
有约束与无约束优化
-
等式约束与不等式约束
-
可行区域
-
-
机器学习中的优化实例
什么是优化或数学编程?
在微积分和数学中,优化问题也称为数学编程。用简单的话描述,就是我们可以找到一个元素、变量或数量,使其最符合一组给定的标准或约束。
最大化与最小化问题
优化问题最简单的情况是标量函数的最小化或最大化。如果我们有一个一个或多个变量的标量函数 f(x_1, x_2, … x_n),那么以下就是一个优化问题:
找到 x_1, x_2, …, x_n 使得 f(x) 最小
或者我们可以有一个等效的最大化问题。
当我们定义量化错误或惩罚的函数时,我们应用的是最小化问题。另一方面,如果一个学习算法构建了一个建模方法准确性的函数,我们将最大化这个函数。
许多自动化的软件工具用于优化,通常实现的是最大化问题或最小化任务,但不是两者兼备。因此,我们可以通过在 f(x) 上添加负号将最大化问题转换为最小化问题(反之亦然),即,
最大化 f(x) 相对于 x 等效于 最小化 -f(x) 相对于 x
由于这两个问题是等效的,我们将在本教程的剩余部分只讨论最小化或最大化问题。相同的规则和定义适用于其等效问题。
想要开始学习机器学习的微积分吗?
立即领取我的免费 7 天邮件速成课程(附示例代码)。
点击注册,还可以获得该课程的免费 PDF 电子书版本。
全局最优点与局部最优点
在机器学习中,我们经常遇到具有复杂景观的高度非线性函数。可能存在一个点,在该点周围的一个小区域内函数具有最低值。这种点称为局部最小点。
这与全局最小点相对,全局最小点是函数在整个域上的最小值。下图展示了局部和全局最大点。
局部和全局最大点
无约束与有约束优化
在机器学习中,有很多问题,我们关注的是在没有任何约束或限制的空间区域中寻找全局最优点。这类问题称为无约束优化问题。
有时我们必须在某些约束条件下解决优化问题。这类优化问题称为有约束优化问题。例如:
最小化 x² + y² 使得 x + y <= 1
受约束优化的例子有:
-
寻找一个函数的最小值,当域内的变量和必须为 1 时
-
寻找一个函数的最小值,使得某些向量彼此正交
-
寻找一个函数的最小值,使得某些域变量位于特定范围内。
可行区域
空间中所有满足问题约束的点组成了可行区域。优化算法在可行区域中搜索最优点。两种约束的可行区域在下一节的图中展示。
对于一个无约束优化问题,函数的整个域都是可行区域。
等式约束与不等式约束
优化问题中施加的约束可以是等式约束或不等式约束。下图展示了这两种约束。
等式约束与不等式约束
线性与非线性规划
一个函数为线性且所有等式或不等式约束也是线性约束的问题称为线性规划问题。
如果目标函数是非线性的或一个或多个约束是非线性的,那么我们就遇到了非线性规划问题。
要直观理解线性和非线性函数之间的区别,可以查看下面的图。
线性与非线性函数
机器学习中的优化示例
以下列出了一些著名的机器学习算法,这些算法都使用了优化。你应记住,几乎所有的机器学习算法都涉及某种形式的优化。
-
神经网络中的梯度下降(无约束优化)。
-
支持向量机中的拉格朗日乘子法(有约束优化)。
-
主成分分析(有约束优化)
-
通过期望最大化算法进行聚类(有约束优化)
-
逻辑回归(无约束优化)
-
遗传算法在进化学习算法中的应用(存在不同变体用于解决有约束和无约束的优化问题)。
扩展
本节列出了一些扩展教程的想法,你可能希望探索。
-
拉格朗日乘子法
-
非线性优化技术
-
单纯形法
如果你探索了这些扩展,我很想知道。请在下方评论中分享你的发现。
进一步阅读
如果你想深入探讨这个话题,本节提供了更多资源。
教程
资源
- 关于机器学习的微积分书籍的额外资源
书籍
-
托马斯微积分,第 14 版,2017 年(基于乔治·B·托马斯的原著,乔尔·哈斯、克里斯托弗·海尔、莫里斯·韦尔修订)
-
微积分,第 3 版,2017 年(吉尔伯特·斯特朗)
-
微积分,第 8 版,2015 年(詹姆斯·斯图尔特)
总结
在本教程中,你了解了什么是数学编程或优化问题。具体来说,你学到了:
-
最大化与最小化
-
有约束与无约束优化
-
为什么优化在机器学习中很重要
你有任何问题吗?
在下方评论中提出你的问题,我会尽力回答
近似的温和介绍
原文:
machinelearningmastery.com/a-gentle-introduction-to-approximation/
当涉及到分类或回归等机器学习任务时,近似技术在从数据中学习中发挥了关键作用。许多机器学习方法通过学习算法近似输入和输出之间的函数或映射。
在本教程中,你将发现什么是近似及其在机器学习和模式识别中的重要性。
完成本教程后,你将了解:
-
什么是近似
-
近似在机器学习中的重要性
让我们开始吧。
近似的温和介绍。照片由 M Mani 提供,部分权利保留。
教程概述
本教程分为三个部分;它们是:
-
什么是近似?
-
当函数的形式未知时的近似
-
当函数的形式已知时的近似
什么是近似?
我们经常会遇到近似。例如,无理数π可以用 3.14 来近似。更准确的值是 3.141593,这仍然是一个近似值。你也可以类似地近似所有无理数的值,如 sqrt(3)、sqrt(7)等。
近似用于当数值、模型、结构或函数要么未知,要么计算困难时。在本文中,我们将重点讨论函数近似,并描述其在机器学习问题中的应用。主要有两种情况:
-
函数是已知的,但计算其精确值既困难又成本高。在这种情况下,使用近似方法来寻找接近函数实际值的值。
-
函数本身是未知的,因此使用模型或学习算法来寻找一个可以产生接近未知函数输出的函数。
函数形式已知时的近似
如果知道函数的形式,那么微积分和数学中一个广泛使用的方法是通过泰勒级数进行近似。函数的泰勒级数是无限项的和,这些项是利用函数的导数计算得出的。函数的泰勒级数展开在这个教程中进行了讨论。
另一个广泛使用的微积分和数学中的近似方法是牛顿法。它可以用来近似多项式的根,因此成为近似不同值的平方根或不同数字的倒数等量的有用技术。
想开始学习机器学习中的微积分吗?
立即参加我的免费 7 天邮件速成课程(附示例代码)。
点击注册并免费获得课程的 PDF 电子书版本。
当函数形式未知时的近似
在数据科学和机器学习中,假设存在一个基础函数,它揭示了输入和输出之间的关系。这个函数的形式未知。这里,我们讨论了几种使用近似的机器学习问题。
回归中的近似
回归涉及在给定一组输入时预测输出变量。在回归中,真正将输入变量映射到输出的函数是未知的。假设某种线性或非线性回归模型可以近似输入到输出的映射。
例如,我们可能有关于每日消耗卡路里和相应血糖的数据。为了描述卡路里输入和血糖输出之间的关系,我们可以假设一个直线关系/映射函数。因此,直线就是输入到输出映射的近似。像最小二乘法这样的学习方法被用来找到这条直线。
卡路里计数和血糖之间关系的直线近似
分类中的近似
在分类问题中,近似函数的经典模型之一是神经网络。假设神经网络整体上可以近似一个将输入映射到类别标签的真实函数。然后使用梯度下降或其他学习算法,通过调整神经网络的权重来学习这个函数的近似。
神经网络近似一个将输入映射到输出的基础函数
无监督学习中的近似
以下是一个典型的无监督学习示例。这里我们有 2D 空间中的点,且这些点的标签均未给出。聚类算法通常假设一个模型,根据该模型一个点可以被分配到一个类或标签。例如,k-means 通过假设数据簇是圆形的,从而学习数据的标签,因此将相同标签或类别分配给位于同一个圆圈或在多维数据中属于 n-球的点。在下图中,我们通过圆形函数近似点与其标签之间的关系。
一种聚类算法可以逼近一个模型,该模型确定输入点的聚类或未知标签
扩展
本节列出了一些扩展教程的想法,供你探索。
-
麦克劳林级数
-
泰勒级数
如果你探索了这些扩展内容,我很想知道。请在下面的评论中分享你的发现。
进一步阅读
本节提供了更多资源,如果你希望深入了解这个话题。
教程
资源
- Jason Brownlee 提供的有关 机器学习的微积分书籍 的优秀资源。
书籍
-
模式识别与机器学习 由 Christopher M. Bishop 编著。
-
深度学习 由 Ian Goodfellow, Joshua Begio, Aaron Courville 编著。
-
托马斯微积分,第 14 版,2017 年。(基于 George B. Thomas 的原著,由 Joel Hass、Christopher Heil、Maurice Weir 修订)
总结
在本教程中,你了解了什么是逼近。具体来说,你学到了:
-
逼近
-
当函数的形式已知时的逼近
-
当函数的形式未知时的逼近
你有任何问题吗?
在下面的评论中提问,我会尽力回答
对幂次和多项式导数的温和介绍
原文:
machinelearningmastery.com/a-gentle-introduction-to-derivatives-of-powers-and-polynomials/
在机器学习和数据科学算法中,最常用的函数之一是多项式或涉及 x 次幂的函数。因此,理解这些函数的导数如何计算是很重要的。
在本教程中,你将学习如何计算 x 的幂次和多项式的导数。
完成本教程后,你将了解:
-
计算多项式导数的通用规则
-
计算涉及任何非零实数次幂的 x 的函数导数的通用规则
让我们开始吧。
幂次和多项式的导数 图片由 Misbah Ghufran 提供,部分权利保留
教程概述
本教程分为两个部分,它们是:
-
涉及 x 的整数次幂的函数的导数
-
具有任何实数非零次幂的 x 的函数的微分
两个函数和的导数
让我们从寻找一个简单规则开始,该规则描述了两个函数之和的导数。假设我们有两个函数 f(x) 和 g(x),那么它们之和的导数可以如下计算。如果需要复习,可以参考 导数的定义。
两个函数和的导数
这里有一个通用规则,即两个函数之和的导数等于这两个函数各自导数的和。
x 的整数次幂的导数
在讨论 x 的整数次幂的导数之前,让我们复习一下二项式定理,该定理告诉我们如何展开以下表达式(其中 C(n,k) 是组合函数):
(a+b)^n = a^n + C(n,1)a^(n-1)b + C(n,2)a^(n-2)b² + … + C(n,n-1)ab^(n-1) + b^n
我们将推导出一个简单规则,用于寻找涉及 x^n 的函数的导数,其中 n 是一个整数且 n>0。让我们回到这个 教程 中讨论的导数定义,并将其应用于 kx^n,其中 k 是常数。
kx^n 的导数
以下是应用此规则的一些示例:
-
x² 的导数是 2x
-
3x⁵ 的导数是 15x⁴
-
4x⁹ 的导数是 36x⁸
如何对多项式进行微分?
这两个规则,即两个函数和的导数规则和整数次幂的导数规则,使我们能够对多项式进行求导。如果我们有一个度数为 n 的多项式,我们可以将其视为涉及不同次幂的 x 的各个函数的和。假设我们有一个度数为 n 的多项式 P(x),那么它的导数是 P’(x) 如下:
多项式的导数
这表明,多项式的导数是一个度数为 (n-1) 的多项式。
示例
下方展示了一些示例,其中多项式函数及其导数都一起绘制。蓝色曲线表示函数本身,而红色曲线表示该函数的导数。
多项式函数及其导数的示例
那么 x 的非整数次幂呢?
上述导数规则扩展到 x 的非整数实数次幂,这些次幂可以是分数、负数或无理数。通用规则如下,其中 a 和 k 可以是任何非零实数。
f(x) = kx^a
f’(x) = kax^(a-1)
一些示例如下:
-
x^(0.2) 的导数是 (0.2)x^(-0.8)
-
x^(???) 的导数是 ???x^(???-1)
-
x^(-3/4) 的导数是 (-3/4)x^(-7/4)
这里有一些示例,这些示例与其导数一起绘制。蓝色曲线表示函数本身,红色曲线表示相应的导数:
包含 x 的实数次幂的表达式的导数示例
扩展
本节列出了一些扩展教程的想法,你可能希望探索这些内容。
-
两个函数乘积导数的规则
-
有理函数导数的规则
-
积分
如果你探索了这些扩展内容,我很想知道。请在下面的评论中发布你的发现。
进一步阅读¶
本节提供了更多相关资源,如果你希望深入了解该主题。
教程
资源¶
- 机器学习的 微积分书籍 额外资源
书籍
-
托马斯微积分,第 14 版,2017 年。(基于乔治·B·托马斯的原著,由乔尔·哈斯、克里斯托弗·海尔、莫里斯·威尔修订)
-
微积分,第 3 版,2017 年。(吉尔伯特·斯特朗)
-
微积分,第 8 版,2015 年。(詹姆斯·斯图尔特)
摘要
在本教程中,你发现了如何对多项式函数和涉及非整数次幂和的函数进行微分。
具体来说,你学到了:
-
两个函数和的导数
-
常数乘以 x 的整数次幂的导数
-
多项式函数的导数
-
包含 x 的非整数次幂的表达式之和的导数
你有任何问题吗?
在下面的评论中提问,我将尽力回答。
温和地介绍如何评估极限
原文:
machinelearningmastery.com/a-gentle-introduction-to-evaluating-limits/
函数极限的概念可以追溯到古希腊学者如厄休德斯和阿基米德。虽然他们没有正式定义极限,但他们的许多计算都基于这一概念。艾萨克·牛顿正式定义了极限的概念,柯西对这一概念进行了细化。极限构成了微积分的基础,而微积分又定义了许多机器学习算法的基础。因此,理解如何评估不同类型函数的极限非常重要。
在本教程中,你将发现如何评估不同类型函数的极限。
完成本教程后,你将了解:
-
评估极限的不同规则
-
如何评估多项式和有理函数的极限
-
如何评估带有间断的函数的极限
-
三明治定理
让我们开始吧。
温和地介绍极限和连续性 由 Mehreen Saeed 拍摄,保留部分权利。
教程概述
本教程分为 3 部分;它们是:
-
极限规则
-
使用极限规则评估极限的示例
-
多项式的极限
-
有理表达式的极限
-
-
带有间断的函数的极限
-
三明治定理
极限的规则
如果我们知道一些简单的原则,极限是容易评估的,以下列出了这些原则。所有这些规则都基于两个函数 f(x)和 g(x)的已知极限,当 x 接近点 k 时:
评估极限的规则
使用规则评估极限的示例
使用简单规则评估极限的示例
这里有几个使用基本规则评估极限的示例。注意,这些规则适用于在 x 接近某一点时定义的函数。
多项式的极限
示例 1 和 2 是多项式的情况。根据极限规则,我们可以看到对于任何多项式,当 x 接近点 k 时,多项式的极限等于多项式在 k 处的值。可以写成:
因此,我们可以通过直接替代来评估多项式的极限,例如。
lim(x→1) x⁴+3x³+2 = 1⁴+3(1)³+2 = 6
有理函数的极限
对于涉及分数的有理函数,有两种情况。一种情况是在 x 接近某一点且函数在该点定义的情况下评估极限。另一种情况涉及在 x 接近某一点且函数在该点处未定义时计算极限。
情况 1:函数已定义
类似于多项式的情况,每当我们有一个函数,即形式为 f(x)/g(x)的有理表达式且分母在某一点不为零时,则:
lim(x→k) f(x)/g(x) = f(k)/g(k) if g(k)≠0
因此,我们可以通过直接代入来评估这个极限。例如:
lim(x→0)(x²+1)/(x-1) = -1
在这里,我们可以应用商规则,或者更简单地,替换 x=0 来评估极限。然而,当 x 接近 1 时,这个函数没有极限。请看下图中的第一个图表。
情况 2:函数未定义
让我们看另一个例子:
lim(x→2)(x²-4)/(x-2)
在 x=2 时,我们面临一个问题。分母为零,因此在 x=2 处函数未定义。我们可以从图表中看出,这个函数和(x+2)是相同的,除了在点 x=2 处有一个孔。在这种情况下,我们可以取消公共因子,仍然评估(x→2)的极限如下:
lim(x→2)(x²-4)/(x-2) = lim(x→2)(x-2)(x+2)/(x-2) = lim(x→2)(x+2) = 4
以下图像展示了上述两个例子以及另一个类似的 g_3(x)的第三个例子:
有理函数计算极限的例子
函数有不连续点的情况
假设我们有一个函数 h(x),它在所有实数上都有定义:
h(x) = (x²+x)/x,如果 x≠0
h(x) = 0,如果 x=0
函数 g(x)在 x=0 处有不连续点,如下图所示。当评估 lim(x→0)h(x)时,我们必须看到当 x 接近 0 时 h(x)的变化(而不是 x=0 时)。当我们从两侧接近 x=0 时,h(x)接近 1,因此 lim(x→0)h(x)=1。
在下图中显示的函数 m(x)是另一个有趣的案例。该函数在所有实数上都有定义,但当 x→0 时,极限不存在。
在存在不连续性时评估极限
夹逼定理
这个定理也称为夹逼定理或者夹紧定理。它陈述了以下情况为真时:
-
x 接近 k
-
f(x) <= g(x) <= h(x)
-
lim(x→k)f(x) = lim(x→k)h(x) = L
那么,在 x→k 时,函数 g(x)的极限如下:
lim(x→k)g(x) = L
夹逼定理
这个定理在下图中有所说明:
利用这个定理,我们可以评估许多复杂函数的极限。一个众所周知的例子涉及正弦函数:
lim(x→0)x²sin(1/x)
使用夹逼定理计算极限
我们知道 sin(x)总是交替在-1 和+1 之间。利用这一事实,我们可以如下解决这个极限:
扩展内容
本节列出了一些你可能希望探讨的扩展教程的想法。
-
洛必达法则与不确定型(需要函数导数)
-
函数导数在函数极限中的定义
-
函数积分
如果你探讨了这些扩展内容,我很乐意知道。请在下面的评论中发布你的发现。
进一步阅读
学习和理解数学的最佳方式是通过练习和解决更多的问题。本节提供了更多资源,如果你希望深入学习这个主题。
教程
-
关于极限与连续性的教程
-
关于机器学习的微积分书籍的额外资源
书籍
-
托马斯微积分,第 14 版,2017 年。(基于 George B. Thomas 的原著,由 Joel Hass, Christopher Heil, Maurice Weir 修订)
-
微积分,第 3 版,2017 年。(Gilbert Strang)
-
微积分,第 8 版,2015 年。(James Stewart)
总结
在本教程中,你了解到如何评估不同类型函数的极限。
具体来说,你学到了:
-
不同函数极限的评估规则。
-
多项式和有理函数的极限评估
-
函数中存在不连续性时的极限评估
你有任何问题吗?请在下面的评论中提问,我会尽力回答。享受微积分吧!
函数导数的温和介绍
原文:
machinelearningmastery.com/a-gentle-introduction-to-function-derivatives/
导数的概念是微积分许多主题的基础。它对理解积分、梯度、Hessian 矩阵等非常重要。
在本教程中,您将发现导数的定义、符号以及如何根据此定义计算导数。您还将发现为什么函数的导数本身也是一个函数。
完成本教程后,您将了解:
-
函数的导数定义
-
如何根据定义计算函数的导数
-
为什么有些函数在某点没有导数
让我们开始吧。
函数导数的温和介绍 由 Mehreen Saeed 拍摄,保留部分权利
教程概览
本教程分为三个部分;它们是:
-
函数导数的定义和符号
-
如何根据定义计算函数的导数
-
为什么有些函数在某点没有导数
函数的导数是什么
用非常简单的语言来说,函数 f(x) 的导数表示其变化率,通常用 f’(x) 或 df/dx 表示。我们首先来看它的定义和导数的图示。
函数导数定义的图示
在图中,Δx 表示 x 值的变化。我们不断缩小 x 和 (x+Δx) 之间的间隔,直到它变得微小。因此,我们有极限 (Δ???→0)。分子 f(x+Δx)-f(x) 表示函数 f 在 Δx 间隔内的变化量。这使得函数 f 在某点 x 的导数,即 f 在该点的变化率。
需要注意的一个重要点是 Δx,即 x 的变化量,可以是负值或正值。因此:
0<|Δx|< ???,
其中 ??? 是一个极小的值。
关于符号
函数的导数可以用 f’(x) 和 df/dx 表示。数学巨匠牛顿使用 f’(x) 来表示函数的导数。另一位数学英雄莱布尼茨使用 df/dx。因此 df/dx 是一个单一的术语,不要与分数混淆。它被读作函数 f 对 x 的导数,也表示 x 是自变量。
与速度的联系
最常引用的导数示例之一是速度的导数。速度是距离关于时间的变化率。因此,如果 f(t) 表示时间 t 处的行驶距离,则 f’(t) 是时间 t 处的速度。接下来的章节展示了计算导数的各种示例。
微分示例
找到函数的导数的方法称为微分。在本节中,我们将看到如何使用导数的定义来找到不同函数的导数。稍后,一旦你对定义更加熟悉,你可以使用定义的规则来对函数进行微分。
示例 1: m(x) = 2x+5
让我们从一个简单的线性函数 m(x) = 2x+5 开始。我们可以看到 m(x) 以恒定的速率变化。我们可以如下求导这个函数。
m(x) = 2x+5 的导数
上图显示了函数 m(x) 的变化方式,并且无论选择哪个 x 值,m(x) 的变化率始终为 2。
示例 2: g(x) = x²
假设我们有函数 g(x) = x²。下图显示了关于 x 的 g(x) 导数是如何计算的。图中还显示了函数及其导数的绘图。
g(x) = x² 的导数
由于 g’(x) = 2x,因此 g’(0) = 0,g’(1) = 2,g’(2) = 4,g’(-1) = -2,g’(-2) = -4。
从图中可以看出,对于较大的负 x 值,g(x) 的值非常大。当 x < 0 时,增加 x 会减少 g(x),因此对于 x < 0,g’(x) < 0。当 x=0 时,图形变平,此时 g(x) 的导数或变化率为零。当 x > 0 时,g(x) 随着 x 的增加呈二次增长,因此导数也是正的。
示例 3: h(x) = 1/x
假设我们有函数 h(x) = 1/x。下面展示了 h(x) 关于 x 的微分(对于 x ≠ 0),以及说明导数的图。蓝色曲线表示 h(x),红色曲线表示其对应的导数。
h(x) = 1/x 的导数
可微性和连续性
例如示例 3,函数 h(x) = 1/x 在点 x=0 处未定义。因此,其导数 (-1/x²) 在 x=0 处也不被定义。如果函数在某点不连续,则该点没有导数。以下是几种函数不可微的情形:
-
如果在某一点函数没有定义
-
函数在该点没有极限
-
如果函数在某点不连续
-
函数在某点有突然跃升
以下是几个示例:
没有导数的点示例
扩展
本节列出了一些可能想要探索的扩展教程的想法。
-
速度和瞬时变化率
-
导数规则
-
积分
如果你探索了这些扩展内容,我很想知道。请在下面的评论中分享你的发现。
进一步阅读
本节提供了更多关于该主题的资源,如果你想深入了解。
教程
资源
- 关于机器学习的微积分书籍的附加资源
书籍
-
托马斯微积分,第 14 版,2017 年。(基于乔治·B·托马斯的原作,由乔尔·哈斯、克里斯托弗·海尔、莫里斯·威尔修订)
-
微积分,第 3 版,2017 年。(吉尔伯特·斯特朗)
-
微积分,第 8 版,2015 年。 (詹姆斯·斯图尔特)
总结
在本教程中,你了解了函数导数和函数微分的基础知识。
具体来说,你学习了:
-
函数导数的定义和符号
-
如何使用定义来微分一个函数
-
当一个函数不可微分时
你有任何问题吗?在下面的评论中提出你的问题,我会尽力回答。
梯度下降过程的温和介绍
原文:
machinelearningmastery.com/a-gentle-introduction-to-gradient-descent-procedure/
梯度下降过程在机器学习中具有至关重要的意义。它常用于最小化分类和回归问题中的误差函数,也用于训练神经网络和深度学习架构。
在本教程中,你将发现梯度下降过程。
完成本教程后,你将了解到:
-
梯度下降方法
-
梯度下降在机器学习中的重要性
让我们开始吧。
对梯度下降的温和介绍。照片由 Mehreen Saeed 提供,部分权利保留。
教程概述
本教程分为两个部分,它们是:
-
梯度下降过程
-
梯度下降过程的示例
前提条件
对于本教程,假定你已具备以下主题的知识:
-
多变量函数
你可以通过点击上面的链接来复习这些概念。
梯度下降过程
梯度下降过程是一个用于寻找函数最小值的算法。
假设我们有一个函数 f(x),其中 x 是多个变量的元组,即 x = (x_1, x_2, …x_n)。还假设 f(x) 的梯度为 ∇f(x)。我们希望找到使函数最小的变量值 (x_1, x_2, …x_n)。在任何迭代 t 中,我们用 x[t] 表示元组 x 的值。所以 x[t][1] 是迭代 t 中 x_1 的值,x[t][2] 是迭代 t 中 x_2 的值,依此类推。
符号说明
我们有以下变量:
-
t = 迭代次数
-
T = 总迭代次数
-
n = f 的定义域中的总变量(也称为 x 的维度)
-
j = 变量编号的迭代器,例如,x_j 表示第 j 个变量
-
??? = 学习率
-
∇f(x[t]) = 迭代 t 时 f 的梯度向量值
训练方法
梯度下降算法的步骤如下。这也被称为训练方法。
-
选择一个随机的初始点 x_initial 并设置 x[0] = x_initial
-
对于迭代 t=1…T
- 更新 x[t] = x[t-1] – ???∇f(x[t-1])
就是这么简单!
学习率 ??? 是梯度下降过程中的用户定义变量,其值在 [0,1] 范围内。
上述方法说明在每次迭代时,我们需要通过朝梯度向量负方向小步移动来更新 x 的值。如果 ???=0,则 x 不会变化。如果 ???=1,则相当于在梯度向量的负方向上迈出大步。通常, ??? 设置为小值如 0.05 或 0.1。它也可以在训练过程中变化。因此你的算法可以从较大的值(例如 0.8)开始,然后逐渐减小到较小的值。
想开始学习机器学习的微积分吗?
现在就报名我的免费 7 天电子邮件速成课程(包括示例代码)。
点击注册并获得免费 PDF 电子书版课程。
梯度下降的示例
让我们找出下列两个变量的函数的最小值,其图形和轮廓如下图所示:
f(x,y) = xx + 2yy
f(x,y) = xx + 2yy 的图形和轮廓
梯度向量的一般形式为:
∇f(x,y) = 2xi + 4yj
显示了算法的两个迭代 T=2 和 ???=0.1
-
初始 t=0
- x[0] = (4,3) # 这只是一个随机选择的点
-
在 t = 1 时
-
x[1] = x[0] – ???∇f(x[0])
-
x[1] = (4,3) – 0.1*(8,12)
-
x[1] = (3.2,1.8)
-
-
在 t=2 时
-
x[2] = x[1] – ???∇f(x[1])
-
x[2] = (3.2,1.8) – 0.1*(6.4,7.2)
-
x[2] = (2.56,1.08)
-
如果你持续运行上述迭代过程,最终程序会到达函数最小值的点,即 (0,0)。
在迭代 t=1 时,算法如图所示:
梯度下降过程的示意图
需要运行多少次迭代?
通常,梯度下降会运行到 x 的值不再改变或 x 的变化低于某个阈值。停止准则也可以是用户定义的最大迭代次数(我们之前定义为 T)。
添加动量
梯度下降可能会遇到如下问题:
-
在两个或多个点之间震荡
-
陷入局部最小值
-
超越并错过最小点
为了处理上述问题,可以在梯度下降算法的更新方程中添加动量项,如下所示:
x[t] = x[t-1] – ???∇f(x[t-1]) + ???*Δx[t-1]
其中 Δx[t-1] 代表 x 的变化,即:
Δx[t] = x[t] – x[t-1]
在 t=0 时的初始变化是零向量。对于这个问题 Δx[0] = (0,0)。
关于梯度上升
还有一个相关的梯度上升过程,用于寻找函数的最大值。在梯度下降中,我们沿着函数的最大减少率的方向前进,这就是负梯度向量的方向。而在梯度上升中,我们沿着函数最大增加率的方向前进,这就是正梯度向量的方向。我们也可以通过对 f(x)加上负号来将最大化问题转化为最小化问题,即,
maximize f(x) w.r.t x is equivalent to minimize -f(x) w.r.t x
为什么梯度下降在机器学习中重要?
梯度下降算法常用于机器学习问题。在许多分类和回归任务中,均方误差函数用于将模型拟合到数据。梯度下降过程用于识别导致最低均方误差的最佳模型参数。
梯度上升用于类似的情境,解决涉及最大化函数的问题。
扩展
本节列出了一些你可能希望探索的教程扩展想法。
-
黑塞矩阵
-
雅可比矩阵
如果你探索了这些扩展内容,我很乐意知道。请在下方评论中发布你的发现。
进一步阅读
本节提供了更多关于该主题的资源,如果你希望深入了解。
教程
资源
- 关于 机器学习中的微积分书籍 的额外资源
书籍
-
托马斯微积分,第 14 版,2017 年。(基于 George B. Thomas 的原著,由 Joel Hass、Christopher Heil、Maurice Weir 修订)
-
微积分,第 3 版,2017 年。(Gilbert Strang)
-
微积分,第 8 版,2015 年。(James Stewart)
总结
在本教程中,你发现了梯度下降的算法。具体来说,你学到了:
-
梯度下降过程
-
如何应用梯度下降过程来找到函数的最小值
-
如何将一个最大化问题转化为最小化问题
你有任何问题吗?
在下方评论中提出你的问题,我会尽力回答。
温和介绍 Hessian 矩阵
原文:
machinelearningmastery.com/a-gentle-introduction-to-hessian-matrices/
Hessian 矩阵属于包含二阶导数的数学结构类别。它们通常用于机器学习和数据科学算法中,以优化感兴趣的函数。
在本教程中,你将发现 Hessian 矩阵及其对应的判别式,并了解其重要性。所有概念通过示例进行说明。
完成本教程后,你将知道:
-
Hessian 矩阵
-
通过 Hessian 矩阵计算的判别式
-
判别式中包含的信息
让我们开始吧。
温和介绍 Hessian 矩阵。照片由 Beenish Fatima 提供,版权所有。
教程概述
本教程分为三部分;它们是:
-
函数的 Hessian 矩阵及其对应的判别式的定义
-
计算 Hessian 矩阵和判别式的示例
-
Hessian 和判别式告诉我们关于感兴趣的函数的信息
前提条件
在本教程中,我们假设你已经知道:
你可以通过点击上面给出的链接来回顾这些概念。
什么是 Hessian 矩阵?
Hessian 矩阵是一个二阶偏导数的矩阵。假设我们有一个 n 变量的函数 f,即,
f : R n → R f: R^n \rightarrow R f:Rn→R
f 的 Hessian 由左侧的矩阵给出。一个二变量函数的 Hessian 也显示在右侧。
Hessian n 变量的函数(左)。f(x,y)的 Hessian(右)
从我们关于梯度向量的教程中,我们已经知道梯度是一个一阶偏导数的向量。类似地,Hessian 矩阵是一个二阶偏导数的矩阵,由函数 f 定义域内所有变量对组成。
想要开始学习机器学习中的微积分吗?
立即参加我的免费 7 天电子邮件速成课程(包括示例代码)。
点击注册并获得免费的 PDF 电子书版本。
什么是判别式?
Hessian 的 行列式 也称为 f 的判别式。对于一个二维函数 f(x, y),它由以下公式给出:
f(x, y) 的判别式
Hessian 矩阵和判别式的示例
假设我们有以下函数:
g(x, y) = x³ + 2y² + 3xy²
然后 Hessian H_g 和判别式 D_g 为:
Hessian 和 g(x, y) = x³ + 2y² + 3xy² 的判别式
让我们在不同的点上评估判别式:
D_g(0, 0) = 0
D_g(1, 0) = 36 + 24 = 60
D_g(0, 1) = -36
D_g(-1, 0) = 12
Hessian 和判别式有什么意义?
Hessian 和相应的判别式用于确定函数的局部极值点。评估它们有助于理解多个变量的函数。以下是一些重要规则,适用于判别式为 D(a, b) 的点 (a,b):
-
如果 f_xx(a, b) > 0 且判别式 D(a,b) > 0,则函数 f 有一个 局部最小值
-
如果 f_xx(a, b) < 0 且判别式 D(a,b) > 0,则函数 f 有一个 局部最大值
-
如果 D(a, b) < 0,函数 f 有一个鞍点
-
如果 D(a, b) = 0,我们不能得出任何结论,需要更多的测试。
示例:g(x, y)
对于函数 g(x,y):
-
对于点 (0, 0) 我们不能得出任何结论
-
f_xx(1, 0) = 6 > 0 和 D_g(1, 0) = 60 > 0,因此 (1, 0) 是局部最小值
-
点 (0,1) 是一个鞍点,因为 D_g(0, 1) < 0
-
f_xx(-1,0) = -6 < 0 和 D_g(-1, 0) = 12 > 0,因此 (-1, 0) 是局部最大值
下图展示了函数 g(x, y) 的图形及其相应的等高线。
g(x,y) 的图形和 g(x,y) 的等高线
为什么 Hessian 矩阵在机器学习中很重要?
Hessian 矩阵在许多机器学习算法中扮演着重要角色,这些算法涉及优化给定函数。尽管计算可能很昂贵,但它包含了一些关于被优化函数的关键信息。它可以帮助确定鞍点和函数的局部极值。在训练神经网络和深度学习架构中被广泛使用。
扩展
本节列出了一些扩展教程的想法,你可能会希望探索。
-
优化
-
Hessian 矩阵的特征值
-
Hessian 矩阵的逆矩阵和神经网络训练
如果你探索了这些扩展内容,我很想知道。请在下面的评论中发布你的发现。
进一步阅读
本节提供了更多关于该主题的资源,如果你希望深入了解。
教程
资源
- 额外资源:机器学习的微积分书籍
书籍
-
托马斯微积分,第 14 版,2017 年(基于乔治·B·托马斯的原著,由乔尔·哈斯、克里斯托弗·海尔、莫里斯·韦尔修订)
-
微积分,第 3 版,2017 年(吉尔伯特·斯特朗)
-
微积分,第 8 版,2015 年(詹姆斯·斯图尔特)
总结
在本教程中,你了解到什么是 Hessian 矩阵。具体来说,你学习了:
-
Hessian 矩阵
-
函数的判别式
你有任何问题吗?
在下方评论中提问,我会尽力回答。
温和介绍未定型和洛必达法则
原文:
machinelearningmastery.com/a-gentle-introduction-to-indeterminate-forms-and-lhospitals-rule/
在评估函数的极限时,经常会遇到未定型,极限在数学和微积分中扮演着重要角色。它们对学习导数、梯度、黑塞矩阵以及更多内容至关重要。
在本教程中,你将学习如何评估未定型的极限以及解决它们的洛必达法则。
完成本教程后,你将了解:
-
如何评估具有 0/0 和 ∞/∞ 未定型形式的函数的极限
-
洛必达法则用于评估未定型
-
如何转换更复杂的未定型并将洛必达法则应用于它们
开始吧。
温和介绍未定型和洛必达法则,照片由 Mehreen Saeed 提供,保留所有权利。
教程概述
本教程分为 2 部分;它们是:
-
0/0 和 ∞/∞ 的未定型
-
如何将洛必达法则应用于这些类型
-
这两种未定型的解题示例
-
-
更复杂的未定型
-
如何将更复杂的未定型转换为 0/0 和 ∞/∞ 形式
-
这类类型的解题示例
-
前提条件
本教程需要对以下两个主题有基本了解:
如果你不熟悉这些主题,可以通过点击上述链接进行复习。
什么是未定型?
在评估极限时,我们会遇到评估极限的基本规则可能会失效的情况。例如,对于有理函数,我们可以应用商法则:
lim(x→a) f(x)/g(x) = (lim(x→a)f(x))/(lim(x→a)g(x)) 如果 lim(x→a)g(x)≠0
只有在分母中的表达式在 x 接近 a 时不趋近于零时,才能应用上述规则。如果当 x 接近 a 时,分子和分母都趋近于零,则会出现更复杂的情况。这被称为 0/0 的未定型。同样,还有 ∞/∞ 的未定型,表示为:
lim(x→a) f(x)/g(x) = (lim(x→a)f(x))/(lim(x→a)g(x)) 当 lim(x→a)f(x)=∞ 和 lim(x→a)g(x)=∞
什么是洛必达法则?
洛必达法则如下:
洛必达法则
何时应用洛必达法则
需要注意的重要一点是,洛必达法则仅在满足 f(x) 和 g(x) 的条件时适用。例如:
-
lim(???→0) sin(x)/(x+1) 不能应用洛必达法则,因为这不是 0/0 形式
-
lim(???→0) sin(x)/x 可以应用该法则,因为这是 0/0 形式
-
lim(???→∞) (e^x)/(1/x+1) 不能应用洛必达法则,因为这不是 ∞/∞ 形式
-
lim(???→∞) (e^x)/x 可以应用洛必达法则,因为这是 ∞/∞ 形式
0/0 和 ∞/∞ 的示例
下面展示了一些这两种类型的示例以及如何解决它们。你还可以参考下图中的函数。
示例 1.1: 0/0
计算 lim(???→2) ln(x-1)/(x-2) (见图中的左侧图)
lim(???→2) ln(x-1)/(x-2)=1
示例 1.2: ∞/∞
计算 lim(???→∞) ln(x)/x (见图中的右侧图)
lim(???→∞) ln(x)/x=0
示例 1.1 和 1.2 的图像
更多不确定形式
洛必达法则仅告诉我们如何处理 0/0 或 ∞/∞ 形式。然而,还有更多涉及乘积、差值和幂的不确定形式。那么我们如何处理剩下的呢?我们可以使用一些数学巧妙的方法将乘积、差值和幂转换为商。这可以使我们几乎在所有不确定形式中轻松应用洛必达法则。下表展示了各种不确定形式以及如何处理它们。
如何解决更复杂的不确定形式
示例
以下示例展示了如何将一种不确定形式转换为 0/0 或 ∞/∞ 形式,并应用洛必达法则来求解极限。在解决示例之后,你还可以查看所有计算了极限的函数的图像。
示例 2.1: 0.∞
计算 lim(???→∞) x.sin(1/x) (见图中的第一张图)
lim(???→∞) x.sin(1/x)=1
示例 2.2: ∞-∞
计算 lim(???→0) 1/(1-cos(x)) – 1/x (见下图的第二张图)
lim(???→0) 1/(1-cos(x)) – 1/x = ∞
示例 2.3:幂型
评估 lim(???→∞) (1+x)^(1/x)(参见下面图形中的第三张图)
lim(???→∞) (1+x)^(1/x)=1
示例 2.1、2.2 和 2.3 的图形
扩展
本节列出了一些扩展教程的想法,你可能希望探索。
-
柯西均值定理
-
罗尔定理
如果你探索了这些扩展功能,我很想知道。请在下面的评论中分享你的发现。
进一步阅读
本节提供了更多关于该主题的资源,如果你想深入了解。
教程
资源
- 关于机器学习的微积分书籍的额外资源
书籍
-
托马斯微积分,第 14 版,2017 年。(基于乔治·B·托马斯的原著,由乔尔·哈斯、克里斯托弗·海尔、莫里斯·韦尔修订)
-
微积分,第 3 版,2017 年。(吉尔伯特·斯特朗)
-
微积分,第 8 版,2015 年。(詹姆斯·斯图尔特)
总结
在本教程中,你了解了不确定型的概念及其评估方法。
具体来说,你学习了:
-
类型 0/0 和∞/∞的不确定形式
-
评估类型 0/0 和∞/∞的洛必达法则
-
类型 0.∞、∞-∞和幂型的不确定形式,以及如何评估它们。
你有任何问题吗?
在下面的评论中提问,我会尽力回答。
极限和连续性的温和介绍
原文:
machinelearningmastery.com/a-gentle-introduction-to-limits-and-continuity/
毫无疑问,微积分是一个难度较大的学科。然而,如果你掌握了基础知识,你不仅能够理解更复杂的概念,还会觉得它们非常有趣。要理解机器学习算法,你需要了解诸如函数的梯度、矩阵的赫西矩阵以及优化等概念。极限和连续性的概念为所有这些主题提供了基础。
在这篇文章中,你将学习如何评估一个函数的极限,以及如何确定一个函数是否连续。
阅读完这篇文章后,你将能够:
-
确定一个函数 f(x) 当 x 趋近于某个值时是否存在极限
-
计算一个函数 f(x) 当 x 趋近于 a 时的极限
-
确定一个函数在某点或区间内是否连续
我们开始吧。
教程概述
本教程分为两个部分
-
极限
-
确定函数在某点的极限是否存在
-
计算函数在某点的极限
-
极限的正式定义
-
极限的例子
-
左极限和右极限
-
-
连续性
-
连续性的定义
-
确定一个函数在某点或区间内是否连续
-
连续函数的例子
-
极限和连续性的温和介绍
摄影:Mehreen Saeed,部分版权保留。
一个简单的例子
让我们先来看一个简单的函数 f(x),由以下给出:
f(x) = 1+x
f(x) 在 -1 附近会发生什么?
我们可以看到,f(x) 在 x 越来越接近 -1 时,f(x) 越来越接近 0,无论是从 x=-1 的哪一侧。 在 x=-1 时,函数正好为零。我们说当 x 趋近于 -1 时,f(x) 的极限等于 0。
扩展例子
扩展问题。让我们定义 g(x):
g(x) = (1-x²)/(1+x)
我们可以将 g(x) 的表达式简化为:
g(x) = (1-x)(1+x)/(1+x)
如果分母不为零,则 g(x) 可以简化为:
g(x) = 1-x, 如果 x ≠ -1
然而,在 (x = -1) 处,分母为零,我们无法除以零。所以在 x=-1 处似乎存在一个孔。尽管存在这个孔,g(x) 在 x 趋近于 -1 时仍然越来越接近 2,如图所示:
这是极限的基本概念。如果 g(x) 在不包含 -1 的开区间内定义,并且当 x 趋近于 -1 时,g(x) 越来越接近 2,我们写作:
lim(x→-1) g(x) = 2
一般来说,对于任何函数 f(x),如果 f(x) 在 x 趋近于 k 时越来越接近一个值 L,我们定义 f(x) 在 x 接近 k 时的极限为 L。这个定义写作:
左极限和右极限
对于函数 g(x),无论我们是增加 x 以接近 -1(从左接近 -1),还是减少 x 以接近 -1(从右接近 -1),g(x) 都会越来越接近 2。这在下面的图中展示了:
这引出了单侧极限的概念。左极限在 -1 左侧的区间上定义,不包括 -1,例如 (-1.003, -1)。当我们从左侧接近 -1 时,g(x) 趋近于 2。
类似地,右极限在 -1 右侧的开区间上定义,不包括 -1,例如 (-1, 0.997)。当我们从右侧接近 -1 时,g(x) 的右极限为 2。左极限和右极限都写作:
我们说 f(x) 在 x 接近 k 时有极限 L,如果它的左极限和右极限都相等。因此,这是一种测试函数在特定点是否有极限的另一种方法,即,
极限的正式定义
在数学中,我们需要对一切有一个精确的定义。为了正式定义极限,我们将使用希腊字母???的概念。数学界一致同意使用???表示任意小的正数,这意味着我们可以将???变得任意小,并且它可以接近于零,只要???>0(因此???不能为零)。
如果对于每一个 ???0,都存在一个正数 ???0,使得:
如果 0<|???−???|<???,则 |???(???)−???|<???
这个定义非常简单。x-k 是 x 与 k 的差异,|x-k| 是 x 与 k 之间的距离,不考虑差异的符号。类似地,|f(x)-L| 是 f(x) 与 L 之间的距离。因此,定义表示当 x 与 k 之间的距离接近任意小的值时,f(x) 与 L 之间的距离也接近一个非常小的值。下面的图很好地说明了这个定义:
极限的例子
下面的图展示了一些例子,并在下面进行了说明:
1.1 绝对值示例
f_1(x) = |x|
f_1(x) 的极限在所有 x 值上都存在,例如,lim(x→0) f_1(x) = 0。
1.2 多项式示例
f_2(x) = x² + 3x + 1
f_2(x) 的极限在所有 x 值上都存在,例如,lim(x→1) f_2(x) = 1+3+1 = 5。
1.3 无限的例子
f_3(x) = 1/x, 如果 x>0
f_3(x) = 0, 如果 x<=0
对于上述情况,当 x 越来越大时,f_3(x) 的值越来越小,趋近于零。因此,lim(x→∞) f_3(x) = 0。
不具有极限的函数示例
从极限的定义可以看出,以下函数没有极限:
2.1 单位阶跃函数
单位阶跃函数 H(x) 定义为:
H(x) = 0, 如果 x<0
H(x) = 1, 否则
当我们从左侧越来越接近 0 时,函数保持为零。然而,一旦我们到达 x=0,H(x) 跳到 1,因此 H(x) 在 x 趋近于零时没有极限。这个函数在左侧的极限等于零,而右侧的极限等于 1。
左侧和右侧的极限不一致,因为 x→0 时,H(x) 没有极限。因此,这里我们使用左右侧极限的相等作为检验函数在某点是否有极限的测试。
2.2 倒数函数
考虑 h_1(x):
h_1(x) = 1/(x-1)
当我们从左侧接近 x=1 时,函数趋向于大的负值。当我们从右侧接近 x=1 时,h_1(x) 增加到大的正值。因此,当 x 接近 1 时,h_1(x) 的值不会接近一个固定的实数值。因此,x→1 的极限不存在。
2.3 向上取整函数
考虑向上取整函数,它将带有非零小数部分的实数四舍五入到下一个整数值。因此,lim(x→1) ceil(x) 不存在。实际上,ceil(x) 在任何整数值上都没有极限。
所有上述示例都在下图中展示:
连续性
如果你理解了极限的概念,那么理解连续性就容易了。函数 f(x) 在点 a 连续,如果满足以下三个条件:
-
f(a) 应该存在
-
f(x) 在 x 趋近于 a 时有极限
-
当 x 趋近于 a 时,f(x) 的极限等于 f(a)
如果以上条件都成立,那么函数在点 a 处是连续的。以下是一些示例:
连续性的示例
连续性的概念与极限密切相关。如果函数在某点定义良好、在该点没有跳跃,并且在该点有极限,那么它在该点是连续的。下图展示了一些示例,并在下文中解释:
3.1 平方函数
以下函数 f_4(x) 对所有 x 值都是连续的:
f_4(x) = x²
3.2 有理函数
我们之前使用的函数 g(x):
g(x) = (1-x²)/(1+x)
g(x) 在除了 x=-1 之外的所有地方都是连续的。
我们可以将 g(x) 修改为 g**(x)😗
g*(x) = (1-x²)/(1+x),如果 x ≠ -1
g*(x) = 2, 否则
现在我们有一个对所有 x 值都连续的函数。
3.3 倒数函数
回到我们之前的例子 f_3(x):
f_3(x) = 1/x, 如果 x>0
f_3(x) = 0, 如果 x<=0
f_3(x) 在除 x=0 外的所有地方都是连续的,因为在 x=0 时 f_3(x) 的值有一个很大的跳跃。因此,在 x=0 处存在不连续性。
进一步阅读
本节提供了更多相关资源,如果你想深入了解。数学全在于练习,下面是一些提供更多练习和例子的资源列表。
资源页面
- 杰森·布朗利关于机器学习的微积分书籍的优秀资源。
书籍
-
托马斯的微积分,第 14 版,2017 年(基于乔治·B·托马斯的原著,由乔尔·哈斯、克里斯托弗·海尔、莫里斯·维尔修订)。
-
微积分,第 3 版,2017 年(吉尔伯特·斯特朗)。
-
微积分,第 8 版,2015 年(詹姆斯·斯图尔特)。
总结
在这篇文章中,你了解了关于极限和连续性的微积分概念。
具体来说,你学到了:
-
函数在接近某一点时是否存在极限
-
函数是否在某一点或区间内连续
你有任何问题吗?请在下方评论中提问,我会尽力回答。
拉格朗日乘数法的温和介绍
原文:
machinelearningmastery.com/a-gentle-introduction-to-method-of-lagrange-multipliers/
拉格朗日乘数法是一种简单而优雅的方法,用于在存在等式或不等式约束时找到函数的局部最小值或局部最大值。拉格朗日乘数也称为未确定乘数。在本教程中,我们将讨论当给定等式约束时的这种方法。
在本教程中,你将探索拉格朗日乘数法以及如何在存在等式约束时找到函数的局部最小值或最大值。
完成本教程后,你将了解:
-
如何在等式约束下找到函数的局部最大值或最小值
-
带等式约束的拉格朗日乘数法
让我们开始吧。
拉格朗日乘数法的温和介绍。照片由 Mehreen Saeed 提供,保留部分权利。
教程概述
本教程分为 2 部分;它们是:
-
带等式约束的拉格朗日乘数法
-
两个解决示例
前提条件
对于本教程,我们假设你已经了解以下内容:
你可以通过点击上面给出的链接来复习这些概念。
拉格朗日乘数法的等式约束是什么?
假设我们有以下优化问题:
最小化 f(x)
主题:
g_1(x) = 0
g_2(x) = 0
…
g_n(x) = 0
拉格朗日乘数法首先构造一个称为拉格朗日函数的函数,如下式所示。
L(x, ???) = f(x) + ???_1 g_1(x) + ???_2 g_2(x) + … + ???_n g_n(x)
这里**???**表示拉格朗日乘数的一个向量,即:
???= [ ???_1, ???_2, …, ???_n]^T
要在等式约束下找到 f(x) 的局部最小值,我们求解拉格朗日函数 L(x, ???)的驻点,即我们解以下方程:
∇xL = 0
∂L/∂???_i = 0(对于 i = 1…n)
因此,我们得到总共 m+n 个方程需要求解,其中
m = f 的变量数量
n = 等式约束的数量。
简而言之,局部最小值点将是以下方程的解:
∂L/∂x_j = 0(对于 j = 1…m)
g_i(x) = 0(对于 i = 1…n)
想要开始学习机器学习的微积分吗?
现在获取我的免费 7 天电子邮件速成课程(附带示例代码)。
点击注册并免费获得课程的 PDF 电子书版本。
已解决的示例
本节包含两个已解决的示例。如果你解决了这两个问题,你将对如何将拉格朗日乘子法应用于两个以上变量的函数以及更多的等式约束有一个很好的了解。
示例 1:一个等式约束
让我们解决以下最小化问题:
最小化: f(x) = x² + y²
约束条件: x + 2y – 1 = 0
第一步是构建拉格朗日函数:
L(x, y, ???) = x² + y² + ???(x + 2y – 1)
我们有以下三个方程需要解:
∂L/∂x = 0
2x + ??? = 0 (1)
∂L/∂y = 0
2y + 2??? = 0 (2)
∂L/∂??? = 0
x + 2y -1 = 0 (3)
使用 (1) 和 (2),我们得到:
??? = -2x = -y
将其代入 (3) 得到:
x = 1/5
y = 2/5
因此,局部最小点位于 (1/5, 2/5),如右图所示。左图显示了函数的图像。
函数图(左)。轮廓线、约束和局部最小值(右)
示例 2:两个等式约束
假设我们想要在给定约束下找到以下函数的最小值:
最小化 g(x, y) = x² + 4y²
约束条件:
x + y = 0
x² + y² – 1 = 0
这个问题的解可以通过首先构建拉格朗日函数来找到:
L(x, y, ???_1, ???_2) = x² + 4y² + ???_1(x + y) + ???_2(x² + y² – 1)
我们需要解 4 个方程:
∂L/∂x = 0
2x + ???_1 + 2x ???_2 = 0 (1)
∂L/∂y = 0
8y + ???_1 + 2y ???_2 = 0 (2)
∂L/∂???_1 = 0
x + y = 0 (3)
∂L/∂???_2 = 0
x² + y² – 1 = 0 (4)
解上述方程组可得到 (x,y) 的两个解,即我们得到两个点:
(1/sqrt(2), -1/sqrt(2))
(-1/sqrt(2), 1/sqrt(2))
函数及其约束条件和局部最小值如下所示。
函数图(左)。轮廓线、约束和局部最小值(右)
与最大化问题的关系
如果你有一个需要最大化的函数,可以以类似的方式解决,记住最大化和最小化是等价的问题,即,
最大化 f(x) 等同于 最小化 -f(x)
拉格朗日乘子法在机器学习中的重要性
许多知名的机器学习算法都使用了拉格朗日乘数法。例如,主成分分析(PCA)的理论基础是使用具有等式约束的拉格朗日乘数法构建的。类似地,支持向量机(SVM)的优化问题也使用这种方法解决。然而,在 SVM 中,还涉及到不等式约束。
扩展
本节列出了一些可能希望探索的扩展教程的想法。
-
带有不等式约束的优化
-
KKT 条件
-
支持向量机
如果你探索了这些扩展中的任何一个,我很想知道。请在下方评论中发布你的发现。
进一步阅读
本节提供了更多资源,供你深入了解该主题。
教程
资源
- 关于机器学习中的微积分书籍的额外资源
书籍
-
托马斯微积分,第 14 版,2017 年(基于乔治·B·托马斯的原著,由乔尔·哈斯、克里斯托弗·海尔、莫里斯·威尔修订)
-
微积分,第 3 版,2017 年(吉尔伯特·斯特朗)
-
微积分,第 8 版,2015 年(詹姆斯·斯图尔特)
总结
在本教程中,你了解了拉格朗日乘数法。具体来说,你学到了:
-
拉格朗日乘数与拉格朗日函数
-
如何在给定等式约束的情况下解决优化问题
你有任何问题吗?
在下方评论中提出你的问题,我会尽力回答。
多变量微积分的温和介绍
原文:
machinelearningmastery.com/a-gentle-introduction-to-multivariate-calculus/
研究依赖于多个变量的函数通常是令人向往的。
多变量微积分通过将我们在微积分中发现的概念(如变化率的计算)扩展到多个变量,为我们提供了工具。它在训练神经网络的过程中起着至关重要的作用,其中梯度被广泛用于更新模型参数。
在本教程中,你将发现多变量微积分的温和介绍。
完成本教程后,你将了解到:
-
多变量函数依赖于多个输入变量来产生输出。
-
多变量函数的梯度是通过在不同方向上找到函数的导数来计算的。
-
多变量微积分在神经网络中被广泛使用,以更新模型参数。
让我们开始吧。
多变量微积分的温和介绍
图片来源 Luca Bravo,版权所有。
教程概述
本教程分为三个部分;它们是:
-
重新审视函数的概念
-
多变量函数的导数
-
多变量微积分在机器学习中的应用
重新审视函数的概念
我们已经对函数的概念有所了解,即一个定义因变量和自变量之间关系的规则。我们看到,函数通常表示为y = f(x),其中输入(或自变量)x和输出(或因变量)y都是单个实数。
这样的函数接受一个单一的独立变量,并在输入和输出之间定义一对一的映射,称为单变量函数。
例如,假设我们尝试仅基于温度来预报天气。在这种情况下,天气是我们试图预测的因变量,它是温度(输入变量)的函数。因此,这样的问题可以很容易地框定为一个单变量函数。
但是,假设我们现在不仅基于温度,还想根据湿度水平和风速来进行天气预报。我们不能通过单变量函数来做到这一点,因为单变量函数的输出仅依赖于单一输入。
因此,我们将注意力转向多变量函数,因为这些函数可以接受多个变量作为输入。
从形式上讲,我们可以将多变量函数表示为多个实数输入变量 n 到一个实数输出的映射:
例如,考虑以下抛物面:
f(x, y) = x² + 2y²
这是一个多变量函数,接受两个变量,x 和 y,作为输入,因此 n = 2,生成一个输出。我们可以通过绘制 x 和 y 在 -1 到 1 之间的值来进行可视化。
抛物面的三维图
同样,我们可以有接受更多变量作为输入的多变量函数。然而,由于涉及的维度数量,进行可视化可能会很困难。
我们甚至可以进一步推广函数的概念,考虑那些将多个输入 n 映射到多个输出 m 的函数:
这些函数通常被称为向量值函数。
多变量函数的导数
回顾 微积分涉及变化率的研究。对于某些单变量函数,g(x),这可以通过计算其导数来实现:
导数在多个变量的函数中的推广是梯度。
– 第 146 页, 机器学习的数学, 2020.
查找多个变量函数的梯度的技术涉及每次改变其中一个变量,同时保持其他变量不变。这样,我们每次都会对多变量函数关于每个变量进行偏导数计算。
梯度则是这些偏导数的集合。
– 第 146 页, 机器学习的数学, 2020.
为了更好地可视化这种技术,让我们首先考虑一个形式简单的单变量二次函数:
g(x) = x²
单变量二次函数的线图
在某个点x上找到这个函数的导数,需要应用我们之前定义的g’(x)的方程。我们可以选择使用幂法则来简化计算:
g’(x) = 2x
此外,如果我们要想象切开之前考虑的抛物面,并且用一条通过y = 0 的平面来切割,我们会发现f(x, y)的横截面是二次曲线,g(x) = x²。因此,我们可以通过对f(x, y)进行导数计算(或称陡度,或slope),在x方向上得到抛物面的导数,同时保持y不变。我们称之为f(x, y)关于x的偏导,用∂表示,以说明除了x之外还有更多变量,但这些变量暂时不考虑。因此,f(x, y)关于x的偏导数为:
我们可以类似地保持x不变(换句话说,通过用一条通过x的平面来切割抛物面,以找到抛物面在y方向上的横截面),以找到f(x, y)关于y的偏导数,如下所示:
我们基本上做的是找到f(x, y)在x和y方向上的单变量导数。将两个单变量导数结合起来作为最终步骤,给我们提供了多变量导数(或梯度):
相同的技术适用于更高维度的函数。
多变量微积分在机器学习中的应用
偏导数在神经网络中被广泛用于更新模型参数(或权重)。
我们曾看到过 在最小化某些误差函数时,优化算法会试图沿着其梯度下坡。如果这个误差函数是单变量的,因此是一个单一独立权重的函数,那么优化它就只是计算其单变量导数。
然而,神经网络包含许多权重(每个权重对应一个不同的神经元),误差是这些权重的函数。因此,更新权重值需要计算误差曲线对所有这些权重的梯度。
这就是多变量微积分应用的地方。
错误曲线的梯度通过计算误差对每个权重的偏导数来得到;换句话说,就是通过保持除当前考虑的权重以外的所有权重不变来求误差函数的导数。这使得每个权重可以独立更新,从而达到找到最佳权重集的目标。
进一步阅读
本节提供了更多关于该主题的资源,如果你想深入了解,可以参考。
书籍
-
单变量与多变量微积分,2020。
-
机器学习数学,2020。
-
优化算法,2019。
-
深度学习,2019。
总结
在本教程中,你发现了对多变量微积分的温和介绍。
具体来说,你学到了:
-
多变量函数依赖于多个输入变量以产生输出。
-
多变量函数的梯度是通过在不同方向上求函数的导数来计算的。
-
多变量微积分在神经网络中被广泛使用,用于更新模型参数。
你有什么问题吗?
在下方评论中提问,我会尽力回答。
《偏导数和梯度向量的温和介绍》
原文:
machinelearningmastery.com/a-gentle-introduction-to-partial-derivatives-and-gradient-vectors/
偏导数和梯度向量在机器学习算法中非常常用,用于寻找函数的最小值或最大值。梯度向量用于神经网络的训练、逻辑回归以及许多其他分类和回归问题中。
在本教程中,你将发现偏导数和梯度向量。
完成本教程后,你将了解:
-
多变量函数
-
等值线、等高线和双变量函数的图形
-
多变量函数的偏导数
-
梯度向量及其含义
让我们开始吧。
《偏导数和梯度向量的温和介绍》。照片由 Atif Gulzar 提供,保留所有权利。
教程概述
本教程分为三个部分,它们是:
-
多变量函数
-
等值线
-
等高线
-
图形
-
-
偏导数的定义
-
梯度向量
- 梯度向量表示什么
多变量函数
你可以在这个 教程 中复习函数和多变量函数的概念。我们将在这里提供更多关于多变量函数的详细信息。
多变量函数具有以下属性:
-
它的定义域是由 (x_1, x_2, x_3, …, x_n) 给出的 n 元组集
-
它的范围是实数集
例如,以下是一个双变量函数(n=2):
f_1(x,y) = x + y
在上述函数中,x 和 y 是独立变量。它们的和决定了函数的值。该函数的定义域是 XY 直角坐标平面上的所有点集合。该函数的图形需要在 3D 空间中绘制,其中两个轴表示输入点 (x,y),第三个轴表示 f 的值。
这是另一个双变量函数的示例。 f_2(x,y) = xx + yy
为了简化问题,我们将做双变量函数的示例。当然,在机器学习中,你会遇到数百个变量的函数。与双变量函数相关的概念可以扩展到这些情况。
双变量函数的等值线和图形
平面上的点集合,其中函数 f(x,y) 具有恒定值,即 f(x,y)=c,称为 f 的等值集或等值曲线。
例如,对于函数 f_1,所有满足以下方程的 (x,y) 点定义了 f_1 的一个等值集:
x + y = 1
我们可以看到,这个等值集具有无限的点集,例如 (0,2)、(1,1)、(2,0) 等。这个等值集定义了 XY 平面上的一条直线。
一般来说,函数 f_1 的所有水平集定义了形式为直线的直线(c 为任何实数常数):
x + y = c
同样,对于函数 f_2,水平集的一个示例如下:
xx + yy = 1
我们可以看到,任何位于半径为 1、中心在 (0,0) 的圆上的点都满足上述表达式。因此,这个水平集由所有位于这个圆上的点组成。类似地,f_2 的任何水平集满足以下表达式(c 为任何实数常数 >= 0):
xx + yy = c
因此,f_2 的所有水平集都是中心在 (0,0) 的圆,每个水平集都有自己独特的半径。
函数 f(x,y) 的图形是所有点 (x,y,f(x,y)) 的集合。它也被称为表面 z=f(x,y)。f_1 和 f_2 的图形如下(左侧)。
函数 f_1 和 f_2 及其相应的轮廓
两变量函数的轮廓
假设我们有一个两变量的函数 f(x,y)。如果我们用平面 z=c 切割表面 z=f(x,y),则得到满足 f(x,y) = c 的所有点的集合。轮廓曲线是满足 f(x,y)=c 的点在平面 z=c 中的集合。这与水平集略有不同,水平曲线直接在 XY 平面中定义。然而,许多书籍将轮廓和水平曲线视为相同的概念。
上述图形(右侧)显示了 f_1 和 f_2 的轮廓。
想开始学习机器学习中的微积分吗?
立即参加我的免费 7 天电子邮件速成课程(包括示例代码)。
点击注册并获得免费 PDF 电子书版的课程。
偏导数和梯度
函数 f 关于变量 x 的偏导数表示为 ∂f/∂x。其表达式可以通过对 f 关于 x 求导来确定。例如,对于函数 f_1 和 f_2,我们有:
∂f_1/∂x = 1
∂f_2/∂x = 2x
∂f_1/∂x 表示 f_1 关于 x 的变化率。对于任何函数 f(x,y),∂f/∂x 表示 f 关于变量 x 的变化率。
对于 ∂f/∂y 也是类似的情况。它表示 f 关于 y 的变化率。你可以在这个 教程 中查看偏导数的正式定义。
当我们求出对所有独立变量的偏导数时,我们得到一个向量。这个向量称为 f 的梯度向量,表示为 ∇f(x,y)。f_1 和 f_2 的梯度的一般表达式如下(其中 i,j 是与坐标轴平行的单位向量):
∇f_1(x,y) = ∂f_1/∂xi + ∂f_1/∂yj = i+j
∇f_2(x,y) = ∂f_2/∂xi + ∂f_2/∂yj = 2xi + 2yj
从梯度的一般表达式中,我们可以在空间中的不同点上评估梯度。对于 f_1,梯度向量是常数,即:
i+j
无论我们处于三维空间的何处,梯度向量的方向和大小保持不变。
对于函数 f_2,∇f_2(x,y) 随 (x,y) 的值变化。例如,在 (1,1) 和 (2,1) 处,f_2 的梯度由以下向量给出:
∇f_2(1,1) = 2i + 2j
∇f_2(2,1) = 4i + 2j
梯度向量在某一点上表示什么?
多变量函数在任何点的梯度向量表示最大变化速率的方向。
我们可以将梯度向量与切线 联系起来。如果我们站在空间中的一个点,并制定了一个规则,告诉我们沿着该点的轮廓的切线行走。这意味着无论我们在哪里,我们都找到该点的轮廓切线,并沿着它行走。如果我们遵循这个规则,我们将沿着 f 的轮廓行走。函数值将保持不变,因为函数值在 f 的轮廓上是恒定的。
另一方面,梯度向量垂直于切线,指向最大增速的方向。如果我们沿着梯度的方向前进,我们会遇到下一个函数值大于前一个值的点。
梯度的正方向表示最大增速的方向,而负方向则表示最大降速的方向。下图显示了函数 f_2 的不同轮廓点处的梯度向量的正方向。正梯度的方向由红色箭头指示。轮廓的切线以绿色显示。
轮廓和梯度向量的方向
为什么梯度向量在机器学习中很重要?
梯度向量在机器学习算法中非常重要且频繁使用。在分类和回归问题中,我们通常定义均方误差函数。沿着该函数梯度的负方向将使我们找到该函数具有最小值的点。
对于函数也是如此,最大化它们会实现最高的准确性。在这种情况下,我们将沿着该函数的最大增速方向或梯度向量的正方向前进。
扩展
本节列出了一些扩展教程的想法,您可能希望进行探索。
-
梯度下降/梯度上升
-
Hessian 矩阵
-
雅可比矩阵
如果您探索了这些扩展内容,我很想知道。请在下面的评论中分享您的发现。
进一步阅读
本节提供了有关该主题的更多资源,如果您希望深入了解。
教程
资源
- 关于机器学习的微积分书籍的额外资源
书籍
-
托马斯微积分,第 14 版,2017 年。(基于乔治·B·托马斯的原著,由乔尔·哈斯、克里斯托弗·海尔和莫里斯·韦尔修订)
-
微积分,第 3 版,2017 年。(吉尔伯特·斯特朗)
-
微积分,第 8 版,2015 年。(詹姆斯·斯图尔特)
总结
在本教程中,你了解了什么是多变量函数、偏导数和梯度向量。具体来说,你学到了:
-
多变量函数
-
多变量函数的轮廓
-
多变量函数的水平集
-
-
多变量函数的偏导数
-
梯度向量及其意义
你有任何问题吗?
在下面的评论中提问,我会尽力回答。