很多同学谈数学色变,但数学是机器学习绕不开的基础知识。今天我们来谈谈这个话题:学好机器学习究竟需要哪些数学知识? 先看某乎上的回答: “ 随机过程,实分析。机器学习往深里做肯定需要用这种,高级的数学语言去对问题进行描述。我本人对随机和实分析,其实目前也还只是略懂,很难说,真正的彻底掌握这两门十分强大的数学工具。” “我本科没好好学泛函,到学到一些ML的方法比如kernel相关的方法的时候就凸显出来对泛函不熟,对函数空间理解不够的话会比较吃力。但重要性上比如前面几个方面。” (以上为原文引用,错别字没有校正) 大部分读者看到这样的答案之后内心是凄凉的。实变函数,拓扑学,泛函分析,除了数学系之外,很少有其他专业会学这些课程。 实变函数学十遍 随机过程随机过 泛函分析心犯寒 我们先用不少大学流传的顺口溜压压惊 真的需要学习这些令人不寒而栗的课程吗?事实上,要理解和掌握绝大部分机器学习算法和理论,尤其是对做工程应用的人而言,所需要的数学知识大学数学老师已经给你了: 微积分 线性代数 概率论 最优化方法 关键知识点 微积分 先说微积分/高等数学。在机器学习中,微积分主要用到了微分部分,作用是求函数的极值,就是很多机器学习库中的求解器(solver)所实现的功能。在机器学习里会用到微积分中的以下知识点:
其中最核心的是记住多元函数的泰勒展开公式,根据它我们可以推导出机器学习中常用的梯度下降法,牛顿法,拟牛顿法等一系列最优化方法: 参考书目: 微积分用经典的同济7版就可以了,这是国内很多高校工科专业的微积分教材。如果想深入学习,可以看数学分析的教材,这是数学系的微积分。北大张筑生先生所著的数学分析可谓是国内这方面教材的精品。 同济大学 《高等数学》 张筑生 《数学分析新讲》 线性代数 相比之下,线性代数用的更多。在机器学习的几乎所有地方都有使用,具体用到的知识点有:
机器学习算法处理的数据一般都是向量、矩阵或者张量。经典的机器学习算法输入的数据都是特征向量,深度学习算法在处理图像时输入的2维的矩阵或者3维的张量。掌握这些知识会使你游刃有余。 参考书目: 线性代数同样是同济版的教材,如果想更全面系统的学习,可以看斯蒂文的这本。 同济大学 《线性代数》 Steven Leon 《线性代数》 概率论 如果把机器学习所处理的样本数据看作随机变量/向量,我们就可以用概率论的观点对问题进行建模,这代表了机器学习中很大一类方法。在机器学习里用到的概率论知识点有:
这些知识不超出普通理工科概率论教材的范围。 参考书目: 概率论国内理工科专业使用最多的是浙大版的教材: 《概率论与数理统计》 最优化方法 最后要说的是最优化,因为几乎所有机器学习算法归根到底都是在求解最优化问题。求解最优化问题的指导思想是在极值点出函数的导数/梯度必须为0。因此你必须理解梯度下降法,牛顿法这两种常用的算法,它们的迭代公式都可以从泰勒展开公式中得到。如果能知道坐标下降法、拟牛顿法就更好了。 凸优化是机器学习中经常会提及的一个概念,这是一类特殊的优化问题,它的优化变量的可行域是凸集,目标函数是凸函数。凸优化最好的性质是它的所有局部最优解就是全局最优解,因此求解时不会陷入局部最优解。如果一个问题被证明为是凸优化问题,基本上已经宣告此问题得到了解决。在机器学习中,线性回归、岭回归、支持向量机、logistic回归等很多算法求解的都是凸优化问题。 拉格朗日对偶为带等式和不等式约束条件的优化问题构造拉格朗日函数,将其变为原问题,这两个问题是等价的。通过这一步变换,将带约束条件的问题转换成不带约束条件的问题。通过变换原始优化变量和拉格朗日乘子的优化次序,进一步将原问题转换为对偶问题,如果满足某种条件,原问题和对偶问题是等价的。这种方法的意义在于可以将一个不易于求解的问题转换成更容易求解的问题。在支持向量机中有拉格朗日对偶的应用。 KKT条件是拉格朗日乘数法对带不等式约束问题的推广,它给出了带等式和不等式约束的优化问题在极值点处所必须满足的条件。在支持向量机中也有它的应用。 如果你没有学过最优化方法这门课也不用担心,这些方法根据微积分和线性代数的基础知识可以很容易推导出来。如果需要系统的学习这方面的知识,可以阅读《凸优化》,《非线性规划》两本经典教材。 参考书目: 最优化方法可以参考下面两本经典教材: Stephen Boyd《凸优化》 Dimitri Bertsekas 《非线性规划》 各种算法和理论用到的数学知识 下面我们来看典型算法和理论结论所用到的数学知识: 除流形学习需要简单的微分几何概念之外,深层次的数学知识如实变函数,泛函分析等主要用在一些基础理论结果的证明上,即使不能看懂证明过程,也不影响我们使用具体的机器学习算法。概率图模型、流形学习中基于图的模型会用到图论的一些基本知识,如果学习过离散数学或者数据结构,这些概念很容易理解。 看完这些,你心里的底气应该更足,如果你大学数学知识还没有还给老师,为什么还担心因为数学而学不好机器学习呢? 本文为SIGAI原创 |
|