数 学 家 的 故 事 简 直 惊 呆 了
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高中毕业后的这些年(续)
本篇文章想要说明的是数学并非认识世界的唯一途径,即使数学水平不高的你同样也可以开展机器学习方面的工作和研究。但是不可否认数学是自然科学领域探究真理的有效工具,有了强大的数学背景知识会让你看待问题更加深刻,这就是我们经常会看到很多大牛们都是出身数学专业。另外本文所列举的课-程比较多,要想一下子去穷尽所有课-程显然也不现实,大可不必打好所有的数学基础再去学机器学习,最好的做法是当你对机器学习本身的理解达到一定瓶颈的时候,你可以补一补一些相关的数学基础之后再回去看机器学习的问题也许会更快的有所突破。所以本文针对不同学习基础的朋友们,划分初,中,高三个学习阶段,供大家在学习中进一步去取舍。
首先对人工智能、机器学习一个综述:
大话“人工智能、数据科学、机器学习”--综述 - 知乎专栏:
笼统地说,原理和基础都在数学这边,当然有很多偏应用和软件使用的技术,例如“深度学习调参”等,这些报个培训速成班就能学会的技术含量不那么高的东西,不在讨论范围内。
这里要讨论的,是如何系统的学习,然后自己能编出这机器学习或深度学习的程序或软件--我想,这才能称为一个合格的机器学习、数据科学家。
1.入门基础
1. 微积分(求导,极限,极值)例如传统的BP神经网络的训练算法
实际上是基于复合函数求导的链式法则,又比如目前多数的监督学习训练算法都基于极大似然估计,而极大似然估计的求解往往涉及求导,求极值的内容。
2. 线性代数(矩阵表示、矩阵运算、特征根、特征向量)是基础中的基础,主成分分析(PCA)、奇异值分解(SVD)、矩阵的特征分解、LU 分解、QR 分解、对称矩阵、正交化和正交归一化、矩阵运算、投影、特征值和特征向量、向量空间和范数(Norms),这些都是理解机器学习中基本概念的基础。某篇图像分割1w+引用的神文核心思想便就求解构造矩阵的特征向量。
国内的线性代数教材偏重于计算而忽视了线性空间,特征值等基本概念阐述。我个人也是在接触机器学习的内容后发现自己的线性代数基础并不牢固,下决心恶补线性代数,下面我推荐几个课-程:
3. 数据处理当然需要编程了,因此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的话,用Python调用比较方便;但是,如果是高阶骨灰级玩家,需要修改甚至自己写源代码,那么还是推荐C-C++,因为他们的速度最快。
我个人用的比较多的是C++和Python,因此下面推荐二个课-程:
4. 算法(算法复杂度)。通常高校都会有算法类的课-程,会概述各类算法的基础和应用,其中包括:精确算法、近似算法、启发式算法、演化算法、递归算法、贪婪算法等待,还有各类优化算法。这部分内容很多会和数据结构相互关联。算法非常核心,想必大家都听说过算法工程师这个职位。关于数学模型和算法的区别、联系,参见:
【学界】整数规划精确算法-近似算法-(元)启发算法-神经网络方反向传播等算法的区别与关联
2.中级教-程
1. 概率论+统计(很多数据分析建模基于统计模型)、统计推断、随机过程。可以毫不夸张的说,概率论+统计是机器学习的核心数学理论,前面提到的微积分和线性代数实际上是扮演打工仔的角色。进一步说大多数情况下,我们会依据概率论+统计推到出一个机器学习模型或者算法,而最终的计算过程往往要依赖微积分和线性代数。所以如果你仅仅是实现一个机器学习算法,那么掌握初级教-程里边提到的微积分和线性代数就足够了,如果你想进一步探究机器学习算法为什么是这样的,你想解释机器学习模型为什么好用或者不好用,就需要概率论+统计的知识。
实话说概率统计的课-程和教材看过不少,至今对概率统计的理解仍然不够。相信绝大多数工科生在本科都学过概率论与数理统计这门课,但是
很多教材未能体现出概率真正的思想,名为概率论实际上改名叫做“各种概率分布的介绍”更为妥当,基本上这类教材的节奏都一样先介绍一种分布,然后开始求期望,求方差,求条件分布,各种微积分或组合数的运算啊。经过多年的摸爬滚打的经验,我推荐下面两门课-程:
2. 线性规划+凸优化(或者只学一门叫Numerical optimization,统计、机器学习到最后就是求解一个优化问题)、非线性规划等。个人觉得机器学习里边最常用到的优化内容都是属于Numerical optimization 和凸优化的,所以各推荐一门课-程学习。
3. 数值计算、数值线代等
当年我是在数学系学的这门课,主要是偏微分方程的数值解。但我觉得其开篇讲的数值计算的一些numerical issue更为重要,会颠覆一个数学系出身小朋友的三观。(原来理论和现实差距可以这么大!) Conditional number, ill-conditioned problem,会让你以后的编程多留个心眼。
@留德华叫兽
恭喜你,到这里,你就可以无压力地学习Machine Learning这门课了(其实机器学习,通篇都是在讲用一些统计和优化来做clustering 和classification这俩个人工智能最常见的应用)。并且你就会发现,ML课中间会穿插着很多其他课的内容。恩,知识总是相通的嘛,特别是这些跨专业的新兴学科,都是在以往学科的基础上由社会需求发展而来。
到这里,其实你已经能看懂并且自己可以编写机器学习里面很多经典案例的算法了,比如regression,clustering,outlier detection。
运筹学(最优化理论)如何入门? - 知乎