一、入门基础
1. 微积分(求导,极限,极值)例如传统的BP神经网络的训练算法实际上是基于复合函数求导的链式法则,又比如目前多数的监督学习训练算法都基于极大似然估计,而极大似然估计的求解往往涉及求导,求极值的内容。

a. 微积分是最基础的数学内容了,平时我们接触的用的也是最多的,微积分的教材和课程也是多如牛毛,仅仅推荐一个 Essence of calculus(https://goo.gl/sfHext),作者以拉风的动画,深入的理解带你回顾一下微积分的关键概念。

2. 线性代数(矩阵表示、矩阵运算、特征根、特征向量)是基础中的基础,主成分分析(PCA)、奇异值分解(SVD)、矩阵的特征分解、LU 分解、QR 分解、对称矩阵、正交化和正交归一化、矩阵运算、投影、特征值和特征向量、向量空间和范数(Norms),这些都是理解机器学习中基本概念的基础。某篇图像分割1w+引用的神文核心思想便就求解构造矩阵的特征向量。

a. 线性代数课程首推  MIT的 Gilbert Strang老爷子的课程。第一次听老爷子的课程,看到矩阵乘法竟然有四种理解方式的时候着实是惊呆了,原来线性代数可以这么美。看到SVD分解的时候马上就能感觉到SVD分解能在很多场景排上大用场。同时该课程深入浅出,相信一般本科生都可以看懂。课程链接如下:Video Lectures | Linear Algebra | Mathematics | MIT OpenCourseWare(http://t.cn/RmyqB2v)

b. 3Blue1Brown的Essence of linear algebra(https://goo.gl/ZuwgNK)以非常直观的角度审视了线性代数的重要概念,直观但不失深刻,配合上高大上的动画效果,让人体会到了大道至简的感觉。一共15个视频,每段视频大约十分钟左右,花费不了多少时间就能看完。

3. 数据处理当然需要编程了,因此C/C++/Python任选一门(推荐Python,因为目前很多库和Library都是用Python封装),数据结构可以学学,让你编程更顺手更高效,但是编程不是数据处理的核心。熟练使用Matlab或者Python调用opencv库是必要条件,但是again他们只是工具,业余时间自学,多练练就没问题。

a. C++:coursera上的 C++程序设计(https://goo.gl/eAGvSz) 就很好,适合有C语言基础的人去进一步学习。国内多数工科出身的非计算机软件专业的学生一般都只学过C语言,而C语言本身的风格比较“硬”,从C语言转到面向对象的程序设计,需要有一个思想上的适应过程。

b. 优达学城上的计算机科学导论(https://goo.gl/Lp3YjJ )是一门零基础的Python入门课程。该课程的特点是深入浅出的授课方式,在讲解Python语法的同时背后潜移默化的传递着程序设计的思想,包括数据结构,代码风格,Debug的小技巧。课程中间还穿插入一些对大牛的采访,大大提高了课程丰富性。

c. 最后说一下C++的经典教材C++ prime plus,该书的厚度达到了一个很厚的境界,初学者基本不可能从头看到尾,更倾向于本书是一个字典式的查询式的书籍,需要的时候读其中1-2章节。套用一句经典语:不要想着一下子掌握一门编程语言的所有特性。

4. 算法(算法复杂度)。通常高校都会有算法类的课程,会概述各类算法的基础和应用,其中包括:精确算法、近似算法、启发式算法、演化算法、递归算法、贪婪算法等待,还有各类优化算法。这部分内容很多会和数据结构相互关联。

a. 算法类的课程推荐coursera上面的 Algorithms(https://goo.gl/at64Gz), 这个课程分为part1 和 part2两部分。该课程基于Java语言,个人觉得熟悉任何一门面向对象的语言(例如:C++)也不妨碍对该课程的学习。对于非CS出身的同学,该课程有相当的难度,课件的动画非常赞能够帮助你很形象的去理解各种算法,同时对算法的理论分析也有相当的深度(如果对理论的推导不感兴趣可以跳过,先暂时直接记住结论也行)。

二、中级教程
1. 概率论+统计(很多数据分析建模基于统计模型)、统计推断、随机过程。可以毫不夸张的说,概率论+统计是机器学习的核心数学理论,前面提到的微积分和线性代数实际上是扮演打工仔的角色。进一步说大多数情况下,我们会依据概率论+统计推到出一个机器学习模型或者算法,而最终的计算过程往往要依赖微积分和线性代数。所以如果你仅仅是实现一个机器学习算法,那么掌握初级教程里边提到的微积分和线性代数就足够了,如果你想进一步探究机器学习算法为什么是这样的,你想解释机器学习模型为什么好用或者不好用,就需要概率论+统计的知识。

a. 一个是MIT的概率系统分析与应用概率Probabilistic Systems Analysis and Applied Probability(https://goo.gl/stzNFZ),这个是课程主页,课程视频相关资料和教材都有。这门课的主要教材是introduction to probability(https://goo.gl/qWeZzM),作者是Dimitri P. Bertsekas,作者以幽默的语言去诠释概率论,这一点是非吸引人的。

b. 国内也有一个不错的教材,就是陈希儒的概率论与数理统计,该教材最经典的莫过于,用一个时间段内某个路口发生交通事故的实例去解释泊松分布为啥是这个长这个样子,力图告诉你分布背后的故事,而不是拘泥于计算。该课程也有网络视频课程不熟悉英文课程的同学也可参考 中科大 概率论与数理统计(http://t.cn/RmyKd8W)。

2. 线性规划+凸优化(或者只学一门叫Numerical optimization,统计、机器学习到最后就是求解一个优化问题)、非线性规划等。个人觉得机器学习里边最常用到的优化内容都是属于Numerical optimization 和 凸优化的,所以各推荐一门课程学习。

a. 凸优化自然是首推Stephen Boyd 和 Lieven Vandenberghe的 教材Convex optimization(http://t.cn/Rmy9Z9w) 与该教材对应的斯坦福的课程为 Convex optimization(https://goo.gl/inJExJ)。该书分为三部分,理论(主要介绍凸集,凸函数,凸优化等等概念),应用(凸优化在各种问题上的应用,只有真正的做过这些应用问题才能对这一章感悟很深),算法(这部分相对来说比较普通)。

b. Numerical optimization 的主要内容是基于梯度的优化算法,线搜索方法,线性规划,可微的非线性规划问题。这里推荐Jorge Nocedal和Stephen J.Wright的 Numerical optimization 与该教材对应的课程为Numerical optimization(http://t.cn/Rmy9eQV)。该教材的特点是基本上把最常见的优化问题都覆盖了,同时完全可以感受到虽然是优化教材但是其思想很计算机,作者总是会用一些小技巧来千方百计的降低算法的计算量(就像数据结构里边的算法一样)。不同于上面那本凸优化书理论气息过于严重,本书的作者基本上是以算法为核心(虽然数学理论证明也一点不少),算法伪代码很多,如果会一门编程语言的同学马上就可以去实践了。初学者可以适当抛开部分数学理论证明,更多的放到理解算法Motivation上去,同时亲自去实践这些算法会更好一些。

补充说明:
1)概述
1.1. 线性代数
矩阵论、线性空间、特征值和特征根、范数和距离

1.2. 微积分
极限、导数、微分;向量微积分;泰勒展开式;离散性和连续性变量

1.3. 概率论
概率基础;统计与假设检验;贝叶斯理论;常用概率分布;随机过程

1.4. 动力学分析
微分方程;非线性动力系统

1.5. 优化理论
一阶优化;二阶优化;非线性优化

1.6. 信息论
墒的原理;信息的度量

1.7. 控制论

2)线性代数
想要学习深度学习,你第一个需要理解透彻的学问是线性代数。为什么?因为深度学习的根本思想就是把任何事物转化为高维空间的向量,强大无比的神经网络,说来归齐就是无数的矩阵运算和简单的非线性变换的结合。
线性代数核心需要掌握的是线性空间的概念和矩阵的各项基本运算,对于线性空间的各类概念,矩阵的各种基本运算等等都要有非常深厚的功力。

3)概率论
概率论是整个机器学习和深度学习的语言,因为无论是深度学习还是机器学习所做的事情均是预测未知。预测未知你就一定要对付不确定性,整个人类对不确定性的描述都包含在了概率论里面。

4)微积分
微积分和相关的优化理论算是第三个重要的模块,线性代数和概率论可以称得上是深度学习的语言,那微积分和相关的优化理论就是工具了。深度学习,用层层迭代的深度网络对非结构数据进行抽象表征,这不是平白过来的,这是优化出来的,用比较通俗的话说就是调参。整个调参的基础,都在于优化理论,而这又是以多元微积分理论为基础的。这就是学习微积分也很重要的根源。

5)优化理论
机器学习里的优化问题,往往是有约束条件的优化,因此拉格朗日乘子法就是你逃不掉的魔咒。
优化理论包含一阶和二阶优化,传统优化理论最核心的就是牛顿法和拟牛顿法。

机器学习必备数学知识相关推荐

  1. 一文掌握机器学习必备数学知识(附学习资源)

    来源:运筹OR帷幄 作者:留德华叫兽&王源 本文共5800字,建议阅读10分钟. 本文划分了ML数学基础的的初.中.高三个阶段并提供针对各阶段的学习资源. 0.前言 本篇文章是由留德华叫兽在知 ...

  2. 人工智能必备数学知识· 学习笔记 ·002【马尓可夫链,马尓可夫链奖励过程,马尔可夫决策过程】

    注:笔记 来自课程 人工智能必备数学知识 Tips①:只是记录从这个课程学到的东西,不是推广.没有安利 Tips②:本笔记主要目的是为了方便自己遗忘查阅,或过于冗长.或有所缺省.或杂乱无章,见谅 Ti ...

  3. 人工智能必备数学知识· 学习笔记 ·001【线性回归,最小二乘法梯度下降法】

    注:笔记 来自课程 人工智能必备数学知识 Tips①:只是记录从这个课程学到的东西,不是推广.没有安利 Tips②:本笔记主要目的是为了方便自己遗忘查阅,或过于冗长.或有所缺省.或杂乱无章,见谅 Ti ...

  4. 入门深度学习的必备数学知识

    作者:徐洲更 中科院在读遗传学博士.出于对计算机科学的兴趣,蜻蜓点水式自学了大量编程相关知识,现在对深度学习很感兴趣,正在恶补相关知识.此外,还负责帮忙管理生信媛,一个热衷于分享生物信息学知识的公众号 ...

  5. 熬了几个通宵,终于把初中到大学的数学知识梳理完了(学习算法必备数学知识)

    作者简介:阿里巴巴高级技术专家,一直关注前端和机器学习邻域相关技术,在知乎和微信公众号的"全栈深入"分享深度硬核技术文章. 下面的基础数学知识涉及很多数学公式,这些公式编辑起来累S ...

  6. 深度学习必备数学知识之线性代数篇(附代码实现)

    作者 | Vihar Kurama 译者 | 李众望 编辑 | Jane 出品 | AI科技大本营 [导读]线性代数是一种连续的.非离散的数学形式,许多计算机科学家对此缺乏应用经验,掌握线性代数对理解 ...

  7. 电路分析计算必备数学知识----导数与微积分计算(未完)

    最近工作中需要学会如何去分析电路中的问题,比如电容充放电,傅立叶模型等等的东西.... 想起来惭愧啊,工作两年基本都是写代码写代码,高数的知识几乎都快忘光了,现在工作需求分析一些电路,所以需要重新开始 ...

  8. 机器学习都需要有哪些数学知识?

    随着科技的快速发展,人工智能的重要性日渐显现. 机器学习是一个异常丰富的研究领域,有大量未解决的问题:公正.可解释性.易用性.如同所有的学科一样,它的基本思想不是请求式的过程,而是需要耐心地用高级数学 ...

  9. Paddle_程序员必备的数学知识_转发

    程序员--必备数学知识 !!!Attention 本博客转发至百度aistudio的<深度学习7日入门-cv疫情检测>,课程非常棒!本人力推! 博客转发地址:https://aistudi ...

最新文章

  1. 设置CodeRush Xpress的线条颜色
  2. python 科学计算基础教程电子版-终于领会python科学计算入门教程
  3. 获取个人借阅信息---图书馆client
  4. SpringMVC数据库链接池,以及其他相关配置
  5. pandas.read_csv——分块读取大文件
  6. 异数OS 2017 DPDK 峰会观后感
  7. 数据分析--使用Web API(应用编程接口)以自动请求GitHub网站的特定信息为例爬取数据,附完整的Python代码详解
  8. 数据改写-数据科学导论
  9. TensorFlow使用--MNIST分类学习(BP神经网络)
  10. mysql 时间戳截断_列的Mysql时间戳数据被截断
  11. java 开关按钮_SwitchButton开关按钮的多种实现方式
  12. AD16原理图页设置库路径(1)
  13. 小程序毕设日志.2021.3.13
  14. pe系统测试软件,PE实测:测试环境及PE制作
  15. 2019年阿里巴巴暑期实习面经--数据研发工程师--口碑
  16. 小游戏打包发布安卓APK
  17. 福建船政交通职业学院计算机应用技术录取,福建船政交通职业学院单招2020年(单独招生录取分数线)...
  18. Linux命令—— expect: command not found
  19. 使用matplotlib在图片上画框框
  20. 用C语言实现简单的猜数字小游戏

热门文章

  1. 怎么让热图显示基因名_OmicShare Tools - 基迪奥生物信息绘图云平台
  2. 测试员必备:数据库Oracle+PLSQL常见操作文档整理!
  3. Java模拟Post 提交表单数据
  4. Java编程那些事儿11——JDK的获得、安装和配置
  5. 临近毕业,2020春招困惑你的十大问题,你中招了吗?
  6. 机器学习(Machine Learning)深度学习(Deep Learning)资料汇总
  7. 接口要怎么测试?接口自动化可以怎么做?
  8. JDBC MySQL
  9. 复试编程训练真题——C语言,统计各单词(字符)出现的次数,并将各单词(字符)和其出现的次数输出到屏幕和文件中
  10. oracle emp imp 使用介绍