博舍

AI人工智能需要哪些数学知识你知道吗 人工智能要学哪些数学知识呢知乎

AI人工智能需要哪些数学知识你知道吗

人工智能的由来

“人工智能”这一术语自1956年被提出,到电子计算机作为一种可以模拟人类思维的工具出现,使人工智能这一技术有了一个展现的平台,开始了探索与发展。1997年,IBM公司的“深蓝Ⅱ”超级计算机,击败了国际象棋卫冕冠军Gary·Kasparov,这一现象,标志了人工智能技术的一个完美表现,再到近些年的AlphaGo,人工智能的发展似乎已经到了一个比较高端的程度。

人工智能的意义

人工智能引爆了不仅仅是产业的变革,还是时代的变革,回顾18世纪至今,以蒸汽机、电气技术、计算机信息技术为代表的三次工业革命使人类的生活水平、工作方式、社会结构、经济发展进入了一个崭新的周期。而如果说在21世纪,还有哪一种技术可以和历次工业革命中的先导科技相提并论的话,那答案一定是正在步入成熟增长期的人工智能技术。

什么是人工智能?

人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。

人工智能将涉及到计算机科学、心理学、哲学和语言学等学科。可以说几乎是自然科学和社会科学的所有学科,其范围已远远超出了计算机科学的范畴,人工智能与思维科学的关系是实践和理论的关系,人工智能是处于思维科学的技术应用层次,是它的一个应用分支。从思维观点看,人工智能不仅限于逻辑思维,要考虑形象思维、灵感思维才能促进人工智能的突破性的发展,数学常被认为是多种学科的基础科学,数学也进入语言、思维领域,人工智能学科也必须借用数学工具,数学不仅在标准逻辑、模糊数学等范围发挥作用,数学进入人工智能学科,它们将互相促进而更快地发展。

那么,学习人工智能,需要哪些数学知识呢?

新春来临之际,尚学堂为大家准备了一份详细的学习规划,希望对爱好人工智能的朋友们有所帮助。

微积分

线性代数

概率论

最优化

关于书籍,特别说明一下,除非你是数学知识遗忘的特别厉害了,或者是本科的时候没有学过相关数学知识,否则不建议大家抱着书去学习,会浪费大家大量的精力和时间

微积分

导数与求导公式

一阶导数与函数的单调性

一元函数极值判定法则

高阶导数

二阶导数与函数的凹凸性

一元导数泰勒展开

先说微积分/高等数学。在机器学习中,微积分主要用到了微分部分,作用是求函数的极值,就是很多机器学习库中的求解器(solver)所实现的功能。在机器学习里会用到微积分中的以下知识点:

导数和偏导数的定义与计算方法

梯度向量的定义

极值定理,可导函数在极值点处导数或梯度必须为0

雅克比矩阵,这是向量到向量映射函数的偏导数构成的矩阵,在求导推导中会用到

Hessian矩阵,这是2阶导数对多元函数的推广,与函数的极值有密切的联系

凸函数的定义与判断方法

泰勒展开公式

拉格朗日乘数法,用于求解带等式约束的极值问题

其中最核心的是记住多元函数的泰勒展开公式,根据它我们可以推导出机器学习中常用的梯度下降法,牛顿法,拟牛顿法等一系列最优化方法,泰勒公式。

微积分和线性代数,微积分中会用到大量线性代数的知识,线性代数中也会用到微积分的知识

线性代数

向量及其运算

矩阵及其运算

张量

行列式

二次型

特征值与特征向量

相比之下,线性代数用的更多。在机器学习的几乎所有地方都有使用,具体用到的知识点有:

向量和它的各种运算,包括加法,减法,数乘,转置,内积

向量和矩阵的范数,L1范数和L2范数

矩阵和它的各种运算,包括加法,减法,乘法,数乘

逆矩阵的定义与性质

行列式的定义与计算方法

二次型的定义

矩阵的正定性

矩阵的特征值与特征向量

矩阵的奇异值分解

线性方程组的数值解法,尤其是共轭梯度法

机器学习算法处理的数据一般都是向量、矩阵或者张量。经典的机器学习算法输入的数据都是特征向量,深度学习算法在处理图像时输入的2维的矩阵或者3维的张量。掌握这些知识会使你游刃有余:

多元函数微分学

高阶偏导数

雅克比矩阵

Hessian矩阵

多元函数泰勒展开

多元函数极值判定法则

回到线性代数

奇异值分解SVD

常用的矩阵和向量求导公式

概率论

随机事件与概率

条件概率和贝叶斯公式

随机变量

随机变量的期望和方差

常用概率分布(正太分布、均匀分布、伯努利二项分布)

随机向量(联合概率密度函数等)

协方差与协方差矩阵

最大似然估计

如果把机器学习所处理的样本数据看作随机变量/向量,我们就可以用概率论的观点对问题进行建模,这代表了机器学习中很大一类方法。在机器学习里用到的概率论知识点有:

随机事件的概念,概率的定义与计算方法

随机变量与概率分布,尤其是连续型随机变量的概率密度函数和分布函数

条件概率与贝叶斯公式

常用的概率分布,包括正态分布,伯努利二项分布,均匀分布

随机变量的均值与方差,协方差

随机变量的独立性

最大似然估计

最优化

最后要说的是最优化,因为几乎所有机器学习算法归根到底都是在求解最优化问题。

求解最优化问题的指导思想是在极值点出函数的导数/梯度必须为0。因此你必须理解梯度下降法,牛顿法这两种常用的算法,它们的迭代公式都可以从泰勒展开公式中得到。如果能知道坐标下降法、拟牛顿法就更好了。

凸优化是机器学习中经常会提及的一个概念,这是一类特殊的优化问题,它的优化变量的可行域是凸集,目标函数是凸函数。凸优化最好的性质是它的所有局部最优解就是全局最优解,因此求解时不会陷入局部最优解。如果一个问题被证明为是凸优化问题,基本上已经宣告此问题得到了解决。在机器学习中,线性回归、岭回归、支持向量机、logistic回归等很多算法求解的都是凸优化问题。

拉格朗日对偶为带等式和不等式约束条件的优化问题构造拉格朗日函数,将其变为原问题,这两个问题是等价的。通过这一步变换,将带约束条件的问题转换成不带约束条件的问题。通过变换原始优化变量和拉格朗日乘子的优化次序,进一步将原问题转换为对偶问题,如果满足某种条件,原问题和对偶问题是等价的。这种方法的意义在于可以将一个不易于求解的问题转换成更容易求解的问题。在支持向量机中有拉格朗日对偶的应用。

KKT条件是拉格朗日乘数法对带不等式约束问题的推广,它给出了带等式和不等式约束的优化问题在极值点处所必须满足的条件。在支持向量机中也有它的应用。

如果你没有学过最优化方法这门课也不用担心,这些方法根据微积分和线性代数的基础知识可以很容易推导出来。如果需要系统的学习这方面的知识,可以阅读《凸优化》,《非线性规划》两本经典教材。

出现频率最高的是优化方法,拉格朗日乘数法,梯度下降法,牛顿法,凸优化

第二类概率论知识,随机变量,贝叶斯公式,随机变量独立性,正太分布,最大似然估计

第三类线性代数知识,几乎所有都会涉及到向量、矩阵、张量的计算,包括特征值和特征向量,很多算法都会最终变成求解特征值和特征向量问题。

微积分的知识比如链式法则。

除了主体这些数学知识,会用到微分几何中的流行、测地线、测地距离的概念。

支持向量机会用到Mercer条件、核函数,涉及到泛函分析和识别函数的范畴。

再比如说人工神经网络的证明,万能逼近定理会用到泛函分析和识别函数的内容,用来证明这样一个函数可以来逼近任何形式的函数。

离散数学的知识比如图论、树在机器学习里面也会用到,但是用的都是比较简单的。

所以说我们只有掌握好微积分、线性代数、概率论还有一些优化的算法,我们就能看懂所有的机器学习算法了。像刚才说的一些相对高深的微分几何、泛函分析和识别函数,它们主要用在一些基础理论证明上面,说白了就是证明一些算法的合理性,你即使看不懂这些证明,它也不影响你理解这些算法的推导、思想和使用。

人工智能的数学基础

人工智能的基础是数学,这一点已经是确定无疑的共识了。

但“数学”二字所包含的内涵与外延太广,到底其中的哪些内容和当前的人工智能技术直接相关呢?

今天我们就来看看入门人工智能所需要的数学知识。

人工智能必备高等数学知识点清单

AI技术岗所要求的高等数学知识,大致可以分为四个方面:微积分、概率统计、线性代数,和最优化理论。

每个分领域都至少是一本书(也可以是一摞书)。我们在这里暂且抽取和机器学习、深度学习相关的最基础部分,给大家做一下聚焦:

【微积分】

基础概念(极限、可微与可导、全导数与偏导数):只要学微积分,就必须要明白的概念,否则后面什么都无法继续学习。

函数求导:求导是梯度的基础,而梯度是AI算法的基础,因此求导非常重要!必须要搞清楚概念,并学会常见函数的导函数求法。

链式法则:符合函数求导法则,反向传播算法的理论基础。

泰勒公式和费马引理:这两者也是梯度下降法的基础组成,重要程度与求导相同。

微分方程及其求解:很重要,是部分机器学习模型求解的必备知识。

拉格朗日乘子法和对偶学习:理解SVM/SVR的理论基础。SVM/SVR作为机器学习模型的常用“中坚力量”,其重要程度不言而喻。

【概率统计】

简单统计量(个数、最大值、最小值、中位数、均值、方差)及其物理意义:概率统计的概念基础。

随机和抽样:随机——概率统计成立的基础;抽样——统计的方法。

频率和概率,以及概率的基本概念:搞清什么是概率,它和频率的区别与联系。

几种常见的概率分布及公式(平均分布、二项分布、正态分布……)

参数估计:只知道大致的分布,不知道具体的参数怎么办?没关系,我们可以根据估计一下。其中最重要的是极大似然估计。

中心极限定理:如果不知道某事物的概率分布该怎么办?没关系,就当它符合正态分布好了。可是为什么能这样近似呢?因为我们有中心极限定理呀。

假设验证:到底假设得对不对呢?我们根据样本来验证一下。

贝叶斯公式:太重要啦!是它使得我们可以根据先验概率来预测后验概率。而朴素贝叶斯公式自己就是朴素贝叶斯模型本身啊。

回归分析:想想那么多名字里有“回归”的模型吧!

状态转移网络:概率链、隐马尔可夫模型和条件随机场。

【线性代数】

向量与标量:用向量和标量表示事物特征的差别是什么?

向量空间,向量性质及向量的几何意义:所谓高维低维指的是什么?同一个向量能否存在于不同的向量空间里?向量的移动、转向和拉伸是如何做到的?

线性函数:什么是线性函数,它具备怎样的性质?

矩阵和矩阵运算:矩阵出现的目的是什么?掌握矩阵的基础运算(与常数/向量/矩阵的加法和乘法)。

特殊矩阵(方阵、实对称矩阵、(半)正定/负定矩阵等)及其性质:根据不同的性质,我们可以划分出哪些特殊矩阵,它们都有哪些特殊性质?

特征值和特征向量:定义、性质,以及特征值求解。

用矩阵求解微分方程。

正交:什么是正交?函数的正交,向量的正交,和超平面的正交分别是如何形式化表达的,又具备怎样的物理意义。

【最优化方法】

凸函数与极值:搞清楚什么是凸函数,凸函数与极值的关系,极值和最值的关系等。

注意:国内不同教科书对于“凸”的定义存在不一致的情况,有些书上把其他书上说的“凸函数”叫做“凹函数”。

直观而言,我们一向说的“凸函数”是那类一维自变量情况下看起来像个“U”,二维自变量下像个碗的那种函数。

最优化:什么是最优化问题?什么是最优化方法?无限制条件和有限制条件下的最优化方法基本原理分别是什么?

梯度下降法:最基础最常用的最优化方法,以及其他若干最优化方法的基础,务必全面掌握。

其他最优化算法:了解其他一些常用最优化方法,例如,牛顿法、共轭梯度法、线性搜索算法、模拟退火算法、遗传算法等。

人工智能背后的数学大神们

上述知识点,看起来好像有点吓人哦,不像是“我能记得住”的样子。

有没有办法能够轻松愉快不累且高效地掌握人工智能(机器学习/深度学习)领域要用到的数学知识呢?

这里推荐一种笔者在探索中逐步发现的,简单直接又有些趣味的方法:以数学家为主线学习高等数学知识——也就是,“以人为轴”学AI数学。

我们先来看看下面这些画像吧: 

你能认出几个?

他们分别是(从左到右从上到下依次):牛顿、高斯、贝叶斯、费马、泰勒、拉格朗日、拉普拉斯、傅立叶,和伯努利。

说实话,现在全球数以千万计的AI技术人员真应该把这些大佬供起来,说咱们的饭碗都是他们赏的也不为过。

牛顿大神发明了微积分;

辅之以费马引理、泰勒公式,奠定了如今一切AI最优化算法工程实现的理论基础。

拉格朗日乘子法为限定条件下多元函数的最优化问题提供了解法。

数学王子高斯在概率论和线性代数领域的非凡贡献不胜枚举,仅仅高斯分布一项就堪称概率论之抗鼎模型。

贝叶斯让我们可以用既往经验预测未来。

伯努利家族不仅在概率论领域贡献颇丰,就连他家二弟卖给洛必达的“洛必达法则”亦是求解具有不定型的极限的不二法门。

拉普拉斯算子于微积分和线性代数而言都是非常重要的基石。

傅立叶变换在时域信号和频域信号之间的桥梁作用成就了整个语音领域。

当然,还有下面这位:

 

莱布尼茨与牛顿分别独立发明了微积分,他提出的符号系统一直沿用至今。他同样是西方二进制算数体系的提出者和线性代数的重要奠基人。

当然,无论微积分、概率统计还是线性代数,都不是在一日之内形成的学科,都经历了数百年乃至上千年大量人类顶级头脑的思考和探索,对其做出贡献的数学家灿若繁星。

对照我们亟待掌握的知识点,以这些理论的提出者为基点,沿着数学史学习之,并同步了解数学发展的进程。顺便还可以以大神们之间的交往和恩怨等八卦作为润滑剂。

如此一路学来,既多了许多趣味,又能追本溯源,了解到这些理论提出的现实背景(例如:物理学的发展及其对数学工具的需求)。

在学理论的同时了解这一理论最初的作用域和当时解决的实际问题,对于我们理解其中各类概念的物理意义有着极大的帮助。

“众智汇”愿景

尽职尽才,允公允能 —— 本社群不定期举行线上分享,组织群友分享知识、经验、资源,以达到让我们每个人的职业生涯得到最大程度的发展的目的。

欢迎扫面下列二维码关注“悦思悦读”公众微信号

想学数据分析(人工智能)需要学哪些课程

本文转自:

RobinShen

利益相关:楼主以应用数学和运筹学的背景转到博士德国海德堡大学机器学习、计算机视觉这俩个数据分析(人工智能)的分支里来,希望对想入门数据科学和人工智能的朋友们有点借鉴作用。

 

首先如果对人工智能、数据科学还不是很了解的同学,可参考以下综述:大话“人工智能、数据科学、机器学习”--综述-知乎专栏

 

先说点宽泛的、上纲上线的东西。(要干货的可以直接跳至后半部分)机器学习,大数据这些新兴专业,是随着工业界与日俱增的需求而随之出现的(中国最近批准了第一批试点的几十所高校开设数据科学专业)。其实任何专业都是这样一个需求导向的过程,包括微电子,计算机,还有什么房地产专业。。你说几十年前你们听说过这些专业么?自然科学如数学、物理、化学、生物长盛不衰,是有其道理的,这也是为什么我们初高中我们都在学这些东西。而某些专业,也会随着市场需求的锐减而减少甚至消失。这些专业名词在刚出现的时候往往是“凭空造诣”或者是强加术语,然而知识是需要积累的,不是凭空出现的,也就证明了如大数据、机器学习这样的东西,其实是科研圈已经研究或者已用了很多年了,然后市场需求强烈,为了顺应市场需求,大批学校争相决定开这个专业,于是喊一帮教授或院士过来拍板,这个专业需要哪些基础课程,我们就把这些基础课放进来,这也是我下面的回答要强调的。(因此“需要学哪些课程”这个问题最好的答案,就是去一个名校的数据科学或机器学习项目里看课程设置,这里我推荐一下UCL的MachineLearningMsc)

 

本文要讲的,不包括数据库那个方向的大数据。简单的说,原理和基础都在数学这边,当然有很多偏应用和软件使用的课程,这些直接大街上报个培训班就能学会的技术含量不那么高的东西,不在我的讨论范围内。我要讨论的,是如何系统的学习,然后自己能编出这些处理大数据的程序或软件,我想,这才能称为一个合格的数据科学家。

 

好了,下面是干货。(已经过多次私人留学咨询中,多个高校数据科学/人工智能硕士项目的先修课程验证)

1,线性代数(矩阵表示和运算)是基础中的基础,以及微积分(求导,极限);2,数据处理当然需要编程了,因此C/C++/Python任选一门(推荐Python,因为目前很多库和Library都是用python封装),数据结构可以学学,让你编程更顺手更高效,但是编程不是数据处理的核心,相对而言算法还来的重要一些,因此建议再上一门算法课。当然了,楼主所在的图像处理界,熟练使用matlab或者opencv是必要条件,但是again他们只是工具,业余时间自学,多练练就没问题。有同学一直提问用R行不行,楼主补充一点,用什么编程语言很大部分取决于你的核心算法会调用什么已有的库函数,比如楼主的科研里面核心算法往往是MIP问题需要调用Cplex库函数,因此C/C++/Python/Java这些和Cplex接口良好的语言都可以拿来用,这时候R就别想了。另外往往图像处理界一些open-source的code都用Python写的,因此需要用到这些code的话,当然写Python直接调用比较方便咯。

3,Mid-level的课程,概率论+统计(很多数据分析建模基于统计模型),线性规划+凸优化(或者只学一门叫numericaloptimization,统计到最后也还是求解一个优化问题,当然也有纯优化模型不用统计模型的),MachineLearning(其实机器学习,通篇都是在讲用一些统计和优化来做clustering和classification这俩个人工智能最常见的应用),学到这里,你基本就会发现,学这一门课中间会穿插着很多其他课的内容。恩,知识总是相通的嘛,特别是这些跨专业的新兴学科,都是在以往学科的基础上由社会需求发展而来。学到这里,其实你已经能看懂并且自己可以编写机器学习里面很多经典的案例了,比如regression,clustering,outlierdetection。

关于优化类课程的综述,欢迎关注我的专栏:[运筹帷幄]大数据和人工智能时代下的运筹学-知乎专栏运筹学(最优化理论)如何入门?-知乎

4,再高阶的课程,就是比较specific的课程了,可以看你做的项目或者以后的concentration再选择选修,比如:ProbabilisticGraphicalModels(概率图模型),NolinearOptimization(非线性优化),IntegerProgramming(整数规划),计算机视觉,模式识别,视频追踪,医学图像处理,增强学习,深度学习,神经网络,自然语言处理,网络信息安全,等等等等。再比如有用偏微分方程做图像处理的(比较小众),那么这时候你肯定要去学一下偏微分方程了,大都是以科研为主导的。科研嘛,为了发文章,就是要尝试前人没尝试过的方法,万一效果不错呢,就是一篇好paper了,对吧。

注意这里是偏机器学习或计算机视觉的,如果是自然语言处理,那么还要修一些语言学(句法等结构)的基础课。

正如我说的,学到Mid-level,就已经具备绝大部分理论基础了。然后做几个实际项目,就能上手然后就可以“吹嘘”自己是搞数据科学的,就能找到一份工作了。要读Phd搞科研,那么高阶课程必不可少,而且同一个topic你需要上好几门课,并且你博士的课题,很可能只是一本书中一个章节里面一小节里讲的算法,去改进他。比如,楼主的博士课题就是regression+clustering+segmentation。

至于书目,没有特别推荐的,但是建议看英文原版。另外直接翻墙Youtube看视频课程,很多国际知名教授都很无私地把自己上课的视频放在youtube上免费学习(搜索我上面列出的科目名字)。如果确实要楼主推荐,那就推荐海德堡大学历史上最年轻的教授Fred的机器学习视频(我基本都看过):https://www.youtube.com/playlist?list=PLuRaSnb3n4kSgSV35vTPDRBH81YgnF3Dd

另外一个教授给你上课的时候,开头一般是会推荐书给你的(如果你确实喜欢看书的话)。当然了,翻墙是楼主suppose你们需要拥有的基本生存技能。(注:以下再推荐一些视频,受之以渔。多为graduatecourse,仅作演示目的)

1,       MachineLearningbyProf.NandodeFreitas,此视频是其在UBC时13年所录,后来跳槽去牛津计算机系了。https://www.youtube.com/playlist?list=PLE6Wd9FR--EdyJ5lbFl8UuGjecvVw66F6

2,       DeeplearningatOxford2015  byProf.NandodeFreitas,跳槽到牛津所录。https://www.youtube.com/playlist?list=PLE6Wd9FR--EfW8dtjAuPoTuPcqmOV53Fu

3,       ProbabilisticGraphicalModelsbyDaphneKoller,斯坦福大学计算机系教授https://www.youtube.com/playlist?list=PL50E6E80E8525B59C另外还有一些付费的学习网站,如Coursera,优点是结课后可以拿分数和证书,并且很多世界名校的教授在上面开课。---------------------------------------------------------------------------再罗嗦一下解决一个实际大数据问题的一般流程。比如一个生物医学公司找到我,要求我做一个视频里面celltracking的项目。(一帧既为一张图片,假设500*500=25w像素,一个video算它1000帧,总共250million像素,可以算大数据了吧?)具体流程:数学建模--设计算法--用任意编程语言编写算法(其中会涉及到数据结构,即如何搭建程序使程序更加高效)--导入视频数据到算法里得出结果--根据结果的好坏改进算法甚至模型(如此往复)。

这里我强调一下数学建模的重要性,为何要数学建模呢?的确很多naive的算法完全不需要建立在数学模型之上,比如clustering里面经典的EM算法,是一个iterativemethod,基本一眼就能看出算法的思路然后编程实现,所以称之为naive。那么基于数学模型上的算法有何妙处呢?答案是一个好的数学模型,往往是被研究了几十甚至几百年的学科,比如图论,很多性质都已经被研究得很透彻可以直接使用。回到我的这个例子,celltrancking,我可以建立一个networkflow(网络流)的模型(其实也是基于图论的模型),那么这个networkflow模型,是一个被研究了很久的领域,因此我可以直接使用很多很多已知的好定理或算法来服务我的问题。另外很多时候,经典的数学模型里面已有很多经典的算法,比如networkflow基于里的maxflow/mincuttheorem的算法,如果能在其基础上做改进,等于站在巨人的肩膀。因此这就是数学建模的重要之处。往往同一个问题,从不同的角度去看可以有千百种数学建模方法,而不同的数学模型差别往往巨大,而数学建模又是解决一个实际问题的第一步,在这基础上才考虑算法和数据结构设计。因此,数学基础在我看来是重中之重,也是我推荐学习的课程的核心。当然了,计算机系出生的朋友,数学这个层面学习得不是很深,比较偏向于算法的设计和实现,是另外一个侧重点。先码到这,有时间再更新。关于入行后就业前景(包括第三条运筹学--算法工程师),参见:国内(全球)TOP互联网公司、学术界超高薪的揽才计划有哪些?-知乎中国计算机视觉的前途在哪?机器视觉工程师又何去何从?-知乎关于我对最优化理论在咨询行业的应用,参见DataScience/Analytics出身,可以在咨询行业做些什么?-RuobingShen的回答

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇