一年一年的,又到了高考填志愿的时候。

这几年高考分数出来时,我都有同学代表清华回安徽和北大抢优质生源。具体两校怎么抢,水深不便多说。今年去了一个学弟,这两天在小群里谈了所见所闻,令我有所感慨。

七年前,我刚高考完的时候只听过五所半大学,清华,北大,复旦,中科大(在省会合肥),安徽理工(在我的家乡淮南),还有浙大。浙大算半所,因为我们那把它读成“哲大”而不是“这大”,我一直以为是什么“中国哲学大学”的简称。至于专业,只知道对文科没兴趣,不学文科。

到填报志愿的时候,学校发了一本填报指南,翻开一看,一脸茫茫然。

对大学和专业的无知,我并不是个案。可能更多的人比我多听说过几个校名,或者多听过几个专业,但绝大多数高中生(及家长)仍然完全不知道该报什么学校和选什么专业。这一点想来合情合理。

高中生嘛,尤其是成绩好的,天天就知道做卷子,能知道什么?

毕竟 too young,too simple。

尽管什么也不知道,但每年刚从高考解放的小年轻们还都填报了志愿,上了大学。

那这些什么都不知道的小年轻是怎么做决定的呢?

根据分数线和排名

虽然对专业一无所知,但如果专业A比专业B分数线高,或者专业A比专业B排名高,那一定是专业A好。更有甚者,仅仅因为自己的分数比自己想报的专业分数线高,怕浪费分而报其它分数线更高的专业。不仅专业如此,连学校也是根据分数线和排名选择的。

这种标准错在分数线和排名并不能说明志愿的好坏。分数线主要是由之前填报志愿的高中生决定的,而他们同样几乎一无所知,糊里糊涂。遵循其他人不理智的决定显然也是不理智的。我到大学才发现,原来不同省份对同一学校同一专业的青睐程度差别很大,在一个省的高分专业换到另一个省可能就成了低分专业。即使是一个省,分数线历年的浮动也不小。由于各大学的各个专业在每个省只招几个人,样本的稀少必导致分数线的随机性大。所以,根据去年分数线三五分的差别就判断哪个志愿好哪个志愿不好,就跟抛硬币似的。

排名就不想说了,因为实在跟学生没关系。类似的还有学校有多少个两院院士、承担了多少国家项目。大学新生挺关心各种大学排名、专业排名或者院士又增加了几个。但是,学校排名高了两位也不能让你毕业时受到社会更多的优待,院士也不会给你上课。过两年就会发现这些跟邻居家的小孩考上了哈佛一个样。

根据专业名称

很多人对专业唯一的了解就是专业名称。恰好,人类思维的特点又有“代表性”(Representativeness)缺陷 1,所以这条依据也是误人子弟无数。专业名称里的词非常容易令人产生联想并影响决策。例如,如果专业名称中包含“飞行器“,人立刻就会联想到科幻作品里的各式新奇飞行器和宇宙飞船,顿时觉得这个专业充满高科技,毕业后定能名利双收,前图无量。再比如,看到“物理学”,立刻又会联想到牛顿、爱因斯坦,那么学物理学从事物理研究,一定可以做出什么突破性理论,成为受人仰慕的世界顶级科学家。看到“法律”,又会立刻联想到某电视剧中魅力四射的男神律师,顺带联想到将有一个美丽纯真的女生拿着单反等着自己。再说说我的专业计算机,有些人看到这个名字就联想到比尔盖茨,进而觉得选择这个专业就有一天可以创办公司,身价暴涨(当然,也有相当大一部分人看到“计算机”,就想到修电脑的)。

人在做决策时,太容易受到某个联想出来的典型的影响,而忽略了普遍的情况。学飞行器的的确有设计太空飞船的,也有去做飞艇的2,但大部分人还是做了一些离科幻很远的工作。学物理的的确有最后当科学家的,但绝大部分都转行了,比如到互联网或金融公司写写代码什么的。学法律的的确也有很成功的,但是放眼全国绝大部分法律专业毕业生找工作时还是蛮窘迫的。计算机专业是的确有人创业成功,但大部分程序员还是加班写代码,日子过的也并不舒坦。

不是说点名的几个专业不好,我只是想表达事实可能和填报志愿时看专业名称幻想出来的不一样。除非可以永远活在幻想里,否则不要仅仅根据专业名称就选择专业。

根据当前热门专业填报志愿

大约我在刚上大学那会儿(2009年),听说石油专业工作容易找且待遇非常高,有人自愿降几十分去学。世界变化总比想象的还快,过了几年,等这些报石油专业的人找工作的时候,且不说工作待遇怎么样,甚至如果家里没背景的话几乎都没有单位要。

大学有一年,我去听了一个知名台湾编程作家的讲座,他谈到自己的经历。他读的是土木工程专业。在他毕业的时候,台湾的基础建设已经基本完成,该修的路修了,该建的桥建了。他唯一能找到的相关工作是报纸上登的招“泥水工人”。大陆似乎很少说“泥水工人”,大概就是建筑工或装修工一类。可见当时该专业毕业生找工作时的不堪。

由于历史原因,大陆的建设要落后台湾。台湾几十年前该建设的建设好了,所以土木工程专业的毕业生找不到工作;大陆的学生应该明白,不管当前土木工程有多热门,当大陆也把该建设的建设完时,就业也不会好到哪里去。

听讲座的那几年,土木工程等相关专业还是比较火。听说毕业后如果可以去设计院工作,收入会非常高。但这两年,土木工程及相关专业的就业情况已不可与当年同日而语,就连清华的相关专业的朋友也在抱怨。

所以,选专业时一定要往前看,不要被当前的冷热迷惑。现在,你已经知道,不可再生能源一定会被取代,那么就不要再选石油专业了;中国的基础建设不久就要建完,就不要再报土木了。还有呢?如果你相信,机器翻译会承担绝大部分翻译任务,那你就得考虑学外语专业毕业以后可能没现在那么多翻译任务。如果你相信,人工智能会取代大部分前台工作人员,那你就得考虑将来经济管理专业的就业可能会受到冲击(要知道,很多经济管理专业的毕业生没能成为经济专家或者公司管理,而是去做银行前台)。

往前看非常重要,但也非常难看准。大约世纪之交那几年,生物或生命科学被认为是二十一世纪的科学,许多高考状元纷纷填报生物专业。但现在,生物专业就业情况的惨烈大家有目共睹。我有同学大学学的就是生物专业,他说毕业时只有养猪厂之类的在招,最后无奈地去做物流。施一公有次在某教育类节目中大谈生命科学专业前途如何光明,结果世界各地的生命科学Ph.D痛斥其言论不负责任3,评论的IP地址遍及五大洲及美国五十州。

不能不往前看,往前看又不一定看得准,这也是挺无奈的。

咨询“专家”的意见

这里,专家泛指高中生觉得懂如何填志愿的人。常见的包括高中老师、亲戚长辈、邻居熟人等。然而,他们往往只是看上去“懂”,实际上跟高中生差不多糊涂,所有高中生有的误区他们都有。他们会说,“报土木工程吧。我大表姑邻居家侄子当年就报这个,现在在南京买几套房了,一年好几百万!”或者“报法律吧,将来当大官!”又或者“别报计算机,女孩子修什么电脑!”

我填完志愿后的暑假,在书店看书。有一个老爷爷跟我聊起来。听说我刚高考完,他要我一定报中医。一来,自己和家人生病了自己懂,又能在医院有关系;二来,中医年龄越大越吃香,老了开个诊所能挣大钱。说的似乎也挺有道理,但最好我毕业后直接从22岁跳到60岁,中间的不过了。事实上,我从学中医的同学那得知,中医专业几乎没有在医院工作的,具体是找不到医院的工作还是不愿意在医院工作不讨论,但事实就是大部分去做了“医药代表”,就是帮药厂贿赂医院的主任医师,多开他们的药。

以上的“专家”要么是自己半懂不懂,要么是曾经懂的但早已跟不上时代形势。但还有些专家的建议就有些灰暗了。比如,有些高中可能会为了自身的宣传效益,建议自己的学生报名校、报一本,哪怕是比较差的专业,只要能上就好。学生四年后能否找到满意的工作,能否过上自己想要的生活完全不重要,重要的是学校又多了几个考上清华北大的毕业生,一本率又提升了几个点,下一年的招生就好宣传了,优质初中生更愿意刷刷刷地来了。

这样灰暗的不止有些高中及其老师,还有其他机构和人,也按下不说,自己留心鉴别。还要知道的是有些政治不正确的话“专家”是不会说的。举个例子,不讨论报军校或者当国防生本身好不好,我只假定“专家”内心觉得不好,即他不愿意让自己的子女参军。那么当你请教他时他可能不会表达出自己的真实观点。巩固国防、光荣参军才是政治正确的,我怎么能说不要参军呢?说了不就显得我觉悟不高、太世俗了吗?于是,专家可能会说“挺好挺好,将来当将军。”虽然他自己都不信。4

所以,填报志愿的时候清楚,“专家”的话千万别全部当真,权当个参考,重要的还是自己多考量。

名校情结

名校情结多数人都是有的,只不过分差的太多,大部分人想情结也情结不起来。所以这条主要影响的是刚刚达到名校分数线或者差不多达到的高中生。名校情结的表现在于,不管上什么专业,只要能上名校就可以。有小孩听说自己的分数达不到清华的国防生线,哭了一晚上。我笑道:“失了一匹马,就能哭一晚上,果然还是太年轻。”

其实,有名校情结的人很多并不清楚名校是什么样的,但是幻想中的总是很美好。也许从网上找找各名校平均工资可以将你拉回现实。最高的清华大学毕业生毕业五年后平均工资为12807元每月5,好像还可以,但是肯定没有幻想中的高,至少没有拉开非名校太多。但是你要清楚的是,这个平均数包含着许多工资非常高的,自然也包含很低的,而且不同行业薪酬差别巨大。你为上名校而放弃好专业,意味着你将来很可能是其中拖后腿的。你还要知道,非名校好专业毕业生的工资可能是名校差专业的几倍。

上一个名校自然是令人羡慕的。但如果混的不好,也是同样心酸。朋友说他有个高中同学清华本科毕业后,在北京工作得不是很如意。当听说其他高中同学回老家工作,日子过的很舒坦时,他只能无奈地说:“可惜我回不去了。”名校这个招牌是荣耀,也是负担。在校的几年,荣光焕发,毕业后发现自己并不比其他学校的好到哪去。如果混的不好,最怕被问及的是哪所学校毕业的,怕给学校丢脸。

从起初的迷糊,到大学毕业,我才渐渐想明白许多事,也更加清楚什么是填报志愿的正确做法。

第一步,你得知道自己究竟想要什么样的生活。

似乎长大之后,除了骗人的时候(比如创业拉投资,又或者卖产品骗消费者),大家很少谈小时候的梦想。我原来以为,大家小时候的梦想都是长大当科学家,至少也是常见的那几个职业。比如,我妹妹大学时去安徽贫困地区支教教英语,结束后给小孩子录视频,问他们长大了想做什么。我看了视频,发现小孩子的回答清一色都是“I want to be a teacher”。我有一次和一个家在北京的同学聊天,他说他小时候的梦想是长大后当一名卡车司机,令我非常吃惊。还有一个外企中层朋友说他家念幼儿园的小孩就想长大后开挖掘机。

仔细想想,其实小孩梦想长大开卡车、开挖掘机才正常,因为他们可能玩了玩具,觉得好玩就这么梦想了。真正令人吃惊的是我们都不知道科学家具体干啥还有那么多小孩都要当科学家。也许我们小时候接触的世界太小,课本成了我们了解世界和形成价值观的指南。课本里除了童第周、茅以升、爱迪生这样的科学家外,最多的是李大钊、董存瑞这样的革命烈士,但小孩的梦想总不能是长大当烈士吧。所以大家纷纷要当科学家。(为什么又有好多要当老师呢?因为这个问题是老师问的。而且虽然课本里老师出现的不是特别多,但是作文里多啊。“我的老师”是写老师,“我最尊敬的一个人”不一定要写老师,但是写老师能拿高分,还有“二十年后再相会”还是得写老师。)

悲伤的是,这帮小孩很多直到高考完填志愿的时候还是没有长大。他们一个个都成年了,但是对于将来想要什么样的生活完全没考虑过,或者即便有,也是自己幻想出来的,在现实中并不存在。我高中毕业时还在幻想自己当一名科学家“搞科研”。什么是“科研”,以及怎么“搞”,不知道,但是一定是穿着一件白大褂,有一天去领奖,国家领导人接见,握着我的手,微笑微笑微笑。

十八九岁的儿童们想当科学家,但不是现实中的科学家;想当律师,但不是现实中的律师;想当医生,但不是现实中的医生。因为他们根本不知道现实中的这些职业是什么样的。一点点初生牛犊的胆量,外加120分的想象力,他们呼呼呼奔向自己志愿的美好幻景去了,然后在现实的大陆上摔个一脸灰。

自己究竟想要什么样的生活不是一个简单问题,可能得思考一辈子。但是让小孩更早地接触到更广泛的世界应该会有帮助。如果没有这个条件,那就只能临时抱抱佛脚。想当医生的,找个医生问问他的工作怎么样;想当律师的,找个律师看看是否和电视里大律师一个样;想当工程师的,找个工程师聊聊他每天处理什么问题。再不济,就上网找找当事人口中的现实。直到脑海里的幻想被真实情况代替,模糊变的清晰,你才能较准确地判断这是不是你要的生活。

当然,人想要的生活是会变化的。很多人一开始确实想好了,真心想要做科研,真心想要参军报国。但是一接触到现实,崇高的理想就氧化了,思来想去,不如多赚点钱。这种现象太多了。心怀崇高理想的小年轻心里得有数,之前那么多放弃科研的人以及要退出国防生而和学校闹翻的人,刚开始时的科研热情和报国热情并不比你差。

我有个清华计算机系的小学弟。大二时他跟我说想研究计算机网络,由于我本身觉得计算机网络很无聊,就问他怎么会想研究网络。答案是他“觉得”网络有意思,尽管他当时并不知计算机网络在研究什么。我泼了点冷水,建议还是看看机器学习。没过多久,小学弟还真觉得网络确实没意思,转而开始学机器学习,并表示将来要研究机器学习理论。这段时间,小学弟极为推崇数学,经常抱怨计算机系这个数学课不开、那个数学课不开,悔不当初没有报数学专业,就连打招呼的方式都是“学长,你是频率学派还是贝叶斯学派?”可等到了大四,机器学习理论也不看了,觉得还是赚钱更重要。

2012年辽宁省文科状元从港大退学,2013年又一次拿到辽宁省状元,最后去北大中文系“追寻更纯粹的国学”6。我是挺佩服的,不仅因为她连续两次拿到文科状元实力超群,还因为她敢于放弃,说走就走,去追寻更纯粹的国学。就我所知,在北大读中文系的很多并不是喜欢中文,而仅仅是想上北大。所以,当我看到这样一个“想要追寻更纯粹的国学”的女生选择北大中文系时,还是隐约担心她会不会又是一个刚开始too young, too simple,最后被现实浇一头冷水改变心意的人。三年过去了,希望她的理想和热情还在。

第二步,你得清楚自己选的志愿确确实实能带来自己想要的生活。

上一步是要清楚自己的目的地,这一步是要清楚选择哪条路可以通往目的地。

报考指南或者网上是这样介绍一个专业的:该专业学生主要学习XX、XX、XX,受到XX、XX、XX 训练,具有XX,XX,XX能力,可以从事XX、XX、XX。我的天呐!本来就想了解一个不清楚的专业名词,得到的却是由另外几十个不清楚的名词拼凑出来的解释。结果,词没理解,联想却更加丰富了,做出错误决定的概率也增大了。所以,这些解释除了增加误解外,基本没什么作用。

正确的做法是找个真正接触过该专业的人问问清楚那些你能懂又重要的问题。比如,这个专业毕业生第一年一般都拿多少钱?这个专业出国的人有多少?这个专业毕业都去哪些公司了?这个专业男女比例是多少?这个专业的学生对专业满不满意?这个专业跟那个专业比哪个好?……还是要问到自己所有的幻想都被真实情况所代替,才能理性决定是否选择这个专业。

人的观点常如钱钟书所说:“城外的人想进去,城里的人想出来”。所以,当一个人说自己的专业好时,除非他一心想坑人,否则他的专业一般没啥问题;但是,当他说别的专业更好时,你就得持谨慎态度了,搞清楚他是真正了解其他专业,还是仅仅因为围城效应觉得其他专业好。专事专问,记住没有万事的专家。

第三步,组合志愿,降低风险。

二十五年的人生经验告诉我,永远不要把鸡蛋放在一个篮子里。早些年,先填志愿后高考,而且一个批次只能填一个志愿,如果报了清华没录取,哪怕差一分都只能去念二本。多少人为了保险起见不敢填报心仪的大学和专业。现在的平行志愿以及知分填志愿比原先先进和安全太多了,只要将志愿合理分配,有高有低,从高到底,一般情况下不会出什么问题。不管如何,一定要把最后一个志愿填成自己能接受且肯定能被录取的学校和专业。

我特意查了一下,有四成大学生对自己的专业不满意,六成想换专业。7 这其中包括填志愿时不知道自己想要什么生活的,不知道专业能否带来想要生活的,还包括两样都知道并且选择了合适的志愿但被调剂的。总之,上不了合适志愿的大学生很多。

上不了合适的志愿对一个人影响大吗?

既大也不大,关键看对谁。

首先要明白的是,高考并不是影响人生的唯一因素。很多人在高考这场战斗中打败了许多同龄人,拿到了宝贵的读好大学的机会。但是,等到大学毕业的时候才发现,多考个一两百分可能还远不如一句“我爸是李刚”。前几天深圳市有拆迁村民到政府网站哭穷,说分到的66套房租不出去8。不管什么专业和学校,有几个人奋斗一辈子能在深圳买66套房?别说高中三年的努力了,大部分人可能努力一辈子都比不了赶上一次农村占地拆迁。所以,当从名校毕业后发现自己每个月加班拿到的工资还比不上没念过大学的同班同学每个月收的的房租时,请保持内心的平静,毕竟这样的事太多了,你不平静也没办法。

同样是没上一个好专业好学校,同样四年后毕业找不到工作。一个人回家说:“爸爸,我找不到工作,没有公司要我”,他爸说:“没关系儿子,这有两千万,你去开个公司,自己当总经理。” 另一个回家也说:“爸爸,我找不到工作,没有公司要我”,他爸却说:“没关系儿子,这有两亩地,你去种点玉米,自己炸爆米花。”

人生就像打扑克,接到什么牌无法由自己决定。有的人伸手一抓,王炸四个2,外加一连顺子;有的人只接到一手烂牌,烂牌归烂牌,总不能重新投胎再接一次牌吧,那只能好好决定怎么出牌。

人生最美丽壮阔的风景莫过于接了一手烂牌最后还打赢了。

假如你的手里一把好牌,没上一个好志愿对你也没什么影响,读个四年,花钱出国留学,回来继承家族产业就好。只要没傻到上来就出王炸,日子不会差。

但假如你手里的牌很一般,那没上一个好志愿影响就大了。刚开始上大学可能不觉得,大学新生发现一切都那么新鲜,按耐不住自己内心的喜悦,一种天之骄子的骄傲油然而生。但当他们接触到师兄师姐的负面消息后,过不了多久就会被现实打脸。原来毕业后找工作那么难,原来找到的工作工资那么低,原本还准备让父母过上好日子,现在才发现自己过好都难。再想想自己多年的努力,为了高考付出的那么多青春,还有父母长辈的辛苦和期望,立刻会觉得向上爬的天梯被一道绝望的玻璃窗挡住。这时的大学生,浮躁又焦虑,感觉被欺骗又看不到出路。很多人崇高的理想和抱负崩塌了,觉得能先苟且一下就苟且一下吧。

肖申克的救赎里,安迪说:“Hope is a good thing, maybe the best of things”。

一些学生在高中时有着考一个好大学的希望所以努力学习。可等上了大学,如果所学的专业无法给他带来一个新的希望而是带来了失望甚至绝望,他就可能因此而沉沦。于是,高中时学习认真的,大学时却不去上课,挂科几十门,最后被退学。这样的情况,我见识过不止一例。

虽然对于大多数普通家庭的学生而言,没有上一个好志愿影响挺大,但是也并没有大到决定败局的地步,关键看你怎么认识并采取了什么行动

为什么又要读大学?这不是简单的问题,有很多答案,这里我只说一个。读大学,除了为了诗和远方,还为了眼前的苟且。

一个从未接受过教育或培训的人,即使不劳动,仅靠乞讨和救济,也能存活于世。但是如果他或她还有点技能,比如会制作板凳,那就可以凭此技能令日子过的不那么无尊严。如果技能再高一点,做出的东西会更有价值,那么日子就会更加体面些。

上大学苟且的方面就是掌握赖以生存的技能,让自己将来活的更好些,而专业就是要习得的技能。

那么,如果没有学习特别技能的人不会被饿死,当你习得一门技能后,有可能会饿死吗?

这真是一个愚蠢的问题。所谓技多不压身,多一个技能哪怕无用武之地,也不会影响生存吧?

然而事实上是会。

我想到一个比喻来解释。森林里有一群野人,其中有几个聪明的学会了制作弓箭捕猎动物,成为了猎人,而其他比较笨的野人只会用石头砸落在地上的核桃。所幸森林里到处都是核桃树,地上的核桃怎么吃都吃不完。随着动物越来越少,捕猎的难度越来越大。渐渐地,猎人因为打不到足够的猎物挨饿。所以猎人们开始试验如何做出更先进的弓箭,练习更准的射箭技巧,希望以此增加捕到猎物的机会。但最后,猎人还是饿死了,不是因为核桃不够吃,而是因为他们放不下手里先进的弓箭去从地上捡起一块生存的石头。

在这个比喻里,工具(弓箭和砸核桃的石头)代表着专业或技能。在现实中,很多大学生由于各种原因上了一个不好的专业,就像比喻中的猎人,在明知前途不光明的情况下,还不采取真正有效的解决办法。本科毕业不好找工作,读个本专业的硕士吧。为什么还要读本专业的硕士呢?别的专业我也不会啊。硕士毕业后怎么也找不到满意的工作?那就读个博士吧。当然,还是读本专业的博士,毕竟本专业学好几年了,换专业就浪费了。

有次,我和女朋友去一家餐厅喝新疆奶茶。桌上放了三个玻璃瓶,第一个装白糖,第二个装牙签,第三个瓶盖上插一根短管,装一种未知的黄色油状液体。我拿起第三个瓶子,从短管倒了一滴,一尝,原来是蜂蜜。我想要更多的蜂蜜,就不停的从短管往外倒,但是半天才出一滴,过了好久才倒好。当我把蜂蜜瓶放下的时候,突然想起来把瓶盖拧开不就可以快速倒出来了吗?

仔细品味一下,有趣的地方在于,如果蜂蜜瓶瓶盖上不插短管,谁都知道拧开瓶盖倒蜂蜜,但是插了一个短管后人们反而想不到拧开瓶盖了。

有句话说:“当你手里握着一把锤子,你看什么都是钉子”。我先前的理解是,因为你只有锤子,所以干啥都只能用它。“倒蜂蜜事件”之后,我对这句话有了新的认识:当你手里有锤子时,即使地上放着其它工具,你想都想不到要使用它们。

上世纪八九十年代,很多人没有受过较高的教育,为了生计,光彩的、不光彩的,违法的、不违法的,什么点子都想了,什么事都做了。恰好赶上中国经济改革,所以一帮胆大又没文化的人迅速积累了财富。反观很多有文化的,他们有着能养家糊口的技能,就老老实实地当老师、当工人了。

这些事表明,当有个显而易见的出路时,人就想都不去想其他的出路,仿佛被催眠了一般,闭着眼睛沿着这条路向前走。

对于大学生而言,拿毕业证找个相关工作,或者继续在本专业深造就是两条显而易见的出路。所以很多大学生想不到或者没有想其他出路。本来,他们该考虑的是“如何过自己想要的生活”,但他们因为有了文凭就把这个问题替换为“如何找到一个好工作”。所以,第一家公司面试没过,就投下一家。投到最后没得选也就将就了。

到了高考这一步,你比别人多了几十上百分,相当于手里的牌比别人好。你上了大学别人没上,或者你上了一个好大学别人上了一个不太好的大学。但等大学毕业工作几年后,你反而没别人过得。,而且,过的比你好的也不都是因为家世比你好。你是不是得想想自己是怎么把手里的一把好牌打臭的?

北大不仅出当官的,还出了两个养猪的9。有些读大学无用论的蠢人常喜欢拿这两位说事儿:“读大学有什么用?北大毕业的不也还是去养猪?”恰恰相反,这两位读了大学养猪都能养出上百亿身家,这正是读大学的用处。而且,其中一位学中文的,平常还能写写诗词,给别人上上课,这不正或许是他想要的生活吗?

但现实中能像这两位一样放下手里的弓箭,从地上捡起石头的人还是太少10

专业就是一个工具,如果不好使,要么丢掉,要么换一个,而且越早行动越好。

我填报志愿的时候,稀里糊涂填了一个分高的、全国排名第一的、名字很炫的专业。学了半年觉得和我的想象差别很大,也是迷茫和不知所措。我反倒觉得学计算机挺好。计算机分数线比我当时的专业低,而且排名也没那么高(当时全国第三),所以只是我的第二志愿。但入学后再想转,难度很大。我上网查了查学校转专业的难度,全部都说只能转到数学和物理这样冷门的专业,而且要成绩很好。要转到计算机这样的热门专业不可能。

心都凉了。

有一次,一个和我同一所高中并且同一个专业的学长找我吃饭。我谈到对专业的不满意,想去学计算机。学长建议我给计算机学院的院长写封邮件11

我就真的给计算机学院的院长写了一封邮件,而且是一封慷慨激昂的邮件。

没回我。

等了几天,挺失落的。不回邮件似乎意味着连考虑都不考虑。

我又试着发了一封,还是没回。

看样子转不了了。

不对。院长不回我,也许副院长会回我吧。

学院有三个副院长,我给每个人都发了一封。

幸运的是,终于有人回我了。一个副院长表示他不清楚转专业的事情,另一个表示这件事是由第三个副院长管,而第三个副院长没回我。

虽然没有什么进展,但是至少我知道该找谁了。我就连续几天给第三个副院长发邮件,每次都用不同的表达方式表明三点:我很优秀,我很想学计算机,我很想和她见面。

也就两三封邮件,她就回复我了,没有表露出想接收的意思,也没表露出不想接收的意思。我继续每天给她发邮件,每封邮件最后都写上“期待和您见面!”

这样,前后给她总共发了大约7封邮件,她就安排了面试。我通过了面试,从大二开始,成为计算机专业的学生(一般情况下,转专业是需要留级的,但是我非常幸运地直接上了大二)。

大家上小学都学过小马过河的故事。这次我也当了一回小马。原来,转专业这条河,不像网上说的深不可过,也不像学长说的一封邮件深,而是十几封邮件那么深。

当时,我身边想换专业的不只我一个。但并不是每个人都像我一样采取行动,或者像我一样在希望渺茫的情况下坚持不放弃。大一时,有同学见我学习很努力,还问:“你不喜欢这个专业,但还学的那么认真,这不是很矛盾吗?”

每当我回想起当年那个“院长烦”牌十九岁少年,都会莞尔一笑。他怎么脸皮那么厚?但那个少年,知道自己想要什么,知道自己不满什么,知道立刻采取行动,知道遇到困难不轻易放弃。

六年前,学长偶然的一句话,给了我很大的启发,改变了我的人生轨迹。今天,我把我的一点经验和想法写下,希望也有人因此受益。

写到这的时候,寝室里刚好飞进来一只麻雀12,在屋里转悠了一圈,停在窗前暖气片上又要飞走。但是隔着玻璃就是蓝天的窗引诱着它、阻挡着它,尽管一米外阳台的门敞开着,它还是几次撞在窗户玻璃上。

我突然觉得麻雀很像有些人。或者说有些人很像麻雀。他们总是从当前的位置出发选择一条显而易见的道路,即使发现道路不好走,也还是要沿着它向前。

希望大家都比麻雀聪明。

  1. Think Fast and Slow. Daniel Kahneman. 2011 

  2. 大学时另外两个同学和我组队参加科技比赛做了个飞艇。结果飞艇太大,找不足够的氦气,所以一直飞不起来。参展时飞艇还漏气了。每当人们路过就戳一下,最后就瘪在那了。有意思的是,队长硕士毕业后,真的去了一家飞艇公司。这个梗我可以回味好多年。 

  3. https://www.zhihu.com/question/34810002/answer/92881046 

  4. 我所在实验室历届有强军计划的研究生,等级从正连到正团,海、陆、空、特种部队、二炮、武警军种齐全。据我所了解,除了特种部队的师兄属于作战部队日常又辛苦又危险外,其他都是文职,生活都没什么压力,福利也很好。但将军不是一般人能当的。 

  5. http://edu.qq.com/a/20160226/043592.htm 

  6. http://education.news.cn/2013-10/11/c_125511166.htm 

  7. http://www.pkurc.com/info/8366-1.htm 

  8. http://news.163.com/16/0617/17/BPPG10RF00014AED.html 

  9. http://info.machine.hc360.com/2016/06/232033573345.shtml 

  10. 北大应该没有养猪专业,当然,这条待考证。 

  11. 学长在我没入学时,从他室友也是我辅导员的新生名单上看到我的名字,就发短信联系我了。在学校只一起吃了两次饭。学长毕业后先是去了一家专业相关的公司工作,但没几个月就辞职回去了合肥,找了一个专业不相关的工作。他毕业后一段时间,我还和他偶尔在QQ上聊几句,这4、5年没有联系,也不知他怎么样了。每回我想起他,心中仍是感谢。 

  12. 这里不是为了装文艺,是真的飞进来一只麻雀。 

enter image description here

马尔可夫链和平稳分布

周末,笨小孩的妈妈出门了,只留笨小孩一个人在家做作业。笨小孩想看电视,但是被妈妈回来看见会挨揍。所以,笨小孩每看1分钟电视或做1分钟作业就要随机地决定是继续当前的活动还是换到另外一个活动:如果当时正在看电视,继续看电视的概率为$T_{tt}$,换为做作业的概率为$T_{th}=1-T_{tt}$;如果当时在做作业,继续做作业的概率为$T_{hh}$,换为看电视的概率为$T_{ht}=1-T_{hh}$。笨小孩挨揍的概率是多少?

记笨小孩在第$i$分钟的活动为$X_i$。笨小孩下次活动的概率只与当前的活动有关,只要当前的活动是看电视,不管之前做了多少作业、看了多少电视,下一步做作业的概率都是$T_{th}$,看电视的概率都是$T_{tt}$;只要当前的活动是做作业,不管之前做了多少作业、看了多少电视,下一步做作业的概率都是$T_{hh}$,看电视的概率都是$T_{ht}$。

这种下一个状态$X_{i+1}$只由当前状态$X_{i}$决定而与再之前的状态${X_j \vert j<i}$无关的性质

称为马尔可夫性,满足马尔可夫性的随机序列$X_0, X_1, \cdots, X_n$称为马尔可夫链,产生该序列的随机过程称为马尔可夫过程。状态$X_i$的空间不仅可以是离散的,也可以是连续的。

当状态空间是离散时,状态间转移的概率可以用转移矩阵$T$表示,$T_{ij}$表示由状态$i$转到状态$j$的概率,显然转移矩阵$T$需要满足

如果状态空间时连续的,无穷不可数个状态之间的转移概率不可能用转移矩阵表示。用来表示状态转移概率的是马尔可夫核$p(x, x’)$,它表示由状态$x$转移到$x’$的概率密度函数,因此必须满足

笨小孩是否挨揍取决于他妈妈回来时他是否在看电视。设妈妈在第$n$分钟回来,笨小孩挨揍的概率为也就是在$n$分钟看电视的概率$P(X_n=t)$。为了求$P(X_n=t)$,可以先求$P(X_i), i=1, 2, \cdots, n$。

假如已经知道第$i$分钟笨小孩的活动的概率$P(X_i)$,第$i+1$分钟笨小孩活动的概率则为

上式是一个递推公式。只要知道最开始笨小孩选择活动的概率$P(X_0)$和各个活动间转换的概率,就可以求出第$n$分钟活动的概率$P(X_n)$。

例如,如果$P_{tt}=0.1, P_{hh}=0.3$,可以计算笨小孩分别以$1.0, 0.5, 0.3, 0.0$为初始看电视概率的情况下在各个时间挨揍的概率,结果如下图所示。

enter image description here

令人感到吃惊的是,不管笨小孩初始看电视的概率为多少,经过一段足够长的时间,笨小孩最后挨揍的概率都一样,并且不再随时间变化,收敛到一种稳定状态。也就是说,最初看电视的概率对后面挨揍概率的影响逐渐减小直至完全消失。

一段时间后不再随时间变化的挨揍概率是否是由活动转换概率决定的呢?再设$P_{tt}=0.2, P_{hh}=0.6$,重新绘制结果:

enter image description here

一段时间后,不管初始看电视概率为何,笨小孩挨揍的概率又变得一样,只不过这次与上次稳定时的概率不同。

从这两个结果可以发现一个意外的规律:时间足够长的情况下,计算笨小孩挨揍的概率仅仅需要知道他两个活动间转换的概率,而初始活动的概率P(X_0)甚至确切的时间都可以忽略!

在马尔可夫过程中,这种一段足够长时间后状态所服从的不再随时间变化的概率分布称为平稳分布(stationary distribution),记为

对于离散状态空间的马尔可夫过程,平稳分布应满足

对于连续状态空间的马尔可夫过程,平稳分布应满足

如果一个马尔可夫过程的平稳分布存在,只要给定状态转移的概率分布,就可以确定出这个唯一的平稳分布。

马尔可夫链蒙特卡洛

笨小孩挨揍了几次之后,希望将以后挨揍的风险控制为$r$。他应该采取什么偷看电视的策略?

笨小孩最先想到的策略是,将时间分为多个周期,每个周期的前$r$部分做作业,后$1-r$部分看电视。如果妈妈回来的时间在每个周期内是均匀分布的,笨小孩就可以将挨揍的风险控制为$r$。但问题是,他不能保证妈妈回来的时间均匀性,当然他也不敢对妈妈说:“妈妈,你能不能在每个半小时内都均匀随机地选择一个时间回来?”

对笨小孩而言,妈妈回来的时间是不可控的,所以上一种方法不可取。

笨小孩转念一想,之前的随机转换活动等策略不是会产生一个固定的挨揍概率吗?并且只要妈妈回来的时间不是特别早,这个概率就是可靠的。挨揍概率只与活动转换概率有关,所以只要选择合适的活动转换概率,就可以得到想要的挨揍概率。

笨小孩明确了想要的挨揍风险,也就有了目标平稳分布。根据平稳分布的性质,活动转换的概率需要满足

一个平稳分布不足以确定一个转移矩阵,可以对矩阵加入一些限制。例如细致平衡条件(detailed balance condition):

细致平衡条件是平稳分布的充分不必要条件。满足细致平衡条件一定满足平稳分布的条件,因为

设笨小孩希望将挨揍的风险控制为$0.2$,则满足细致平衡条件要求

只需要$T_{th}=4T_{ht}$即可,例如$T_{th}=1, T_{ht}=0.25$,

enter image description here

或者$P_{th}=0.5, P_{ht}=0.125$,

enter image description here

从两张图中可看出,两种活动转换概率下挨揍的概率最终都收敛于$0.2$,不同的是收敛速度。第一设定下变换活动的概率要大于第二种设定,因此第一种设定下可以在短时间内经历更多次转换,所以可以更快的收敛。不管怎样,笨小孩终于掌握了控制挨揍风险的方法。

这一过程涉及了三种概率分布:初始状态分布$P(X_0)$,状态转移分布$P(X_{i+1}\vert X_i)$和平稳分布$\pi(X)$。笨小孩做了一件非常了不起的事情,他通过设计状态转移分布得到了想要的平稳分布。

这其中的意义是非常远大的。这种设计状态转移分布来得到平稳分布样本的方法称为马尔可夫链蒙特卡洛(MCMC),它可以说是占据了统计推断的半壁江山。

如果我们需要许多服从概率$p$的样本,而$p$又难以直接采样得出,我们可以采用笨小孩的方法,即构建一个转移分布$t$易于采样并且平稳分布为$p$的马尔可夫过程,在经过足够次采样后就可以得到服从$p$的样本。

具体来说,需要从$p(x)$中采样较困难,可以选择一个简单易于采样的建议分布$q(x\vert x’)$进行采样,然后根据某种概率$A(x’, x)$决定是否转移到刚采集的状态,使细致平衡条件得到满足:

这里,两边的状态转移概率分别为$t(x, x’)=q(x, x’)A(x, x’)$和$t(x’, x)=q(x’, x)A(x’, x)$。

根据从笨小问题中得到启示,为了使平稳分布更快收敛,需要尽可能使状态转换的概率大些。q(x’, x)的选择受可采样性限制,因此只能使$A(x’, x)$尽可能大。$A(x’, x)$作为概率,最大值为$1$。

假设$p(x)q(x, x’)>p(x’)q(x’, x)$,则$A(x, x’) < A(x’, x)$,令$A(x’,x)$取得最大值$1$,可求得$A(x, x’)=\frac{p(x’)q(x’, x)}{p(x)q(x, x’)}$;相反,如果$p(x)q(x, x’)<p(x’)q(x’, x)$,则$A(x, x’) > A(x’, x)$,令$A(x,x’)$取得最大值$1$,可求得$A(x’, x)=\frac{p(x)q(x, x’)}{p(x’)q(x’, x)}$,综合两种情况,可以统一写成

此种采样算法称为Metropolis–Hastings算法。

Metropolis–Hastings算法

  1. 随机设置$x_0$,令$\tau=0$;
  2. 根据$q(x_{\tau}, x)$采出样本$x’$;
  3. 从$[0, 1)$上得均匀分布随机采样$u$;
  4. 如果$u<A(x_{\tau}, x’)$,令$x_{\tau+1}=x’$,否则令$x_{\tau+1}=x_{\tau}$;
  5. 令$\tau = \tau + 1$;
  6. 跳至第2步;

Metropolis-Hastings算法可以得到一系列样本$x_0, x_1, \cdots$。尽管相邻的样本之间不是互相独立的,但是可以每隔$M$间隔取一个样本,只要$M$足够大,就可以得到相互独立且分布为$p(x)$的随机样本。

在$A(x, x’)$中,$p$和$q$都同时出现在分子和分母中,因此没有必要明确地求出$p$和$q$的值后带入计算。因为在实际问题中,明确求$p$和$q$的值常涉及到求和或者积分,例如

或者

计算分母的开销可能非常大甚至根本无法计算出来。由于分母在$A(x, x’)$的公式中可以被消去,因此可以直接使用未归一化的$f(x, z)$代入求解,大大地减少计算量。

Metropolis算法和Gibbs采样

Metropolis-Hastings算法中使用不同类型的建议分布$q$可以得到更具体的算法。

Metropolis算法是Metropolis-Hastings算法的特例。在该算法中,$q$选择对称的分布

接收率$A(x, x’)$即可表示为

举个例子,假装我们不知道多元高斯分布如何直接采样,我们可以通过马尔可夫链蒙特卡洛方法来得到样本。由于多元标准高斯分布容易采样,我们可以令$q$为一个多元标准高斯分布,即

应用Metropolis算法。下图展示采用Metropolis算法和线性变换算法得到多元非标准高斯分布的样本。可以看出,两种方法得到样本类似。

enter image description here

Metropolis-Hastings算法的令外一种著名的特例为Gibbs采样。该算法主要用来解决高维度状态空间的采样问题。

假设状态$x={x_1, x_2, \cdots, x_D}$包含$D$个维度,应用其它采样算法可能会导致接收率太低而使算法的效率降低。Gibbs采样的思路是相邻两个状态至多只有一个维度不同,并令

其中$x_{-i}$表示除了第$i$维以外的其它维度的数据。在这种情况下,

Gibbs采样的接收率为$1$。在每一轮采样时,都要选取状态的某一维进行采样,既可以按顺序选取,也可以随机选取,但要保证各个维度均匀更新。

MCMC的问题

MCMC把大量原本不能计算的问题变得可以计算,具有非凡的意义。但是,MCMC往往只是把“不能”变为“能”,而无法进一步由“能”到“快”。

蒙特卡洛方法需要大量的独立同分布的样本,而马尔可夫链需要很长时间才能收敛,这两方面同时作用,使得MCMC非常低效,甚至无法在合理时间内解决某些应用。另外,马尔可夫链经历多久才能收敛到平稳分布没有很好的办法得知,不像其它方法有明确的指标(如神经网络的loss、变分推断的ELBO)指示模型是否已经收敛,使使用者不知什么时候该停止采样。

尽管如此,MCMC简单通用,常作为新模型的第一个推断算法,在实际和研究中应用仍然及其广泛。

xkcd

一台可以探测太阳是否爆炸且很少说谎的机器报告太阳已经爆炸。 频率学派:“我认为太阳爆炸了。” 贝叶斯学派:“赌你50它没炸。” ——xkcd

统计学有两大学派,分别为频率学派和贝叶斯学派。两者不是仅仅在方法上存在区别,而是从“信仰”层面上看待世界的眼光就截然不同。 频率学派认为数据是可重复的随机样本,但是统计模型中的参数是确定的。而贝叶斯学派则认为观测到的数据是固定的,模型参数是不确定的,并且参数的不确定性可以根据数据更新。

频率学派和贝叶斯学派的一大共同任务是描述统计模型中未知的参数。不同的信仰自然会导致使用不同的工具。

由于统计学派认为参数是确定的,因此不允许使用概率描述参数。参数即是“未知”的,又是“确定”的,看似矛盾,实际不然。“未知”指参数具体的值还不知道,“确定”指虽然不知道参数确切的值,但是可以肯定是它是固定的(不是随机变量)。例如,在运算之前,$123^{456}$的结果是未知的,但是却是确定的,不存在不确定性,因此诸如“$123^{456}$的结果在$10^{400}$到$10^{500}$之间的可能性为2%”等涉及到概率的说法都不对。同样,所有涉及到“概率”、“可能性”等词的参数描述对频率学派而言都是原则上错误的。

由于不能使用概率,频率学派发明了置信区间作为描述未知参数的工具。对于一个事先由研究者确定的置信度$1-\alpha$,频率学派会计算出一个参数区间$[L,U]$,称为“置信区间”,并声称参数“$\theta$以$1-\alpha$的置信度包含在$[L,U]$中。在实际应用中,$\alpha$通常取5%,有时也会取1%或10%。如前面所说,置信度为95%的置信区间,并不表示参数的真实值有95%的概率是在该区间内。由于参数的确定性,在给出置信区间后,参数在不在置信区间内是已经确定的。置信度反应的是该度量的可靠性。频率学派认为数据是可重复的,根据这次实验求的的置信区间和再做一次实验求的置信区间可能是不一样的,这样一直重复地做实验,每次都会计算出一个置信区间,置信度表示这些置信区间中包含真实参数的区间个数所占的比例。在下图中,红色表示真实参数的值,每条绿线表示一次实验求的置信区间。可以看出,有少数置信区间不包含真实参数,置信度反应的就是剩下的包含真实参数的区间所占的比重。这个过程也可看出频率学派的观点:不变的是参数,变化的是数据以及由数据得到置信区间。

贝叶斯学派则认为参数不仅是未知的,而且是不确定的。为了描述参数的不确定性,贝叶斯学派使用概率作为描述工具。因此,诸如“参数位于某某区间的概率为多少多少”等包含概率的参数描述是贝叶斯学派非常典型的说法。参数在处理上等价于随机变量。 贝叶斯学派解决问题的一般过程是先根据知识和经验为未知的参数$\theta$选择先验概率分布$p(\theta)$, 然后根据观测到的数据使用贝叶斯公式计算得到参数的后验概率

由此更新参数的分布。例如,在下图中,蓝色曲线为人选择的参数先验分布,红色为根据数据计算出的参数的后验概率,参数的不确定性得到了更新。

在实际问题中,后验分布的直接求解往往非常困难。比较常见的情况是模型除了可观测随机变量之外,还包含隐含随机变量,使得用贝叶斯公式求参数的后验分布时涉及到对隐含变量的积分,

隐含变量维度有可能非常高,进而后验概率无法写出表达式。计算上的困难导致在1950-1990年间,几乎没有人做贝叶斯学派的分析。贝叶斯学派的分析需要大量的计算,而当时计算机不仅非常慢,而且没有普及。频率学派的计算却比较简单,并且模式化,所以在当时受到欢迎。随着计算机科学的发展,以及新的推断方式(马尔科夫链蒙特卡洛、变分)的提出,贝叶斯学派得到了大量的应用,更多实际问题和复杂的模型得以解决。

贝叶斯学派的优点在于, 对于处理含有隐含变量等结构较复杂的模型,贝叶斯学派描述起来更方便。另外,贝叶斯学派能够将已有的知识和经验融入到模型中,从而得到更好的结果。

对于贝叶斯学派,参数先验概率分布的选择非常重要。贝叶斯学派比较受诟病的一点是,其模型参数先验的选取形式在很大程度上是为了计算上的方便,如最常用的一种先验是共轭先验分布。先验选取可以根据研究者的直觉、领域专家的知识经验以及相关的其他方法和数据,很多情况下带有选取者的主观意见。这种主观性经常受到调侃:

问:如果那个笑话里的人不是中国人,而是日本人,那么这个笑话的好笑程度是增加、不变、还是减少?
频率学派的学者:减少。 贝叶斯学派的学者:不变。 贝叶斯学派的中国学者:增加。

贝叶斯学派的学者就是心里觉得自己可能会看到马,但是却瞥见了驴,最后强烈认为自己看到的是骡子的人。

实例

抛起一枚硬币(可能不均衡),硬币落下后正面朝上的概率为$\theta$,反面朝上的概率为$1-\theta$, $\theta$为未知参数。 某次实验共抛了$n$次,其中正面朝上$x$次。

频率学派

参数$\theta$是一个确定的量,抛硬币的过程可以反复一直执行。选取$1-\alpha$为置信度,本次实验的结论是,$\theta$的置信区间为$[L, U]$。其中$L,U$是:

贝叶斯学派

参数$\theta$是不确定的, 假设$\theta$服从参数为$a, b$的Beta分布,其先验概率为:

其中

本次实验的结论是:$\theta$的后验分布为

总结

学派 核心思想 度量方法
频率学派 数据可重复采样,参数固定不变 置信区间
贝叶斯学派 数据固定,参数不确定并可以不断更新 后验概率

介绍

KL散度(Kullback Leibler Divergence)又称相对熵(Relative Entropy),在信息论中用于表示采用概率分布$q$的最优编码来传输真实概率分布为$p$的数据所需要的额外数据量。它的定义式为

由于按照$p$本身进行最优编码并传输所需的数据量最少,即(entropy),所以按照另一个概率分布$q$编码的传输一定需要更多的数据量。 结合KL散度的定义可知$D(p \vert\vert q)\ge 0$。KL散度的非负性也可直接由杰森不等式得出:

KL散度有时称为“KL距离”,这种叫法是不合适的。一种度量被称为“距离”需要满足以下条件:

  1. 非负性:$d(x, y) \ge 0$
  2. 自反性: 如果$d(x, y) = 0$,那么$y=x$;
  3. 对称性:$d(x,y)=d(y,x)$;
  4. 三角不等式:$d(x, y) + d(y, z) \le d(x,z)$

而KL散度只满足非负性和自反性,不满足对称性和三角不等式,因此KL散度不是一种距离。

KL散度原本是信息学中的概念,但它作为一种重要的度量两个概率分布间相差程度的量,在统计学和机器学习中也有广泛的应用。下面分别介绍如何利用KL散度得出EM算法、变分推断和期望传播算法。

EM算法

统计模型有两种变量:随机变量模型参数$\theta$。其中随机变量包含可以观测到的可见变量$X$和观测不到的隐含变量$W$。 许多统计和机器学习的任务是从给定的数据集$X$中,推断出参数$\theta$的值或者分布。推断有着许多方法,其中 一种是将能够使可见变量的似然最大化的值作为参数,即

其中$p(X;\theta) = \int p(X,W;\theta)dW$. 至此,推断问题已经被转化为一个优化问题。

一般,求解优化问题常用的方法有:

  1. 另耗散关于参数的导数等于$0$,直接解出参数;
  2. 梯度下降法,求出导数表达式,逐步迭代。

第一种方法要求参数的最优解可以直接表达为一个解析式,即可以用一个左边是要求的参数、右边是已知量的等式表示。第二种方法要求耗散关于参数的导数可以直接写出解析式,即可以用一个左边是导数、右边是已知量的函数的等式表示。但是,大多数实际问题中这两种都无法满足,有的是等式左右两边同时包含待求解的参数,有的甚至根本写不出表达式。

在这些问题里,有一些是由于含有隐含变量导致的,加入隐含变量问题会变得简单。这样的问题可以用EM算法求解。

EM算法将目标函数,即似然对数进行分解。由概率的性质可知

两边对任意一个关于$W$的分布求积分并整理可得

注意到等式右边第二项是$q(\cdot)$到$p(\cdot\vert X;\theta)$的KL散度$D(q(\cdot)\vert\vert p(\cdot\vert X;\theta))$。由于KL散度非负,所以右边第一项是似然的下界,称之为ELBO(evidence lower bound)。

由于$\ln p(X;\theta)$中不包含$q$,因此无论我们如何选择$q$或者改变$q$的参数,只要$\theta$不变,$\ln p(X;\theta)$就不会变。因此,当我们固定住$\theta$,通过变化$q$将第二项KL散度最小化,第一项ELBO的值会增大。最小值在$q(W)=p(W\vert X;\theta)$时取到,此时,第二项KL散度为0,第一项ELBO等于$\ln p(X;\theta)$。这一将$q(W)$更新为$p(W\vert X;\theta)$的步骤,被称为E步骤。

在进行E步骤后,我们可以通过优化参数$\theta$将第一项ELBO最大化。ELBO中不包含对隐含变量的积分,根据假设,优化ELBO是简单的。 优化过程使得ELBO变大,参数$\theta$得到了更新变为$\theta’$。由于$q$此时仍然是旧参数下的后验分布$p(W\vert X;\theta)$,与此时的$p(W\vert X;\theta)$不同,所以第二项KL散度由0增大。可见,在优化ELBO的过程中,等式右边两项都增大,故等式左边$\ln p(X;\theta)$增大。这一优化ELBO更新$\theta$的步骤称为M步骤。

在M步骤中,第二项KL散度不为0,可以再进行一次E步骤。依此类推,不断地进行E步骤和M步骤的迭代,就可以不断增大目标函数。当经过某次M步骤后,第二项KL散度为0时,说明目标函数已经无法继续增大,此时的$\theta$就是最优参数,并且$q(W)$是隐含变量的后验分布。

EM算法的步骤:

  1. 随机初始化$\theta$和$q(W)$
  2. 迭代以下两个步骤直至收敛
    • E步骤:使$q(W)=p(W\vert X;\theta)$;
    • M步骤:优化ELBO项,更新$\theta$.

变分推断

变分推断(variational inference)和EM算法有许多类似,也有本质上的不同。相似点在于二者所解决的模型都隐含变量,二者都将似然分解为ELBO项和KL散度之和并利用KL散度的性质来求解;不同点在于,EM算法是求得的是极大似然解,得到的是参数的点估计,变分推断求得的参数的后验概率分布,且EM的解是精确的,不存在近似,而变分推断求得的是近似解。

在变分推断中,对数似然为

与EM算法中不同的是,表达式中没有参数$\theta$。变分推断中,$\theta$被看成一种随机变量,包含在$W$中。由于$W$被积掉,似然是一个定值,我们的目标不再是最大化似然,而是根据贝叶斯公式求后验分布$p(W\vert X)$

上式右边分母中往往涉及到无法写出表达式的积分,没有办法直接求出精确的后验分布。变分推断采用某种容易求解的分布$q(W)$来近似后验分布$p(W\vert X)$。两个分布直间的近似的程度自然而然地使用KL散度度量。我们把问题转化为

注意到变分推断中使用的是$K(q \vert\vert p)$,原因在于对于选定$q$进行积分比对$p$进行积分简单。与EM算法中类似,上式可以表示为

上式中右边是似然对数减去ELBO,似然对数在这个问题中是一个定值,因此原问题等价于

变分通过选取特定形式的$q$简化上面的优化问题。其中有一类重要的近似叫做Mean Field。假设隐含变量集合$W$由$w_1,w_2,\cdots,w_m$构成,mean field设定近似分布满足以下形式

即各个隐含变量彼此相互独立。对这种形式的变分分布,目标函数可以转化为几个更简单的子问题。 在每个子问题中,保持其他隐含变量的分布不变,只更新某一个隐含变量的分布。例如在优化$w_j$时,子优化问题为

最大化该式,更新$w_j$的分布$q(w_j)$

此时得到新的变分分布$q(W)$会使得目标式函数也变大。之后,再依次更新其他隐含变量的变分分布。如此迭代,直到收敛,目标不在变大。 最后,我们需要求的$p(W \vert X)$便可以由$q(W)$近似。

变分推断算法如下:

  1. 随机初始化各个隐含变量的分布$q(w_j), j=1,2,\cdots,m$;
  2. 迭代直至收敛
    • 对越每个隐含变量$w_j$,在其他变量的分布不变的情况下,优化其分布使得ELBO最大

期望传播

变分推断通过最小化$D(q(W)\vert\vert p(W \vert X))$寻找$p(W\vert X)$的近似分布$q(W)$。如果最小化的是$D(p(W \vert X)\vert\vert q(W) )$则得到另外一种近似推断的方法:期望传播算法。

在期望传播算法中,限制$q(W)$为指数族分布,使用另导数为0的方法最小化KL散度,可以得到

其中$s(W)$表示充分统计量。$E_q[s(W)]$ 可以通过参数表示,将使用$q$的参数表示的$E_q[s(W)]$与$E_p[s(W)]$进行匹配,我们可以直接得出近似分布$q$的参数。

在期望传播算法中,使用因子形式表示概率分布更加方便。设模型的联合分布可以表示为

由贝叶斯公式可得出后验概率可表示为

其中$p(X)=\int \prod_i f_i(W) dW$是一个常量。 令

其中$Z=\int \prod_i \hat f _i (W)dW$。 KL散度则可表示为

该式涉及到对$p(W \vert X)$的积分较难。因此,期望传播采取在其他因子不变的情况下,每次只更新一个因子$\hat f _j (W)$策略。将$q(W)$更新为最小化

的形式,再得到

其中

在更新一个因子后,再用同样的方法更新其他因子,不断迭代,使得近似分布$q(W)$逐渐接近$p(W\vert X)$。但是,期望传播算法不能保证算法会收敛。

期望传播算法:

  1. 随机初始化因子$\hat f_i (W), i=1,2,\dots$
  2. 循环更新,直至收敛
    1. 计算$q^{-j}(W)=q(W)/\hat f_i(W)$和$Z_j$
    2. 更新$q(W)$最小化$D(\frac{1}{Z_j}f_j(W)q^{-j}(W)\vert\vert q(W))$
    3. 计算$\hat f_j(W)$

总结

KL散度可以度量分布之间的差异,在统计推断中具有非常重要的地位。EM算法、变分推断和期望传播算法都利用了KL散度的性质。 EM算法在E步骤中利用KL散度寻找出隐含变量用于迭代的中间值,在M步骤中更新参数,通过E步骤M步骤的反复迭代,达到最大化似然的目的。 变分推断和期望传播算法分别使用两种形式的KL散度来度量近似分布与真实后验分布的差异,并通过反复地更新部分隐含变量的近似分布来不断地减小差异,最后达到真实的后验分布被很好地近似的目的。

Here be a sample post with a custom background image. To utilize this “feature” just add the following YAML to a post’s front matter.

image:
  background: filename.png

This little bit of YAML makes the assumption that your background image asset is in the

1
/images
folder. If you place it somewhere else or are hotlinking from the web, just include the full http(s):// URL. Either way you should have a background image that is tiled.

If you want to set a background image for the entire site just add

1
background: filename.png
to your
1
_config.yml
and BOOM — background images on every page!

Background images from Subtle Patterns (Subtle Patterns) / CC BY-SA 3.0