数学菜鸟的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 = x**j # 计算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)。这个网站里有大量超赞的例子,完全无法超越。
我增加了一些公式,以助于你的理解。因为他们一般都会跳过这些,因为一般这些步骤并不会令人感到困惑。但是你现在再也不会困惑了。
原文发布时间为:2017-04-05
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号
数学菜鸟的AI学习攻略 | 数学符号轻松入门相关推荐
- 数学菜鸟的AI学习攻略——数学符号轻松入门
[ 导读 ] 自学AI的过程中,我们非常需要理解这些数学符号.它可以让你用一种非常简洁的方式来表达一个复杂的想法. 你是否跟我一样,自幼恨透数学. 现在,我终于发现了我对数学绝缘的最主要原因:我的老师 ...
- VS Tools for AI全攻略(2)低配置虚拟机也能玩转深度学习,无需NC/NV系列
接着上文VS Tools for AI全攻略,我们来讨论如何使用Azure资源来训练我们的tensorflow项目.Azure云我个人用得很多,主要是因为微软爸爸批了150刀每月的额度,我可以愉快地玩 ...
- GoLang 学习攻略
2019独角兽企业重金招聘Python工程师标准>>> GoLang 学习攻略 Daemon_Shell 关注 2018.06.02 11:04 字数 1180 阅读 1432评论 ...
- 学习攻略|清华大学对外免费开放2000门课程
作者:Tom Hardy Date:2020-02-09 来源:学习攻略|清华大学对外免费开放2000门课程
- 2009.11网络工程师考试案例试题学习攻略(1)
2009.11网络工程师考试案例试题学习攻略(1) 源于在网络工程实践过程中对该领域的喜爱,2005年本人有幸顺利地通过了网络工程师的资格考试,后又顺利地通过了系统分析师的资格考试.之后开始了软考培训 ...
- 网络规划设计师学习攻略(2)
网络规划设计师学习攻略(2) 五.厚积薄发,突破考试难点之论文篇.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com: ...
- 传图识字java_Java:全面 清晰的 NIO 学习攻略
Java:全面 & 清晰的 NIO 学习攻略 发布时间:2018-11-19 09:19, 浏览次数:202 , 标签: Java NIO <>前言 * JDK 1.4后,Java ...
- Android 系统(189)---Android Handler:这是一份 全面、详细的Handler机制 学习攻略
Android Handler:这是一份 全面.详细的Handler机制 学习攻略 前言 在Android开发的多线程应用场景中,Handler机制十分常用 今天,我将献上一份 全面.详细的Handl ...
- 变换例题_小学语文学习攻略9:句式变换知识点概述+例题讲练
很多家长都会遇到这样的情况:孩子的语文考试卷发下来,作文上老师的评语或者做的记号上总会有几个是句意不通.在平常的交流中也是,支吾了半天也不能完整.通顺的表达自己的意思.这都是孩子在造句方面有障碍!孩子 ...
最新文章
- 106页的《Python进阶》中文版(附下载)!
- c语言已知斜率 求倾角,倾斜解的问题
- feign调用soap_Spring Cloud 组件 —— feign
- [云炬创业基础笔记]第二章创业者测试1
- SQL Server 的通用分页显示存储过程
- python里的符号区别_Python中的方括号和点符号有什么区别?
- java 中aop 博客园_Java 10.Spring--AOP编程
- STM32标准库与HAL库中的Mode和Pull设置
- LVS调度算法权威讲解——官方文档翻译
- 网站地图在线生成html,sitemap_网站地图_站点地图_在线生成_专注在线服务工具开发与同步部署 - sitemap 生成器...
- 大数据面试杀招——Hadoop高频考点,正在刷新你的认知!
- Linux中编译mdio命令,Linux 下smi/mdio总线通信
- latex中文小标题_latex定制标题样式
- 每日单词20110606
- pat 训练题 7-5 基友团 (25分) 暴力判团和最大团
- 台湾大学林轩田机器学习基石课程学习笔记4 -- Feasibility of Learning
- 关于“堆栈”的含义及理解
- 代码显示return的用法(c语言和java的比较和整合)
- 加油站收银软件提高油站运营管理效率?
- VoIP领域中常用的RFC文档
热门文章
- you-get安装 使用与介绍
- simulink 储能AGC二次调频,储能采用下垂控制,自适应控制,系统其他机组为水电机组和风电机组,储能出力受ACE变化改变。
- 色彩的基本原理——正色和负色
- scrapy rule follow的理解和应用
- 聊聊那些年的骚操作!!!
- C++学习笔记与回顾(构造函数、链表等)
- Unable to render this definition
- Wireshark3.4.8安装s7comm-plus插件
- 映射本地ip,实现远程访问教程
- eregi html 标签,dede让文章标题页显示路径为标题拼音.html