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

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

3天内不再提示

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

zhKF_jqr_AI 来源:未知 作者:李倩 2018-08-05 09:00 次阅读

编者按:Vincent Chen是斯坦福大学计算机科学专业的学生,同时也是斯坦福AI研究室的一名研究助理。本文他给我们带来了在机器学习中所需要的数学知识介绍。以下是论智对原文的编译。

很多没有良好数学基础或统计学的同学们总会问,到底什么样的数学水平才能入门机器学习?目前还没有确切的答案。

在这篇文章中,我会列出在进行机器学习产品搭建或学术研究时所需要的数学背景知识。这些都是我在与机器学习工程师、研究者、教授的谈话中以及自己的经验中总结出的。

为了构建数学的准备知识,首先我会提出与传统课堂不同的思维模式和学习方法。接着,我会大致叙述在机器学习领域不同类型所需要的具体背景知识,大致涵盖了高中的统计学和微积分,到最近的概率图形模型(PGM)。最后,我希望你能找到自己所在领域所需要的数学知识。希望这篇文章对你有用!

关于被数学支配的恐惧

数学可以说是很多人的噩梦,包括工程师们。在开始之前,我想谈谈那些“数学好的人”到底有什么秘诀。

实际上,数学好的人只是有很多练习的机会而已,他们习惯了在研究数学的过程中遇到困难。最近的一项研究表明,与天生的能力相比,思维方式才是能否学好数学的重要因素。

但是,想达到上述境界仍需要花点时间和努力,这并不是与生俱来的能力。

开始上手

首先,作为基础,我们希望你有基础的线性代数、微积分以及概率论入门知识。如果有基础编程知识更好,这可以作为在具体语境中学习数学的工具。之后,你可以根据具体领域调整学习。

如何在学校之外学习数学

学习的最佳途径一定是泡在学校,如果脱离了学校环境,也就没有严格的体系架构了,同时也不会有来自学霸的压力,资源明显不足。

所以在校外学习,我推荐学习小组或者研讨会的形式。在研究机构中,可能有阅读小组这类组织。有了基本组织框架,小组内可能会一起学习某本教材,并进行讨论。

这种课外学习通常不会给日常工作带来负担,甚至在互相激励的环境中还能让你的本来工作更加高效。

数学和编程

数学和代码在机器学习研究中通常是高度混合的。大多数情况下,代码都是直接从数学逻辑中形成,并且能用代码语法展示出数学表示法。其实现在一些数据科学框架(例如NumPy)就能直接将数学推理(例如矩阵或向量)转换成可读代码,非常直观高效。

所以这里鼓励通过代码夯实数学学习。例如,练习手动实现损失函数或优化的代码可以进一步了解基础概念。

这里举一个通过代码学习数学的例子:在你的神经网络中为ReLU激活函数进行反向传播。反向传播是利用微积分中的规则来计算梯度的技术。为了在这一环境中实现,我们将upstream导数和ReLU的梯度相乘。

首先,我们对ReLU进行可视化:

为了计算梯度,你可能会对分段函数进行可视化,用指示函数表示如下:

用NumPy我们可以直观地用代码表示出激活函数(蓝色曲线),其中x是输入,relu是输出:

relu = np.maximum(x, 0)

梯度(红线)也是一样,下面的等式描述了upstream梯度:

grad[x < 0] = 0

如果你自己事先没有推导出梯度,那么这行代码可能不好解释。在我们的代码中,将upstream梯度中的所有值都设为0,以满足[h<0]的条件。从数学角度来说,这能高效地展示ReLU梯度的分段表示,当它们乘以upstream梯度时,可以将所有小于0的值变为0。

从这里我们可以看到,了解微积分的基础概念让我们对代码有了清晰的思考。想了解神经网络部署的完整过程,可以查看:pytorch.org/tutorials/beginner/pytorchwithexamples.html

用数学打造机器学习产品

为了完成这一部分,我与机器学习工程师探讨了在debug的过程中都需要哪些数学知识。以下是工程师们的建议,如果你还不了解,没有关系,以下部分可以为你提供具体的思路。

问:我想对高维客户数据进行可视化,应该用什么聚类方法?

答:PCA vs tSNE,参考回答:stats.stackexchange.com/questions/238538/are-there-cases-where-pca-is-more-suitable-than-t-sne

问:为屏蔽虚假用户信息,我应该如何调整阈值(假设置信水平在0.9—0.8)?

答:进行概率校准:scikit-learn.org/stable/modules/calibration.html

问:我想确定某一区域的卫星数据的偏差,应该用哪种方法?

答:答案不唯一,也许可以试试demographic parity?blog.mrtz.org/2016/09/06/approaching-fairness.html

总的来说,统计学和线性代数可以运用到很多问题中,但是想要得到满意的结果通常需要更专业的方法。那么,我们该如何缩小数学学习的知识呢?

定义你的系统

在利用丰富的资源编写代码前,你需要为自己几个问题:

系统的输入和输出分别是什么?

你该如何准备适合系统的数据?

如何创建特征或数据来帮助生成模型?

如何为你的问题定义一个合理的目标?

的确,定义系统很难,但是之后的工程管道搭建也很复杂。换句话说,创建机器学习产品需要做很多工作,但大部分不需要深入的数学知识。

资源

谷歌的研发工程师Martin Zinkevich曾写过一篇机器学习实践教程,感兴趣的读者可自行查阅:developers.google.com/machine-learning/guides/rules-of-ml/

按需学习

刚进入机器学习领域,你可能会发现麻烦不断,尤其是在debug的过程中。当你被某个问题困住时,应该如何解决?权重合理吗?为什么模型会在特殊损失值下收敛?衡量成功与否的正确方法是什么?这时,对数据进行质疑也许比较有用,可以试试不同的优化方法或者算法

通常你会发现这些在建模或debug过程中用到的数学在做决策时也很有用。Fast.ai的创始人之一Rachel Thomas就是这种“随即可用”方法的支持者之一,在教学时,她发现让学生对研究材料感兴趣更加重要,在这之后再加入数学教育即可。

资源

课程:Computational Linear Algebra by fast.ai

地址:http://www.fast.ai/2017/07/17/num-lin-alg/ "Computational Linear Algebra by fast.ai"

YouTube:3blue1brown: Essence ofLinear AlgebraandCalculus

地址:https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw "3blue1brown"

教材:Linear Algebra Done Rightby Axler

地址:http://linear.axler.net/ " Linear Algebra Done Right"

教材:Elements of Statistical Learningby Tibshirani et al.

地址:https://web.stanford.edu/~hastie/ElemStatLearn/ "Elements of Statistical Learning"

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

地址:http://cs229.stanford.edu/syllabus.html#opt "Stanford’s CS229 (Machine Learning

机器学习研究中的数学

下面我将介绍在机器学习学术研究中所需要的数学思维类型。有些人不屑地认为,机器学习研究中那些即插即用的系统只不过是用更多的计算实现更高的性能。在一些领域里,研究人员仍然怀疑实证方法缺少数学的严谨。

很多人担心,研究领域可能在现有系统和假设上并没有扩展对领域的基础了解。研究者们需要提供新的基础模块,用于生成全新的观点和目标。例如,就像Geoff Hinton在他的胶囊网络论文中提到的,重新思考用于图像分类的神经网络模块。

在机器学习研究中,你不可能学习所有知识,你需要做的就是关注自己感兴趣的领域,切勿一味追求热点。

机器学习研究领域包罗万象,但是在公平性、可解释性和可用性方面都有着许多难题。和其他科学研究的准则一样,基础思考并不是现成的,它需要在具备高水平数学框架的前提下耐心思考。

资源

博客:Do SWEs need mathematics? by Keith Devlin

地址:https://www.maa.org/external_archive/devlin/devlin_10_00.html "Do SWEs need mathematics? by Keith Devlin"

reddit讨论:Confessions of an AI Researcher

地址:https://www.reddit.com/r/MachineLearning/comments/73n9pm/d_confession_as_an_ai_researcher_seeking_advice/ "Confessions of an AI Researcher"

博客:How to Read Mathematics by Shai Simonson and Fernando Gouvea

地址:http://www.people.vcu.edu/~dcranston/490/handouts/math-read.html "How to Read Mathematics by Shai Simonson and Fernando Gouvea"

论文:NIPS and ICML recent conference papers

文章:A Mathematician’s Lament by Paul Lockhart1

地址:https://www.maa.org/external_archive/devlin/LockhartsLament.pdf "A Mathematician’s Lament by Paul Lockhart1"

机器学习的民主化

虽然这篇并未涉及太过高深的概念,但很多机器学习论文仍然充满着复杂的术语。作为学生,你可以试着将高深的论文分解,记录自己的理解,通过博客等形式表达出来。在这一点上可以借鉴distill.pub的方式。

结语

希望本文能成为你在机器学习领域开始数学学习的起点。

不同问题需要不同水平的知识来解决,我建议先弄明白你的目标是什么再着手进行学习。

如果你想搭建一款产品,可以找寻同伴或在学习小组中进行。

在研究领域,广泛的数学基础可以助你走的更远。

数学(尤其是研究领域的数学)的确有些令人头大,但是被难住也是学习的一部分啊!

祝你好运!

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

    关注

    42

    文章

    4562

    浏览量

    98643
  • 机器学习
    +关注

    关注

    66

    文章

    8094

    浏览量

    130513

原文标题:资源 |不要再问我什么数学水平才能学机器学习啦

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

收藏 人收藏

    评论

    相关推荐

    学单片机需要很深的数学知识吗?

    学单片机需要很深的数学知识吗?我是大一的想学可以吗有哪位大神能指个方向 该从哪学起? 谢谢!
    发表于 11-11 12:09

    工程电磁场应具备哪些数学知识

    我是一名大二学生,专业是电气工程及其自动化,最近学习了工程电磁场,发现有许多数学知识是高等数学中未有的,希望各位学习过的大师们,帮帮我我还应该学习
    发表于 03-30 18:49

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

    读者, 本书附录给出了一些相关数学基础知识简介.目录:全书共16 章,大致分为3 个部分:第1 部分(第1~3 章)介绍机器学习的基础
    发表于 06-01 15:49

    如何规划出完美的机器学习入门路径?| AI知识科普

    容易上手。掌握足够多的数理知识数学机器学习的重要性不言而喻,尤其是微积分、概率统计、矩阵、凸优化等基础数学知识,除了掌握好相应的数学知识
    发表于 07-27 12:54

    BP神经网络的基础数学知识分享

    一文看懂BP神经网络的基础数学知识
    发表于 06-16 07:14

    高一数学知识点总结

    高一数学知识点总结高一数学知识点总结高一数学知识点总结
    发表于 02-23 15:27 0次下载

    高二数学知识点总结

    高二数学知识点总结高二数学知识点总结高二数学知识点总结
    发表于 02-23 15:27 0次下载

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

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

    如何自学人工智能?机器学习详细路径规划

    综述,机器学习的自学简单来说分为三个步骤 前期:知识储备包括数学知识机器学习经典算法
    的头像 发表于 08-04 11:36 8506次阅读
    如何自学人工智能?<b class='flag-5'>机器</b><b class='flag-5'>学习</b>详细路径规划

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

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

    本科生怎样入门机器学习

    此处我们暂且不论文科生,理科生工科生课程大多在大一会有高等数学和线性代数两门课,机器学习大约需要多少数学知识呢?
    的头像 发表于 05-05 16:50 2096次阅读

    深度学习数学基础(三)之简单数学

    从本文开始,之后的三四篇我们都将沐浴在数学的海洋里,拼命地扑腾,这个系列我会尽力以通俗易懂的方式来讲述这些数学知识
    的头像 发表于 12-10 19:13 662次阅读

    机器视觉需要哪些基础_机器视觉行业发展前景

    学习机器视觉,需要具备以下知识和技能:   数学基础:机器视觉需要用到很多
    发表于 03-12 17:06 1570次阅读

    机器学习理论:k近邻算法

    KNN(k-Nearest Neighbors)思想简单,应用的数学知识几乎为0,所以作为机器学习的入门非常实用、可以解释机器学习算法使用过
    的头像 发表于 06-06 11:15 421次阅读
    <b class='flag-5'>机器</b><b class='flag-5'>学习</b>理论:k近邻算法

    人工智能需要哪些专业知识

    数学是人工智能的另一个重要基础学科。熟练掌握线性代数、微积分和概率论等数学知识,可以帮助我们更好地理解人工智能算法以及模型背后的数学原理。此外,人们还需要了解
    的头像 发表于 08-13 13:58 1366次阅读