找回密码
 立即注册
搜索

观点|我们该如何学习机器学习中的数学

选自ycombinator博客,机器之心编译,作者:Vincent Chen,参与:机器之心编辑部。

数学在机器学习中非常重要,不论是在算法上了解模型代码,还是在工程上构建系统,数学都必不可少。通常分开学校后很难无机会静下心学习数学知识,因此我们最好能经过阅读小组或读书会等方式营建环境,并专注学习那些在实际中常常需求用到的数学知识。




数学达到什么程度才可以末尾机器学习?人们并不清楚,尤其是那些在校时期没有研讨过数学或统计学的人。

本文的写作目的是引见构建机器学习产品或停止相关学术研讨所必需的数学背景,以及数学在工程和研讨中的重要性。这些建议是根据我和机器学习工程师、研讨者和教育者交流而得到的,当然也有我本人在机器学习研讨和业界工作中的个人阅历。

为了构建必备的数学背景,我首先提出不同的思想形式和策略,协助大家在学校之外也可以接受数学教育。然后,我会给出不同种类机器学习工作所需的数学背景,从高中程度的统计学和微积分到概率图模型(PGM)的最新停顿。希望大家读完本文后,可以对本人在机器学习工作中所需求的数学教育有清楚的认知。

关于数学焦虑

很多人害怕数学,包括工程师。首先,我想处理「擅长数学」这一迷思。

普通知晓数学的人有大量和数学有关的实际阅历。因此,他们在研讨数学时更容易保持专注。相比内在才能,先生的思想形式才是决议一个人学习数学才能的关键。

不过要想达到这种形状需求付出大量工夫和努力,但是这并不会让你感到无聊。下文将协助大家确定你所需求的数学程度,以及学习策略。

机器学习中的数学

作为软件工程的开发者,我们普通有基础的线性代数与矩阵微分学知识,也有一些概率论和编程的基础。因此以它们为基础,我们只需求根据不同的方向与范畴调整知识结构就行。

那么我们该如何在校外学习数学呢?我置信学习数学最好的方法是将其作为一份全职工作,也就是先生。由于分开了学校,我们很难停止结构化的学习,也很难有正向的同龄压力和众多的学习资源。但是在校外学习中,我比较引荐成立学习小组或研讨会,它们异样能提供相似学校的学习环境。

在研讨实验室中,这种课外学习能够是以阅读小组的方式停止。我们可以讨论课本中难以了解的地方,也可以讨论本人对它们的见解。而学习的环境是支持长期数学学习的动力,因此建立这种环境并看法到数学在工程与研讨中的重要性非常关键。

数学与代码

数学和代码在机器学习工作流程中高度交错在一同。代码通常可以根据数学直观地构建,它甚至会共享数学符号与句法。实践上,NumPy 等古代数据迷信框架令数学运算很容易转化为直观的代码。我们可以将代码作为巩固学习的方式,且数学和代码都依赖于对概念的准确了解与符号表示。例如,手动用 NumPy 完成损失函数或最优化算法是了解它们概念非常好的方式。

作为经过代码学习数学的案例,我们可以思索一个实践的案例,即为神经网络完成反向传播和 ReLU 激活函数。作为入门级概念,反向传播是一种依赖于微积分链式求导法则的技术,它能高效计算梯度。为了在神经网络中应用链式求导法则,我们可以运用 ReLU 激活函数的梯度乘以下游导数。

为了完成反向传播的案例,首先我们可以可视化 ReLU 激活函数:




为了计算 ReLU 的梯度或斜率,我们可以将其可视化为分段函数,其中自变量小于零的地方斜率为 0,自变量大于零的地方斜率恒等于 1。




NumPy 可以协助我们构建 ReLU 函数,运用 maximum 函数可以只输入该函数中一切参数中相对较大的值。如下所示 x 为输入,relu 为输入:

relu = np.maximum(x, 0)

ReLU 激活函数的梯度值可以表示为以下,其中 grad 表示为下游梯度:

grad[x < 0] = 0

假如没有首先手动推导出梯度,上述代码能够并不是那么容易了解。在我们的代码中,其将一切满足条件 [x < 0] 的元素梯度 grad 都设置为零,也就是说下游梯度只要在 x>0 的状况下才能继续向前传播。在数学上,这等价于 ReLU 激活函数梯度的分段线性表征,它将一切小于 0 的值紧缩为 0,并乘上下游梯度。

如上所示,若对于微积分有一定的了解,那么我们可以明晰地了解这两行基本代码。由于机器学习中很多代码都在描画数学运算,因此了解数学原理对于了解机器学习模型过程非常重要。

构建机器学习产品中的数学

为了完成这一章节,我曾与机器学习工程师讨论到底哪些数学对于调试他们的系统最重要。以下一些成绩与回答是工程师站在数学的角度下的看法。
    我们可以运用什么样的降维算法可视化高维用户数据?方法:主成分分析与 t 分布随机近邻嵌入我们该怎样校准阈值(例如置信度选择 0.9 或 0.8)以阻止一些诈骗性的用户数据?方法:概率校准将卫星数据倾向硅谷或阿拉斯加等世界某块详细地区的最好方法是什么?方法:开放性成绩,也答应以是人口统计学方法

普通而言,统计学和线性代数能以某些方式运用于这些成绩。但是,为了获得令人称心的回答,我们通常需求特定范畴的方法。假如是这样的话,我们该如何选择一些我们需求学习的数学内容?

定义你的系统

目前有非常多的资源可以协助我们跨越写代码而直接调用函数构建机器学习系统,例如数据分析中常用的 scikit-learn 和深度学习中常用的 keras。所以你们可以尝试回答以下关于搭建机器学习流程的成绩:
    机器学习系统中输入和输入都是什么?我们该如何预备合适的数据以拟合系统?如何构建特征或数据以协助模型提高泛化功能?如何为我们的义务定义合适的目的函数?

你能够会比较诧异,定义机器学习系统能够会比较困难,但搭建的流程并不复杂。换而言之,构建机器学习产品要求非常多的工程工作,但并不要求有非常深沉的数学背景。

资源:谷歌机器学习运用的四十三条阅历法则(附 PDF)

学习必要的数学

假如一头钻进机器学习工作流,你能够会发如今调试机器学习系统时会遇到一些困难。当遇到困难时你知道需求查找什么吗?你的权重是不是合理?为什么模型运用一些损失函数不能收敛?用什么样的度量方法衡量模型功能才是合理的?在这个时分,对数据分布做出假设、约束最优化方法或采用不同的算法都是非常有协助的。

通常,你能够会发如今建模和调试过程背后有直观的数学原理,例如选择损失函数或评价度量,这些数学原理都会协助我们完成更优的工程决策。

因此,根据实践工程中遇到的数学,再进一步学习这些数学才是更好的方法。

机器学习研讨中的数学

这里,我想要描画下对机器学习研讨有协助的数学心态。对机器学习研讨比较嘲讽的观点以为,它是一种即插即用的系统,把大量计算层级堆叠在一同而获得好的表现。在一些圈子里,研讨人员依然质疑阅历性的方法缺乏严谨的数学推导(例如,一些深度学习方法),无法为我们带来广义上的智能。

它担忧研讨界能够是建立在已有的系统与假设上,并未扩展我们对机器学习范畴的基础了解。研讨员们需求贡献新的、基础的研讨模块,从而用于启示全新的洞见与研讨方法。例如像深度学习先驱 Geoff Hinton 提出 Capsule 网络一样,它重新思索图像分类中常用的 CNN 基础。

为了机器学习的下一步跃迁,我们需求提出基础成绩。这需求对数学的纯熟掌握,就像深度学习书籍的作者 Michael Nielsen 描画的「风趣的多探求」。这个过程能够阅历数千小时的思索、发问、推翻成绩寻求新的视角。「风趣的探求」能让迷信家提出深度、有洞见的成绩,超越简单的想法和架构。

要清楚,在机器学习研讨中,不能够什么都学。为了正确地「风趣探求」,需求你遵照本人的兴味,而不是不断计较最热的新研讨。

机器学习是一个异常丰富的研讨范畴,有大量未处理的成绩:公正、可解释性、易用性。好像一切的学科一样,基本思想不是央求式的过程,需求耐烦肠用高级数学框架思索严重难题的处理方案。

民主化机器学习研讨

我希望我没有把「研讨数学」描画得过于难懂,由于运用数学的思绪应该以直观的方式表现。悲哀的是,许多机器学习论文照旧充满大量复杂的、前后矛盾的术语,关键直觉难以了解。作为先生,你可以为本人、为这个范畴做个伟大贡献:经过博客、推特等方式把这些密集的论文转写为可消化的直觉知识块。以 distill.pub 为例,它就专注于提供对机器学习研讨的明晰解释。换言之,把技术思绪的解释作为学习探求的方式,风趣而又有协助。

总结

希望本文可以协助大家针对机器学习提高数学程度。
    不同的成绩要求不同的数学程度,我鼓励大家首先理清本人的目的。假如你希望构建产品,那么寻求同伴和研讨小组,经过向最终目的的行进而激励本人学习。在学界研讨中,广泛的数学基础可以协助贡献新的基础构造块,进而推进范畴发展。通常,数学(尤其是研讨论文方式的数学)令人望而生畏,但是「沉醉其中」是学习过程的一大部分。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

大神点评11

@Xizi_4DS2CofM 2019-6-22 18:00:16 显示全部楼层
概率论和线性代数
回复

使用道具 举报

水芙蓉1987 2019-6-22 18:08:36 显示全部楼层
学随机分析,微积分,矩阵论
回复

使用道具 举报

山茶707 2019-6-22 18:13:27 显示全部楼层
数学是大自然的言语,是迷信思想的途径
回复

使用道具 举报

说了半天的废话,数学哪些内容呢?标题党
回复

使用道具 举报

关东名侦探 2019-6-22 18:29:55 显示全部楼层
分享了
回复

使用道具 举报

冰心诺 2019-6-22 18:37:58 显示全部楼层
分享了
回复

使用道具 举报

吸脂肪 2019-6-22 18:46:04 显示全部楼层
分享了
回复

使用道具 举报

奔放的农民 2019-6-22 18:50:43 显示全部楼层
分享了
回复

使用道具 举报

华夏女孩 2019-6-23 15:22:07 显示全部楼层
lz也多多分享一下感受,想换工作了
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies