您正在使用较旧版本的浏览器。为了获得最佳 MSN 中文网体验,请使用受支持的版本

科普 | 让人头晕的原理公式,想说爱你好难!想摆脱你更难!

Microsoft 徽标 Microsoft 2022/4/20 微软(亚洲)互联网工程院 · AI智汇学院
© 视觉中国

编者按:2022年的AI有多强大?

2022年3月25日,法国初创公司NukkAI举办的桥牌挑战赛中,其桥牌AI胜率高达83%,吊打8位人类冠军;

2020年末,DeepMind开发的第二代深度学习神经网络AlphaFold 2的问世震惊了结构生物学界。 AlphaFold解决了困扰科学家几十年的蛋白质折叠问题。而近日,清华和MIT研究团队在最新研究中利用AlphaFold 2,发现了提高新冠抗体的迹象。

AI已经渗入各个领域,并且目前所取得的成果颇丰。前人为AI的未来研究创造了优厚的资源条件,但是有了现成的工具框架,我们是不是就可以不用学习理论基础,放心睡大觉了?当然不可以!今天,微软智汇学院从不同角度,给大家做出了解答。

想了解更多来自微软智汇学院的精彩内容,请戳这里~

-----------------------------------------正文分隔线----------------------------------------------

学机器学习,要不要推公式?

很多准备进入AI领域做工程(成为机器学习工程师)的同学,都有这样的疑问:

有那么多现成的算法库、学习框架,想用什么模型、算法,直接用不就好了?何必再去学其中的原理,一步步推导让人头晕的数学公式?

对于这个问题,首先给出笔者意见:

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

最初阶段可以以模型为驱动,只选择几个经典模型(例如:线性回归,逻辑回归,决策树,支持向量机,条件随机场,K均值等),不必贪多。

但这些选定的模型,一定要搞清楚其问题域、模型结果、目标函数、训练算法,潜到数学公式推导的层面,对每一步的公式变换和对应物理意义有所理解,然后再去实践。

如果不学原理,又能学到什么?

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

我们将学到:1. 算法库的安装;2. 库函数的调用;3. 数据的I/O转换。

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

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

学习原理的必要性

回过头来,我们从下述几个方面来看学习机器学习原理和数学推导的用处:

1. 功利层面

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

1.1 面试会考

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

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

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

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

© IC photo

1.2 老板会问

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

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

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

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

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

……

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

1.3 同事会质疑

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

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

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

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

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

……

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

  • 不同模型的特质,适用场景,对当前数据的匹配程度;
  • 不同算法对于算力和时间的消耗;
  • 不同框架对软硬件需求和并行化的力度;

才算是具备了技术讨论的资格。【文-1】

2. 实用层面

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

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

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

2.1 优化模型

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

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

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

至此,【文-1】段落的描述不再是和他人论战的“弹药”,而成了工作步骤的指导。

如果连

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

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

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

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

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

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

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

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

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

3. 形而上层面

除了这些务实的有用,学习理论,在务虚方面同样有用。

3.1 破除迷信

在这个人工智能看起来要席卷一切的年代,不光是正在或者立志于在AI领域做技术工作的人,任何人都有必要从原理角度了解一下机器学习、深度学习是干什么的,如何起到作用的。

作为一个带有神秘色彩的热点概念,人工智能(AI)被热炒被歪曲被妖魔化是难免的。

了解原理,知道人工智能是一个学术研究领域,目前在工业界有一定的应用和探索。AI归根到底是个技术问题,可学、可用、可研究亦可质疑,而不是只能顶礼膜拜的法术神功。

具备最基本的判断能力,才有可能不会被“神话”迷惑,不被“鬼话”恐吓。

知道ML/DL模型是如何工作的,总不至于看了篇《AI专业毕业生年薪50万》就慌慌忙忙报个2万块的培训班,学了pip install tensorflow和C&P代码运行几个习题数据集,就以为能够找份年薪50万的工作了。

知道AI有哪些落地点和局限,就不至于瞟了几眼《XX职业要消失了》,《XXX岗位将被人工智能取代》之类的网文就骤然开始仇视社会,好像自己明天就没有活路了似的。

除了判断事,判断人可能更重要一些。

了解一件事的原理,自己有个基本的是非标准,再去看别人对它的评论,就不难看出评论者的“斤两”。也就不至于被其所说内容之外的语气、措辞,或者刻意的态度所误导。

3.2 追本溯源

人工智能从提出到现在几十年,已经数度沉浮。这些年间,模型、算法、实现技术更迭了几代,如今和当年已经是天壤之别。

但所有的发展都不是凭空出现的,新的方法、技术都是在原有基础上的创新。每一个具体的进步,都仅仅是向前的一小步而已。

最容易创新的是技巧和细节,越“大”的创新,出现的频率越低。而原理所揭示的,就是这种“大”的,相对稳定的东西。

机器学习最经典的那几个模型,历史都不短,长则半世纪,短的也快20岁了。

深度学习,早年是从属于机器学习的神经网络,因为运算能力不够而被束之高阁多年,近写年来借助计算机硬件和分布式计算的发展而大放异彩。

虽然技术本身和应用结果产生了巨大的飞跃,但从根本的原理层面,却是有着紧密的传承。

了解一件事是如何运行的;明晰事物发展的客观规律;知道从最简单的原理学起逐层推进,比从一个已经很复杂的状态入手一下子纠缠在各种不得要领的细节中要高效得到——

有了这样的认识,也就不会被一些名词所局限。不会仅仅因为人家做了一些细节改变,或者换了个说法就以为天翻地覆了。

具体到AI领域,真的了解了支柱技术的基本原理,总不至于:

看了一篇《当这位70岁的Hinton老人还在努力推翻自己积累了30年的学术成果……》,便宣布再也不学CNN,DNN,RNN了(好像真的学过一样)。

或者

因为《深度学习已死,可微分编程万岁!》刷屏,就以为目前在视觉、语音、NLP这些领域已经在创造价值的DL工具瞬间消失无用了。

© 视觉中国

3.3 精进看待世界的方法

相较于仍然处于经验(“炼丹”)阶段的深度学习,传统的统计学习模型和方法已经具备了相对完善的理论基础。

笔者强烈建议:即使目标岗位是“深度学习工程师”,也应该从统计学习方法学起。

一方面深度学习与机器学习具有传承的关系,学习后者对于直观地理解前者有极大帮助。

另一方面,统计学习方法建立在将概念“数字化”(向量化)的基础上,以数学公式和计算来表达概念之间的关联及转化关系——机器学习是一种认识世界的工具,借助它,我们可以从一个新的角度来看待世间万物。

换句话说,当我们知道机器是怎样通过学习事物特征的概率分布和转换来掌握事物规律的时候,我们就有可能反过来审视自己看待世界的方法,发现其中不合理的部分,并主动优化自己的思维模型。

比如,笔者在学习机器学习原理的过程中,对人类的思维方式产生了一些思考:

  • 人类的道德标准实际是一种社会层面的极大似然估计。
  • 遗忘是学习的一个步骤,是一种对信息的过滤方法,也是人类在脑力有限情况下对自身大脑的一种保护机制。
  • 人类的偏见是一种长期训练的结果,在信息极其匮乏的情况下,对人们做决定往往是有正向帮助的。信息越丰富,偏见的负面影响也就越严重。
  • 大多数人最常用的思维模型是KV pair,有些人似乎终身只有这一种思维模型。
  • 一般人往往默认一类事物的所有个体在概率空间是均匀分布的。在考虑某一个事物个体时,对其在同类事物中所处的位置——是小概率事件还是常态?发生概率相对之前是稳定、上升还是下降?——通常毫不在意,而一概认为被提及的个体很重要。
  • 对于原因和结果的关系,多数人根本没想过去探究其转换模型,而直接默认是线性关系。比如:A地的年均PM2.5指数是B地的10倍,PM2.5被认为与肺癌发病率有关,于是想当然以为A地肺癌发病率是B地10倍。
  • 当一件事物比较复杂,涉及多个方面的时候,要对它有一个全面的评价,目前最常用的方法是构建一个线性回归模型:选定一些特征,针对每个特征独立打分,最终加权求和(例如大学排名之类)。线性回归是一个非常简单的模型,往往无法达到很好效果。但即使这样简单的模型,很多人还是无法掌握。面对一项事物,既不能列举出其主要特征,也不知道如何评估每个特征,更不要提再加权求和。多数人最常用的全面评价标准,如果是一手资料则一般以某(几)个个例的某个特征来代替全集;如果是二手资料,则一般选择相信自己最先接触到的他人结论。

以上这些仅是一些很初级的想法,并没有进一步的研究验证。

笔者分享出来只是想说明:学习机器学习原理和公式推导,并非只是做一些无聊的数字变换。很可能由此为我们打开一扇窗,让我们从新的角度就看待世界,并为日常决定的思考过程提供更加可量化方法。

--END--

了解更多前沿科技领域及职场干货,欢迎点击👇

科普 | 哇哦!AI 界也有“变形金刚”!

NLP:当文本也撞脸,算法如何克服”脸盲症”?

人工智能 vs 人类智能 :相亲相爱 or 相爱相杀?

© 微软智汇学院
image beaconimage beaconimage beacon