夏乙 栗子 发自 凹非寺
量子位 出品 | 公众号 QbitAI

做机器学习需要多少数学基础?这是很多初学者最关心的问题,答案也众说纷纭。

有人说,概率论线性代数要预先精通;有人说,微积分要懂一点;也有人说,没必要特地去补;甚至有人专门写了绕开数学的深度学习入门教材……

斯坦福大学计算机系学生、斯坦福AI实验室研究助理(RA)Vincent Chen,最近在硅谷最牛孵化器Y Combinator官方博客上发表的一篇文章,就专门深入探讨了里这个问题。

Vincent Chen

Vincent想要说的是,具体问题具体分析

他跟领域内的很多工程师、研究人员、教育工作者,讨论了这个问题,再加上自己的经验,得出了这样的结论:解决不同问题,可能需要不同程度的直觉 (Intuition) ,所以首先要知道自己的目标是什么。

构建产品和做研究,需要的数学就不太一样。

不过,还是要先从大家都差不多的入门阶段说起。

入门须知

熟悉线性代数/矩阵运算,是机器学习的软性前提。也就是说,最好懂,不强制。

当然,学习数学最好的环境还是学校。没有了学校里的压力、竞争和交流,就要找其他方式来补充:学习小组、学习型午餐会都是不错的形式。

想要在工作中学数学,编程最好也会一点,它会成为你的学习工具。

要知道,在机器学习任务中,数学和代码是交织在一起的。代码需要数学上的直觉,甚至和数学符号的语法有共通之处。

举个例子:练习手动实现损失函数(loss functions)或者优化算法(optimization algorithm),就是真正理解背后概念的好方法。

再举个比较实际的例子:在神经网络里手动为线性整流函数(ReLU)实现反向传播,就涉及用微积分里的链式法则来有效计算梯度,而运用链式法则,需要用ReLU的梯度乘以一个导数。

最开始,要先将ReLU激活函数可视化:

计算梯度(就是看起来的斜率),要可视化一个阶梯函数,用指示函数表示:

现在的数据科学框架能直观地把数学运算翻译成可读的代码,NumPy就是其中之一。对于上面这个任务,它就可以将激活函数(蓝色曲线)用代码表示出来:

relu = np.maximum(x, 0)

梯度(红色曲线)也可以:

grad[x < 0] = 0

只有亲自求了一遍导数,才能理解这行代码。

掌握基础之后,就可以根据你的实际需求自定义学习方向了。

造机器学习产品需要的数学

作为一名学生,Vincent通过和多名机器学习工程师聊天,了解了他们在debug时最有用的数学知识。

总的来说,统计学和线性代数总是有用的,但面对不同的问题又有不同的需求。

那么,怎么确定该精修哪些数学知识呢?

首先,要定义你的系统

想写代码为系统建模,可用的资源多得是。在构建系统的过程中,要想着这些问题:

  • 系统的输入/输出是什么?

  • 怎样准备适合系统的数据?

  • 怎样构建特征、处理数据能让模型更好地泛化?

  • 怎样为你的问题定义合理的目标?

然后,在你用到数学的时候,去学习它

一头扎进机器学习里,你就会发现自己会卡在某些步骤。卡住的时候,该查什么呢?你的权重合理吗?你的模型为什么用这种损失就不收敛?

这时候,就需要对数据做假设,换个方式约束优化,或者换个算法试试。于是在这个建模或者debug过程里,你会发现懂数学对做决定有很大帮助,比如说要选择损失函数和评价指标,数学就是个好工具。

这可以说是一种“按需”学习的方法了。

做机器学习研究需要的数学

如果是做研究的话,就需要广泛的数学基础,来给你铺路。

现在,很多研究都是在现有系统之上进行的,缺少对基础的理解。

这样还不够,研究者应该贡献更基本的模块。比如说,可以像深度学习教父Geoff Hinton提出的胶囊网络(Capsule Networks)一样,重新思考卷积神经网络(CNN)这种基本模块。

要想在机器学习领域做出这样的成就,就需要问一些基础问题,也就需要对数学的深刻理解。《神经网络与深度学习》教材的作者Michael Nielsen称之为“带着玩心的探索”。

这个探索过程中,可能会在一个问题上卡几个小时,可能需要换个角度去看问题。不过,只有这样,科学家才能超越直观想法和架构的组合,提出深刻、有见地的问题。

和构建产品不一样的是,机器学习研究里的基础思考不是“按需”进行的,想要以高级的数学框架所要求的广度来思考、批判性地解决问题,需要耐心学习。

不要怕

总的来说,数学可能是有点可怕,你会卡在一个又一个地方。但是,这本来就是数学学习很重要的部分。

不要害怕。

实际上,数学好的人都要花好多时间来练习,于是,他们对这种做数学“被卡住”的感觉就习以为常了。想要学好数学,首先需要建立学生的心态。

想要习以为常,当然需要付出时间和努力,加油~

更多内容,可以移步原文:

https://blog.ycombinator.com/learning-math-for-machine-learning/

活动推荐

加入社群

量子位AI社群19群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

怎样搞定机器学习里的数学?斯坦福高手教你具体问题具体分析相关推荐

  1. 火爆GitHub:100天搞定机器学习编程(超赞信息图+代码+数据集)

    问耕 栗子 发自 麦蒿寺 量子位 出品 | 公众号 QbitAI 你是想喝一辈子糖水,还是想用AI改变世界? 但怎么想是一回事,怎么做往往是另一回事.学习和健身一样,不少人都停留在口头上,有各种借口不 ...

  2. 随机森林c++_100天搞定机器学习|Day3334 随机森林

    点击上方"机器学习与统计学",选择"置顶"公众号 重磅干货,第一时间送达 前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性 ...

  3. 如何用一套引擎搞定机器学习全流程?

    作者:陈戊超(仲卓) 深度学习技术在当代社会发挥的作用越来越大.目前深度学习被广泛应用于个性化推荐.商品搜索.人脸识别.机器翻译.自动驾驶等多个领域,此外还在向社会各个领域迅速渗透. 背景 当前,深度 ...

  4. 300张小抄表搞定机器学习知识点:学习根本停不下来!

    入坑数据科学和人工智能的同学都知道,机器学习是一个集合了计算机.统计学和数学知识的交叉领域,除了日常练习,也需要很多枯燥的记忆和理解.单纯读书不容易串联概念,又容易忘记. 可能你和我一样,读了无数遍& ...

  5. 100天搞定机器学习|day37 无公式理解反向传播算法之精髓

     100天搞定机器学习(Day1-34) 100天搞定机器学习|Day35 深度学习之神经网络的结构 100天搞定机器学习|Day36 深度学习之梯度下降算法 本篇为100天搞定机器学习之第37天,亦 ...

  6. 像背单词一样搞定机器学习关键概念:300张小抄表满足你的所有AI好奇

    入坑数据科学和人工智能的同学都知道,机器学习是一个集合了计算机.统计学和数学知识的交叉领域,除了日常练习,也需要很多枯燥的记忆和理解.单纯读书不容易串联概念,又容易忘记. 可能你和文摘菌一样,读了无数 ...

  7. 100天搞定机器学习

    100天搞定机器学习 大家好,100天搞定机器学习前54天是对Avik-Jain开源项目100-Days-Of-ML-Code的翻译 自己的理解https://github.com/Avik-Jain ...

  8. 【机器学习基础】一文搞懂机器学习里的L1与L2正则化

    文章来源于SAMshare,作者flora 特征锦囊:今天一起搞懂机器学习里的L1与L2正则化 今天我们来讲讲一个理论知识,也是老生常谈的内容,在模型开发相关岗位中出场率较高的,那就是L1与L2正则化 ...

  9. 100天搞定机器学习:PyYAML基础教程

    编程中免不了要写配置文件,今天我们继续Python网络编程,学习一个比 JSON 更简洁和强大的语言----YAML .本文老胡简单介绍 YAML 的语法和用法,以及 YAML 在机器学习项目中的应用 ...

最新文章

  1. 基于ssh的ktv预定管理系统
  2. 帝国cms php7.0,帝国cms升级到7.0 出现Unknown错误的解决办法
  3. jquery实现checkbox的单选和全选
  4. 唐骏《我的成功也可以复制》1,盖婚房
  5. 漫画 | Kubernetes带你一帆风顺去远航
  6. Mr.J--jQuery效果总结
  7. 电梯停靠问题---------------给你出道题
  8. 聚类算法实践——PCCA、SOM、Affinity Propagation
  9. SQLPro Studio mac如何链接MYSQL?
  10. uni-app uniCloud 前端操作数据库 模糊查询
  11. 网络分析仪的校准和测试方法
  12. Windows 2016 修改密码时提示密码不符合规则
  13. 微信内链接已禁止访问是什么情况?微信链接防封细节
  14. css中div怎么飞翔
  15. PHP Warning: ‘ vcruntime140.dll‘ 14.0 is not compatible with this PHP build linked with 14.16 in Unk
  16. jpa vue管理系统_如何通过利用Java流获取类型安全和直观的Hibernate / JPA查询
  17. PPT怎么转换成PDF?有哪些转换方法?
  18. ARM中CPSR的标志位中的C和V
  19. 用Photoshop给照片换美丽天空
  20. 【报错记录MaskRCNN】#931-> raise ValueError(error_str) ValueError: The following Variables were created w

热门文章

  1. 如何修改订单金额实现 0.01 元买 iPhone X?
  2. 96 年美女胜出!那个有关“猪脸识别”的比赛决出冠军啦
  3. 大学计算机二级的试题,大学计算机二级考试试题及其答案_..doc
  4. 真服了!java翻译器软件下载手机版
  5. 记一次 Git GitHub 实操
  6. day04【后台】角色维护
  7. arm指令集_重磅!Arm宣布:指令集,客户可自定义
  8. c语言作业统计字符,C语言统计字符数(示例代码)
  9. python rpc调用_从0到1:全面理解 RPC 远程调用
  10. Javascript希尔排序