You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
8.1 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 156 | 近在咫尺,走进人工智能研究
在前面两次的分享里,我们聊了一些在人工智能领域快速入门的捷径,以及面对不同的论文或别人分享的技术实践,我们该如何来选择技术。我们今天来看另一个话题:**如何做人工智能研究**。
对于初学者来说,可能很多人会觉得人工智能研究离自己比较远,在工作中一时半会儿也接触不到。但实际上,我们有必要了解做研究的一些基本原理,而且这些思路能够应用到我们的日常工作中。
对于中高阶的工程师来说,能够在研究方向更进一步,我们就可以更好地理解优秀的学术论文是怎么写成的,能够快速挖掘出论文的核心价值。同时,也可以把自己手上的工作总结成论文发表出去,真正参与到学术社区的建设当中。当然了,即便我们不以写论文为目的,用做研究的标准来要求自己平时的工作,也可以让很多工作更加严谨,这也是一种不错的进阶。
## 什么是人工智能研究
那到底什么是人工智能研究呢?
简单来说,只要是针对某一个问题,我们有新的方法、新的见解或是新的结果,这都是潜在的研究成果。另外一方面,如果我们发现了一个新的问题,甚至是一个新的领域,那就更具备总结出来加以发表的潜质。
你是不是已经注意到了,研究的一个核心要素就是“新”。这也是让很多初学者感到困惑的地方:我们平时的很多工作看上去都那么普通,没有什么创新的地方呀!
其实,哪怕是在人工智能技术应用非常广泛的很多领域和场景,依然有相当多的地方存在创新点,只是初学者不太容易注意到。我这里举几个例子,你可以感受一下。
例如一个互联网网站经常使用在线测试也就是通常所说的A/B测试来判断这一个网站的新功能或者新特性是否好于现在的版本。一个最基本的设置就是把现在的版本当做“对照组”然后把新的功能当做“实验组”分别在50%的流量上运行这两个组别。然而在线A/B测试存在一些根本上的挑战。
第一我们举例是把整个网站流量的一半用于测试某一个组别而有一些小的改变在50%的流量上可能需要2~3周的时间才能看出效果。而在真实情况中拿来进行A/B测试的流量往往是占比更小的因此等到能够看出一个实验的效果需要很长时间这本身就是一个非常耗时的过程。
第二,如果我们测试的功能和收入相关,那么假设对照组或者实验组有明显的收入增加或者减少,观察到了这样的结果,但是我们无法在实验的过程中动态地调整这个预先设置好的比例。
你看关于传统意义上A/B测试所面临的难题我们这里仅仅是列举了两条其实还有很多其他的问题。从这些问题出发我们是不是就可以问问自己能否找到节省A/B测试时间的方法呢能否让实验达到同样的效果但是使用尽可能少的时间能否在A/B测试的过程中动态调整用户或者流量的比例呢这些问题其实就都是研究课题。
再比如传统的推荐系统非常适合电影推荐的场景例如著名的Netflix大赛。经历了十多年的发展后推荐系统方法重点都集中在矩阵分解这样的协同过滤的方向上。那是不是这样的方法就解决了所有的推荐问题呢
我们试想一下如果是电影推荐我们作为一个用户看了《纸牌屋1》之后系统就给我们推荐《纸牌屋2》、《纸牌屋3》以及这一个系列虽然有一点重复但依然是可以接受的非常相关的推荐结果。那么如果我们在一个电商网站上购买了一款佳能相机以后系统依然给我们推荐类似的相机我们是不是就会觉得这样的推荐短期内意义不大了呢
我们可以看到,推荐系统对场景有非常高的要求。对于一些特定场景的推荐,我们无法直接照搬现有的方法。这个时候,这个场景,就需要一些创新,有可能是把现有的方法进行改进和调整,也有可能是完全提出一些新的思路或新的方法。
说到这里,你是不是对人工智能研究的范围有了一个新的认识呢?按照我们在这里举例的思路,你可以观察一下自己手边的项目,这里面或许就潜藏着不少值得研究的课题,说不定你就能发现一个新的研究领域。
## 怎么做人工智能研究
由此可见,作为普通的工程师或者初学者,我们的工作中也有机会接触到研究课题和研究领域。那么,接下来,我们就来看一看怎么做人工智能研究。这其实是一个非常大的话题,今天我来给你提供一个简单的指南。
要做人工智能研究一般有这么几个步骤。
第一,**好好总结一下在当前这个场景下,我们要解决的是什么问题,也就是针对要研究的问题进行建模归纳**。回到刚才所提的电商推荐的例子,我们需要解决的问题是把类似的相机过滤掉?还是要推荐买了相机后其他的附件?还是要推荐相机的替代品?或者是要从根本上理解这样的情况是怎么产生的,消费者的心理预期是什么样的?你可以看到,即便是尝试解决同一个问题,我们也可以有好多不同的切入点。所以,最重要的第一步就是找准一个切入点。
第二,**了解前人的工作,查找和学习相关文献**。相信我,即便你认为找到了一个貌似完全新的问题或者领域,认真查找了相关文献之后,有很大可能你会发现其实已经有人做了一些类似的工作。甚至,你还可能发现你设想的某种方法已经有人尝试过了。
了解前人工作这个步骤初学者或者是完全在工业界的工程师往往容易忽略。这一步的核心其实就是看前人在你设想的问题中是如何寻找方案的和你设想的思路是不是完全一致。通常情况下你会发现一定的差异性。于是基于这些差异性你可以提出一些“进阶性”Incremental的创新思路。这也就是我们常说的“站在巨人的肩膀上”。
另外,多了解前人的工作,我们不会把自己的思想和整个大的方法论孤立开来,能够更好地融入到研究的整个社群中去。
第三,**选择一种测试数据集和一些“基线方法”Baseline来进行比较**。无论是多么重要的新方法,也无论是什么样的新领域,如果我们不能通过一些标准的数据集,或者是构造一些可以值得信赖的数据集,而且和多种方法进行比较,那么这些创新也都无法通过检验。换句话说,我们提出的新方法、新思路再好,必须有一个相对的比较者,最好这个比较者是之前提出的,已经使用了的,这样,我们才能够更清楚地说明新的方法究竟好在哪里。
研究工作,特别是“了解前人工作”和“进行基线比较”这两点,是和一般的技术分享有区分的重要标志。这其实也是我们在上一次的分享中讲到的,有的技术分享其实只是描述做了一件事情,或者是描述了一个系统,我们无法真正知道这个系统的设计和整体的思路在社群中的位置,也不知道这个系统是否和类似系统进行过比较,这其实也给我们的技术选择设置了挑战。通过今天的内容,我们了解了研究工作的思路,**把用研究的思路应用在工作中,会让我们平时的技术选择更加严谨**。
## 小结
今天我为你梳理了进行人工智能研究的一些思路。通过今天的内容,你会发现,人工智能研究离我们并不遥远,很多场景都有可能发现新问题、找到新方法。另外,了解一些研究思路对我们的日常工程开发也会有所借鉴。
最后,给你留一个思考题,如何来衡量我们自己做研究的价值?
欢迎你给我留言,和我一起讨论。