点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文转自 | 视觉算法
机器学习理论是众多学科的交叉,在数学基础方面,应该补充哪些知识呢?看看其它小伙伴推荐的相关数学从入门到熟练书籍以及课程吧。
作者:小心假设
https://www.zhihu.com/question/24345119/answer/1091376260
推荐一本非常好的书,并且是“开源”的:
Mathematics for Machine Learning
https://mml-book.github.io/
目录:
Part I: Mathematical Foundations
Introduction and Motivation
Linear Algebra
Analytic Geometry
Matrix Decompositions
Vector Calculus
Probability and Distribution
Continuous Optimization
Part II: Central Machine Learning Problems
When Models Meet Data
Linear Regression
Dimensionality Reduction with Principal Component Analysis
Density Estimation with Gaussian Mixture Models
Classification with Support Vector Machines
链接中还有一些其它资料:
Linear Regression
Gaussian Mixture Models
PCA
SVM (work in progress)
---
书的 pdf:https://mml-book.github.io/book/mml-book.pdf
作者:量子位
https://www.zhihu.com/question/24345119/answer/564893704
之前,Hacker News有一个高分的类似话题,讨论的是:想搞机器学习/AI需要怎样的数学基础,有什么推荐的入门资料/课程?
量子位仔细看了半夜,将这些讨论分为了3个类别:
中肯建议
教材书籍
视频课程
希望能够给大家带来一些帮助。
这部分内容的主要贡献者包括:mindcrime、tlb、jules、rocqua、srean、leecarraher、irchans、KirinDave、wadams19、pramalin等
多变量微积分、线性代数、概率论、信息论,这几门必须基础扎实。精通图论也挺有用的。
大部分机器学习是对数据的模型拟合。为了拟合模型,需要把一些误差当成真实参数的函数,并对其进行最小化。最小化的算法基于梯度下降,也就是依赖于导数,这就是一种微积分运算。
如果你在做贝叶斯推理,你也需要用到微积分,因为贝叶斯定律将后验分布作为一个积分。
搞机器学习你只需要微积分1和2,微积分3里的旋度和散度、斯托克斯定理之类的,学物理用得上,机器学习不用这些。另外,你可能还需要一些微积分4中的基本函数分析。
(量子位注:此处微积分1234指的美国大学课程体系)
微积分的本质之一,是反映了事物的变化,对于变化的平顺性提供了一个很好的描述。一个处于最佳状态的系统,在某个确定的点上不再增减变化。
机器学习中的许多问题都是优化问题:在给定一些约束的条件下,怎样选择参数才能让错误最小化?通常这非常困难(NP-hard),但如果你把问题设计为“平滑”,那么就能通过微积分来获得很好的代数解。多变量微积分也是需要的,在尝试最小化“错误”时,通常会通过每次更改许多、许多参数来实现。这意味着你需要知道如何在高位空间进行平滑变换。
而微积分的中的积分,用来“测量”物体大小。大部分概率是用来描述非常笼统的比例。“这块有多大”的问题类似于“这件事发生的可能性有多大”。解决问题的办法,就是用数量庞大的小块集合在一起,形成一个复杂的整体。
所以从根本上讲,机器学习取决于如何测量一件事(积分)并且知道这件事如何变化(导数)。从某种程度上说,这两件事就是你在微积分中学到的。
我数学背景还不错,但想要搞明白K-L散度时,还得重新研究一下。在机器学习领域,几乎我遇到的信息论问题都是最小化K-L散度,这些看维基百科都能搞懂。你还得能理解具有概率输出的模型,比方生成模型和强化学习等。
如果你要阅读学术期刊,至少下面这些知识点应该懂一点:
统计学核心。你得熟悉统计学家如何处理数据,这常常用到
微积分。你不需要成为解题达人,但得明白多个变量进行微分和积分的过程
线性代数。一切的基础,比统计还重要
数值计算的方法。我不断的查看资料,以搞懂大家为什么那样做
计算理论以及相关研究。熟悉这些能让你发现错误,找到改进的方向
我的下一个挑战是非参数统计。许多研究者跟我说这一领域会得到很多收获,许多方法能极大的改进机器学习
还有人觉得,机器学习中最需要数学的地方,莫过于理解反向传播时。反向传播几乎都是偏导数/链式法则什么的。还有很多机器学习涉及一些微积分的凸优化。
我们得分清“应用”和“研究”之间的区别。并不是每个人都在做最前沿的研究。有人下载一个DL4J,看几个教程,就能搭建一个基本的网络来解决问题,这个过程中也创造了价值。
机器学习虽然还没来到完全不需要关心底层细节的时间节点,但我们确实已经可以合法获取很多现成的工具,而不需要动手推导反向传播的方程式。
讲真,大多数情况下在工作中应用已知的方法,并不要求搞懂背后的数学,只需要了解基本的统计数据和概率论,能解释结果就好了。所以,如果你只是简单的使用别人做好的工具来解决问题,真的不需要什么数学背景。
一个本科生就能学会漂亮的解决问题,而不需要深入研究底层的数学细节,就权当做是工程问题的最佳实践。大多数实际工作中,并不用演算低级别的架构或公式,通常都是从已经选好的框架中,把想用的东西跳出来而已。
另一方面,如果你面临的问题不能用现成的方法搞定,这时候数学背景就派上用场了。如果你想在框架里应用一个全新或者小众的架构,就得搞明白之后才能写出来。
在应用和研究机器学习技术之间,有很大的不同。总的来说,单纯在应用这一端,并没有太多严格的数学背景要求。
需要多少数学,取决于你要在机器学习/AI领域扎多深。
如果只是应付工作,那你走运了,现成就能用的东西原来越多了。例如DataBot、H2O、Scikit-learn、Keras(加TensorFlow)……可能唯一必备的数学技能就是统计学。无论你选择了哪种解决方案,采用了何种自动调整和选择的算法,都得需要一些统计数据才能说明你的模型有效果。
想进一步提升自己,还可以花更多时间学习特征提取、数据工程,好好研究一下上面提到的几个工具包,特别是其中的模型。
如果你想研发新的技术和算法,天空才是你的极限,不过还是得统计数据。
那些已经大量使用的机器学习和AI框架,其实只是顶着一个数学的帽子,你完全可以把它们当成可靠的黑盒系统来用,没必要理解模型的生成过程和设置。很多工具可以告诉你哪些算法对你的数据最有意义,甚至能帮你找出最有效的那种。
虽然这说起来令人沮丧,但真的已经不是非得有博士学位才能干这行了。
不过,即便你能干的事情跟博士科学家差不多,也不意味着有人会雇你。雇主还是会看重数学、计算机科学或相关领域的博士学位。但这些可能更多出于其他方面因素的考量,而不是搞机器学习/AI的必要条件。
了解数学能让你更好的理解工作,减少愚蠢犯错的可能。
上面讲到的工具,建议试试完全自动化的黑盒机器学习管道,比方说TPOT。尽早上手,以及可以推荐给你的产品经理朋友。
TPOT即Tree-based Pipeline Optimization Tool,这是一个基于遗传算法自动选择、优化机器学习模型和参数的工具。通常模型有非常大量的参数需要调整和优化,这类工具可以节省找到最优参数组合的时间。
不过,许多机器学习从业人员对这类自动化机器学习管道非常警惕。如果没有理解这些工具的基本统计/数学假设,可能会遇到很多坑;而这种一刀切的解决方案,也可能会给出误导性的结果。另外使用这类工具,也让解释原因和结果的工作变得更加困难,一个“黑盒子”很难得到价值认同。
TPOT的GitHub地址:
https://github.com/rhiever/tpot
建议一:有两种方法来学习机器学习/AI:1)阅读所有资料,然后开始解决问题 2)先开始解决问题,然后根据需要学习相关的数学知识。第二种方法更好。
建议二:首先在Coursera上看吴恩达机器学习和深度学习的课程。选择你感兴趣的领域和问题。接着阅读机器学习/AI在这一领域如何应用的论文。然后动手重现你已经搞明白并且感兴趣的论文。
建议三:这个学习计划我觉得非常有用,很好的列出了所需课程和时间框架,地址在此:
https://urlify.cn/Efyeqq
接下来开始分享资源。先从书籍讲起。
这部分内容的主要贡献者包括:CuriouslyC、rdudekul、kgwgk、charlescearl、ChadyWady等。
我认为最好从David MacKay的《Information Theory, Inference and Learning Algorithms(信息论、推理与学习算法)》入手,内容可能有点老旧了,但仍然是这个领域最平易近人的书籍之一。
在线版本:
http://www.inference.org.uk/itprnn/book.pdf
另一本推荐的旧书是E. T. Jaynes的《Probability Theory: the Logic of Science(概率论:科学的逻辑)》。
在线版本
https://urlify.cn/QbEvuu
以及Tibshirani的《Elements of Statistical Learning(统计学习元素)》。
在线版本:
https://web.stanford.edu/~hastie/ElemStatLearn/
Andrew Gelman的《Bayesian Data Analysis(贝叶斯数据分析)》也很好。
在线版本:
https://urlify.cn/RRrE7f
想了解这个领域最新的额进展,建议阅读Ian Goodfellow和Yoshua Bengio的《Deep Learning》。
在线版本:
http://www.deeplearningbook.org/
推荐一本我本科时候用的统计学教材:《Probability & Statistics for Engineers & Scientists》。
在线版本:
https://urlify.cn/r6777f
再推荐一些网上免费的数学参考书:
在线数学教材汇总
http://people.math.gatech.edu/~cain/textbooks/onlinebooks.html
免费数学教材
http://www.openculture.com/free-math-textbooks
开放教材图书馆
https://open.umn.edu/opentextbooks/SearchResults.aspx?subjectAreaId=7
MIT在线教材
https://ocw.mit.edu/courses/online-textbooks/#mathematics
美国数学研究所认证教材
https://aimath.org/textbooks/approved-textbooks/
AI是一个非常广阔的领域,每个细分领域都有不同的数学背景要求。掌握所有的数学知识是不可能的,所以你得想清楚对什么感兴趣。
同时推荐一本Russell和Norvig的好书,覆盖了人工智能中很多不同的主题。无论你本科学到了什么,这本书都可以提供了一深入了解AI的良好起点。
这本书是《Artificial Intelligence: A Modern Approach》,中文版名称《人工智能:一种现代方法》。
英文版地址在此:
http://aima.cs.berkeley.edu/
另外附送一份Michael I. Jordan之前开出的书单。
地址在此:
https://news.ycombinator.com/item?id=1055389
上述在线内容都是合法的。合法的。合法的。
再来就是视频课程汇总。主要贡献者包括:72mena、leecarraher、mindcrime、rdrey等。
YouTube以及http://Videolectures.net上有很多高质量的数学视频教学内容。
之前提到的David MacKay,合辑在此:
http://videolectures.net/david_mackay/
Leonard教授合辑在此:
https://www.youtube.com/user/professorleonard57
Gilbert Strang合辑在此:
https://www.youtube.com/results?search_query=gilbert+strang
3Blue1Brown合辑在此:
https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw
还有画风清奇的Siraj Raval讲人工智能中的数学:
https://urlify.cn/vEjABz
我的建议是,先快速看一遍Jeremy Howard的讲座,这里面有很多机器学习/AI的应用案例,而且只需要一点点的数学背景就能看懂。
地址在此:
http://course.fast.ai/
接下来可以去Coursera上吴恩达的新课程,比原来的课程更容易接近,但仍然会有一些方程式让你不知所措,不过你肯定能实现出来。地址在此:
老课程《机器学习》:
https://www.coursera.org/learn/machine-learning
新课程《深度学习》:
https://www.coursera.org/specializations/deep-learning
再推荐一个统计学课程,德州大学奥斯汀分校统计和数据科学系Michael J. Mahometa主讲的《数据分析基础》。
地址在此:
https://urlify.cn/bqAZVn
小建议,在这个课程中讲师使用了R语言,我觉得还是Python更好。
另外,Coursera上有一系列的统计课程还不错。不过贝叶斯统计这门课有点难,建议买一本书或者补充点其他课外资料。我推荐这本书:《Bayes’ Rule: A Tutorial Introduction to Bayesian Analysis》
亚马逊有售:
https://urlify.cn/AnuuEz
作者:Ni Yun
https://www.zhihu.com/question/24345119/answer/27856924
机器学习主要用到两类数学:统计和凸优化
为了方便就贴亚马逊了,这些书其实可以下到的。
统计方面,推荐Larry Wasserman的两本书:
Amazon.com: All of Statistics: A Concise Course in Statistical Inference (Springer Texts in Statistics) (9780387402727): Larry Wasserman: Books
Amazon.com: All of Nonparametric Statistics (Springer Texts in Statistics) (9780387251455): Larry Wasserman: Books
凸优化方面,推荐stanford的教材:
http://www.stanford.edu/~boyd/cvxbook/
入门的话,本科的数学分析,线性代数,概率论与数理统计足够了。
作者:Zhihong Chen
https://www.zhihu.com/question/24345119/answer/1103497368
相关课程以及课程(主要以课程为主)
数学基础部分
微积分:MIT 18.01, MIT 18.02
线性代数:MIT 18.06
概率论与数理统计:MIT 6.041
凸优化:CVX101
机器学习部分
书籍
Pattern Recognition And Machine Learning
Machine Learning: A Bayesian and Optimization Perspective(比PRML冷门,但是强推,Sergios是我们这学期的ML老师,非常赞~)
视频
白板推导系列(强推大佬的白板推导系列)
作者:Lee
https://www.zhihu.com/question/24345119/answer/261803442
推荐cs229.stanford.edu,syllabus下有数学基础复习的PDF。
作者:Jere
https://www.zhihu.com/question/24345119/answer/586641990
本人目前在英国某高校就读, 数据分析专业,推荐一本老师上课要求读完的数学基础书
这学期主课选了一门计算机学院下的 Data mining and visualization。这门课本身会涉及到比较多的machine learning相关的数学知识。第一节老师给我们做了一个数学测验,然后上了几节数学相关的课,主要介绍了线性代数,向量微积分相关的内容。由于上课本身时间不多,这位老师要求我们课下自行读完一本类似数学导论的书(里面总结了基本机器学习所要求具备的数学知识。这里我附上链接,相信对很多想入门机器学习的朋友会有用处)。
所有的数学内容分为若干个章节,内容为英文版,英文比较好的同学推荐看看。每个标题点进去就是一个PDF, 非常方便打印,可以选择自己比较薄弱的环节看一看。按我们老师说,这些数学是这门data mining 必须具备的知识,所以推荐大家也看一看。
书的链接是:
https://mml-book.github.io/
另外附上我这门data mining 的学习主要内·容:
作者:abc abc
https://www.zhihu.com/question/24345119/answer/1104243436
看你要从事哪方面研究,现在机器学习是一个非常大的领域,包含了从现实数据建模到代码实现等不同领域,不同领域所需要的数学基础差距非常大,但总体上机器学习是现代计算机分支中对数学要求最高的一个分支之一。
如果你想学构建神经网络:几乎不需要数学,或者说大二的水平差不多就够了,这个部分包含了迁移学习,强化学习,神经网络构建等一系列前沿领域,这些领域本质上是你对现实问题的特征总结。看懂模型即可。但这个领域是机器学习大头,每年nips这类顶会这类文章占了一大半。
如果说自然语言处理的经典方法这种直接面向应用的领域可能需要其他数学知识比如随机过程,早期发展的机器学习应用还是很看重数学的,但是神经网络之后基本上就不这么在乎数学了(或者说神经网络的数学基础大家谁都不知道,没法进行进一步分析)。
如果你想学习机器学习的学习理论(或者说你平时看的论文都是在colt这种会议上的),需要的数学包含了主要是实分析,泛函分析,高等概率论,在这之下需要的数分线代基础概率论就不说了。
如果你想在最优化算法上发力,除了上面两个领域的数学基础外,还需要学习最优化算法,前沿研究还需要学统计决策论,渐进统计论(这里推荐一下我们这个领域大佬斯坦福的duchi教的课程统计信息论,以此为基础再往后扒)。
上面两个领域就是为什么机器学习对数学要求这么高的原因了,其实机器学习模型构造的基础出发点都很容易,难得是对模型的上限分析和求解。
最后就是代码实现了,这部分严格意义算做计算机,学号计算机方面的数学就足够了。
总体而言,你把数学系大三以下的数学都学过基本上就能畅通了(不需要整微分方程一类),再往后整主要是概率方面的数学知识。主要是高概,假设检验和参数估计。
作者:工科大屌丝
https://www.zhihu.com/question/24345119/answer/257074745
当我向高人求教这个问题时,他笑了,需要准备的数学知识太分散,如果仅仅是为了准备知识,反而效率不高,毕竟你可能会偏离方向。之后他推荐了我一本书,国外的教材叫做 Pattern recognition and machine learning
我感觉很6,但是很难,里面所涉及到的数学知识就是需要搞清楚的。
作者:匿名用户
https://www.zhihu.com/question/24345119/answer/157183781
数学:高等数学、线性代数、概率论与数理统计、最优化,特别是最后一个要理解其解题方法。
所以基本上理科生在大学都是学过前三门的,补充看下第四个就可以了。
另外之前没学过的可以参考国外教程,学过的还是看国内大学教材更亲切一些。
作者:弱鸡
https://www.zhihu.com/question/24345119/answer/599275364
optimization, 我们用的教材:linear and nonlinear programming
其他的非传统数学,本人上过这些课,在AI学习中受益匪浅,仅建议
1.adaptive control, 教材找不到了,帮助理解reinforcement
2. Detection and estimation theory, 又叫 statistical signal processing (本人拿了A+,臭嘚瑟一下)
3. Detection and estimation theory的前置课:analysis of stochastic process 贝叶斯到死,马尔科夫到死
4. Algorithm: from newbee to phycho
5. Data structure: sudo rm -rf /
6. C++: https://leetcode.com/
作者:shujujia
https://www.zhihu.com/question/24345119/answer/100471448
机器学习:
《数据挖掘实用机器学习工具与技术》
《数据挖掘导论》
《机器学习》
《数据挖掘与机器学习WAKA应用技术与实践》
Python:
《利用Python进行数据分析》
《Python基础教程》
《Python Cookbook》
《“笨办法”学Python》
MATLAB:
《精通MATLAB》
《MATLAB R2014a从入门到精通》
《MATLAB R2014a完全自学一本通》
《MATLAB宝典》
数据库:
《MongoDB权威指南》
《数据库系统概念》
《SQL语言与数据库操作技术大全》
《Oracle从入门到精通》
R语言:
《统计建模与R软件》
《R语言实战》
《ggplot2数据分析与图形艺术》
《数据挖掘与R语言》
☆ END ☆
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~