天空之城:拉马努金式思维训练法

天空之城:拉马努金式思维训练法

本文较长,我知道大概率你没有耐心读完,但是看完可能会让你在今后的日子里多年受益,所以还请保持一些耐心。如果只对机器学习技术方面感兴趣,可以直接跳到第四部分“空中建筑师:机器学习中的拉马努金式思维训练法”。如果你选择直接跳到了第四部分开始阅读,那么从这个行为推断,你肯定是典型的算法工程师,其实第五部分“出埃及记:机器学习之外 ”才是最适合你了解的。



易筋经与降龙十八掌:为什么会有这篇文章


金庸先生的作品里,武功体系往往是由内功和外功或叫招式两个子系统构成的。招式代表外在的武功身手动作,是技巧性的,学习难度较低,学习周期相对较短,比如一套拳法,一个剑招等等,招式是武功系统的“表”。内功是指内力和一整套内在的修行系统,甚至包括价值观和思维体系的修炼,比如易筋经其实是道释糅合的经书,它本质是一种思想体系,“易筋”“洗髓”暗示着阅读者价值观的版本升级换代,把它用在武学中只是一种延伸的应用领域而已。内功修炼周期长,很难短期有大成,但也不排除有人天分高,灵光一闪,“垂死病中惊坐起,感觉自己萌萌哒”,不排除这种顿悟真理立地成佛的可能。内功是武功系统的“里”,像易筋经,九阴真经,神照经,九阳神功就是金庸武学体系里具备代表性的四大内功系统。

江湖里讨生活,表里相照才能锤炼出一代高手,比如将降龙十八掌发挥到极致的郭靖郭巨侠。尽管如此,在金庸武学体系里,内功的重要性是要远重于招式的,如果一位武林高手内力远强于对手,其实外在招式根本不重要,利用浑厚的内功打一套太祖长拳估计也难遇敌手:游坦之在修习完易筋经后不仅通过内力排除体内的冰寒剧毒,也从江湖无名小辈一跃成为数一数二的高手。金庸描述的内力系统还展示了超越时代的先进技术,比如还具备目前科技都难以实现的内力无线传输功能:虚竹本是一名内在忠厚外表丑陋的少林无名小僧,在误打误撞破了珍珑棋局后,被动接受了逍遥派掌门无崖子通过无线传输的方式灌入体内的70余年的功力,一夜间成为顶级武林高手。这功力毫无疑问属于内功范畴。

开头说了这么多,中心思想就一个:内功其实比招式重要得多,这一道理不仅仅在虚构的武学江湖世界成立,在世间江湖的诸多行当里,例如机器学习领域里面,这同样也是颠扑不破的真理。

我们在日常生活中,有时会看到机器学习技术刀马娴熟的高手偶漏峥嵘,碰到一些难题,逢山开路,遇水搭桥,总能很快给出一个可行的技术方案,并对各种方法优缺点如数家珍。但是,其实你所看到的往往只是浮于表面的外在招式,只是海平面上漏出的冰山一角。

外在招式其实好学,武林高手我们平常见不到,但是照猫画虎生搬硬套满嘴新名词的专家估计你也见过不少,只不过段位不高功力不深者难以区分东郭与西施而已。其实真假也好,招式也好,这些都不重要。真正值得深究的是隐藏在外在招式背后的内功修为,学会一招半式内功有时会让你受益终生。

但是,话又说回来了,一般情况下,你每天能见到很多让人眼花缭乱的招式,这让你感叹世间繁华,继而手足无措,但是幕后的真正有效的却为数不多的内功修炼方法是没有人会追着你主动告诉你的。武林江湖里要学功夫还得讲个门派师徒关系呢,是不是?更何况现实世界里,别人没有必要也没有义务去这样做,这个事实听起来可能比较冰冷,但是世间很多真相本质上就是冰冷的,如果你被冻伤只能说明你心理承受力有问题。这现象其实再正常不过,你换个视角来想想,假如真有一天,你生活中遇到一个揪着你耳朵要传授你内功心法的人,你的第一反应是什么?你一定心理防线大增,紧紧得捂住自己的钱包,用看穿骗子的眼光望着他,估计在你眼里他是这样的:

街头行骗现场抓拍:“今天拿出来,赠与有心人”


最近有位朋友衷心地夸奖并鼓励我说:虽然你无法再长高了,但是你可以继续长胖呀。我听了这话心里暖暖的,深为自己能结交这么多爱讲真话的铮友而自豪。我套用这位朋友的句型夸一下自己:跟很多人相比,虽然我不比别人技术或者见识更高明,但是我比大多数人脸皮厚呀。所以今天鄙人不才,来好为人师地讲一讲自己多年前摸索出的一项内功修炼方法:拉马努金式思维训练法。我可以想象你看到前面这句话的眼神是怎样的,请收回你疑惑中掺杂着鄙视的目光,好吧,即使不收回,也请鄙视得更温柔一些。

其实这个方法我若干年前就开始在自己身上试用,虽不够彻底,但感觉疗效尚可,所以今天拿出来,赠与有心人。当然,现在回头看,发现事实上这个道理领悟地还是太晚,靠自己摸索修炼内功付出的代价往往是时间,但是好处是对领悟的道理理解地更深刻。大约三年前,当我偶然看过拉马努金的介绍及传记之后,思考他的经历和学习方法,隐约感觉两者有相通之处,遂正式命名这种方法为拉马努金式思维训练法。其实内功修炼是一个综合系统,其它内功心法还有不少,不过今天我们的主题就是它。

那么什么是拉马努金式思维训练法呢?在介绍这个方法之前,我们先大致了解下拉马努金这位千年一遇的数学天才的部分生平,这有助于更好地理解这个方法。


天才的诞生:拉马努金的前半生

拉马努金(《知无涯》版)

拉马努金1887年出生于印度南部一个偏僻小镇,家境穷困,一家7口全靠父亲微薄薪水度日。他从小便表现出了超人的数学天赋,12岁时因为毕达哥拉斯定理,对几何学产生了兴趣,遂自行展开对级数性质的研究。

不过像很多天才一样,拉马努金偏科严重,在大学里数学成绩优秀,但是其他几乎所有科目都不及格,学校对他忍无可忍,最终将他开除。

失学青年拉马努金随后生活在贫困潦倒中,在一位赏识其数学才华的官员资助下勉强度日。但是尽管这样,他不曾有一刻放弃数学。最潦倒的时候,拉马努金的胳膊肘上结了一层厚厚的老茧,因为他已经连最便宜的演算纸也买不起,只能用粉笔在石板上演算,黑板写满就赶紧用手肘擦掉继续写。

在陆续发表了几篇数学文章后,他的朋友试图将他介绍给英国数学界。哈马努金给多位英国数学家写信介绍自己的工作,希望能够成为他们的学生,但屡遭拒绝,这种糟糕的状态一直未得到改善,直到英国著名数学家哈代拆开了他的信件为止。

哈代确信,拉马努金的研究是当世最卓越的数学工作,并对哈马努金评价颇高。几番周折后,1914年,哈代说服拉马努金奔赴英国剑桥。在哈代严格的指导下哈马努金如鱼得水,在接下来的5年里,他们共同发表了28篇重要论文。因为在数学上的卓越成就,拉马努金31岁时当选为第一个英国皇家学会的亚洲会员。

上面对哈马努金的介绍比较简练,容易给人造成一种错觉,好像自从他进入英国后事业一帆风顺,其实事实远非如此,如果将细节展开,你会发现其实那是另一部血泪史。


拉马努金笔记手稿

尽管拉马努金的学习态度刻苦真诚,数学天才卓绝,由于没有受过专业的数学训练,全靠自学,拉马努金根本不明白数学证明是怎样的过程。所以他的成果是几千个全凭直觉和灵感产生的数学公式,却没有任何证明过程。尽管后来这些公式被验证大多数都是正确的,但是由于缺乏证明,所以一直受到很多数学家的非议。


论雷峰塔的倒掉与重建:拉马努金炼金术

如果深入思考拉马努金的成长历程,你会发现有一个关键节点,那就是在拉马努金15岁那年,朋友借给他的那本英国数学家卡尔编写的《纯粹数学与应用数学概要》这本书。这本书很有特点,它收集了数学多个子领域的5000个方程式,却没有给出详细证明。拉马努金给自己设立了一个目标:他将这5000个公式看成已知正确结论,而在不参考其它证明的前提下,试图重新用自己的方法去证明每一个公式。这花费了拉马努金5年的时间,并留下了几百页的数学笔记,而这个过程及数学笔记对于拉马努金以后的思维方式产生根本而深远的影响。

拉马努金没有接受过正规系统的数学训练,这虽是给他后期数学生涯造成困扰的主要原因,但从另外一个角度看,也未尝不是成就他的数学天才的一种手段。拉马努金完全靠自己的天才及热情自由探索,典型手段就是如上所述的方法,所以我们可以将这个过程看成一种特殊的自我思维训练方法。通过这个过程,拉马努金不仅重新发现了很多著名的数学公式,比如被誉为人类史上最美公式之一的欧拉公式,也通过更加深入的思考发现了几千条全新的公式。


欧拉公式

也就是说,他的思维训练是通过用自己的方法去重构或者重新证明一些已知问题或者结论产生的,这就是拉马努金思维训练法的基本思路。如果我们用比喻来类比这个过程的话,拉马努金好像一位具备特殊思维方式的建筑师,当他看到一座外观宏伟的建筑的时候,他不是立即里里外外参观把这座建筑看个清晰明白,而是站在建筑外思考如下问题:如果我是这座建筑的建筑师,它有这样的外观,在我心里首先把它摧毁,然后自己重新再把它设计出来,那么我会如何设计这座建筑呢?就这样,通过将城市中看到的每个建筑通过自己的方式重建,拉曼努金自己在头脑中重建了一座数学公式组成的全新的空中之城。

我自己摸索的思维训练方法和这个很接近,但是又有些不同,而熟悉机器学习训练过程的同学可以很明显从后面的描述看出来,这其实也很大程度上受到了机器学习训练方法的影响。我是这么设计这个思维训练方法的:建筑的外观算是给我们的一种信息提示和约束,除了像拉马努金那样将看到的建筑在心中摧毁,再用自己的方式重建外,我们其实还可以做得更多,比如你可以把你用自己的方式重建好的建筑,和看到的别人搭建起来的建筑里里外外做个对比,之后做个判断:虽然两个建筑外观可能类似,但是采用的建筑方法或者构建顺序可能完全不同,那么是我们重建的这个建筑更好呢?还是原有的建筑更好?如果我们的建筑更好,那是为什么?如果是原有的建筑更好,那又是为什么?而为何我没有想到这个更好的建筑方式呢?我如何改变设计思维才能和更优秀的那位建筑师搭出一样的房子呢?……这其实才是我心目中完整的拉马努金式思维训练法。

熟悉机器学习的同学从后半段的描述中一定闻到了机器学习离线训练的味道了,嗯,不错,你的嗅觉很灵敏。其实这是拉马努金方法的一个加强版,可以看成是拉马努金重建法+机器学习离线训练法混合构成的,这和你平时看到的机器学习任务的最大区别是:其实你自己的头脑就是你要训练的那个模型,你思考问题的方式就是需要利用SGD算法调节的模型参数,通过具体的案例作为训练数据,不断迭代,让你有更优秀的思维方法,如果训练足够充分,很可能你会通过直觉直接找到最优的答案。你会发现,通过这种思维锻炼,看似你在做一项前人已经做过的工作,其实通过这个过程,你可以锻炼优化自己的思维能力,作为副产品还会产生很多完全不同的新想法。

虽然上面几段内容看上去貌似说明白了所谓的“拉马努金式思维训练法”,但是因为是类比,所以看着还有些飘渺和模糊,那么我们下面进入机器学习领域看看到底应该怎么具体实施。



空中建筑师:机器学习中的拉马努金式思维训练法

在机器学习领域,其实是很容易应用这种拉马努金式思维训练方法的。我以如何正确地读一篇论文来梳理下这个流程,比如假设你现在拿到了一篇你感兴趣的论文。首先,兄弟,住手,千万不要急着去看论文的内容,有些东西保留些神秘感其实是好事情。你应该这么做:

首先,看一下论文的标题,你能否从论文标题猜出作者要解决什么样的问题?能否从论文标题大致猜出作者用的什么方法?如果上面两个问题的答案是肯定的,那么你可以试图恢复作者方法的细节信息,或者自己提出自己的重建方法来解决这个问题;如果答案是否定的,那么请去看论文的摘要,那里会给你提供更多的信息,再次回答上述两个问题。如果看完摘要,两个问题的答案依然是否定的,那么可以去看下论文里面的方法图示,之后再次问自己上面两个问题。如此迭代,像慢慢拼出一副拼图一样,逐步释放给自己更多信息,争取让自己用最少的信息量重建出作者的方法,或者根据已知线索提出自己的解决方法。

然后,到了这一步,你一定已经尝试着猜测着去恢复出你认为作者使用的方法,或者提出了自己的方法。此时你可以去论文里大致看下你猜的对不对,如果猜的不对,问自己下列问题:你的方法和作者的方法有什么不同?各自的优点缺点是什么?哪个更好些?…..诸如此类。

上面这个过程就是典型地在机器学习领域里使用拉马努金式思维训练法的具体过程。


为了比较深入地理解这种思维方法,我们来看一个具体的例子,我们用一篇论文来分解刨析整个思维过程。这篇论文是两年前的工作,是16年微软的成果,Item2Vec,我之前听说过这个工作但是没看过论文,为了写这篇文章专门找来按照上述描述在脑子里走了一下流程。选择这篇论文,是因为这篇比较容易说明白。下面记录的是我如何应用拉马努金式思维训练法的整个思维过程。

第一步:

我们会先看这篇论文的名字:“Item2Vec: Neural Item Embedding for Collaborative Filtering”


首先,我们根据论文标题推想下它要解决什么问题,以及看看是否能够从论文标题推断出作者大概率用的是什么方法。

这个论文标题其实提供了不少信息,比如,从“Collaborative Filtering”我们可以推断论文涉及的领域是推荐系统里的协同过滤方向,那么这往往意味着使用的数据源应该是用户评分矩阵Rating Matrix的信息,也就是每个用户给哪些商品打过几分的矩阵信息;从“Item2Vec”这个单词,我们大致可以判断它要解决的是什么问题:大概率是要把Item编码成一种embedding的表达方式。另外,从“Neural Item Embedding”可以看出具体编码方法是用神经网络方法;除此外,好像看不出更多信息了。

我们可以整理目前获得的信息如下:

要解决的问题:使用神经网络方法,以Rating Matrix信息来对每个商品Item进行某种方法的训练,来获得商品item的embedding信息。

大的方法框架:神经网络

具体方法:标题没有相关信息,不详


第二步,既然要解决的问题明确了,大的方法框架也找到了,虽然作者具体用什么方法我们还不清楚,但是这没关系,此时可以开始我们的重建工作。

假设我是论文的作者,我列举了我可能会提出的几个技术方案(首先强调一下,既然这个论文看样子目的是只需要把item转换成embedding,不需要把user转换成embedding,所以我们的技术方案都忽略掉那些显示地将user作为输入的技术方案,主要倾向于无监督的方法。这是给自己思考问题主动增加约束条件,否则太天马行空训练效果未必很好。我们要锻炼自己在镣铐下跳舞的能力。):


方案一:最简单的无监督方法

类Word2vec方案


1.1收集用户对商品的打分信息,忽略掉具体的分数,将分数改为二值数据,就是说把某个用户打过分的商品按照交互时间序列,组成一个商品序列,i1,i2….ik,….in。

1.2所有用户都有这个商品序列信息,这样就类似自然语言处理的问题了,无非把单词信息换成了商品ID信息,一句自然语言的句子换成了商品ID组成的用户行为序列。于是此时我们可以使用目前任意一种NLP中使用的embedding技术来做,比如类似word2vec的CBOW或者Skip-gram方法,或者类似Glove的方法。如果采用Skip-Gram方法,那么就是利用某个被扣掉的商品,去预测同一个用户打过分的其它上下文商品;如果是CBOW方法,则是使用当前商品所属的行为序列上下文去预测这个商品;

这样,我们就可以利用无监督的方式学会每个商品的embedding信息;这样学会的embedding含义是:如果某两个商品经常和相似的其它商品一起被购买,那么这两个商品的embedding是类似的。这确实体现的是一种协同过滤的思路。

这个方法的好处:简单直接,因为我们只要学习获得商品的embedding就行了,除此外不做其它无关的工作;

缺点:过于简单,约束太少,效果如何存疑;


方案二:加强版的无监督方案


第一个方案有点太简单,我试图增加一些约束条件来优化一个版本,上面的方法只考虑了某个item的一定窗口大小上下文的item,要求上下文相互接近的item在embedding空间里相互靠近。通俗地讲,意思就是说:我有什么样的朋友们,那么我就是什么样子的人。我们完全可以引入更强的约束如下:我和大街上随便拉来的一个人,大概率是不太合得来的,他不太可能成为我的朋友,所以我肯定跟他不太像。基本思想有了,我们可以引入triplet loss来实现这个思想。

2.1 这个和第一个方法类似:收集用户对商品的打分信息,把某个用户打过分的商品按照交互时间序列,组成一个商品序列,i1,i2….ik,….in。

2.2 在形成的商品item序列数据下,我们利用triplet loss来训练一个将item进行embedding的模型,模型要求被同一个用户打过分的两个item:Item1+和Item2+,它们在embedding空间内比较接近,而与随便选择的其它item比如Item-,在embedding空间上比较远,于是我们可以构造如图的网络结构:

Triplet Loss网络结构


训练数据由三元组构成:<item1+,item2+,item- >。其中item1+和item2+是来自同一个用户的同一个序列里的商品,item-是随机选择的一个item作为负例商品,这样,我们就可以套用上图的网络使用triplet loss来训练。从Onehot到item embedding层是一个编码过程,上面套接一个cosine相似性计算函数,通过这个函数,我们要求item1+和item2+的相似性得分要高于item1+和item-的相似性得分。通过这种方式,就可以学会每个item的embedding。

这个方法是第一个方法的增强版本,本质思想是类似的,但是因为引入了triplet loss,类似增加了负例,从道理上讲效果应该好于第一个方法,不过这是从道理推断,很多时候直觉是不靠谱的,是否真的好还需要通过实验来证明。

如上给出了两个重建的方案,其实还可以有更多,比如很容易想到的方法是可以利用RNN来预测next item的方式来训练item 的embedding等,这里不展开说了,因为具体技术方案不是我们的重点。


上面是我给出的自己面对这个问题时,可能会采用的重构方法,但是作者到底是怎么做的呢?从标题里我们看不出来,于是下一步,我们可以看看摘要,通过摘要看看是否能大致猜出作者是如何解决这个问题的。下面的图片是这篇论文的摘要信息:


嗯,谜底揭晓了,从摘要中的方法描述我们可以知道,其实作者用的就是我们猜想的第一种方法,是完全借鉴word2vec的思路来做的。

到了这一步,就是说如果你能够通过论文标题,或者是摘要,基本猜对作者使用的具体方法。其实你可以预料到,如果再仔细看这篇论文,对于你来说帮助不算太大。这种情况下,只需要快速过一下论文主体即可,重点看实验结果,如果效果比较好,那么可以考虑在自己遇到类似的场景时采用类似的方法。当然,也可以再深入思考下自己提出的其它方法的可行性,如果评估确实可行,可以动手去试试,如果实验证明确实有效,那么很可能会提出一种全新的解决方法。

对这个工作,我们可以做个评价:本工作创新程度一般,属于直接迁移其它领域方法到新领域的模式,这种做法很常见,也比较容易被想到;这个工作属于典型的应用型的创新;它的好处是简单,比较实用化。我们这些在公司里做事的同志们其实还是比较喜欢这种简单实用的论文的,比较烦那些耍了半天花枪,一看实验其实没啥作用的虚头巴脑的灌水文章。

上面这篇Item2Vec算是比较简单的方法,所以相对容易猜到作者的思路。如果是另外一种情形,你采用这种思维训练方法,发现看完标题和摘要,甚至文中的结构图,此时仍然没有办法猜到作者使用的方法,抑或你发现你提出的重建方法远不如作者的方法精妙的时刻,这是你最好地快速提升自己的机会。这样的工作对于你来说也是参考与学习价值比较大的工作。

建议大家可以采用类似的方法去深入思考下AirBnb在KDD2018获得最佳论文的工作:


本来我是打算把我的关于这篇论文的,类似上面的整个思考过程写下来的,但是发现太意识流了,估计写出来你也看不明白,所以就放弃这种努力了。这是我比较欣赏的工作,方法其实比较简单,但是你要能想到跟作者提出的方法特别类似的方案其实并不容易,很考验功力。这个方法里面类似word2vec的Skip-Gram的那个基础思路其实容易想到,实际上很多公司包括微博在内,在这篇论文发出来之前很早都已经用类似的做法在做user embedding或者item embedding了,所以那个基础方法是比较常规的。但是改进模型的点子,比如在损失函数里面加入booking数据约束,这个想法还是很赞的,体现了作者对手头业务非常了解。包括后面在booking数据稀疏的时候本质上是做了个聚类,那个聚类方法以及后续应用的特征实时模型,其实也并不是太容易就能想到的,而且非常简洁。我自己重建的时候想了两个方案,不过不得不承认确实不如作者的方法简洁。不论怎样说,我个人从这篇文章学习了不少新知识和新技巧。所以也特别推荐下大家可以拿这篇论文练手。这个工作确实很赞,当然也许是我水平太菜,而这两者也很可能是同时成立的。

如果你能持续用这种思维方式去锻炼自己,我可以给你拍胸脯:坚持一年技术水平必有大精进,如果这个方法没用的话你可以回头来找我,我对此负责。比如一年后你来找我说:“大哥,你操纵商品市场价格,这是犯罪!最近牛肉这么贵,这跟你有关啊,你数数你把多少头牛吹得灰飞烟灭吧。你这方法我试了,好像没什么用啊,我还是那么菜”。到那时,我一定会比较负责任地对你说:“兄弟,这只能再次证明你确实不适合从事前沿高科技的工作,来,送你幅扁担,你还是踏踏实实地去搬砖好了”。嗯,我一向就是这么有担当这么负责任。

既然上面用如何读论文来举例子,那么就顺手多讲几句我对论文相关事情的一些个人看法。写东西的时候,讲着讲着碰见叉路口就溜达进去,因此不断迷路,这是我的个人写作特色。下面谈看法,首先,现在AI相关的论文实在太多了,比如是AAAI还是IJCAI来着,记不清了,一个大会就提交七千多篇论文,这还只是一个会议,还是质量说过得去的会议,如果再算上很多一流二流三流不入流的会议,你可以推算下现在一年出来多少AI论文。任何一个人都没有足够的精力看完哪怕是具体一个领域的所有论文,如果这个领域比较宽泛的话。当然其实也没有这个必要,事实上,市面上的论文,98%甚至99%都没有看的必要,原因不解释。真正值得看的有价值的好论文其实是非常有限的。

如果上述假设成立,那么会引出第二个比较重要的问题:“如何判断一篇论文是否有价值?如果有价值,有多大价值?”糟糕的论文怎么判断这里就不提了,其实你随手选一篇,大概率属于这一类,所谓“论文的负例各有各的糟糕,但是正例却有一些共同的判断标准”。我在这里以最近比较火的两篇文章为例子,它们代表了两种类型的好,但是又有不同(我知道我说下面的话可能会引起争议,但是纯属个人主观意见,谢绝讨论)。

一种是有趣有用但是影响可能不会太大的,比如Rethinking Imagenet Pre-training 这篇论文,这是大神写的,问题本身是很有意义的,指出了和人们常规的认识不太一致的一种现象。那就是:之前大家习惯于在做图像任务的时候,先用Image-net做预训练,然后再去自己的任务上做Fine-Tuning,因为一般这样做有些好处:如果自己手头任务数据比较小,那么预训练会直接提升模型效果;即使手头任务数据量足够,上了预训练也会加快手头任务的收敛速度。这是人们一般的印象,而上面这篇论文得出的结论刷新了一个观点:那就是如果手头任务数据量够大,即使不用Image-net预训练,直接在自己任务上做训练效果能做得一样好,只是训练时间可能要长一些。

但是如果从将来的影响力来说,我的估计是它对领域的影响力不会太大。为什么?因为这个研究基本不会改变人们目前做研究或者做应用的方式。很简单,虽然结论是:如果训练数据足够大,那么不做预先训练也可以达到好的效果。但是,以后人们做图像任务,肯定还是会用预训练的,因为即使数据量足够,那么起码训练收敛速度快些,有这个额外的好处,付出又不大,那我干嘛不加上这一步呢?另外一种情况,如果手头任务训练数据不够,那我肯定会用Image-net预先训练,否则效果无法保证。所以说不论其它人面临什么样的任务,大家以后仍然会采用过去的这种预训练+Fine Tuning的两阶段方式去做。意思是这个工作并不会改变之后人们的研究和应用方式。它的价值在于:会引发人们更深入的思考,就是这种现象背后是什么原因在起作用?有什么更深层次的原因?这是它的价值所在。

另外一篇论文就是最近也特别火的Bert模型。这个和上面的工作就不太一样,Bert明显属于那种模型创新不大,但是未来的影响力会极大的工作。因为之后可能绝大多数NLP任务都会采取Bert这种两阶段模式,无论是研究领域还是应用领域,它带来了整个领域模式的更新换代,所以影响力毫无疑问是会非常大的。所以这是一种模型创新不大,但是因为效果太好,直接影响后续大多数工作的工作模式。(广告插入:如果希望更详细地了解Bert模型,请参考解读文章:从Word Embedding到 Bert模型:自然语言处理中的预训练技术发展史

上面举了两个例子解释怎么判断一个工作的价值和影响力,当然,除了这两种类型,还有其他类型的重要工作,这里不展开说了。如果你实在是没有能力判断哪个工作有价值,哪篇论文值得看,那么我送你个简单粗暴的判断标准:首先,先看实验部分,如果效果有特别明显的提升,那么这篇论文绝对是值得看的,无论它的方法是简单还是复杂;而如果效果有提升但是幅度不是很大,我觉得这种工作可看可不看,可以加上一个辅助判断。辅助判断是:如果方法比较复杂(除非整个思路框架非常新),建议直接扔了不看,有这时间不如去听会歌放松放松,我估计这不会给你的知识更新带来任何损失;而如果方法比较简洁,那么看你心情,心情好就看,心情不好就不看。怎么样,这个标准还是很随性很好执行的吧?不用谢。

再叨叨几句,有关大的技术革新的残酷性,这点如果没有比较长的科研经历,是不太能意识到这个问题的,就像从来没有经历战争的年轻人总以为每日的和平是天经地义一样,事实上哪有那么多天经地义?这只是经验少造成的错觉而已。关于技术革新的残酷性,年纪大点的研究者我估计都能感受到。


Encoder-Decoder+Transformer

我来举个例子,我们以机器翻译来谈,在深度学习深入入侵NLP前,各种机器翻译方法百花齐放,五花八门,看上去场面相当繁花似锦,烈火烹油。作为资深研究者,可能你会为过去自己提出的某两个idea欣喜,觉得是你凭一己之力有力地推动了这个领域的快速发展,其实这都是镜中花。你再看看目前机器翻译的标准模型:Encoder-Decoder+Transformer,跟传统方法比效果已经遥遥领先,而且整个模式也比较简单。我估计很快Bert也会被加入到这个礼包里,进一步提升翻译效果。你看看现在谁在论文里还大量引用传统方法吗?如果说得直白一点,传统MT方法基本已经被淘汰了,而这不过是短短5年间发生的技术模式迁移。


那些花儿-朴树

这就是大的技术变革带来的残酷性,当然这个残酷指的对象是一些领域资深人士或者旧的点子,也许当年让人意气风发的创新此后再也无人提起,就像这些点子这些人从来不曾出现过一样。想想也有点令人唏嘘。朴树的《那些花儿》曾经风靡一时,其中有句歌词尤其打动人心:“……她们都老了吧?她们在哪里呀?……”歌词本身所指是男性生命中曾经历的那些女性,这是一种岁月的哀伤。如果把这句歌词放在上面提到的技术变迁上也很符合场景,不过这里那些花儿指的是上面提到的被人忘却的曾经鲜活的点子…..其实吧,还有个这句歌词更应景的场合:每当我和人一起吃火锅,捞不到肉的时候,脑海里也会想起这两句,这想起来真是让人伤感,以及饥寒交迫。

上面几段写得太随性,见岔路口就绕进去,我的问题是我们现在浪到哪儿啦?我本来是想讲什么来着?好像又迷路了。我往回数数,好像进了好几重岔路口了,我们来几个return语句,把那几个岔路口弹出栈顶,回到我们的主程序上来:拉马努金式思维训练法。

Return;

Return;

我相信讲到这里,什么是拉马努金式思维训练,以及如何在机器学习中应用这种科学思维训练方法,你已经明白是怎么回事了。


If 本文作者这样讲你还不明白 then:

请记得给自己的IQ卡充值;

Goto “论雷峰塔的倒掉与重建:拉马努金炼金术”

Else:

Goto “出埃及记:机器学习之外”


出埃及记:机器学习之外

出埃及记源于圣经故事,记载了摩西带领两百万饱受迫害之苦的犹太人摆脱法老追兵,逃离苦地埃及,借神力劈开红海,跨海而过,最终艰难抵达目的地迦南之历程。

我们人数众多----且日益越来越多-----的算法工程师兄弟,或者姐妹们,虽然整日睡眼惺忪蓬头垢面,但当披上格子战袍那一刻,日渐退后的发际线沐浴在拥堵不堪的西二旗和后厂村路的朝阳中,心中的战斗号角即会吹起,立刻精神百倍鸡血满满地投入到调参掉包等令人激动的炼丹伟大事业第一线:GPU即是我们的三昧真火,Tensorflow就是我们的炼丹炉,LSTM、ResNet就是我们的灵芝草,BN、Attention就是我们的万能调料…… 虽无古炼丹房之仙雾缭绕,却胸怀“十步杀一人,千里不留行”之小小骄傲…….只有当我们意识到,我们以及人数更为众多的工程师们的梦想和躯体的保鲜期只能勉强支撑35年的时候,也许我们才能够真正摆正自己在这个残酷社会中的位置:我们其实与蒸汽机时代的投煤工,嗡嗡作响纺织机旁的纺织工,大航海时代的划桨手并无什么本质的不同。我们其实才是需要逃离埃及苦地的新时代犹太人,但是也许,到最终会发现,世上并不存在能借力神灵之手的摩西引路。

嗯,好了,制造焦虑结束。

其实吧,我们可爱的工程师们之所以一辈子(也就是说35年)只能做工程师,是因为他们觉得自己只能一辈子做工程师。看上去好像有点绕,如果看不懂请返回去再看一遍上句,直到看懂为止。让我们最后假装更深刻地问一句:谁是我们的摩西?难道我们真的找不到自己的摩西吗?其实答案简单到甚至有些平庸:只有我们自己才是自己的摩西。

来,让我们来用拉马努金思维训练法来拨开迷雾,逐步发现属于自己的那个摩西。也许这个找寻摩西的过程会很漫长,但是我相信你如果能够以正确的方式思考问题,终有一天一定能够找到他,并在他的指引下安然到达你心中的平静之所迦南。

你应该意识到,拉马努金思维训练法其实是一个具备普适性的方法,并不仅仅限于机器学习领域,甚至不局限于科学领域,几乎在任何领域都可以采用这种思维训练方法来思考问题。比如如果你有志于成为新时代的马云,你可以思考下面的问题:

马云在创建并不断发展壮大阿里的过程中,有哪些关键的选择节点?在每个关键选择节点他的选择是什么?如果是你,在不作弊,没有未来之眼,尽量回到当年情景的情况下,你会做怎样的选择?你的选择和马云的选择相比哪个更好?如果你觉得马云的选择更正确,那么为什么马云的更好?为什么马云能够做出这种选择,而你做不出这些选择?你缺乏马云当年哪些特质或者判断力?……..这个问题列表可以不断延续下去,但我相信每个人都能在这种拉马努金式思考过程中获益良多。

再比如,阅读历史使人明智,这个道理深刻易懂,但是真正能沉下心来读历史的能有几个?真正懂得怎么读历史的又有几个?如果你是一位历史或者战争史爱好者,可以做如下思维训练。明朝大家都比较熟悉,所以我们以朱元璋作为例子。假设我们来做角色扮演游戏,你很幸运,抽中的角色是朱元璋,游戏开始,你看看面临下列场景时你自己会如何决策:

在亳州城里,你的义父郭子兴平时待你不错,不过最近看你不太顺眼,此时你是走是留?(你选择留下来?恭喜你,死一次);为了让游戏继续下去,假设你选择了走,去哪里?带谁走?(你说不知道?恭喜你,又死一次);假设你又选择对了,而且成功地占领了应天府,此时群雄割据,你的西边是志大而骄的陈友谅,东边是小富即安的张士诚,他们都不断骚扰你,这个时候你选择先打谁?(你选择先打张士诚?恭喜你,又死一次);北边抵挡元军的韩林儿小明王快顶不住了,你是救还是不救?(你说不知道,好汉饶命?恭喜你,又死一次)…..

你可以回顾下在很多关键节点,你是怎么做的决策,朱元璋是怎么做的决策,如果把你或者我放在当年朱元璋的位置,你可以算算我们已经死去活来过几十回了?在游戏中我们还可以重新来过,如果是在生活中,请聪明的你告诉我:如何才能重新来过?对了,另外一个重要的问题是:为什么每次面临重大抉择的时候,你都能精准地选到那个错误的选项?这种惊人的特殊才能你是怎么获得的?…….这些问题你可以在想静静的同时好好思考一下…….

其实,你,我,他,她…..栖居人世间,我们都是居住在心灵苦地不断挣扎的新时代犹太人,但终究有一天会意识到,成为一位具备好奇心的积极求知者,成为一位去掉浮躁浮夸的求真者,努力使自己成为事实真相背后的重构者,并在这种思维训练中获得超凡的判断力,这才是拉马努金式思维方法背后的精髓。


天才的陨落:向每一位求知者致敬

一刻不停的演算,剑桥冬天寒冷的天气,以及出于虔诚宗教信仰坚持吃素导致的营养不良,最终一点点消耗摧毁掉了拉马努金这位天才的躯体。待在英国后期的日子里,拉马努金不停咳嗽,后来进一步转化成了肺结核,以当时的医疗水平,这可能与今天的癌症医疗难度类似。1919年,拉马努金拖着病体回到了日思夜想阔别多年的家乡。一年后,病逝于马德拉斯,终年32岁。而他留给我们的是写在几个笔记本上的3900多个未给出证明的数学公式。

拉马努金病逝的消息让他的良师益友哈代悲恸不已,在剑桥举办的拉马努金的追悼会上痛哭失声。

哈代是发掘并不断提携拉马努金的伯乐,如果没有哈代慧眼识才,拉马努金很可能在贫苦中籍籍无名地死在印度,至今也不为人所知;从这点讲,拉马努金与事实上很多默默逝去,到今天仍然不为我们所知的那些永远沉默的天才比起来是幸运的。同时,哈代也是一位严师,一直培训并要求哈马努金去证明自己那些从直觉而来的神秘公式,而拉马努金并不善于此道,为此两人曾引发严重冲突。


拉马努金与哈代

在电影《知无涯者》中,有个片段让人印象深刻:拉马努金在英国处境不佳,一直急于发表自己的两部公式笔记,以期待因此能得到人们的肯定。哈代把拉玛努金拉到莱恩图书馆,指着一排排陈列整齐的书籍对他说:“人这一生获得荣誉的方式有很多种,对我们来说,被选为院士就是一种。但在我看来,如果在我们离世之后,能在莱恩图书馆里,留下一笔遗产,才是最伟大的。这里有《保罗书信》,米尔顿的诗文,有《摩根圣经》,它们都很伟大,但在我这个搞数学的人看来,最重要的一部还是牛顿的《数学原理》。牛顿的著作是这个物理世界的代表,而你的笔记是数学抽象世界的代表,牛顿也花了很长时间来证明自己,因此我们才有义务要把这些证明出来。一旦我们成功了,我相信总有一天,这些笔记在这里会有一席之地。”

哈代这番话是典型的人类知识开拓者的追求,而这让我想到某期辩题是关于人类知识的某辩论综艺节目中,蔡康永讲的一则小故事,而听完这个故事的我曾为之深深感动,他讲的关于知识的故事是这样的:

“宗教为什么要迫害科学,宗教为什么要迫害知识,因为宗教在和科学争夺解释世界的权力。我们现在看到巴格达这个城市满目疮痍,被战火蹂躏,你们知道在八世纪的时候巴格达是全世界知识的中心吗?巴格达作为世界的知识中心长达五百年之久,最优秀的知识分子在巴格达向外部传播知识,你现在抬头看到的星空,超过三分之二的星座用阿拉伯文命名。巴格达的精彩文明没有被人类忘记,可是你们知道,在过了五百年的文明繁华后发生什么事情?有一个宗教狂热分子说数学是魔鬼的哲学,然后他得到了执政者的认同,从此巴格达再无知识。你知道建立知识要多久,而消灭知识有多快吗?

我为你们影印了《华氏451度》这篇科幻小说,这篇小说讲的是,在未来作者设想,有一天,人类不允许有书籍,所有的书籍只要在你家被发现,就会被焚毁。我们要眼睁睁地看着家里的藏书被冲进来的消防员用火柱给销毁,然后我们要被逮捕。这部小说的结尾是什么?是每一个不愿意认同这个政策的人,他负责用他的脑子来记下一本书,他负责为人类保留住一本书的内容,他就是一本行走的《庄子》,他就是一本行走的《红楼梦》,她就是一本行走的《傲慢与偏见》。这才是最动人的。”

说实话,我当时的感动来得有点猝不及防,我曾经被爱情故事的聚散离合打动过,被亲情的无常无奈打动过,被余光中的《乡愁》和顾城的《墓床》这些诗歌打动过,也曾被像《往后余生》和《一生所爱》这种忧伤的歌曲打动过,却从没想过有一天会被“知识”这种抽象的概念打动过。

吾辈之生也有涯,而知无涯。对未知世界的新鲜好奇,对已知知识边疆的开疆拓土,或者将先辈的伟大理念代代传承,这是我们生而为人的宿命与骄傲,而这也会永远照亮温暖我们各自生来孤独的心灵。

我要向每一位求知者致敬,包括你,阅读到这里的朋友,此时此刻之前,也许你刚刚加完班,从明亮的办公区拖着身影孤身走进冬日北京的寒夜,还在出租车里为明天上涨的房租发愁;或身处上海闹市嘈杂咖啡店,怅望着玻璃窗外,熙攘人群中远去恋人一去永不回的背影低声叹息;抑或在三亚或杭州的家里,刚刚哄睡膝下承欢小儿女,疲惫地打开台灯开始写工作周报……但是我相信,不仅是你,也包括我,在不如意和小麻烦360度3D立体不断缠绕我们的平凡生活中,总会有那么一瞬间,作为求知者,会看到闪闪发光的自己,哪怕这一刻短暂飘忽刹那如光影不可捉摸,可在我们内心里,平日小小卑微的自己,此刻就是自己心中的拉马努金,请为此刻的我们喝彩,哪怕我们知道永远也等不到那位正在远方等待自己的哈代。

编辑于 2018-12-09

文章被以下专栏收录