想学机器学习应该準备具备哪些数学知识?


36人参与 |分类: Y生活坊|时间: 2020-07-10

想学机器学习应该準备具备哪些数学知识?

我是 @ Robin Shen ,以本科应用数学和硕士运筹学、优化理论的背景转到德国海德堡大学读博,主要从事机器学习、计算机视觉的研究,希望自己的一些经验可以对想入门机器学习的朋友们有点借鑒作用。

此回答的部分答案摘自我另外一个相关回答:Robin Shen:想转专业机器学习(人工智能)需要学哪些课程?

首先对人工智能、机器学习一个综述: 大话“人工智能、数据科学、机器学习”– 综述- 知乎专栏

笼统地说,原理和基础都在数学这边,当然有很多偏应用和软体使用的技术,例如「深度学习调参」等,这些报个培训速成班就能学会的技术含量不那幺高的东西,不在讨论範围内。

这里要讨论的,是如何系统的学习,然后自己能编出这机器学习或深度学习的程式或软体:我想,这才能称为一个合格的机器学习、数据科学家。

入门基础

1、微积分 (求导,极限,极值)和线性代数 (矩阵表示、矩阵运算、特徵根、特徵向量)是基础中的基础,某篇图像分割 1w+引用的神文核心思想便就求解构造矩阵的特徵向量;

2、数据处理当然需要写程式了,因此C/C++/Python 任选一门 (推荐 Python,因为目前很多库和 Library 都是用 python 封装),数据结构可以学学,让你写程式更顺手更高效,但是写程式不是数据处理的核心。

当然了,楼主所在的图像处理界,熟练使用 matlab 或者 Python 调用 opencv 库是必要条件,但是 again 他们只是工具,业余时间自学,多练练就没问题。有同学问用 R 行不行,补充一点,用什幺程式语言很大部分取决于你的核心算法会调用什幺已有的库函数,比如楼主的科研里面核心算法往往是 MIP(混合整数规划)问题需要调用 Cplex 或 Gurobi 库函数,因此 C/C++/Python/Java 这些和 Cplex 接口良好的语言都可以拿来用,这时候 R 就别想了。(更新:最新 Gurobi 版本支持 R)

另外虽然图像处理界一些 open-source 的 code 都用 C++ 写的,但是鉴于使用方便都会提供 Python 的接口,因此需要用到这些 code 的话,用 P​​ython 调用比较方便;但是,如果是高阶骨灰级玩家,需要修改甚至自己写源代码,那幺还是推荐 C/C++,因为他们的速度最快。

3、算法

通常高校都会有算法类的课程,会概述各类算法的基础和应用,其中包括:精确算法、近似算法、启发式算法、演化算法、递归算法、贪婪算法等待,还有各类优化算法。

算法非常核心,想必大家都听说过 算法工程师这个职位。

关于数学模型和算法的区别、联繫,参见:

整数规划精确算法/近似算法/(元) 启发算法/神经网络方反向传播等算法的区别与关联

中级教程

1、概率论+统计 (很多数据分析建模基于统计模型)、统计推断、随机过程等

2、线性规划+凸优化 (或者只学一门叫 numerical optimization,统计、机器学习到最后就是求解一个优化问题)、非线性规划等

3、数值计算、数值线代等

当年我是在数学系学的这门课,主要是偏微分方程的数值解。

但我觉得其开篇讲的数值计算的一些 numerical issue 更为重要,会颠覆一个数学係出身小朋友的三观。(原来理论和现实差距可以这幺大!)

Conditional number, ill-conditioned problem,会让你以后的编程多留个心眼。
恭喜你,到这里,你就可以无压力地学习 Machine Learning 这门课了(其实机器学习,通篇都是在讲用一些统计和优化来做 clustering 和 classification 这俩个人工智能最常见的应用)。并且你就会发现,ML 课中间会穿插着很多其他课的内容。恩,知识总是相通的嘛,特别是这些跨专业的新兴学科,都是在以往学科的基础上由社会需求发展而来。

到这里,其实你已经能看懂并且自己可以编写机器学习里面很多经典案例的算法了,比如 regression,clustering,outlier detection。

关于优化类课程的综述,欢迎关注我的专栏:

[运筹帷幄] 大数据和人工智能时代下的运筹学- 知乎专栏

运筹学(最优化理论)如何入门?- 知乎

学到 Mid-level,就已经具备绝大部分理论基础了。然后做几个实际项目,就能上手然后就可以「吹嘘」自己是搞机器学习的,就能找到一份工作了。

但是要读 Phd 搞机器学习的科研,那幺高阶课程必不可少,而且同一个 topic 你需要上好几门课,并且你博士的课题,很可能只是一本书中一个章节里面一小节里讲的算法,去改进他。

比如,楼主的博士课题就是 mixed linear programming + discrete graphical models + markov random fields + regression + clustering + segmentation。

高阶课程

再高阶的课程,就是比较 specific 的课程了,可以看你做的项目或者以后的 concentration 再选择选修,比如:Probabilistic Graphical Models(概率图模型), Integer Programming(整数规划),计算机视觉、模式识别、影片追蹤、医学图像处理、增强学习、深度学习、神经网络、自然语言处理、网络讯息安全,等等等等。

深度学习 :目前非常火,打败了非常多几十年积累起来的经典方法。

增强学习 :也很火,游戏 AI、自动驾驶、机器人等等,它都是核心。

概率图模型 :深度学习之前非常 popular 的「学习」方法,有严格的数学模型和优美的算法,虽然目前被前俩者盖过了风头,但是依然有它的立足之处。什幺?你不知道最近用 PGM 发了篇 Nature,打败了 CNN?快看下面:

Robin Shen:如何评价 Vicarious 在 Science 上提出基于概率图模型(PGM)的 RCN 模型?

再比如有用偏微分方程做图像处理的(比较小众),那幺这时候你肯定要去学一下偏微分方程了,大都是以科研为主导的。

科研嘛,为了发文章,就是要尝试前人没尝试过的方法,万一效果不错呢,就是一篇好 paper 了,对吧。

附上顶尖会议排名,共勉: 国际“顶尖”计算机视觉、机器学习会议大搜罗– 附排名& 接收率

互联网教学资源

书目没有特别推荐的,但是建议看英文原版。

另外直接翻墙 Youtube 看影片课程,很多国际知名教授都很无私地把自己上课的影片放在 Youtube 上免费学习(搜寻我上面列出的科目名字)。如果确实要楼主推荐,那就推荐海德堡大学历史上最年轻的教授 Fred 的机器学习视频(我基本都看过):

另外一个教授给你上课的时候,开头一般是会推荐书给你的(如果你确实喜欢看书的话)。当然了,翻墙是楼主 suppose 你们需要拥有的基本生存技能。

(注:以下再推荐一些影片,仅受之以渔,多为 graduate course)

1,Machine Learning by Prof. Nando de Freitas, 此影片是其在 UBC 时 13 年所录,后来跳槽去牛津计算机学系了。

2,Deep learning at Oxford 2015 by Prof. Nando de Freitas, 跳槽到牛津所录。

3,Probabilistic Graphical Models by Daphne Koller,史丹佛大学计算机系教授

更多人工智能、优化理论的知识,尽在:[运筹帷幄] 大数据和人工智能时代下的运筹学

关于入行后就业前景(包括第三条运筹学、算法工程师),参见: 国内 (全球)TOP 互联网公司、学术界超高薪的揽才计划有哪些?- 知乎

关于机器学习在谘询行业的应用,参见 Data Science/Analytics 出身,可以在谘询行业做些什幺?- Ruobing Shen 的回答

最后是通往大洋彼岸 高薪博士职位,以及人工智能数据科学家的传送门: 欧洲、北美、全球留学及数据科学深度私人定制谘询,从此 DIY – Ruobing Shen 的文章- 知乎专栏

延伸阅读

只用 4 个月打造机器学习必备技能,这位工程师成功翻转职涯人生
附资源与完整指导!带你从零开始掌握 Python 机器学习
专访 Uber 机器学习负责人王鲁民:揭密 Uber 超强机器学习平台,除了内斗还是有技术含量的
想成为「智能 UX 设计师」?懂得机器学习已成重点必备技能!