机器学习是一个涉及到统计学、概率论、计算机科学和算法等方面的交叉领域,从数据中反复学习,并找出其中可用于构建智能应用的潜在关系。尽管机器学习和深度学习具有巨大的可能性,但是如果要很好地掌握算法的工作原理并得到好的结果,对这些技术的全面的数学理解还是很必要的。
机器学习中数学的重要性
Facebook人工智能实验室主任Yann LeCun在2014年的一篇采访中就建议“打算进入这个领域的人本科的时候就应该多学数学、统计学还有物理学”,良好的数理基础会让机器学习事半功倍。
物理学博士Wale Akinfaderin在一篇文章中总结了机器学习中的数学为什么会那么重要:
机器学习需要选择正确的算法,需要考虑准确度、训练时间、模型复杂度、模型参数数量和特征数量。
机器学习需要选择参数设置和验证方法。
机器学习需要通过理解偏差-方差来判断欠拟合和过拟合。
机器学习需要估计置信区间和不确定度。
机器学习中哪些数学知识是必备的
那么学习机器学习应该具备哪些数学知识呢?这取决于你的兴趣以及你想做什么。Wale为我们整理了一下机器学习科学家/工程师至少应具备的数学知识和概念:
线性代数:在机器学习中,线性代数随处可见。主成分分析(PCA)、奇异值分解(SVD)、矩阵的特征分解、LU分解、QR分解、对称矩阵、正交化和正交归一化、矩阵的运算、分解、向量空间和范数等,这些都是理解机器学习中所使用的优化方法所必须的。
概率论和统计学:机器学习和统计学并不是很不同的领域。实际上,有人最近将机器学习定义为“在Mac上做统计”。机器学习所需的一些基本统计和概率理论主要有:组合学、概率规则和公理、贝叶斯定理、随机变量、方差和期望、条件和联合分布、标准分布(伯努利分布、二项式分布、多项式分布、均匀分布和高斯分布等)、动差生成函数(Moment Generating Functions)、最大似然估计(MLE)、先验和后验、最大后验估计(MAP)和抽样方法。
多元微积分:一些必要的内容包括微积分、偏导数、向量值函数、方向梯度、Hessian、 Jacobian、Laplacian和Lagragian分布。
算法和优化理论:这对我们理解机器学习算法的计算效率和可拓展性以及怎么利用数据中的稀疏性很重要。需要的知识主要包括:数据结构(二叉树、散列、堆、堆栈等)、动态规划、随机和次线性算法、图论、梯度/随机下降和原始-对偶方法。
其他还包括:复变函数(集合和序列、拓扑结构、度量空间、单值和连续函数、极限等)、信息论(熵、信息增益)、函数空间和流形。
初学者如何进行机器学习
当然,以上只是强调了机器学习中数学的重要性以及一些必要的数学内容。作为初学者,你没有必要等到具有很强的数学功底之后才开始机器学习,现在一些简单易用的机器学习和深度学习工具包比如scikit-learn、Tensorflow就可以帮助你搭建自己的模型。
正如Daniel Jeffries在其系列文章《Learning AI if You Suck at Math》中所说,数学可以帮你更加清楚的理解机器学习的深层含义,但是只要你具备了一些数学基础,那么你马上就可以开始。现在的一些主流的工具包和框架都有比较详细的安装和使用教程,他的学习方法就是实践:
选择一个项目
克服自我否定
大胆尝试,不怕失败
不断练习
当然,文中他还推荐了基本数学与机器学习参考书,比如《Mathematics: A Very Short Introduction》(中文译本:《牛津通识读本:数学》)、《Algebra Unplugged》、《Make Your Own Neural Network》以及 Ian Goodfellow 的《Deep Learning》,但是其中大多数都是英文的,如果你想深入学习的话,可以参考github上整理的机器学习学习路线。同时,还有一些经典中文教材很值得学习,比如李航老师的《统计学习方法》和南京大学周志华老师的《机器学习》,里面的一些机器学习算法都有详细的数学推导和介绍。
CIO之家 www.ciozj.com 公众号:imciow