0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

打造一款机器学习产品、或进行有关机器学习的学术研究所需要的数学背景

DPVg_AI_era 来源:未知 作者:李倩 2018-08-05 10:29 次阅读

对于很多入坑机器学习的同学来说,数学可能是比较艰辛的部分。本文作者介绍了构建机器学习产品、或进行机器学习研究所需的数学背景,以及来自机器学习工程师、研究人员和教师的宝贵经验和建议,并提供了许多课程和书籍资源。

目前我们还不完全清楚开始学习机器学习需要怎样的数学水平,对于那些没有在学校学习过数学或统计学的人尤其如此。

这篇文章的目标是提出打造一款机器学习产品、或进行有关机器学习的学术研究所需要的数学背景。这些建议来自与机器学习工程师、研究人员和教育工作者的对话,以及笔者在机器学习研究和行业中的经验。

为了构建所需数学水平的先决条件,本文首先提出了不同的思维模式和策略,以便读者在传统课堂之外接触数学教育。然后,文章概述了不同类型的机器学习项目所需的具体背景,因这些学科的范围从高中水平的统计和微积分知识到概率图模型(PGM)的最新发展。在这最后,我希望读者能够对数学学习产生感觉,你需要在你的机器学习项目中有效利用这些知识,无论是什么项目!

首先,我承认对学习风格/框架/资源的学习,学习者的个人需求和目标可能是独一无二的。 欢迎各位在HN上提出自己的意见!

关于数学焦虑症的一些体会

事实证明,很多人,包括工程师在内,都对数学有着畏惧情绪。首先,我想谈谈关于“擅长数学”的话题

实际上,擅长数学的人都会有很多实际运用数学的实践经验。结果,他们会觉得在数学上陷入困境是习以为常的事情。最近的研究显示,学习者的心态(而非先天能力),是一个人学习数学能力的主要预测指标。

要清楚,要达到这种习以为常的良好状态需要时间和精力,但这肯定不是人天生就有的能力。本文其余部分将帮助读者确定所需的数学基础水平,并概述应如何建立这种水平的策略。

入门:数学和代码

作为软先决条件,我们需要读者掌握一些线性代数/矩阵运算的基本知识(以免在符号表示上感到困惑),并对概率论有初步了解。此外,我们还鼓励您掌握基本的编程能力,以作为在给定语境下学习数学的工具。之后,您可以根据感兴趣的项目类型调整自己的关注焦点。

如何在校外学习数学

我相信学习数学的最佳方式是全身心学习(即作为学生)。如果脱离了这种全天学习环境,您可能就不会掌握学术课堂中的教学结构,获得来自同伴的(积极)压力和可用的资源。

如果要在校外学习数学,我建议组织学习小组或午餐会、学习研讨会,作为获得学习动力的重要资源。在研究实验室中,也可以组织读书小组。在学习结构方面,您的读书小组可以浏览教科书的章节并定期举行讨论讲座,开辟渠道举行Q&A问答活动等。

这里,文化在发挥着重要作用。这种“额外”的学习应该是值得鼓励的,以免在日复一日的繁杂事务中忘记所学的知识。事实上,尽管这种方式存在短期成本,但在构建同伴驱动的学习环境可以让您的长期工作效率更高。

数学和代码

数学和代码在机器学习工作流程中高度融合。代码通常是用数学直觉直接构建出来,代码甚至和数学共享部分符号和语法。实际上,现代数据科学的框架(例如NumPy)使数学运算(如矩阵/矢量积)转换成的可读代码变得更加直观和高效。

笔者鼓励读者将代码作为巩固学习的一种方式。数学和代码都依赖于理解和表示方法的精确性。例如,实践损失函数或优化算法的手动实现可以成为真正理解基础概念的好方法。

这里让我们举一个通过代码学习数学的具体例子:在神经网络中实现ReLU激活的反向传播(没错,通过Tensorflow / PyTorch就可以做到!具体见链接https://medium.com/@karpathy/yes-you-should-understand-backprop-e2f06eab496b)。反向传播是一种依靠微积分链规则,高效计算梯度的技术。为了在这个设定下使用链规则,我们将upstream导数与ReLU的梯度相乘。

首先,我们对ReLU的激活进行可视化处理,如图:

为了计算梯度(直观地说,就是斜率),可以对一个分段函数进行可视化,以指标函数表示如下:

NumPy为我们提供了有用且直观的语法,我们的激活函数(蓝色曲线)可以在代码中解释,其中x是输入,relu是输出:

relu = np.maximum(x, 0)

然后是梯度(图中红色曲线),其中grad表示upstream梯度:

grad[x < 0] = 0

在没有首先自己推导出梯度的情况下,这行代码的意义可能没有那么显而易见。在我们的代码中,对于满足条件的所有元素,会将upstream梯度(grad)中的所有值设为0,[h <0]。在数学上,这实际上相当于对ReLU梯度的分段表示,当将其与upstream梯度相乘时,它会将任何小于0的值归零!

如上所见,通过我们对微积分的基本理解,可以清楚地对代码进行思考。神经网络实现的完成示例在这里:https://pytorch.org/tutorials/beginner/pytorch_with_examples.html

构建机器学习产品所需的数学知识

在撰写本节内容时,我咨询了机器学习的工程师,确定如何最有效地利用数学对系统进行除错。下面的问题示例是工程师以数学视角给出的回复。如果你以前从没见过也不要紧,笔者希望这一章节能够为你感兴趣的专门问题提供一些适当的背景。

我应该使用哪些聚类方法来显示高维客户数据?

方法:PCA与tSNE

我应该如何校准“阻止”欺诈性用户交易的阈值?

方法:概率校准

如何正确描述卫星数据在世界不同区域内的偏差?(比如硅谷与阿拉斯加州)

方法:将研究问题公开。比如面向人口信息学的平等化?

通常,统计学工具和线性代数可以以某种方式应用于其中的每一个问题。但是,要获得满意的答案,通常需要针对特定领域内的特定方法。在这种情况下,应如何确定你需要学习哪些数学知识?

定义系统

现在我们能够利用的资源是很丰富的(例如,用于数据分析的scikit-learn,用于深度学习的keras),这有助于读者开始编写代码来为系统进行建模。在利用这些资源时,可以尝试回答以下有关问题:

1. 系统的输入/输出是什么?

2. 应该如何准备数据,来适应系统?

3. 如何构建功能或策划数据,帮助模型进行概括?

4. 如何为提出的问题定义合理的目标?

你或许会吃一惊,对系统进行定义可能很难!之后,管道建设所需的工程也是非常重要的。换句话说,构建机器学习产品需要大量繁重的工作,这些工作并不需要深入的数学背景。

更多资料:•Best Practices for ML Engineeringby Martin Zinkevich, Research Scientist at Google

按需学习数学

首先要考察机器学习的工作流程,您可能会发现在一些步骤上会被卡住,尤其是在调试时。当你被困住时,你知道要查找什么问题吗?你的权重合理性如何?为什么你的模型不能与特定的损失定义相融合?衡量模型成功的正确方法是什么?这时,对数据进行假设,以不同方式约束优化或尝试不同的算法可能会有所帮助。

通常,你会发现在建模/调试过程中存在数学上的直觉(比如如何选择损失函数和评估指标),这些直觉可能会有助于做出明智的工程决策。这些都是你学习的机会!

来自Fast.ai的Rachel Thomas是这种“按需学习”方法的支持者。在教育学生时,她发现对于深度学习的学生来说,让他们对这些材料感到兴奋更为重要。在建立兴趣之后,数学教育就变成按需查缺补漏了。

更多资料:

课程:Computational Linear Algebraby fast.ai

YouTube:3blue1brown: Essence ofLinear AlgebraandCalculus

教材:Linear Algebra Done Rightby Axler

教材:Elements of Statistical Learningby Tibshirani et al.

课程:Stanford’s CS229 (Machine Learning) Course Notes

机器学习研究所需的数学知识

笔者现在想要描述对于机器学习中以研究为导向的工作,哪些数学思维方式是有用的。关于机器学习研究的悲观观点体现在即插即用系统上,在这些系统中,模型会投入更多计算力,以挤压出更高的性能。一些人群中,研究人员仍然对缺乏数学严谨性的经验化方法(例如某些深度学习方法)表示怀疑。

未来研究体系可能建立在现有系统和假设的基础上,而这些系统和假设并不会扩大我们对该领域的基本理解,这是令人担忧的。研究人员需要提供原始的资源,构建新的基础架构模块,可用于获取全新观点和达到实际目标的方法。比如可能需要重新思考用于图像分类的卷积神经网络等构建模块,正如“机器学习之父”Geoff Hinton在他最近的关于Capsule Networks的论文中所说的那样。(论文链接:https://arxiv.org/pdf/1710.09829v1.pdf)

下一步,我们需要提出基本问题。这需要在数学上的“深度理解”,《深度学习》一书的作者迈克尔·尼尔森将其称为“有趣的探索”。这个过程涉及数千小时期间经常“被难题卡住”,不断提出问题,并在探究新问题时改变观点。“有趣的探索”使科学家们能够提出深刻,富有洞察力的问题,而不仅仅是简单的想法/架构的结合。

当然,很明显的是,在研究机器学习时是仍然无法学到所有东西的!要正确地进行“有趣的探索”需要适当地进行,需要遵循自己的兴趣,而不是优先考虑那些最热门的新结果。

机器学习研究是一个非常丰富的研究领域,在公平性,可解释性和可访问性方面存在紧迫问题。实际上所有科学学科中,基本的思维都不是一个按需的过程,而是需要耐心,才能用高级数学框架的广度进行思考,解决关键性的问题。

更多资料:• 博客:Do SWEs need mathematics?by Keith Devlin• Reddit帖子:Confessions of an AI Researcher• 博客:How to Read Mathematicsby Shai Simonson and Fernando Gouvea• 论文:NIPSandICML等会议论文

• 文章:A Mathematician’s Lamentby Paul Lockhart1

让机器学习研究走向民主化

我希望我没有把“研究数学”描绘得太深奥,因为使用数学构建的观点应该以直观的形式呈现!遗憾的是,许多机器学习论文中仍然充斥着复杂且不一致的术语,使关键的信息难以辨别。作为一名学生,你可以通过博客、推文等方式将浓缩的论文翻译成易于消化理解的观点,这也是在为自己和这个领域做好事。你甚至可以从distill.pub为范例,这是一个专门为机器学习研究成果提供清晰解释的出版物。换句话说,如果能将技术思想的神秘化为“有趣探索”的手段,一定会很有帮助!

最后的一些总结和建议

总之,我希望这篇文章可以读者提供一个起点,让读者考虑于机器学习有关的数学教育问题。

不同的问题需要不同程度的直观观点,我鼓励读者首先弄清楚目标是什么。

如果您希望打造机器学习产品,请通过问题寻找同行和学习小组,并通过深入研究最终目标来激发您的学习。

在研究领域,具备深厚的数学基础可以为您提供丰富的工具,通过提出新的基础架构模块来推动机器学习领域的发展。

一般而言,数学(尤其是研究论文中的数学)可能是令人生畏的,但在学习中被难题卡住,正是学习过程的重要组成部分。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4553

    浏览量

    66665
  • 数学
    +关注

    关注

    0

    文章

    99

    浏览量

    19024
  • 机器学习
    +关注

    关注

    66

    文章

    8095

    浏览量

    130517

原文标题:【Hacker News最火教程】机器学习必备的数学知识

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    机器人工程,有兴趣和学习动力的看过来

    需求对现有产品进行二次开发改造负责管理分配要求:1、对机器人项目有浓厚的兴趣2、踏实肯干、好学上进3、有相关机器人开发编程经验最好4、具有相关嵌入式软件编程基础和硬件基础5、熟悉C
    发表于 09-07 10:38

    【下载】《机器学习》+《机器学习实战》

    强化学习等.下载链接:[hide][/hide]2.机器学习实战简介:机器学习是人工智能研究领域
    发表于 06-01 15:49

    如何打造一款服务型机器

    如何打造一款服务型机器人发布人:郭向梅联系方式:0312-3102650-609发布时间:2017-8-11 最近几年,机器人相关的话题被炒的火热。在小编儿时的记忆中,认为
    发表于 08-11 15:21

    构建机器学习产品必需的数学背景

    必读我们该如何学习机器学习中的数学
    发表于 08-15 11:44

    如果只是应用机器学习,而不是研究需要哪些知识

    如果只是应用机器学习,而不是研究需要哪些知识?还用深入学习数字么
    发表于 08-30 14:51

    什么是机器学习? 机器学习基础入门

    本文旨在为硬件和嵌入式工程师提供机器学习(ML)的背景,它是什么,它是如何工作的,它为什么重要,以及 TinyML 是如何适应的机器学习
    发表于 06-21 11:06

    一文详解机器学习工程师必知的10大算法

    Netflix的算法可以根据你以前看过的电影来进行电影推荐,而Amazon的算法则可以根据你以前买过的书来推荐书籍。 所以如果你想了解更多有关机器学习的内容,那么你该如何入门?
    的头像 发表于 07-08 11:05 1569次阅读
    一文详解<b class='flag-5'>机器</b><b class='flag-5'>学习</b>工程师必知的10大算法

    一文汇总机器学习和Python(包括数学)速查表

    新手学习机器学习很难,就是收集资料也很费劲。所幸Robbie Allen从不同来源收集了目前最全的有关机器学习、Python和相关数学知识的
    的头像 发表于 07-04 08:25 2070次阅读

    什么是机器学习机器学习能解决什么问题?(案例分析)

    随着大数据时代的到来,机器学习成为解决问题的一种重要且关键的工具。不管是工业界还是学术界,机器学习都是一个炙手可热的方向,但是
    发表于 05-18 13:13 1.6w次阅读
    什么是<b class='flag-5'>机器</b><b class='flag-5'>学习</b>?<b class='flag-5'>机器</b><b class='flag-5'>学习</b>能解决什么问题?(案例分析)

    机器学习所需要数学知识介绍

    数学和代码在机器学习研究中通常是高度混合的。大多数情况下,代码都是直接从数学逻辑中形成,并且能用代码语法展示出
    的头像 发表于 08-05 09:00 4076次阅读

    如何用TensorFlow进行机器学习研究

    从理论上讲,这几乎是您使用 TensorFlow 进行机器学习研究所需要的全部内容。
    的头像 发表于 02-05 10:06 1785次阅读
    如何用TensorFlow<b class='flag-5'>进行</b><b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>研究</b>

    机器学习所需数学知识你能够有效使用吗

    开始机器学习之旅,需要什么层次的数学功底? 尤其是对于那些没有学过数学和统计学的同学们来说,这个问题当前不甚清楚,在这篇文章中,我将要为那些
    的头像 发表于 02-02 17:10 1759次阅读

    AWS如何重塑机器学习

    在2019年的re:Invent大会上,当亚马逊AWS首席执行官Andy Jassy进行主旨演讲时,他意识到有关机器学习的内容简直太多了,仅仅这一部分就花了差不多75分钟。
    的头像 发表于 01-10 09:42 1744次阅读

    六个构建机器学习模型需避免的错误

    近年来,机器学习学术研究领域和实际应用领域得到越来越多的关注。但构建机器学习模型不是一件简单的事情,它
    发表于 05-05 16:39 1261次阅读

    独立开发仿造一个开关机器

    独立开发仿造一个开关机器
    发表于 12-07 16:51 7次下载
    独立开发仿造一个开<b class='flag-5'>关机器</b>人