为了构造(机器学习中)数学的背景,我会先讲一些与传统课堂不同的思维模式和策略。然后,我会概述不同类型机器学习工作所需的具体背景,毕竟机器学习涉及的学科范围太广泛了(它涵盖了高中级别的统计和微积分,也涵盖了概率图形模型(PGM)的最新进展)。
我希望读者们在读到文章的最后时,能够知道自己有效使用机器学习所必需的数学知识。
作为这篇文章的前言,我想说:对于不同学习者的个人需求或目标来说,学习的风格、架构和资源都应该是独一无二的!
事实是,擅长数学的人都做过大量的数学练习。因此,在研究数学问题被卡住时,他们依然能够“风雨不动安如山”。如最近的研究所示,学生的心态,而非先天才能,才是预测一个人学习数学的能力的主要因素。
要清楚的是,要达到这种境界,需要时间和精力。这显然不是你天生就有的能力。本文的剩余部分将帮助您确定所需的数学功底,并概述构建它的策略。
如何在课外学习数学?
为了在课外学习数学,我建议大家将学习小组或午餐研讨会作为学习的重要途径。在研究型的实验室中,这可能以阅读小组的形式呈现。在构建知识结构方面,你的小组可以把教科书各章节过一遍,并定期对课程进行讨论,同时通过Slack平台的途径参与远程问答。
这里,企业文化发挥着重要的作用——这种“额外”的研究学习应该受到管理层的鼓励和激励,而不是被视为影响产品交付的消极怠工行为。事实上,虽然短期内会花费一些成本,但是构建同伴驱动的学习环境可以使你在长期的工作中更有效率。
我鼓励你将编写代码作为巩固学习的一种方式。学习数学和编写代码都依赖于你对问题理解和表述的精准程度。例如,手动编写损失函数或优化算法,就是真正理解这些基础概念的好方法。
让我们来探索一个实际的问题:在你的神经网络中实现ReLU函数激活的反向传播(是的,即使Tensorflow / PyTorch可以替你做这个!)。这里简单介绍一下,反向传播是一种依赖于微积分链式规则来有效计算梯度的技术。为了在这个问题设定下使用链式规则,我们将上游导数与ReLU函数的梯度相乘。
我们先将ReLU激活函数进行可视化(就是下图的样子),然后这样定义这个函数:
relu = np.maximum(x, 0)
ReLU函数的梯度函数(红色曲线)可以如下所示,grad表示上游梯度:
grad[x < 0] = 0
在没有首先自己推导梯度公式的情况下,这行代码可能没有任何意义。在我们的代码中,对于满足[h <0]条件(即x<0)的所有元素,将其对应上游激活函数的梯度(grad)数值设置为0。在数学上,这实际上相当于ReLU梯度函数的分段表示,所有x轴上小于0的数值,当乘以上游梯度时,它的值会变成0。
正如我们所见,通过我们对微积分的基本理解,我们可以清楚地理解代码的含义。
如果你还没有遇到过它们,请不要担心。希望本节能够为你提供一些特定问题的相关内容,也许你也会遇到类似的问题并尝试解决哟!
Q:我该用哪种聚类方法可视化高维的客户数据呢?
A:PCA或者tSNE。
Q:我该如何校准用来阻隔虚假用户交易的安全阈值(例如在0.9或0.8的置信水平下)?
A:可以使用概率校准(Probability calibration)。
Q:描述我卫星数据在世界特定地区(如硅谷与阿拉斯加州)的偏差的最佳方法是什么?
A:这是一个开放的研究型问题。也许可以基于“人口平价”(demographic parity,该方法是要求预测必须与某特定敏感属性不相关)的原则展开。
通常,统计和线性代数可以通过某种方式应用于这些问题中的任何一个。但是,要获得满意的答案通常需要针对特定领域的方法。如果是这样的话,你如何缩小你所需学习的数学范畴呢?
系统的输入/输出分别是什么?
应该如何准备好合适的数据格式,从而适应系统要求?
如何进行特征建模或数据整理,以便于模型的推广?
如何为需要解决的问题设定合理的目标?
你会惊讶地发现——要定义一个系统,其实非常复杂。而搭建数据工作流(data pipeline)也并不容易。换句话说,构建一个机器学习产品需要进行大量的繁琐复杂的工作;而这些工作并不需要太深的数学背景。
为什么模型没有按照某个损失定义进行收敛?衡量成功的正确指标是什么?此时,有一些方法可以帮助到你:对数据做出假设、以不同方式约束优化、或尝试不同的算法。
通常,你会发现建模/调试过程中需要数学直觉(例如,选择损失函数或评估指标),这些直觉可能有助于做出明智的工程决策。 这些是你学习的机会!
来自Fast.ai的Rachel Thomas是这种“按需”方法的支持者——在教育学生时,她发现对于深度学习的学生来说,让他们对将要学习的内容感到兴奋更为重要。之后,针对这些学生的数学教育即可“按需”填补之前未涉及的知识漏洞。
值得关注的是,研究界是建立在现有系统和假设的基础上,而这些系统和假设可能不会扩展我们对该领域的基本理解。研究人员需要提供新的基本模块,供我们在该领域中获取全新洞察力和方法。
这可能意味着我们需要像“深度学习教父” Geoff Hinton在他最近的Capsule Networks论文中所做的那样 ,重新思考构建某些领域的基础知识(如应用于图形分类的卷积神经网络)。
为了迈出下一步,我们需要提一些基本问题。这需要在数学方面的极度熟练——深度学习一书的作者Michael Nielsen称之为“有趣的探索”。这个过程涉及数千小时停滞、提问、重新思考问题以探索新观点。
“有趣的探索”使科学家们能够提出深刻,富有洞察力的问题,而不仅仅是简单的想法或架构的结合。显而易见,想要学会机器学习研究领域内需要的所有知识,是不可能的任务!要正确地进行“有趣的探索”,你需要遵循自己的兴趣,而不是为最热门的新结果感到焦虑。
机器学习研究是一个非常丰富的研究领域。当然,它在公平性、可解释性和可获得性方面也存在亟待解决的问题。在所有科学学科中都是如此,基本思维的获得并不能一蹴而就。要在解决关键问题所需的高水平数学框架的广度进行思考,需要长期的耐心。
不同的问题需要不同程度的直觉,我鼓励你首先弄清楚你的目标是什么。
如果你希望构建产品,请通过问题寻找同行和学习小组,并深入研究最终目标,激发你的学习。
在研究领域,广泛的数学基础可以为你提供工具,通过提供新的基础知识来推动该领域的发展。
更多阅读: