python常用数学符号_数学菜鸟的AI学习攻略-AI学习常用数学符号 - 老牛博客

[ 导读 ]自学AI的过程中,我们非常需要理解这些数学符号。它可以让你用一种非常简洁的方式来表达一个复杂的想法。

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

现在,我终于发现了我对数学绝缘的最主要原因:我的老师从来不去回答最重要的问题:我为什么要学数学?学数学有什么用?

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

现在,如果你对AI这个激动人心的领域感兴趣,那么它将是回答这个问题最好的答案!那就是,我想要写一个更好的图像识别程序,或者一个可以理解自然语言的交互界面!也许甚至想有一天写出自己的算法?

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

也许,学习数学符号最重要的原因,就是它可以让你用一种非常简洁的方式来表达一个复杂的想法。

没有它,解释每个方程,都需要花上很多页的篇幅。

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

让很多人对数学失去信息的第二个原因是,很多解释写得太可怕了。

事实上,大部分人并不擅长解释东西。人们一般要定义一个数学术语,会使用更多的数学术语。这就造成了不理解的一个无限循环。好比定义“大象”这个词,说,“大象就是大象一类的东西。”

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

但是,这篇文章无法覆盖到你读一篇论文需要的所有数学符号。所以你会需要一本超级凝练的数学符号指南,Edward R. Scheinerman的MathematicalNotation: 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 isFun website)。这个网站里有大量超赞的例子,完全无法超越。

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

胜在学习策略

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

我是一个自学者,也就是我一般自己给自己讲解。当我可以放慢脚步,可以自己探索时,我可以学得更好。我会犯一些错误。我上一篇文章就是一个很好的例子,我不得不修正一部分。但是错误也是一件好事!

错误是过程中的一部分。你没有办法避免错误,只能拥抱它。你犯错了,你会进步。没有犯错,就没有进步。就是这么简单。

工程界有一个老段子。

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

工程师绝不允许错误答案存在!

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

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

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

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

另外,你可能需要从多个地方来查询。需要面对的事实是,大部分人都不是好老师。他们可能理解了一篇材料,但是并不意味着他们可以给其他人讲清楚。教学是一门艺术。这就是为什么趣味数学网站比维基百科好。维基百科确实很“正确”,但是也很枯燥,有时候还令人费解。等你学到更多的时候,也许你可以将维基百科改得更好。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

输入法智能化发展历程

技术发展周期一般会持续十年的时间,我们现在已经进入移动互联网周期的早期阶段,这是过去的50 年来的第5 个发展周期:20世纪60 年代,大型机时代;20世纪70年代,小型机时代;20世纪80 年代&#xff…

线程类C++多线程框架(一)--------- new一下就启动一个线程

之前笔者几篇文章介绍了改线程类的文章. 关联文章的地址 几年前写过一个C的多线程框架,虽然写完了,但是人一懒做了一次说明以后就没影了,最近把代码整顿了一下,预备发到github上,在这里,再把这个框架总结一…

Linux下Gcc生成和使用静态库和动态库详解

参考文章:http://blog.chinaunix.net/uid-23592843-id-223539.html 一、基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于windows和linux的平台不同&…

python正则表达式试题_正则表达式练习题2

1、匹配一行文字中的所有开头的字母内容#codingutf-8import res"i love you not because of who you are,but because of who i am when i am with you"contentre.findall(r"\b\w",s)print contentc:\Python27\Scripts>python task_test.py[‘i‘,‘l‘…

Knowladge_网站学习_jQuery插件

几个参考的jquery插件网站 1. 240 多个jQuery 插件              http://www.cnblogs.com/Terrylee/archive/2007/12/09/the-ultimate-jquery-plugin-list.html 2. 1587款jQuery 插件开源软件            http://www.oschina.net/project/tag/273/jque…

C语言求斐波那契数列

一.递归算法 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int fib(int k) {if (k < 2)return 1;elsereturn fib(k - 1) fib(k - 2); } int main() {int n 0;int res 0;printf("求输入斐波那契数列的阶数");scanf("%d", &n);res…

CMFCRibbonStatusBar中添加图片按钮

今天遇到了问题&#xff0c;网上down的 Heres how it works: 1. Create aCMFCRibbonButtonsGroup that will hold the status icon and add it to CMFCRibbonStatusBar 2. Create a CMFCToolBarImagesobject and add status icons via AddIcon() . 3. Register theCMFCToolbarI…

nodejs中path的用法

在用nodejs进行开发的时候&#xff0c;常常要进行复杂的路径判断。对于我这种刚开始接触模块化开发的小白来说&#xff0c;实在是浪费很多宝贵的脑细胞&#xff08;找路径bug&#xff09;。 node中的path模块帮助我们方便的解决了路径设置问题。 首先将path模块引入 require(pa…

nginx $mail-send()发送邮件报错_基于SMTP协议的E-MAIL电子邮件发送客户端软件C#实现...

摘 要电子邮件在当今社会中扮演了一个很重要的角色。越来越多的人在使用它。而且用它的人数势必会继续增加。虽然&#xff0c;现在已经有很多的邮件收发软件例如著名的FoxMail 但是对于大多数的非专业的人来说它还是有点难度稍嫌负责。因此&#xff0c;我们就利用SMTP和Pop协议…

C语言求n的阶乘

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int fact(int k) {if (k > 1)return k * fact(k - 1);elsereturn 1; } int main() {int n 0;int num 0;printf("请输入一个正整数n,求n!");scanf("%d", &n);numfact(n);printf("…

oracle11g 隐藏参数_ORACLE 11GR2常用参数(含隐含参数)设置

ORACLE 11GR2常用参数(含隐含参数)设置如下&#xff1a;alter system set "_PX_use_large_pool" true scopespfile;alter system set "_clusterwide_global_transactions" false scopespfile;#RAC环境 https://www.sohu.com/a/152628320_505827alter sys…

【转】DCT变换的透彻解析

3、离散余弦变换 DCT  将图像从色彩域转换到频率域&#xff0c;常用的变换方法有&#xff1a;DCT变换的公式为&#xff1a;f(i&#xff0c;j) 经 DCT 变换之后&#xff0c;F(0&#xff0c;0) 是直流系数&#xff0c;其他为交流系数。  还是举例来说明一下。  8x8的原始图…

使用git pull文件时和本地文件冲突怎么办?

Git常用命令 具体方法如下 git pull origin 分支//出现错误git stash 缓存起来git pull origin 分支git stash pop //还原git stash clear 开发人员常常遇到这种情况&#xff1a;花了几天时间一直在做一个新功能&#xff0c;已经改了差不多十几个文件&#xff0c;突然有一个bu…

C语言计算字符串的长度

一。循环实现 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int my_strlen(char *pstr) {int num 0;while (*pstr ! \0){num;pstr;}return num; } int main() {int count 0;char str[100] { 0 };printf("请输入一个字符串");scanf("%s"…

Android 目录

Android 移动平台概述 1 Android平台简介 2 Android平台所提供的功能 3 Android框架简介 4 Android SDK 简介:包括一系列ANDROID应用开发工具和文档&#xff0c;包括调试器&#xff0c;库文件集&#xff0c;手机设备模拟器&#xff0c;文档&#xff0c;范例和开发指导。 5 An…

安防硬件WIZnet基于全硬件TCP/IP的安防产品应用及方案

在本文中,我们主要介绍安防硬件的内容,自我感觉有个不错的建议和大家分享下 WIZnet立足于生产全硬件TCP/IP协议栈芯片&#xff0c;为单片机提供理想的处置计划。整体来讲&#xff0c;其应用领域还是非常广泛的&#xff0c;以智能电表为代表的Smart Energy&#xff1b;以数字楼宇…

在屏幕上将1234逐位打印出来1,2,3,4

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void my_printf(int temp) {if (temp > 9)my_printf(temp / 10);printf("%d\n", (temp % 10)); } int main() {int num 0;printf("请输入一个数字:\n");scanf("%d", &num);…

联想将在CES上展示LePad平板

联想将在本周举行的CES展上展示其平板电脑LePad&#xff0c;迎战苹果的iPad和三星的Galaxy Tab。 联想曾经在去年的CES上展示了一款颇受瞩目的平板/笔记本混合型电脑IdeaPad U1&#xff0c;原计划在去年下半年推出&#xff0c;但因故推迟。LePad与U1平板并不相同&#xff0c;屏…

深入mysql慢查询设置的详解

深入mysql慢查询设置的详解在web开发中&#xff0c;我们经常会写出一些SQL语句&#xff0c;一条糟糕的SQL语句可能让你的整个程序都非常慢&#xff0c;超过10秒一般用户就会选择关闭网页&#xff0c;如何优化SQL语句将那些运行时间 比较长的SQL语句找出呢&#xff1f;MySQL给我…