第01课:为什么要学原理和公式推导

第01课:为什么要学原理和公式推导


机器学习最直接的应用,就是把模型运用到实际业务上去解决问题。

本课所讲到的几个经典模型,是机器学习发展的几十年间,由前辈总结出的解决特定问题的固定模式,已经在实践中证明有效。

学会这些模型,一则可以以它们为载体理解“机器学习”这件事情本身是一种怎样的机制;二则掌握了模型,也就掌握了当前许多实际问题有效的解决方案。

学模型就要学公式推导吗?

在实际应用中,如果我们要运用一种模型,那么其实有很多现成的算法库、学习框架,只要把输入导入进去,用几行代码指定模型类型和参数,工具、框架就能自动计算出结果。

既然如此,何必再去学其中的原理,一步步推导让人头晕的数学公式?

对于这个问题,首先给出我的意见:

机器学习的原理和数学推导一定要学!

此处且举个直观的例子:

工具就像是武器,学会使用一种工具只是学会了使用这种武器的最基本的招式和套路。而理论学习则是学习策略,决定了未来在真实对战中,遇到对手攻击时,你选取哪些招式套路,如何组合起来去迎敌。

反过来说,如果根本不学模型原理,只是把一个个应用场景背诵下来,需要的时候直接把模型当黑盒使用——这样做我们能学到什么?

我们将学到:

  1. 算法库的安装;
  2. 库函数的调用;
  3. 数据的 I/O 转换。

这和调用任何一个封装好的 API(无论其功能)有什么区别?和调用你自己的同事撰写的模块接口又有什么不同?

学会这么几件事能让你相对他人产生什么的壁垒?作为一个原本非 AI 领域的开发者,难道因为会安装几个支持库,会调几个接口就身价倍增成为机器学习工程师啦?

学习原理的必要性

回过头来,我们从正面来看学习原理的必要性。

功利层面

咱们先来看看最直接的用处。

面试会考

最起码的一点,找工作的时候,但凡是个稍微靠谱点的企业,对于标明是“机器学习工程师”的职位,面试时一定会问模型原理和推导过程的!

而且问到的模型,随着时间推移越来越复杂。

三四年前或更早些时候,企业技术面试,大多问线性回归。这两年,已经基本上从逻辑回归起步了。再过一两年是否问支持向量机不得而知,不过理论考察越来越难是必然的。

真想入这行,为了面试也得学呀。

老板会问

在日常工作中,编码的时候,可能确实只是在调 API 而已。

但很多时候,具体用哪个工具哪个框架,调用哪个具体的模型算法,并不是你一个人决定就可以,而是需要向老板、合作方甚至客户做出解释的。

以前谁负责哪个模块都是自己搞定所有事,你怎么还想让别人给你标注数据呀?

花费这么多时间人力训练的模型,怎么连个 DSAT 都 Fix 不了啊?*

既然再多投入几倍资源也不能达到95%以上的正确率,为什么不干脆直接用 Rule-Base 来 Handle?

……

Manager,Tech Lead,PM 都有可能围绕机器学习/深度学习投入产出比,提出各种问题。要在工作中运用这些技术,首先就要说服他们。这个时候,原理就派上用场了。

同事会质疑

对于你应用 ML/DL 的疑问不仅来自上司,很多时候也来自于同级别的同事。

相对于老板对于性价比的关注,同事的注意点更可能在技术细节——质疑用这个新的框架/工具/模型/算法,与之前实施方案在功能、性能方面的差别。

别人都用 TensorFlow,你为什么要用 Caffe 呀?

以前这个分类器我们用逻辑回归也挺好,你为什么非要换成 RNN 啊?

你用这个谱聚类做数据预处理,可是归根到底不还是词袋模型算词频嘛,比直接算一下 tf-idf 做排序好多少?

……

到了这个层面,只是简单概括的说说原理已经不够了,要能细致到对比:

  • 不同模型的特质,适用场景,对当前数据的匹配程度;
  • 不同算法对于算力和时间的消耗;
  • 不同框架对软硬件需求和并行化的力度;
  • 才算是具备了技术讨论的资格。

实用层面

当然,在日常工作中可以完全不理会 Peer 的质疑,对于 Boss 的决定也可以全盘遵守绝无二话。Engineer 嘛,只是埋头干活也就可以了。但总得把活儿干好吧。

作为一个机器学习工程师,把活干好的基本内容是:针对技术需求提供高质量的模型。

再高一个层次的好处是:针对业务需求提供高质量的解决方案。

优化模型

在基本面上,机器学习工程师又被戏称为调参工程师。

所要做的,就是在限定的数据上,规定时间内,为具体技术需求(比如:训练一个分类器)提供性能尽量高,消耗资源尽量小的模型。

调参工程师的三板斧:选特征、调超参、换模型,要想能够有章法的使用出来,理论基础还是必不可少的。

如果连:

  • 评判模型性能的指标有哪些,如何计算;
  • 正在使用的模型是怎么工作的;
  • 这些超参数是什么含义,调整它们会产生哪些影响;
  • 特征选取有哪些原则、方法可运用……

都不知道,又怎么优化模型?

针对问题实际问题定向建模

仅仅做到一个合格的调参工程师,固然可以在 AI 领域占据一个职位,但对于业务和团队而言,仍然是个可有可无的角色。

真正创造价值的,从来都是解决实际问题的人

这些经典的模型、算法,是前人在解决实际问题中所研究出的具备通行性的解决方案。我们应用它们去解决问题,因为它们所解决的目标问题总是持续出现。

但是,新的问题也会随着新的需求涌现,并不是说我们只能用这些现有成果解决问题。

面对新问题,调参工程师可能束手无策。但一个理论掌握得足够深的机器学习工程师完全有可能针对具体业务问题构造目标函数,甚至开发出符合自身软硬件资源特点的求解算法。

到了这一步,即使还使用现成工具,也不是靠 Google 一下 Best Practice,Copy & Paste 代码就能够解决的了。必须具备理论基础和数学层面的建模能力才行。


本系列课程转载自Gitbook李烨的达人课——《机器学习极简入门》

作者关在在机器学习行业的感悟见解独到,总结的很精炼,内容简洁排版优美。好东西就应该分享给更多人,下面是作者在 Gitbook 的主页。支持为知识付费,非常值得。

李烨