当前位置: 首页 > 新闻及公告 > 学术专题

学术专题

解析解到最大似然函数--高性能计算部 齐富民

2019-03-12

程序猿小A在某互联网公司就职,长相一般,但是专业技能在项目组里是很不错的。此外,他有一个最大的特点就是喜欢“刨根问底”,也许正是这种“刨根问底”的性格,导致他给人的印象是固执。因此,多年来还单身。经过这些年的努力,小A意识到这些“问题”,因此性格上也转变了不少。毕竟到了谈婚论嫁的年纪,近来父母也一天到晚嚷着要抱孙子,这让小A困扰不已。最近,经同事介绍,小A好不容易找到个女朋友小E。小E是某大学理工科女硕士,很漂亮,学习也成绩优异,但也有一个很“固执”的择偶标准——“要三观合得来”。也许在她的心目中所谓“要三观合得来”,只是没有碰到与自己有共同话题的男生。要是能早遇上小A,小E的择偶标准可能会变成“合得来就行”。为了检验小A是否与自己“合得来”,小E提出希望两人合力在所在工作地买一套“合适”的房子才能结婚,这是一个命题作文,让小A自己琢磨,并且15天内必须拿出方案。听到“合适”两字,码农出身的小A顿时有点蒙圈。什么叫“合适”的房子?是价钱合适?地段合适?养老合适?还是投资合适?小A立马试图开启“刨根问底”模式,但是多年来吸取的经验教训告诉自己,别急着问,还是自己先想想办法。

因为自己从未接触过房地产,怕辛辛苦苦挣的钱被忽悠了。对于小A来说,“合适”就是综合性能优异,不仅是价格,还有地段、楼层、区域等众多因素。于是小A想通过向同事请教,同时咨询房屋销售中心的报价等方式,来完成买房顺利迎娶小E的愿望。同事们纷纷向小A传授购房经验,房地产公司销售人员也是热情周到。在N中方案面前小A陷入无法抉择的境地。就在此时,小A灵机一动,为什么不发挥自己的专业特长?说干就干,小A从几大知名的房地产公司的网站上顺利获取到了工作地大部分区域的房屋交易信息和报价。

 

小A开始了其漫漫建模路,小A的目的很明确——只需要售楼人员告知房子的具体位置、楼层、面积、售价、装修状况等基本信息,他便可以通过自己建立的模型得知该房子值不值得自己买(如果售楼人员的报价与自己预测模型的报价误差在20%以内,该房屋可以作为备选)。

 

为了建立预测模型,首先,小A获取到了在自己心目中会影响到楼盘价格的所有因素(包括,面积、价格、楼层、朝向、品牌、是否有电梯、交通状况、经纬度等等30多个特征);然后,小A先对这些数据进行了清洗,并采取了聚类措施,将数据集中相近的房屋聚类在一块;随后,小A设收集到的数据为,其中表示第个样本由30的向量和相应的报价所组成,表示第个样本的第个属性,该数据集中有个样本。在建模之前,小A给这堆数据做了一个很基础的假设,设D囊括的房屋属性相近,价格也会趋于一致,即数据集D中样本的数据分布是近似的,在一定的维度空降中,数据的分布可以通过数据和一组参数拟合的方式进行描述,如图1所示:

图1 数据和参数拟合数据分布

因此,小A依据经验将模型建立成如公式(1)所示:

 

        公式(1)

 

公式(1)中,X表示自变量,B表示因变量。

 

 

通过最小二乘法小A得到公式(1)的解析解为:

 

 

但是,有几个疑问一直困扰着小A,(1)为什么经验指导模型如此建立?(2)除了这种方式以外,当数据维度上升时还有其他的更快的求解方式吗?“刨根问底”的固定思维模式,导致小A在这条买房迎娶小E的路上“越走越远”……

 

凸优化

 

第二天,  小A在翻阅资料的时候,注意到凸优化的相关理论:

 

凸优化问题的目标是求解公式(2)中的优化问题:

 

             公式(2)

 

公式(2)中,为凸函数,为凸集,为需要优化的变量。凸优化中有一个较好的性质,即凸函数的任何极小值/极大值,便是全局极大值/极小值。小A回想公式(1),发现公式(1)不就是公式(2)的一种特殊情况吗?因此,小A开始探索凸优化的方式求解公式(1)。

 

如果公式(1)中的能通过迭代寻优的方式求解,且在第时刻,的更新能通过 实现,在更新方向选择正确且更新速率选择适宜的情况下,在时刻便能够求到的无限近似最优解。 因此,关键是可以用什么来表示。小A从凸优化的理论中学习到可以使用梯度下降或上升的寻优原理来求解参数,使得目标函数达到最小值/最大值。由于是搜索极小值时的,因此,梯度方向取负号。不管三七二十一,小A立马动手编写代码,使用梯度下降算法求解。不出意外,小A顺利建立起了自己的模型,接下来的日子只要有房屋信息,小A就能通过模型先对数据进行筛选,尽可能地跳过可能带“坑”的房屋。这天晚上距离“任务”交付日期还有11天,小A晚上美滋滋的向小E汇报这几天的进展,接下来的发生的事情让小A措手不及。

 

当天晚上,小A拿出方案向小E汇报,小E显然对小A的汇报结果并不在意,等小A汇报完,小E开启了专家问答模式。你给我讲讲为什么要用梯度下降?为什么偏偏是梯度下降,而不是上升?为什么代价函数是欧氏距离形式,和其他诸如概率论里面的相关方法有什么联系吗?小A此刻才联想到网络上的流行语“Too Young Too Simple!!!”,难怪给我15天时间!面对突如其来的问题,小A不知所措,答应小E其会在剩下的11天时间里,认真查阅相关文献,11天后给出“满意”的答卷。那夜小A心理翻来覆去,抱怨自己为什么这次没有“刨根问底”。看来小E这次“任务”的侧重点不在于买房,而在于“检验”自己的办事能力和分析解决问题的能力。

 

接下来的日子,小A一边上班,一边查阅资料。

 

为什么要用梯度下降?为什么偏偏是梯度下降,而不是上升?

 

解答这个问题,首先需要了解什么是梯度,很多参考材料上都只介绍,梯度和导数的关系,以及告诉结论——如果得到目标函数的最小值则采用负方向,如果求最大值则为正方向。至于为什么,小A并没有仔细深究。

 

刚开始,小A觉得回答这个问题着实简单,直接告诉小E,梯度代表着某一函数在该点处的方向导数沿着该方向取得极值,然后依据目标函数取最大值还是最小值进行方向选择就行了。但是转念自问了一下,发现这只告诉了小E怎么做的,但是很明显小E更加关注为什么这么做?于是小A继续查阅相关资料。

 

导数

 

导数常被用于描述函数在某一点附近的变化率,其本质是通过极限的概念对函数进行局部线性逼近。函数处可导,可以用公式(3)来表示:

 

       公式(3)

 

因此,在直线运动中若表示时刻,表示距离,表示时间和距离的关系,则导数的含义就是在时刻的瞬时速度。当表示的是曲线时,导数的含义是曲线在处的斜率。

 

方向导数

 

若函数在点处沿方向(方向角为)存在下列极限:

 

则称为函数在点P处沿方向的方向导数。

 

若函数在点处可微,则函数在改点沿任意方向的方向导数存在,且有

 

      公式(4)

 

公式(4)中,的方向角。

 

梯度

方向导数公式(4),令向量,则公式(4)可表示为公式(5)所示:

 

      公式(5)

 

公式(5)可以看到方向一致,即夹角为0时,方向导数可以去到最大值。这说明的方向是变化率最大的方向,其模是的最大变化率之值。

定义向量称为函数在点P处的梯度,记作,即

 

 

至此,小A发现,如果是求极小值,则梯度方向取负。小A画出了一张知识图来总结这两天的发现,如图2所示:

 

 

图2 梯度寻优

 

为什么代价函数是欧氏距离形式,和其他诸如概率论里面的相关方法有什么联系吗?

 

上学的时候相信很多人都和小A一样,对于某些理论课程,老师在教授专业课的时候,从来不会告诉你学了这东西有啥用,不会带着你针对特定问题进行一次深入的应用探索。以至于在以后的工作和学习中,都会遇到很多“熟悉的陌生人”——见过,了解过,但就是不会用。为什么这样子?小A认为更重要的原因还在于,老师需要传授的知识太多,如果针对每一种理论都带领学生进行一次深入的应用探索,时间上也分配不过来。俗话说“师傅领进门,修行在个人”,就是这个道理。师傅可以给你一把刀,可以教授你基本的削和砍等基础动作,但是更加深入的武功秘籍还需要自己琢磨和探索。

 

最大似然函数

 

假设现有样本可以代表整体,且能描述该整体的携带未知参数的模型也已知,那么最大似然估计的目的就是要为模型找到一组参数使得出现现有样本的可能性最大。因此,在买房数据的分布上,小A假设房价和因素的关系可以使用表示,对于误差项,其服从正态分布,。因此,小A得到,根据极大似然估计的定义,在该例中,似然函数可以写为如公式(6)所示:

 

         公式(6)

 

小A将公式(6)表示成凸函数的形式,如公式(7)所示:

 

     公式(7)

 

至此,小A发现,要让公式(7)取得最大,则需要让最小,这个目标就是公式(1)中所要达到的目标函数。

 

经过几天的原理分析,小A自认为给出了小E需要的答案。约定的交付答案的日期如期而至,当晚小A信心满满的准备向小E汇报。但是小E似乎对此并不十分满意,又提出了新的问题……