如何读AI论文

这两天吧,看到了很多奇事。先说说昨天开课吧某业界知名老师、中科院天才博士在讲主动驾驶算法选型时候的奇闻奇事吧。首先该老师表示自己所有论文只要三分钟就能读完,而且自动驾驶也没有几篇论文。所以应该先去arxiv找,然后如果选型,找个顶会就行了。估计不说以上多少错误啊,接下来一句话把我逗了了。我在评论里面说要注意顶会论文也不是都可以复现的,比如说nips里的论文都不一定能复现。老师回答是,你听不懂我话么?我说顶会,nips是什么东西啊?

至于后来老师非要说服我中科院CV的博士都没听过nips的事情下个帖子再说。这里要说说看,这里面读论文和技术选型中的原则性错误。

第一个原则性错误:论文不是没有,而是读不过来

这老师随便搜一篇自动驾驶的survey,就会发现有关领域有上百篇引用的。而按照这老师先读arxiv再读nips的特殊逻辑,估计能找到的更多(因为survey一般来说不会找全)。姑且不说老师是不是量子读书法一秒钟读三十万字这种,就算真是,估计也读不过来。

论文多带来最大一个问题,首先是如何评估论文的质量。这偏偏是非常难的问题。AI届在学术圈一个最大的诟病就是复现性极差,这里包括顶会的论文。比如说,号称宇宙最强模型的Electra只选取n次实验最好结果而不是中位数报告就引起过争议,最近号称把lightgbm打出狗屎的tabnet,在kaggle上基本说法也是,除非极其有限的例子,几乎不可能跑出好的效果。所以按照这位老师说法,您要是看了顶会就选型,然后抄代码就好了,这就等着出事吧。

评估论文质量这件事情,其实是一个AI届认识到的,一直讨论的问题。一般来说,有这么几个东西,可以稍微当作标准,但都有一些问题。

  1. 引用率。但是引用率首先对于新论文没用,其次有一些论文引用率来源于他很新并容易填坑。比如说Zero-shot translation准确率低的可怕,但因为是新的领域,反倒容易得到很多引用,因为如果一个问题已经做到90%了,提升到91%没啥意义,但如果原来就1%,那么提升到5%也够发论文了。
  2. 公开benchmark。在很多领域有一些标准的数据集,并且例子都必须在这上面得到测试。好处是,这些数据集一般还是有一定代表性,并且质量比较高。坏处是,因为大家都知道这个数据集,所以对着这个数据集玩命调参总能提升点。而应用者可能就没有这个玩命调参的时间了。对于一些缺乏标准数据集的,比如说表格化数据挖掘,这就更成问题了。
  3. 比赛。比赛最大的好处是他有时间限制,导致选手只能选取比较可靠的策略。这其实和大部分业务是类似的,甚至可以说,业务调模型的时间比比赛更短。所以如果说要选择一个大概率还OK的模型和1%可能超越但99%会崩太的模型,一般还是会选择前者。但比赛的问题是首先很多比赛有data leakage,导致比赛结果未必有参考性。其次,因为时间短,除非非常高规格的比赛,很多新的方法未必会能够真正实现。

整体来说,如果以项目为导向,至少重点比赛中的论文是要读的,而且要读懂。说起来读论文,这时候又到了第二个原则性问题了。

读论文到底读什么

先说说这位天才博士少女的读法。读摘要,读结果,读方法,读完了。这还不如说,下载论文、打开、看完、合上。

当然也不是全无道理的,读摘要是有必要的,因为首先先要知道这个论文要解决啥。读结果也是应该的,但是核心缺没有说清楚。读结果,其实是帮助你判断论文质量的一个标准(但不是很准的)论文只会呈现对自己有利的结果,所以如果标准数据集没有放出来,或者比较的不是目前的SOTA,你至少要对这个论文的合理性表示一下怀疑。

那么接下来读思路问题就大了去了。首先,论文要发表不是仅仅有效果就行的,还要有创新性。创新性说白了,就是要把一个芝麻大点的事情说的比天都大。但是故事本身并不一定是真实起效果的关键。就说tabnet来说,其中有个prior的概念。因为有这个概念呢,其实细究就明白了,因为如果去掉了那么prior,那么这就是一个全连接加sparsemax,这论文甭想发表。所谓为了编个故事,加了一个prior,意思是这样保证可解释性强。当然,细看的话,这个故事其实说不通,但这是下一篇论文的事情。有意思的是,去掉prior之后,在我们复现过程中,算法表现反倒变好了。更有意思的是,在tensorflow群体复现的时候,大家发现,其实这里面最起作用的是,提了一嘴的ghost batchnormalization。所以在有了两个repo,因为第一个实现错了。而更搞笑的是,pytorch也实现错了。

所以你看,就是一个谷歌级别的东西,你想看懂,甚至连看了复现都要小心,说三分钟能看完,那绝对适合被送去传销当韭菜。

所以这里就说到两个问题了。如果你真想看清楚这论文咋回事,要注意:

  1. 论文细节。论文如果真想看懂,常常需要对着代码实现,而且还要注意,两边全有错误的情况比比皆是(可以看看RAdam论文和实现),所以一定要小心。
  2. 反常的事情。一般来说故事往往毫无价值,反倒是作者有时候藏起来的东西很重要。比如说tabnet,resnet的connection用的是 5 \sqrt{5} 5 而不是常用的1,这就比较有趣了。而且share的时候,是隔层share。这些不常见的操作,往往就是作者为了讲故事但效果不好时候无奈的骚操作,反倒有可能有复现价值。

算法选型问题

最后就说到算法选型了。算法选型是个极其坑爹的事情,最好的办法是让领导选。如果你已经是那个领导了,那么注意几个事情。

  1. 一定在自己数据集上跑个benchmark再走。数据集极其影响效果。千万别信所谓别人的数据都好,自己就好
  2. 别相信销售所谓随便先给个准确率,然后达不到再说服的想法。销售只是为了成单,之后这单子就是各户气的把办公室烧了他也能拿到提成,所以最后达不到99%一定会告状说你当初承诺的没做到。
  3. 注意很多因素。比如说有时候,算法非常好,但是硬件部署达不到,那最后也得作罢。或者算法非常好,但是数据拿不出来,客户就一块CPU得算一年。或者算法特别好,但是客户SQL数据库太慢,把款表和出来得一年。这些都是很麻烦的因素,所以算法选型绝对是要小心的。

要不要复现论文

这可能是争议最大的。我的观点是,即使是在小的公司,也要花点时间有一个小团队把主流算法复现一下,看看效果。这个团队可以就一个正式+两个实习生。原因:

  1. 技术积累是长期过程,不是你觉得能花钱买就能买到的。这相当于让九个女的怀孕就一个一个月生出来一个孩子一样。
  2. 企业现在越来越不傻了。越来越多企业现在很能清楚判断你的实力。比如说这老师觉得我一个小破创业公司肯定不能识别错误,可是当她说自己只用过1080ti没用过tesla的时候,我就知道这是个骗子了。不想被别人当傻子的前提,是自己不是傻子

很不幸,对于很多所谓技术型的公司,对于技术积累反倒是最不重视的。这点从这老师的态度就知道了。第一讲当中,不是讲怎么提升技术,而是讲怎么蹭论文、傍老板、改简历。换句话说,根本还是觉得客户傻。

当然如果你也觉得不妨听听她怎么占便宜的,那我就提示一个字吧。

猜你喜欢

转载自blog.csdn.net/weixin_42812353/article/details/112071741