在上一讲的内容里,我们分享了在人工智能领域快速学习的一些方法。学习到这些人工智能技术后,我们肯定是希望能够把技术应用到工程实践中,来解决实际产品的问题。
这里面有一个非常重要的问题,就是面对这些论文、或者是别人分享的工程实践,作为初学者或者是有一些经验的工程师,我们应该如何来选择技术呢?是去实现当前最新论文介绍的技术?还是跟随其他公司已经有了的架构?
今天,我们就来聊一聊人工智能领域的工程技术选择这个话题。
首先,我们来看一看论文和工程技术选择之间的关系。我们是不是需要去实现最新论文里的模型呢?
在回答这个问题之前,我们来聊一下学术论文本身的一些特点。
学术论文,作为科学知识和信息传播的一种载体,本身是有其内在的使命和一定的规律的。学术论文的核心功能是在一定的规范框架下,传播、总结和讨论新知识。这里面我们需要注意的是“一定的规范框架”和“新知识”。
我们先来说说新知识,这其实是整个学术论文存在的核心价值。很多新知识其实是某种意义上的学术尝试和创新,例如提出的一种新观点、一种新思想、一种新方法或者是一种新算法。这些新知识是不是能够沉淀下去成为某种主流思想,或者说是否能够在实际系统中真正发挥作用,还有待时间的检验。换句话说,新知识的知识结构还不完整,我们并不知道这些知识点后续会有什么样的发展,我们并不能简单地在学术创新和实现现实意义之间划等号。
因此,冒然利用最新的技术往往会因为技术不成熟、信息不完整而带来很多风险。举个例子,如果我们在2009年的时候就采用了深度学习技术,当时的很多方法,例如“事先训练”(Pre-Training)等,在后面更加成熟的技术面前都已经被遗弃了。很明显,当时的深度学习框架远远没有现在的成熟,所以就会有很大的前期工程成本。
再举个例子,在最基本的“随机梯度下降”算法上进行改进的优化算法,绝大多数都是在理论上对收敛速度的改进。而这些收敛速度基本上都取决于当数据点趋近于无穷多的时候。那么,这种改进其实并没有太大的现实意义。
我们刚才还提到学术论文都在“一定的框架范围内”,其实就是说目前计算机科学的绝大多数论文都遵循某种格式和写作要求,也可以说是某种程度的“八股论文”式的写作。这种格式虽然统一了论文发表内容的差异性,但是过分注重在某个标准数据集上的一些性能提升,就有可能发明了一些在其他数据集上完全无法推广的技术。比如,有的论文甚至把在某些标准数据集上非常小(例如小于1%)的提升当作重要的创新。显然,这样的成果往往都无法在工程环境中复现,又何谈现实意义呢?
说了这么多学术论文的特点,我们再回到刚才最开始的话题,那就是学术论文和工程选择的关系。学术论文提供了一种思路,帮助我们开阔眼界,但是切记,我们不能把学术论文当作是金科玉律和亘古不变的真理。相反,对于每一篇学术论文,我们要带着批判的眼光,有所保留地来看待论文背后的创新点。
那学术论文中的思路是不是就完全不要去采用呢?其实也不是。当我们发现有一系列的学术论文,或者很多学术会议都在探讨某个类似的技术时,那么这个技术也许就值得我们尝试去实现一下,来做一些早期的评测,看这样的技术在自己工程环境的数据中是不是依然有效果。
除了正规的学术论文以外,在人工智能火热的今天,各类工业界的技术分享也是层出不穷,这里面的内容水平和可复制性可以说是千差万别。那么,我们到底应该如何看待这些技术分享呢?我总结了两点给你借鉴。
第一,一般来说,很多公司的技术分享其实都是只言片语或者说一个整体平台的片段。因此,如果我们直接把这些分享用于自己团队的工程实践中,往往就会产生断章取义的效果。
实际上,一个公司的技术选择和这个公司在做选择那个时间段的很多因素都有着密不可分的关系。比如,一个比较大的机器学习系统往往和公司的其他业务需求、数据基础、机器学习基础设施以及团队当时的工程水平等因素相关。某一个系统在一个时期内的形态就是这些相关因素的一个综合体现。然而,技术人员的分享内容很难涵盖所有的方方面面,使得我们容易忽略某个技术选择和公司以及团队的这种内在的紧密联系,而单纯考虑技术分享的内容。因此,尽量去理解其他公司的技术选择思路,要比只关注所分享的内容本身更重要。
第二,公司的很多技术选择并不是同行审议的结果,需要我们带着批判的眼光去看待。这一点是和学术论文相比较而言的。一般来说,一篇高水平的论文要想发表在顶级学术会议(或者期刊)上,往往都需要得到同行的审议。这种审议的重点一般会看论文是不是比较了类似方法,以及能否真正说清楚论文的创新点和贡献在哪里,这其实就是对论文质量的某种程度的把关。那么,这个同行审议的环节在公司做技术选择的过程中是不一定存在的。很多公司的技术发展路线选择都不能摆脱种种外部的和内部的限制,最后的结果并不是无懈可击或者不容置疑的。
所以,我们不太可能直接复制其他公司的技术框架,但是这些公司的技术分享对我们的好处也是显而易见的。我们一定要抱着开放的心态来学习这些分享中的精华之处,重点是能够理解各个组件之间的逻辑关系,以及一些关键技术点选择背后的推理过程和取舍过程,这种思考对于我们的提高是非常有帮助的。
今天,我们从如何借鉴学术论文和工业界技术分享两个角度,一起来梳理了人工智能技术选择的思路。工程技术选择是一个综合的复杂问题,我们一方面着眼于创新技术本身,一方面着眼于自己公司、产品和团队的实际情况,以批判的眼光吸收新知识和新实践,最后做出最适合自己发展的技术选择。
最后,给你留一个思考题,在一个公司的最佳实践分享中,他们提出了一个模型A,大幅度提高了模型B,现在你会如何来看待这个分享呢?
欢迎你给我留言,和我一起讨论。
评论