在阅读机器学习方法的描述时,你无法避免数学符号。
通常,一个方程式中的一个术语或一个符号片段就足以让你完全无法理解整个过程。这可能会非常令人沮丧,尤其是对于来自开发领域的机器学习初学者。
如果你了解一些基本的数学符号领域和一些技巧来攻克论文和书籍中对机器学习方法的描述,你就能取得很大进展。
在本教程中,你将了解在阅读机器学习技术描述时可能遇到的基础数学符号。
完成本教程后,您将了解:
- 算术符号,包括乘法、指数、根号和对数的变体。
- 序列和集合的符号,包括索引、求和和集合成员关系。
- 如果你在数学符号上遇到困难,可以使用5种技巧来寻求帮助。
用我的新书《机器学习线性代数》快速启动你的项目,书中包含分步教程以及所有示例的Python源代码文件。
让我们开始吧。
- 2018年5月更新:为一些符号添加了图片,使解释更清晰。

机器学习中的数学符号基础
照片由 Christian Collins 拍摄,保留部分权利。
教程概述
本教程分为7个部分;它们是:
- 数学符号带来的挫败感
- 算术符号
- 希腊字母
- 序列符号
- 集合符号
- 其他符号
- 获取更多帮助
你认为机器学习还需要哪些我遗漏的基础数学符号领域吗?
在下面的评论中告诉我。
在机器学习线性代数方面需要帮助吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
数学符号带来的挫败感
在阅读机器学习算法时,你会遇到数学符号。
例如,符号可用于:
- 描述一个算法。
- 描述数据准备过程。
- 描述结果。
- 描述一个测试框架。
- 描述其影响。
这些描述可能出现在研究论文、教科书、博客文章以及其他地方。
通常,术语会有明确的定义,但也存在一些你可能不熟悉的数学符号规范。
只要有一个术语或一个方程式你不理解,你对整个方法的理解就会中断。我自己也多次遇到这个问题,这真的非常令人沮丧!
在本教程中,我们将回顾一些基本的数学符号,这些符号将在你阅读机器学习方法的描述时对你有所帮助。
算术符号
在这一部分,我们将介绍一些不太明显的算术基础符号,以及一些你可能从学校毕业后就忘记的概念。
简单算术
基本算术的符号和你平时书写的方式一样。例如:
- 加法:1 + 1 = 2
- 减法:2 – 1 = 1
- 乘法:2 x 2 = 4
- 除法:2 / 2 = 1
大多数数学运算都有一个对应的逆运算;例如,减法是加法的逆运算,除法是乘法的逆运算。
代数
我们通常希望抽象地描述运算,以将其与具体数据或具体实现分离开来。
因此,我们大量使用代数:即用大写和/或小写字母或单词来表示数学符号中的术语或概念。使用希腊字母也很常见。
每个数学子领域都可能有保留字母:即那些总是表示相同含义的术语或字母。尽管如此,代数术语应作为描述的一部分进行定义,如果没有定义,那可能只是描述不佳,而不是你的问题。
乘法符号
乘法是一个常见的符号,并有几种简写形式。
通常用一个小“x”或一个星号“*”来表示乘法:
1 2 |
c = a x b c = a * b |
你可能会看到使用点符号;例如:
1 |
c = a . b |
这与上面的写法是相同的。
1 |
c = a * b |
另外,你可能会看到在已定义的术语之间没有运算符号也没有空格;例如:
1 |
c = ab |
这同样是相同的意思。
指数和平方根
指数是一个数自乘的幂次。
符号写作原始数字(底数),其右上角标有第二个数字(指数);例如:
1 |
2^3 |
这将被计算为2乘以自身3次,或称为立方:
1 |
2 x 2 x 2 = 8 |
一个数的2次幂被称为它的平方。
1 |
2^2 = 2 x 2 = 4 |
一个数的平方可以通过计算平方根来逆转。这通过一个数上方带一个勾号的符号来表示,为了简单起见,我在这里将使用“sqrt()”函数。
1 |
sqrt(4) = 2 |
在这里,我们知道结果和指数,我们希望找到底数。
实际上,开根运算可以用来逆转任何指数运算,只是默认的平方根假定指数为2,由平方根勾号前的下标2表示。
例如,我们可以通过取立方根来逆转一个数的立方(注意,这里的3不是乘法,而是根号前的符号):
1 2 |
2^3 = 8 3 sqrt(8) = 2 |
对数和e
当我们将10提升到一个整数指数时,我们通常称之为数量级。
1 |
10^2 = 10 x 10 或 100 |
另一种逆转这个运算的方法是计算结果100以10为底的对数;在符号上这写作log10()。
1 |
log10(100) = 2 |
在这里,我们知道结果和底数,希望找到指数。
这使我们能够非常容易地在数量级之间移动。鉴于计算机中使用二进制算术,以2为底的对数也常被使用。例如:
1 2 |
2^6 = 64 log2(64) = 6 |
另一个常用的对数是假定自然底数e。e是一个保留符号,是一个特殊的数字或常数,称为欧拉数(发音为“oy-ler”),它指的是一个具有几乎无限精度的值。
1 |
e = 2.71828... |
将e提升到某个幂次被称为自然指数函数:
1 |
e^2 = 7.38905... |
它可以通过自然对数来逆转,记作ln():
1 |
ln(7.38905...) = 2 |
在不深入细节的情况下,自然指数和自然对数在整个数学中被证明是有用的,可以抽象地描述某些系统的持续增长,例如像复利这样呈指数增长的系统。
希腊字母
希腊字母在整个数学符号中被用于变量、常数、函数等等。
例如,在统计学中,我们用小写希腊字母mu(μ)表示平均值,用小写希腊字母sigma(σ)表示标准差。在线性回归中,我们用小写字母beta(β)表示系数。等等。
了解所有大写和小写希腊字母以及如何发音是很有用的。
当我还是研究生时,我打印了希腊字母表并把它贴在我的电脑显示器上,以便我能记住它。一个很有用的小技巧!
下面是完整的希腊字母表。

希腊字母表,摘自维基百科
维基百科上题为“在数学、科学和工程中使用的希腊字母”的页面也是一个有用的指南,因为它列出了每个希腊字母在不同数学和科学子领域中的常见用法。
序列符号
机器学习符号通常描述对一个序列的操作。
序列可以是数据数组或术语列表。
索引
阅读序列符号的关键在于序列中元素的索引表示法。
通常,符号会指定序列的开始和结束,例如1到n,其中n是序列的范围或长度。
序列中的项目通过一个变量如i、j、k作为下标进行索引。这就像数组的表示法。
例如,a_i 是序列 a 的第 i 个元素。
如果序列是二维的,可能会使用两个索引;例如:
b_{i,j} 是序列 b 的第 i,j 个元素。
序列运算
数学运算可以在一个序列上执行。
有两种运算在序列上执行得非常频繁,以至于它们有自己的简写:求和与求积。
序列求和
序列的求和用大写希腊字母sigma (Σ) 表示。它通过在sigma下方指定变量和求和的起始点(例如 i = 1),在sigma上方指定求和的结束索引(例如 n)来表示。
1 |
Σ (i=1 到 n) a_i |
这是序列a从元素1到元素n的总和。
序列乘积
序列的乘积用大写希腊字母pi (Π) 表示。它的表示方式与序列求和相同,运算的开始和结束分别在字母的下方和上方。
1 |
Π (i=1 到 n) a_i |
这是序列a从元素1到元素n的乘积。
集合符号
集合是一组唯一的项目。
在机器学习中定义术语时,我们可能会看到集合符号的使用。
数字集合
你可能看到的一个常见集合是数字集合,比如一个术语被定义为在整数集或实数集内。
你可能看到的一些常见数字集合包括:
- 所有自然数的集合:N
- 所有整数的集合:Z
- 所有实数的集合:R
还有其他集合;请参阅维基百科上的特殊集合。
在定义术语时,我们经常谈论实数值或实数,而不是浮点值,浮点值实际上是为计算机中的运算而创造的离散表示。
集合成员关系
在术语定义中,看到集合成员关系是很常见的。
集合成员关系用一个看起来像大写字母“E”的符号(∈)表示。
1 |
a ∈ R |
这意味着a被定义为集合R(即实数集合)的一个成员。
还有许多集合运算;两种常见的集合运算包括:
- 并集,或聚合:A U B
- 交集,或重叠:A ∩ B
其他符号
你可能还会遇到其他符号。
我试着在这一部分列出其中一些。
通常的做法是先在抽象层面定义一个方法,然后用具体的符号再次定义其实现。
例如,如果我们正在估计一个变量 x,我们可能会用一个修饰 x 的符号来表示它;例如:
相同的符号在不同的上下文中可能有不同的含义,比如在不同的对象或数学子领域中使用。例如,一个常见的混淆点是 |x|,根据上下文,它可以表示:
- |x|: x 的绝对值或正值。
- |x|: 向量 x 的长度。
- |x|: 集合 x 的基数。
本教程只涵盖了数学符号的基础知识。有些数学分支与机器学习更为相关,应该更详细地学习。它们是:
或许还有一点多元分析和信息论。
你认为这篇文章中是否遗漏了某些数学符号领域?
在下面的评论中告诉我。
获取数学符号帮助的5个技巧
本节列出了一些技巧,当你在机器学习中遇到数学符号困难时可以使用。
想想作者
你正在阅读的论文或书籍是人写的。
人会犯错,会遗漏,甚至会因为自己没有完全理解所写的内容而让事情变得混乱。
稍微放宽你正在阅读的符号的约束,思考作者的意图。他们想传达什么?
也许你甚至可以通过电子邮件、Twitter、Facebook、LinkedIn等方式联系作者,寻求澄清。记住,学者们希望别人理解和使用他们的工作(大多数情况下是这样)。
查阅维基百科
维基百科有符号列表,可以帮助你缩小你正在阅读的符号的含义或意图。
我推荐你从这两个地方开始:
用代码勾画
数学运算只是作用于数据的函数。
将你正在阅读的所有内容映射到带有变量、for循环等的伪代码中。
你可能想在进行过程中使用一种脚本语言,配合小数组的虚构数据,甚至是一个Excel电子表格。
随着你对技术的阅读和理解的加深,你对该技术的代码草图将变得更有意义,最终你会有一个可以玩味的迷你原型。
我以前不太看重这种方法,直到我看到一位学者用几行matlab代码和一些虚构数据勾画出一篇非常复杂的论文。这让我大吃一惊,因为我曾认为系统必须完整编码并使用“真实”数据集运行,唯一的选择就是获取原始代码和数据。我大错特错了。回想起来,那家伙真是个天才。
我现在一直使用这种方法,并用Python来勾画技术。
寻求替代方案
当我试图理解一项新技术时,我有一个诀窍。
我找到并阅读所有引用了我正在读的那篇关于新技术的论文的文献。
阅读其他学者对该技术的解读和重新解释,常常能澄清我对原始描述的误解。
不过并非总是如此。有时它会把水搅浑,引入误导性的解释或新的符号。但更多时候,它是有帮助的。在回头重读原始论文后,我常常能发现后续论文中实际上存在错误和对原始方法的误解。
发布问题
网上有些地方的人们很乐意向他人解释数学。真的!
考虑截取你正在努力理解的符号的屏幕截图,写下完整的参考文献或链接,然后将其和你感到困惑的地方发布到问答网站上。
两个很棒的起点是:
你有什么处理数学符号的技巧吗?
请在下面的评论中告诉我?
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
总结
在本教程中,您了解了在阅读机器学习技术描述时可能遇到的数学符号基础知识。
具体来说,你学到了:
- 算术符号,包括乘法、指数、根号和对数的变体。
- 序列和集合的符号,包括索引、求和和集合成员关系。
- 如果你在数学符号上遇到困难,可以使用5种技巧来寻求帮助。
你是否在为数学符号而苦恼?
这篇文章中的任何符号或技巧对你有帮助吗?
在下面的评论中告诉我。
这是一篇很棒的文章。我一直在努力理解方程式中使用的数学符号。知道我不是唯一一个遇到这种困难的人,并且您简化了它,让我松了一口气。感谢您写这篇文章。
谢谢,希望它有帮助。
感谢您为我们提供了我们找了5天的东西,这对于机器学习领域的新手来说确实很深入。
不客气。
很好的总结。
然而,请记住,在“乘法符号”部分,你关于所有符号都相等的讨论仅对标量成立。由于我们在机器学习中大量使用向量和矩阵,我们需要小心区分点积和叉积,它们毫不意外地使用了点符号和叉符号。
谢谢,Timothy。
您的文章对于理解机器学习中常用的基本数学符号非常有帮助。谢谢您,Jason Brownlee。
谢谢。
真是一篇很棒的文章!非常感谢您写这篇文章。这非常有帮助。
很高兴听到这个消息!
很棒的文章,我真希望在我开始上课前就发现了它!
谢谢你,Paul!
谢谢Jason的精彩概述 - 这确实帮助我把我正在学习的基础符号拼凑起来了。
谢谢,很高兴听到这个。
谢谢 Jason 先生,很棒的文章。不知道您怎么想,但用 3sqrt(x) 来表示 x 的立方根让我胃里不舒服,天哪,为什么会这样。
我知道这很糟糕,用latex会更清晰。
你有什么更好的方法用纯ascii码来表示它吗?
没错,在latex中更容易注意到区别。立方根在ascii(扩展)中是8731,在unicode中是221B(刚查过,可以用)。
太棒了!
我正在努力弄清楚一种我只能描述为“花体字母”的符号的含义——它们不是希腊字母,似乎也不仅仅是任意的变量——它们是大写字母,只是看起来是用不同的字体写的,并且有某种我无法弄清楚的含义。
背景是,我正在阅读一篇关于谷歌GNMT系统的概述,链接在这里 - https://arxiv.org/pdf/1609.08144.pdf - 在第8页的训练标准部分,有好几个这样的例子(例如,第一个符号中的D,第二个中的O,以及第三个双重求和下标中的Y)。我相当肯定花体D代表数据集,花体O可能代表输出,而我对Y完全没有头绪——而且我也很困惑它们在方程式中是如何应用的。如果您能提供任何帮助/指导/进一步的阅读材料,我将不胜感激——谢谢!
是的,D被定义为数据集,O是目标函数。
别担心,花上一周或几周时间来理解一篇论文是很常见的。我经常发现在许多情况下,阅读代码比读论文更清楚——如果提供了开源实现的话。
也许你可以找一些同样有兴趣剖析这篇论文的人一起研究。可以看看相关的subreddit,或者在Stack Exchange网络上看看有没有人提问相关问题。
谢谢提供的信息。总的来说,在机器学习方程式等中,撇号、帽子符号、波浪号等是如何使用的?y hat是预测值,但x预测y,那么x hat是什么?能举些撇号、波浪号的例子吗?
难题!
这真的要看情况。
坦白说,一篇论文/一本书可以采用任何它想要的符号,只要它在内部保持一致。
再次非常感谢您提供这些内容,先生。
不客气。
很棒的文章。这真的帮助我复习了那些在我学习机器学习时遇到的符号的含义。
谢谢,很高兴听到这个!
应该选取机器学习中常见的数学表述并加以解释。您提供的内容是正确的,但太基础了。
mark
谢谢你,Mark,感谢你的反馈!
非常感谢这篇文章。它现在已经成为我的起点,我计划从您的博客以及速成课程中学习所有必要的链接。