原作者 | Daniel Jeffries

编译 | Molly 寒小阳

自学AI的过程中,我们非常须要理解这些数学符号。
它可以让你用一种非常简洁的办法来表达一个繁芜的想法。

数学菜鸟的AI进修攻略|数学符号轻松入门

你是否跟我一样,自幼恨透数学。

现在,我终于创造了我对数学绝缘的最紧张缘故原由:我的老师从来不去回答最主要的问题:我为什么要学数学?学数学有什么用?

他们只是在黑板上写下一大堆方程,并让我记下来。

现在,如果你对AI这个激动民气的领域感兴趣,那么它将是回答这个问题最好的答案!
那便是,我想要写一个更好的图像识别程序,或者一个可以理解自然措辞的交互界面!
大概乃至想有一天写出自己的算法?

如果你想从阅读 arXiv(https://arxiv.org/list/cs.AI/recent) 上的几篇论文开启自学AI之路?那么首先,你须要知道若何理解这些故意思的数学小符号。

大概,学习数学符号最主要的缘故原由,便是它可以让你用一种非常简洁的办法来表达一个繁芜的想法。

没有它,阐明每个方程,都须要花上很多页的篇幅。

而这篇文章要见告你的是,学习这些符号不像你想象的那么难。

让很多人对数学失落去信息的第二个缘故原由是,很多阐明写得太恐怖了。

事实上,大部分人并不善于阐明东西。
人们一样平常要定义一个数学术语,会利用更多的数学术语。
这就造成了不理解的一个无限循环。
好比定义“大象”这个词,说,“大象便是大象一类的东西。

这篇文章会将数学符号和现实天下关联起来,并利用你已知的东西来类比。
这样你可以脚踏实地地学习。

但是,这篇文章无法覆盖到你读一篇论文须要的所有数学符号。
以是你会须要一本超级凝练的数学符号指南,Edward R. Scheinerman的Mathematical Notation: A Guide for Engineers and Scientists 。
(它是我数学菜鸟的AI学习攻略 文章的一个后继补充,但它是我利用最频繁的一本书。
它现在满是高亮和折页。
随着数学知识的不断扩充,我一遍又一各处转头翻阅这本书。

让我们开始吧。

首先,什么是算法?

它真的只是办理一个特定的问题的一系列步骤。
无论你是否意识到,你都在利用算法。
如果你须要给孩子们打包午饭,送他们上学,取走干洗的衣服,然后去上班,你已经无意识地布局了一系列步骤,从厨房到办公室。
这便是一个算法。

如果你的老板同时给你安排了六项事情,你须要找到在一天内完成它们的最好的办法。
你须要选择哪些事先做,哪些事后做,哪些事一起做等等。
这便是一个算法。

这个观点为什么很主要呢?由于一个方程也不过是办理问题的一系列步骤而已。

我们从一些大略的符号开始,写一些方程。
数学便是对事物的翻译。
我们有一个输入和一个输出。
我们将一些东西代入到我们方程的变量中,遍历所有的步骤,然后得到输出。
打算机也是同样的道理。

目前,神经网络背后的大部分黑邪术来自于数学的三个分支:

线性代数

集论

微积分

凑集是什么?它便是一堆东西。
一样平常利用花括号{ }或方括号括起来。
(搞数学的家伙对所有东西都很难在最佳符号表达上达成同等。

一个凑集

还记得我们在第4部分看到的张量?那便是一个凑集。

一个凑集常日由大写字母表示,例如A、B、V或W。
只要你前后同等,字母本身是什么并不主要。

但是,一些特定的大写字母和符号被保留下来,用来表示主要的、常用的数字集,例如:

∅ = 空集(凑集里什么都没有)。
这个符号是一个希腊字母,“phi”。
数学里常常会用到希腊字母。
此处可以查阅大小写希腊字母的写法(https://en.wikipedia.org/wiki/Greek_letters_used_in_mathematics,_science,_and_engineering)。

R =所有实数。
(险些所有存在的数都是实数,包括整数、分数、超越数如Pi (π)(3.14159265…)。
但是不包括虚数,一种为了求无解方程的解而布局的数,也不包括无穷)

Z =所有整数。
(除了分数之外的数字,比如-1,-2, 0, 1, 2, 3)

大部分保留字母表可以在意见意义数学(http://www.mathsisfun.com/sets/number-types.html)里查到。

所有这些都是凑集,个中一部分是子集,也便是他们被更大的一个凑集完备包含,就像这样:

去查查看Q和N是什么意思吧!

在这个例子中,我们可以说,Z(整数集)是R(实数集)的子集。

我们可以这么写:

A是B的子集(A包含于B):相反的,B是A的超集(B包含A)

我为什么要在乎一个凑集B是不是包含了A的全部内容呢?好问题。

假如有一个凑集,包括了所有生活在美国的人,有他们的年事、地址等等信息。
现在假设有另一个凑集,包括了心脏病发病率更高的人。
那么这两个凑集重合的地方,可以见告我们哪个地区的人更可能患有心脏病。

每个凑集里都有元素。
元素是什么?便是大凑集的一部分。
我们再看一下我们的张量。

我们将凑集中的元素记作小写斜体字母,例如x.我们用一个看起来很奇怪的E一样的符号(实在不是E),来表示一个元素是凑集的一部分。
我们可以这么写:

这表示x是凑集A中的一个元素。

我们也可以说x不是凑集A中的一个元素:

你越能理解这些符号,你就越能在头脑中通过这些字符串来沟通。
当你看到上面这个,你可以说,“x不是凑集A中的元素。
”你越能明确地讲出符号的含义,你就越能理解它们。

当然,写出一个凑集的所有元素是不现实的,我们可以利用一种分外的办法来写出一个元素的序列。
如果我们有一个数字序列,以1为步长递增。
我们可以这样写:

x = {1,2,3,4…n}

这些点表示这个序列到n结束,n代表“序列的末端”。
以是如果n = 10,这个凑集包括从1到10的数字范围。
如果n = 100,这个凑集包括从1到100的数字范围。

猖獗的方程

当我们将凑集转化为线性代数的时候,它们就十分故意思了。
你已经认识了一些代数符号比如加号+,减号-。
现在我们看两个新的符号和一个方程。
首先是符号:

Σ = 一系列数字的和

Π = 一系列数字的积

和是什么?是序列中所有数字做加法。
比如我们有一个向量集A(记住向量是一行或一列数字)包括: {1,2,3,4,5}.

序列的和为:

1 + 2 + 3 + 4 + 5 = 15

积是所有数字做乘法。
以是对付同样的凑集A我们有:

1 x 2 x 3 x 4 x 5 =120

我们可以将序列的和精简地写作:

那么我们若何理解它呢?大略,看这个。

我们从底部的j开始,j是一个变量。
然后将j代入到右边的表达式中。
末了,我们将序列的结束数字写在顶部。
看一个例子:

如果你是一个程序员,你会急速认出这是一个循环!

我们给这个方程写一个Python函数:

def sum_x_range(x):

j = 1

output = # 创建一个空list

for k in range(0,5): # 开始循环

z = xj # 打算x的j次方

j = j + 1 # j增加1,知道到达n,也便是5

output.append[z] # 将z添加到list中 return sum(output) # 返回list中所有数字的和

print (sum_x_range(2)) # 令x=2,调用方程

体谅我糟糕的Python风格,但是我希望代码清晰,而不是简洁。

符号表示x的j次幂。
方程输入参数x,我令它为2。
从0到5循环,取x的1,2,3,4, 5次幂,然后将这些数字添加到一个列表中。
它得出列表数字之和为:62。

走进矩阵

记住,2D张量也被称为矩阵。
它基本上是一个表格,有行和列。
首先,你须要知道如何引用矩阵的不同部分。
这张图讲得很清楚:

首先我们有矩阵A。
用大写字母表示。

矩阵有m行和n列,以是我们叫它m X n 矩阵,用小写斜体字母表示。

行是水平的,也便是从左到右。
(不要被图中箭头迷惑,箭头指向的i和j不是行的方向,行是水平的!

列是垂直的,也便是从上到下。

在这个例子中我们有一个4 x 5 矩阵,(也便是2D张量),由于我们有4行5列。

每个方格是矩阵中的一个元素。
元素的位置利用小写斜体a和行序号i和列序号j来表示。

以是第1行第2列的4,用a1,2表示。
第2行第1列的3,用a2,1表示。

我们不会讲解所有的矩阵数学运算,我们选择个中一种来小试牛刀。

点乘在神经网络中是一种非常常用的运算,以是一起看看它。

点,点,点

点乘是我们用一个矩阵乘以另一个矩阵的方法。

点乘的符号表示,你该当猜到了,是一个点。

a . b

这是两个标量(也便是单独的数)的点乘。
标量也是我们的矩阵里的独立的元素。

我们将同样大小和形状的矩阵对应的元素相乘,再把所有的乘积作和。

那么一个向量和另一个向量乘积的公式是什么样的呢?

深吸一口气。
你成功了!

我们现在认识了所有的符号。

这是两个等长向量的乘积公式。
记住在数学菜鸟的AI学习攻略第四部分-张量表示(有猫) 中讲到,一个向量便是一行或者一列数字。
我们的矩阵的每一行或者每一列都是一个向量。

首先我们用矩阵A的第一个元素乘以矩阵B的第一个元素。
然后我们用元素A2 乘以元素B2.我们对付每一个元素做相同的操作,直到达到末端,“n”。
然后对它们作和。

让我们看一下这个操作的图示。

现在我们可以把这些数字代入我们的公式。

这里是输出矩阵下一个数字的例子

这是我们处理完所有运算得到的终极结果:

这些例子来自于神奇的意见意义数学网站(Math is Fun website)。
这个网站里有大量超赞的例子,完备无法超越。

我增加了一些公式,以助于你的理解。
由于他们一样平常都会跳过这些,由于一样平常这些步骤并不会令人感到困惑。
但是你现在再也不会困惑了。

胜在学习策略

我想用一些可以帮你快速学习的策略来结束这篇文章。

我是一个自学者,也便是我一样平常自己给自己讲解。
当我可以放慢脚步,可以自己探索时,我可以学得更好。
我会犯一些缺点。
我上一篇文章便是一个很好的例子,我不得不改动一部分。
但是缺点也是一件好事!

缺点是过程中的一部分。
你没有办法避免缺点,只能拥抱它。
你犯错了,你会进步。
没有犯错,就没有进步。
便是这么大略。

工程界有一个老段子。

如果你想知道精确答案,不用请人帮忙。
只要将缺点答案发出来,你就可以看看多少工程师跳出来示正你!

工程师绝不许可缺点答案存在!

这是一个老段子,但是常常很管用。

另一件主要的事情是,如果你没有读我在数学菜鸟的AI攻略的一部分推举的文章的话,或者你没有微积分、代数和几何背景的话,你可能读不了数学符号书(Mathematical Notation book) 。
你须要懂得一个术语的背景知识。
但是我建议你买一本,它可以在你读其他书的时候,作为一个参考指南。

其余,建议放慢脚步。
这又不是比赛!
半途而废即是没有分。
如果你跳过了一些你不懂的术语,你将来还是不得不转头来看。

以是停下来,花一点韶光搞明白所有你不懂的符号。
这很缓慢,乃至令人沮丧。
但是当你建立越来越多的知识体系,你会越来越快。
你会创造你已经理解了一些术语,而此前你从未想象自己可以理解它。

其余,你可能须要从多个地方来查询。
须要面对的事实是,大部分人都不是好老师。
他们可能理解了一篇材料,但是并不虞味着他们可以给其他人讲清楚。
传授教化是一门艺术。
这便是为什么意见意义数学网站比维基百科好。
维基百科确实很“精确”,但是也很呆板,有时候还令人费解。
等你学到更多的时候,大概你可以将维基百科改得更好。

将这些忠言记在心里,你的AI学习之旅就不会误入歧途!