公司动态

浅谈“统计与优化算法之间的关系”

最近看某一公总号上把大数据技术比作太上老君八卦炉炼丹。原始数据集相当于原材料,数学模型比作八卦炉,算法被比喻成三昧真火,而大数据工程师被比喻为炼丹师。本人非常认同这个有趣的比喻,生动形象地展示整个大数据工作流程。

早些年,当大数据技术还不火的时候,我们对数据的利用主要是一些绘图展示一些肉眼就能看出的规律,用的工具主要都是EXCEL类的数据处理软件,做的工作放到现在都只能说是一些数据预处理的工作。比如删除有问题的记录,凭经验补充缺省数据,用一点柱状图和折线图给领导展示一些规律,求求平均数和方差等等,就算是利用数据分析技术去解决问题了。

后来,由于通信技术的不断发展,渐渐改变了人们的生活方式,我们迎来大数据时代。每天每个人通过手机、电脑、一些物联网设备产生惊人的数据,并且一些商业公司通过分析海量数据,提取出有用信息,成功利用这些有用信息捞到了第一桶金。到了现在,你可以在各种场所看到“大数据”、“人工智能”、“数据挖掘”、“云计算”、“物联网”等字眼。

大数据技术的研究也是如火如荼。这里面主要是两拨主力军,一拨是统计学者,一拨是优化算法学者。按照上面的说法,就是一个是研究搭建八卦炉的,一个是研究三昧真火的。

统计学者研究思路一般是这样的。他们更关注的是如何构建数学模型。根据自己掌握的数据特点,提出一些新问题,针对这一系列新问题,搭建一系列新模型。他们不断地提出新的模型,并且从统计学意义上对所提出的模型做理论分析。他们总是假设自己的模型是能够通过某种算法找出最优解的。然后分析这个解的“无偏性”、“渐进无偏性”、“鲁棒性”、“渐进鲁棒性”、“Oracle性质”、“正态性”等等,说明这个模型的最优解是具有一些好的性质的,理论就基本搭建完了。接着就是做实验验证自己模型的正确性。由于他们主要研究搭建数学模型,不太注重算法研究。但是八卦炉搭建完了,得点火炼丹啊。他们不自己做算法,但是做实验时,需要找一个算法来驱动他们的模型来获得模型参数。所以,一般做法就是拿当前学术界鼓吹得最好的几个算法来跑自己的模型,多试几个,挑选出最好的一个就算完事了。然后通过一些专门的数据库拉出来的官方数据测试自己的模型的性能,列出一些指标,说明自己的模型怎么怎么好就完事了。你会发现,在他们的实验里,他们很少展示算法框架和实验的运行时间,因为算法是别人的,拿别人的算法跑自己的模型一般快不了,不好意思拿出来展示。

做算法优化的学者的研究思路一般是这样的。他们更加偏重于算法的研究。很多学者是看到一些好的模型因为没有配套的好算法被别人糟蹋了,看不过去,然后自己去研究一套跟那个模型匹配的算法,使得模型的结果进一步提高,运算速度大幅度提高,运算规模大幅度提高。他们的文章中的模型一般都是别人之前提出来的。很多模型都是包含非凸函数的,比较难求解,就拿压缩感知问题举例,目标函数包含l0范数,非凸且不连续。目前的算法归根结底都是梯度类算法,直接去求解压缩感知问题,此路显然不通。那就用一个可以求导数的函数(可以是凸的,也可以是非凸的)来代替l0范数,得到一个新的问题。然后设计一套梯度类算法来求解这个新问题。接着就是做算法理论,首先是要证明算法是收敛的,并且说明算法收敛到哪里(最好能收敛到新问题的最优解,或者能以多大概率收敛到问题的最优解,最差情况下收敛点和新问题的最优解距离是多少?等等),算法的复杂度是多少。然后,就是做实验,可以用真实数据,可以用虚构数据。我认为最好是先用真实数据来做,如果现实中没有你想要的数据类型,比如你想故意搞一些维数特别高,结构特别复杂的数据,现实中没有,但将来有可能出现,这时候你可以先用虚构的数据来代替。总之,能用真实数据尽量用真实数据,比较有说服力,实在找不到合适的,再考虑用虚拟数据。数据有了,模型别人已经给出了,算法设计完了并理论验证了可行性,接着就是不断得实验实验再实验,通过一些指标来说明自己是有贡献的。一般来讲,做算法的都喜欢展示运行时间,解的精度,因为这是算法的主要贡献。

我们看到以上这两拨主力军的特点后,我们来细致地对比分析一下。

统计学者更加偏向于提出模型,然后用统计学知识分析模型最优解的性质。但是有一个问题,一般随便拿个算法去跑新提出的模型是很难找到模型最优解的,而且运行时间一般都很长。我们是因为你说了模型的最优解满足啥啥好性质,才相信你这个模型,才去用你这个模型。结果我们算出来的解很多时候压根就不是最优解,那这个算出来的解是个什么东西,满足什么性质,统计学者啥都没回答。当然,为了说明他们的学术贡献,他们也许会这样辩解:我们只有先撇开算法才可能提出有前瞻性的模型,而且模型最优解是存在的,找不到只是说明现在算法领域工作还做得不充分,迟早能有能够算出模型最优解的算法被提出来的,从这一点来讲,我们的模型没有毛病。

算法优化学者则刚好可以解决统计学者留下的问题。但是统计学者也会质疑算法工作者的工作,就拿压缩感知算法来举例:你说你提出的算法好,那你的算法找出的只是松弛后新问题的最优解,有的连新问题的最优解都找不到。就算找到新问题的最优解,这个解是原问题的最优解吗?是我们的模型的最优解吗?而且算法的证明通常让很多学者感到恐惧。很多统计学家都觉得做算法真的很难,主要工作一个是严格的数学证明,一个是大工作量的算法调试,这两个工作都非常耗时耗力的。这里,我必须多说一句,做算法需要有定力的和毅力的。因为现在企业招聘,能够会点数据预处理的技术基本就可以进不错的公司的,如果再会点大数据建模技术,那就牛逼了。那算法咋办呢?现实中,很多领域都有大量的专业算法包可以调用,还有商业算法软件(CPLEX/GUROBI),等模型建好了,拿到了数据后,随便挑几个好算法试试,反正现实问题只要结果差不过看得过去就行,没有谁去证明这个解是不是最优的,因为在现实世界做这个事情真的没有必要。现实世界更讲究商机,比如一个人有了一个好想法,设计出一个好的模型,代入一个算法算出一些有意思的结果,能实现想要的几个功能,然后就可以打包做成软件赚钱了,先占领市场,也许他的内置算法实际上很差,但是可以边赚钱边改进嘛。就算之后有更好的算法冒出来,那市场也被前一个人占领得差不多了,钱也被赚爽了。

随着学科交叉研究的进一步深入,出现了一部分学者,他们身兼统计和优化双技能,提出模型的同时给出一个好的算法。但是,这种双重属性要求有点高,导致这样的学者不是很多。而且同时搞两个东西,精力会分散,对做出来的东西的品质多少有些影响。比如提模型的时候,你会去思考好不好算,这样会限制你的前瞻性的思路,没准你会为了兼顾到后面算法好计算而放弃了一个好的模型。对于做算法的学者的理论要求也更高了,你不但要会证明你的算法的收敛性,而且还要会通过统计学理论分析模型解的统计学性质。

对于这三类学者,各有各的风格和特点。所以投稿的时候要谨慎,你要搞清楚你要投的期刊是偏模型的,还是偏算法的,还是两者兼顾的。这也涉及到你的审稿人读你的文章时是不是存在困难。如果不是一路人,咋都有困难,一个统计学专家只研究模型,结果让他审一篇算法的文章,两个人根本不是一个学术脉路,相互看不上眼,那就完蛋了。反之,让一个算法优化学者审一篇偏模型的统计学论文,也会怎么看怎么不顺,因为文章中看不到算法框架、收敛性证明、算法复杂度分析多多少少会难受吧。而对于既有模型又有算法的文章,这就比较坑了,因为给谁审稿,他都有一半内容看不懂的。看不懂,看不爽,学术脉路不投机,全都会增加拒稿概率。所以最好的方式是投一个对的期刊,恰好碰到一个对口味的审稿人,接着你的文章的篇章结构,句子的逻辑要非常严谨和通顺,基本就OK了。曾今也被赐予了一个好想法,因为我的年少无知,毁手里了。

平台注册入口