AI 技术讲座精选:数学不好,也可以学习人工智能(六)——巧用数学符号

【AI100 导读】欢迎阅读《数学不好,也可以学好人工智能》系列的第六篇文章。如果你错过了之前的五部分,一定记得把它们找出来看一下!这篇文章作者会帮你学习数学符号,打下坚实的基础,将所有符号与现实结合在一起,并且用我们已知的事物作类比,帮助理解。

如果你阅读过本系列的前五篇文章,你一定知道学习人工智能未必需要具备太多的数学方面的知识,你可以立刻全身心地投入到实际的教程和书籍中。

然而,还是有很多学习数学符号的理由的。

也许你只是想拓展一下自己并学习新的技能?在自己的舒适区域外学些东西是保持头脑清晰的好方法。

或者你是想先阅读几篇关于 arXiv 的文章?又或许,你甚至也在想着发表一篇论文、找到一个令人兴奋的新思想,而不是等着其他人把这个观点发表在 Github 上。

要做到这一点,你需要知道如何读懂那些有趣的小符号。

也许学数学符号的最大理由是:它能够让你以简洁的方式表达复杂的想法。

如果没有数学符号,我们就需要用很多多余的页面来解释每个方程的含义。

即使拥有所有资源,面对一连串的陌生字符仍然会让我们充满压力。

不要害怕,我会帮助你。

我会告诉你,学这些符号并不像你想的那么难。但是有些东西会阻碍你前进。

首先,如果你跟我一样,像个孩子一样讨厌数学。我发现了主要原因是我的老师从来没想过回答最重要的问题。

为什么?

为什么我要做这个?它是怎样应用到我的生活中的?

他们只是在黑板上写了一堆方程式,然后让我记住它们。这对我来说并不奏效,我打赌它也不适合你。

好消息是,如果你对 AI 这个令人兴奋的领域感兴趣,这会是一个很好的答案。

现在你有理由学习它并将其应用到现实世界的问题中。原因是因为你想写一个更好的图像识别程序或界面来理解自然语言!又或许你是想有一天能写出自己的算法?

阻碍你的第二件事就是存在太多令人讨厌的解释。事实上,大部分人不擅长解释。然而又很多时候,人们要用更多的数学术语来定义当下的数学术语。这就产生了一种无限循环的误解,就像用“大象像大象”来定义大象这个词一样。很好!现在我明白了!不能这样!

通过这篇文章我会帮你打下坚实的基础,将所有符号与现实结合在一起,并且用我们已知的事物作类比,帮助理解。

我无法在短短一篇文章中向大家介绍所有的符号,所以你也可以学习一下下面这篇简洁的数学符号指南:Mathematical Notation: A Guide for Engineers and Scientists,作者是Edward R.Scheinerman。(这本书是后来才被我添加到第一篇文章《数学不好,也可以学好人工智能》里的,但是如今却成了我最常用的书籍之一,书里面到处都是标注和折页。随着我对数学学科的了解越来越多,我发现自己曾一次又一次地翻看过那本书。)

让我们开始吧!

首先,算法是什么?

它真的只是解决某个特定问题的一系列步骤。无论知道与否,你一直都在使用着算法。

如果你需要给孩子准备午餐,送他们上学,上班前干洗衣服,你已经下意识的概述了从厨房到办公室的一系列步骤。这就是算法。如果老板给你六个紧急任务,你必须找出最好的办法在一天结束前去完成它们,你可能会选择先做完一件事再去做另一件事,也有可能选择同时做两件或者三件事。这就是算法。

为什么那么重要?因为方程式也是解决问题的一系列步骤。

我们先从一些简单符号说起,然后再建立一些方程式。

数学就是事物转变的过程。既有输入也有输出。我们将某些东西插入到方程变量中,而后循环访问步骤并获得输出。电脑也是一样的工作原理。现在神经网络背后大部分不可思议的成果均来自以下三个数学分支:

  • 线性代数
  • 集合论
  • 微积分

什么是集?它是事物的集合,通常用大括号或方括号扩起来。(数学符号并不总是描述事物的最佳符号):

还记得我们在第四部分看过的那篇与张量有关的文章(AI 技术讲座精选:数学不好,也可以学习人工智能(四)——图解张量)吗?那是一个集合。

一个集合通常由大写字母变量表示,如 ABV 或者 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等)。

你可以在 Math is Fun(http://www.mathsisfun.com/sets/number-types.html)这个网站上看到所有主要的保留字母的一个列表。

无论是大的集合还是小的子集,都可以包含在更大的集合中,如:

这种情况下,我们会说 Z(整数)是 R(实数)的子集

我们可以这样写:

  • A 是(包含在)B 中的一个子集:
  • 相反,B 是(或包含)A 的一个超集:

现在,为什么我会关心 B 集合是否将 A 集合完全包含在内了呢?这个问题很好。

设想一下,一个集合包含所有住在美国的人,包括他们的年龄、地址等等。现在设想另一个集合,这个集合包含所有心脏病发病率较高的人。这两个集合的交集可以告诉我们,这个国家的什么地方有更多的心脏病问题。

每个集合里面都含有元素。什么是元素?元素是相对较大的集合中的其中一部分。我们再来看下张量。

我们用小的斜体变量(如 x)表示集合的元素。用一个奇怪的像 E 的符号(但不是 E)来表示元素是集合的一部分。我们可以这样写:

它表示 x 是集合 A 的一个元素。

我们也可以这说,x 不是 A 的元素,表示如下:

这些符号理解的越好,你就越容易弄懂字符串的意思。当你看到上面的内容时,你可以说“x 不是集合 A 的元素”。如果能更好的表达你在阅读的内容,你的理解能力也会有所提升。

我们知道,列举出一个集合的所有元素是不切实际的,所以我们可以用特殊的方式表达其中一系列的元素。因此我们可以说,每次都会增加一系列的数字。我们会这样表示:

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 插入到表达式中。最后,该系列停在顶部的数字。我们来看个例子:

如果你是程序员,你可能认为这是一个循环!让我们在 Python 中为这个方程式创建一个小功能:

def sum_x_range(x):

j = 1

output = [] # creates an empty list

for k in range(0,5): # starts a for loop z = x**j # raises x to the power of j j = j + 1 # raises j by 1 until it hits n which is 5 output.append[z] # append the output to a list

return sum(output) # sum all the numbers in the list

print (sum_x_range(2)) # call the function with input 2 for x

原谅我是个可怕的 Python 人,但是此处我要的是清晰明确,而不是简洁性。

**符号意味着去提高 j 的值。该函数取变量 x,我将 x 的值设为2。然后它从0经过1、2、3、4一直循环到5,随后将这些数字附加到表中,最后在该表上运行一个总和来得到答案:62。

输入矩阵

我们将 2D 张量称为矩阵。它基本上是一个电子表格,包含行和列。首先,你需要知道如何引用矩阵的不同部分。这张图是为你量身定做的:

开始我们有个矩阵 A,它用大写字母表示

该矩阵有 m 行 n 列,因此我们称它是 m*n 矩阵,用小的斜体字母表示。

行是水平的,从左到右。(不要被尖头迷惑,它指向 i,j 不是行的方向,再次说明行是水平!)

列是竖直的,从上到下。

这种情况下,我们有 4 x5 的矩阵(又称 2D 张量),因为我们有4行和5列。

每个框都是矩阵的一个元素。元素的位置由小写斜体 a 以及行指示符 i 和列指示符 j 表示。

所以4排在顶排,第2列由(a1,2)表示。第二行是3,第一列是(a2,1)。

我们没有时间处理这里的所有类型的矩阵数学,但是让我们先看一下其中的一种类型,你可以尝试一下。

点产品是神经网络中很常见的操作,所以我们来看看操作中的点。

点,点,点

向量点积可以表示我们将一个矩阵与另一个矩阵相乘的过程。

向量点积的操作过程由点来表示。

a. b

这是两个标量的向量点积(即单个数字),它们是矩阵中的单个元素。

我们将相同大小和形状的矩阵之间的匹配元素进行相乘,然后再相加。

想看一下将一个矢量乘以另一个矢量的公式吗?

深吸气。你已经快要学会了!

现在我们已经知道这些符号了。

这是乘以两个等长向量的公式。记住第4部分《数学不好,也可以学习人工智能》(AI 技术讲座精选:数学不好,也可以学习人工智能(四)——图解张量)中用猫证明张量的部分,矢量是数字的单行或单列。每行或每列是矩阵中的独立向量。

基本上我们从矩阵 A 的元素1开始,并将其乘以矩阵 B 中的元素1。然后转移到用元素 A2 乘以 B2。将所有元素都按照这样的规律进行操作,直到 n 结束,然后把它们加起来(又称加在一起)。

我们来看一个操作中的视觉表征。

现在我们将这些数字插入到公式中:

这是输出矩阵中下一个数字的另一个例子。

做完所有的数学后,这就是最后的矩阵:

这些例子来自令人惊异的Math is Fun 网站(http://www.mathsisfun.com/algebra/matrix-multiplying.html)。这个网站有很多很好的例子。到目前为止,我还没找到比这个网站更好的网站。

我加入了公式以帮助你对阅读公式的理解,因为他们倾向于跳过这些,以免混淆。但是你不必再困惑了。

获取学习策略

我想在文章的最后介绍一些实用的策略,以帮助你快速的学习。

我很自信,喜欢自己教自己东西。当我有时间放松下来并进行自我探索时,我会学的更好。我最后一篇文章就是一个很好的例子,但是有些地方我必须要纠正一下。

但是这里的错误:它们是一件好事!

错误是这个过程的一部分。我们不能摆脱错误,所以只能接受。如果你在犯错误,说明你在学习。如果你没有犯错,说明你没在学习!就这么简单。

工程领域有个老笑话。

如果你想得到正确答案,不要寻求帮助。而是发布错误的答案,看看有多少工程师来纠正你。

工程师是不会让错误答案站住脚的!这是个老把戏,但是很奏效。

同样重要的是要注意,或许你不能阅读 Mathematical Notation book(http://amzn.to/2mVgWep),除非你已经阅读过我在《数学不好,也可以学习人工智能》(AI技术讲座精选:数学不好,也可以学习人工智能)中介绍的那些书籍,或者如果你有微积分、代数和几何的背景。你需要术语背景来帮助理解。但是,我建议无论如何都要阅读这本书,因为在你浏览其它书籍时,可以将它作为参考指南。

我也建议你采用缓慢一点的办法,因为这里没有比赛。你不会得到半点的分数。如果你跳过一个不明白的术语,最终还得回头看。

所以停下来,花些时间查看一下你不明白的每一个符号。这是一个缓慢而且有时令人沮丧的做法。但是随着你积累了越来越多的知识,你会学的越来越快。你会发现自己理解的术语是你从来没想过可以理解的。

此外,要知道从多个地方来查找东西。有这样一个事实,大部分人都不是好老师,他们可能理解材料,但这不意味着他们也能让其他人理解。教学是一门艺术。这就是为什么当你开始时,Math is Fun 这个网站绝对优于维基百科。维基百科是“正确的”,但很枯燥,难以理解,有时令人十分困惑。当你对此了解更多时,甚至或许你才可以对维基百科理解的更好。

记住所有的这些东西,在你的 AI 学习经历中不能误入歧途。

请务必查看本系列的其余部分。

AI技术讲座精选:数学不好,也可以学习人工智能

AI 技术讲座精选: 数学不好,也可以学习人工智能(二)

AI 技术讲座精选:数学不好,也可以学习人工智能(三)

AI 技术讲座精选:数学不好,也可以学习人工智能(四)——图解张量

AI 技术讲座精选:数学不好,也可以学好人工智能(五)——深度学习和卷积神经网络

本文作者 Daniel Jeffries 是一位作家、工程师和企业家,研究领域涵盖了从 Linux 到虚拟化和容器的各种技术。

本文由 AI100 编译,转载需得到本公众号同意。


编译:AI100

原文链接:https://hackernoon.com/learning-ai-if-you-suck-at-math-p6-math-notation-made-easy-1277d76a1fe5


原文发布于微信公众号 - AI科技大本营(rgznai100)

原文发表时间:2017-03-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏海天一树

小朋友学算法(15):计算年份的天干地支

十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸; 十二地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。

813
来自专栏牛客网

微软阿里实习面经(offer)微软三面阿里面试(6面)

8160
来自专栏趣学算法

ACM竞赛学习指南(算法工程师成长计划)

5611
来自专栏北京马哥教育

高阶实战 | 如何用Python检测伪造的视频

译者注:本文以一段自打24小时耳光的视频为例子,介绍了如何利用均值哈希算法来检查重复视频帧。以下是译文。 有人在网上上传了一段视频,他打了自己24个小时的耳光。...

3265
来自专栏C语言及其他语言

【每日一题】问题 1429[蓝桥杯][历届试题]兰顿蚂蚁

题目描述 ? 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。 平面上的正方形格子被填上黑色或白色。在其中一格正方形内有...

2846
来自专栏数据结构与算法

博弈论进阶之SG函数

SG函数 个人理解:SG函数是人们在研究博弈论的道路上迈出的重要一步,它把许多杂乱无章的博弈游戏通过某种规则结合在了一起,使得一类普遍的博弈问题得到了解决。 从...

3885
来自专栏数据小魔方

用ggplot轻松搞定太极图

ggplot的图层语法给了使用者无限种可能,再配合上自己对于数据操纵的灵活把控,真的不知道ggplot可以给我们呈现出什么的惊艳作品。 这不,清明假期无聊的我,...

2812
来自专栏数据小魔方

函数|多条件求和——SUMPRODUCT函数

今天跟大家分享一个在多条件求和方面特别厉害的函数——SUMPRODUCT。 ▼ 也许大家对sum函数都很熟悉,知道它强大的求和功能。单数如果遇到多条件的求和场景...

2844
来自专栏灯塔大数据

每周学点大数据 | No.3算法设计与分析理论

No.3期 算法设计与分析理论 在计算机科学中,研究算法的设计和评价算法“好坏”的分支,称为算法设计与分析理论。它研究如何去设计解决问题的算法,同时给出一个对...

29710
来自专栏奇点大数据

遗传算法(2)

在遗传算法中我们再举一个求极大值的例子。这种例子也是比较多见的,只要我们把一些数据关系描述成函数之后就会有一些求极大值或者极小值的问题。 其实极大值和极小值是一...

33312

扫码关注云+社区