授人以渔—从博士生和新员工的成长谈起

众所周知,无论是在学术界还是工业界,所有的人都是从新手开始,一步一步地走向正轨。如果想在高校谋得一个教授的职位,所有的人都是从本科开始,然后到 Master 阶段,最后走向 PHD 的漫长时期。即使拿到了博士学位,也就是一个预备军的阶段,相当于获得了一个学术界的入场券。通常来说,在获得了博士学位之后,通常还需要一段时间的博士后工作经历,才有可能在学术界谋得一席之地。在工业界,除了少数大牛之外,几乎所有的人都是从底层干起,一年一年的升级打怪,最终获得职位上的晋升。作为一个在学术界和工业界都混过几年的人,在这两个地方都踩过不少的坑,这几年也看到周边的同学在学术界上的分别走向不同的道路,身边的同事也在工业界上作出各自的选择。近期正值博士生开学和新人入职的时期,正好有一些个人的感悟跟大家交流一下。

循序渐进

对于一个在读博士生来说,如果最终想留在学术界工作,并且在高校或者研究所谋得一个讲师或者教授的职位,那么博士期间的工作就显得至关重要。对于一个博士生而言,博士期间的课题通常来说都是导师帮忙定下来的,从一开始的课题收集,开题答辩,整理思路,撰写论文,导师在其中将会发生着至关重要的作用。选择的课题好坏直接决定着博士生最终的产出和收益。其实,要想让一个博士生做不出来课题是非常容易的,直接让他去攻克 Riemann Hypothesis 就可以了,但是这样做并没有任何的意义。导师的作用是培养一个又一个合格的博士生,让其所在的研究方向能够逐渐壮大,从而在国际上处于领先地位。如果让博士生去攻克 Riemann Hypothesis,不仅没有任何好处,也会对博士生造成毁灭性的打击。在博士生刚入学的时候,导师要根据自己的多年以来的工作经验,给博士生选择一个能够出成绩,但是又不是特别难的课题,而不是给学生一个本方向的终极难题。只有这样,博士生才能够在最终答辩和找工作的时候占据一定的优势,并且也有机会在学术界存活下来。

即使选择了一些合适的课题,也不能够让博士生从正面直接攻克它。因为最终的问题可能还是相对偏难一些,对刚进入博士阶段的 PHD 来说可能并不合适。在这种时候,需要采取循序渐进的策略。就拿笔者之前所研究的动力系统方向来举例,刚刚开始攻读博士的时候,尤其是在前两年,只需要做一个 Ergodic Theory and Dynamical Systems 这种级别的论文就可以了。因为这种时候需要的是稳定军心,让 PHD 能够有信心继续从事一些更难的课题。在博士生第三年至第五年的时候,尽量去做一个更难一些的题目,然后其博士论文的课题大致能够发表在 Communications in Mathematical Physics 这种级别上。这样的话,博士生寻找一个博士后岗位甚至一个教职都没有太大的问题。在找到了工作之后,通过会有两种选择,一是可以继续做之前的课题,保持一个持续的领先优势,二是可以做更难一些的问题。如果能够有持续的小论文产出,并且最终有一个大论文的话(例如发表在 Annals of Mathematics)上,基本上 Tenure 之路已经接近稳妥。整体来看,在博士生期间最好的策略是选择一个循序渐进的过程,而不是想一口气吃成一个胖子,给了一个超难的课题让博士生自生自灭。

对于刚刚工作的人也是一样的道理,无论是实习生还是刚入职的应届生,在公司层面都会制定一个所谓的“师傅”或者直系领导帮忙带一下。对于实习生而言,其实他们在公司里面的工作时间也就两三个月,并且最终会面临一个实习生考核,来决定是否录用。在这种时候,如果是想当一个负责任的老员工,在这种时候就一定要给实习生一个相对容易出成绩的项目。而这种项目则不能是那种很难的长期项目,但是与长期项目又需要有某种千丝万缕的联系,最好就是长期项目所需要的核心部分。老员工需要做的就是把这一部分内容从整个项目中剥离开,该准备的数据,该搭建的工具环境都需要提前准备好。只有这样,实习生才能够在一个相对紧凑的时间段内迅速的出成绩,然后最终产出的时候获得一个不错的成绩。

融入圈子

无论是在学术界还是在工业界,都强调一个圈子的概念。在学术界选择导师的时候,就好比足球运动员选择各种各样的俱乐部,有的俱乐部可能比较大并且人才济济,有的俱乐部可能比较小但是却很有发展潜力。在进入了这个俱乐部的时候,导师除了需要把必要的论文资源和材料,相应的方向指导清楚之外,其实最重要的就是带领学生们进入这个圈子。可以通过举办一些学术会议的方式,让学生们去参加,并且主动结识同行中优秀的人才。也可以通过开讨论班的方式,让博士生主动认识院系里面的各位大佬。其实,在未来找工作或者教职的时候,不仅是需要老板的推荐信,还需要同行们的一些评价和建议,甚至由同行大佬们提供一个岗位。因此,提前融入相应的圈子对于一个博士生来说非常重要。在这种时候,导师需要做的就是主动把自己的学生介绍给自己的学术界朋友认识,说不定在互相交流的过程中会有一些灵感出现,对学生做论文也是有益无害的。而且导师也是有着自身的局限性,不可能在学术领域里面面面俱到,这种时候,如果有同行的协助,那么对学生的成长方面则是会很有益处的。整体来看,主动帮博士生寻找必要的资源则是一个合格的导师应该做的事情。

如果是对于公司里面的新员工或者实习生来说,很可能面临的事情就是项目无法推动,无法在团队内部找到资源。这种时候,如果没有老员工一些必要的协助,实习生或者新员工将会举步维艰。因为公司里面的代码,架构,技术很可能散落在各个地方,文档的管理建设方面也未必特别合理。这种时候,只有老员工才知道哪里有坑,哪些人能够解决哪些事情,哪些人能够提供相应的资源。这些是新员工无法预先了解到的事情。如果是一个合格的师傅,就需要及时了解新人在做项目过程中所遇到的困难,所需要寻找的资源和技术,然后协助新人去寻找相应的资源,把项目整体推动下去。在一些集体活动方面,也需要帮助新人主动地融入团队的圈子,避免出现新人被孤立的情形。

避免坑人

无论是在学术界还是工业界,都存在着导师坑博士生,老员工坑新员工的情况。在公司里面,老员工和新员工可能还存在某种竞争关系,因此会出现老员工不太愿意教新员工的情况,甚至主动坑新人的事情。有的时候可能是因为老员工的能力不太行,自己无法开疆拓土,只能靠坑新人来拉开自己和新人之间的差距。有的时候是因为老员工不愿意把自己的核心技术告诉新员工,担心新员工有朝一日取代自己。其实,是否主动教人是完全自愿的,这个看每个人的性格和具体情况来定,但是在团队内部,如果主动坑新人就是老员工的不对了。老员工可以不主动传授别人知识,但是万万不能主动坑害新人。所有的人都是从新人阶段逐步走过来的,如果在项目中老员工发现了一些坑,那么有的时候是需要主动告知新人,避免犯同样的错误。而老员工在一些时候,则需要给新人一些独立成长的机会,让新人能够在项目中获得相应的成长,只有这样,才能够最终独当一面,在未来成为一个合格的员工。

无论是导师在学校带博士生,还是老员工在企业里面带新员工,整体来说,如果新人比较靠谱的话,对导师或者老员工来说其实是有相应的收益的。无论是学术界还是工业界,其最终的目的都是使得课题越做越好,发的论文档次越来越高,项目的收益和技术影响力越做越大。

 

Advertisements

短板与长板理论

之前听说过一个木桶理论:“一个木桶能够装多少水,取决于最短的一块板”。这个理论听上去确实很有道理。在高考的时候,如果一个学生的英语只能考 20 分,那么即使其他课程都是满分,也是上不了最好的学校的。反之,如果一个学生的每门课都很好,即使他没有达到每科顶尖的水平,在填写高考志愿的时候也是会比前者能够选择得更多。因此,在高中的时候,老师们都会奉劝大家不要偏科,因为在高考的大环境下,过度的偏科确实没有太大的好处。

后来念了大学和研究生,发现在一个知识爆炸的时代,在一个人的精力实在是有限的前提下,实在是无法做到面面俱到。即使在数学专业,几乎也无法做到一个人精通数学的所有领域(当然精通本科数学课程那种程度实在是不能算)。一般来说,研究分析和研究代数的就是两拨人,这两拨人的技能点和兴趣点都不太一致。在数学界尚且如此,更不要说跨行业的精通了。就像在企业里面,很难找到一个前端,后台,设计,机器学习统统都精通的人(不是说找不到,而是非常稀缺)。在这种情况下,每个人都面临着选择,是选择做一个全栈工程师,还是一个只精通一个领域的人。

如果选择做一个什么都会做,面面俱到的人,首先就要跨领域的多学习各种东西,例如前端,后台,机器学习等等。在精力上就要像高考的时候一样做到相对均衡的分配,在每个领域都需要有所涉及。这样的好处就是什么样的活都能干,如果团队里面暂时缺少某个领域的人,这类人就可以及时补上,能够把项目顺利完成。这类人在就业的时候选择面也会广一些,因为他们什么任务都能够做。而且很多时候,在团队里面确实需要一些这样的人才。但是这类人才可能也会有一些问题,那就是精力会相对分散。毕竟研究的面广了之后,研究的深度可能就要打折扣。不过,这件事情也是因人而异的,毕竟人和人之间是不一样的。

如果选择做一个精通某个领域的人,那么他的精力就会相对集中。在同等智力条件下,他所研究的深度就会比面面俱到的人所研究得深。说句实在话,在知识爆炸的时代,即使是人工智能领域,其实也很难做到样样精通。例如,自然语言处理所使用的技巧和方法与图片处理所用的方案是有一定的区别的,在推荐系统上所使用的技术到了运维系统上可能就不能生效。在这种时候,如果企业要解决某个业务难题,无论是防止黑客攻击还是做一个智能运维系统,都会聘请一个在这些领域有过相关经验,并且在业界有一定知名度的人才来帮忙解决这个问题。一般来说,在这种时候不太可能选择一些没有相关工作经验的人来重新培养,因为一来成本太高,二来无相关工作经验的人可能也无法胜任这类工作。总之来说就是风险太大。

就普通成年人而言,一般都有着自己的工作习惯和专业技能。如果一个人的学习能力还可以,那么就可以把他已掌握的技能迁移到其他类似的领域去;但是却很难去让一个成年人进入一个他完全不了解的领域。如果进入一个完全陌生的领域,一来重新学习新的技能成本太高,二来放弃自己所掌握的技能是一件很困难的事情。所以,有的时候这个人能否做不同类型的工作就看此人是否具备技能迁移的能力了。

整体来说,做通才或者专才看的是这个人的性格和能力,每个人都需要根据自己的实际情况作出最适合自己的选择。在精力充足的情况下,可以选择多学习一些方向,掌握不同的技能点;在精力有限的情况下,不如根据自己的兴趣爱好,选择一个最擅长的领域做下去,然后在这个领域形成自己独有的竞争力。

 

在新加坡的这五年—生活篇(二)

上一篇文章《在新加坡的这五年—生活篇》已经整体介绍了新加坡的衣食住行,本篇文章将会回顾一下个人在新加坡遇到的有趣的人和有趣的事情。

新加坡国立大学(National University of Singapore)的 PHD Research Programme 的项目是其实是专为博士生量身定做的。虽然是博士生的项目,但是在刚入学的时候其实不能够被当做博士生,基本上和国内的硕士生没啥区别。因为 PHD Research Programme 里面有一项无法避免的内容,那就是修满一定的学分,而在不同的院系有着截然不同的修课标准。就数学系的博士毕业标准而言,那就是在四年时间内修满八门课,并且博士生要把 MA 5198 这门课修完。对于刚入学的博士生来说,除了修课之外,还有一个重要的任务,那就是尽快通过 Qualify Exam,因此几乎所有的 PHD 都会选择分析,代数,计算这三门课中的两门。

qualifyexam.png

在 2010 年,当时的数学系刚刚从 S14 搬到 S17,而 S17 的只有 6-8 层已经装修好,4-5 层几乎还处于没有装修的状态。导致当时要上数学系的课程,教授和学生都必须要去 S14 的教室上课。而当年的代数课程是由 Berrick 教授负责,并且Qualify Exam 的考试又是由 Berrick 负责出题,但是 Berrick 教授给的分数一向不高 。说实话,我对代数课程其实没有太多的兴趣,总觉得代数课程过于抽象,而这门课的主要内容居然是范畴论(Category Theory)。对个人来说这门课几乎是一门绝对用不上的课程。而范畴论好比数学界的黑话,这个理论总喜欢把一个容易理解的东西用及其抽象的语言描述出来,让人摸不着头脑。和范畴论相比,什么线性代数,抽象代数都已经是非常具体,浅显易懂的课程了。虽然范畴论的内容我现在已经全部忘记,半点都想不起来,但是在课堂上我印象最深刻的就是每次上课的时候 Berrick 教授都会拿着一种饮料进入教室,而且只喝那一种口味。于是,个人后续逛超市的时候就专门去寻找了那种饮料,终于在 West Coast Plaza 里面的 FairPrice 超市看到了那款饮料,尝试了之后果然味道不错,于是后续去 FairPrice 的时候,经常都会买那款饮料来喝。

carrotjuice
FairPrice 能够买到的 POKKA 饮料

提到 NUS 周围的超市,远远不止 FairPrice 这一家。就拿 West Coast Plaza 附近来说,除了 FairPrice 之外,还有 Shengsiong 超市。当年住在 Block 602 的时候,就觉得就 Shengsiong 超市的价格比 FairPrice 貌似要便宜一点。而当 Kent Ridge 地铁站建好了之后,对于 NUS 的学生而言,买东西的首选已经从 West Coast Plaza 变成了 Kent Ridge 地铁站,因为地铁站的二楼和三楼有一个小的 Shopping Mall,并且二楼同样也有 FairPrice 超市。无论是从 PGPR 宿舍区还是从 UTown 出发,都能够乘坐校车 A1 或者 A2 直达 Kent Ridge 地铁站,因此除非是特别想买某个物品,否则一般来说也不太需要专门去 West Coast Plaza 那边了。

fairprice.jpg

shengsiong
Shengsiong 超市和 FairPrice 超市的 LOGO

其实读博士不仅仅是上课和搞科研,在此期间也会做很多助教的工作。在做助教的时候,给人印象最深刻的就是大峰哥和全知帝等人,这几人在读博期间所得到的助教成绩和学生的认可度都非常高,长期高居数学系助教排行榜的榜首。大峰哥在搞助教的时候,通常都会去 NUS 的 COOP(校园超市)购买一些打印纸,然后给学生们打印相应的课程材料,并且在考试之前都会给学生们进行详细的辅导。说到 NUS 的 COOP,无论是打印纸,笔记本,中性笔等常见的学习用具都能找到,甚至教授上课所用的教材都应有尽有。并且也会有一些 NUS 的周边礼品,包括最经典的小狮子,笔记本电脑,NUS 的文化衫等内容。对于 NUS 的学生而言,如果想要购买基础的学习用具,都可以在 NUS 的COOP 商店里面搞定。

nuscoop1

nuscoop2
NUS COOP 里面出售的物品

对于大峰哥而言,除了科研和助教之外,还有其余有趣的事情。在 2014 世界杯期间,作为球迷的大峰哥经常买可乐和零食给大家,请大家在吃东西的同时一起看球。由于新加坡的酒水实在是太贵,估计大峰哥买的不算太多,只能够靠可乐来撑数量。除此之外,貌似是在 2014 年底,百事可乐举办了抽奖活动,而抽奖的内容就是收集百事可乐的瓶盖,瓶盖越多中奖概率越大,所以大峰哥经常去超市搬一些可乐回来请办公室的同学们喝。刚开始的时候大家还是有兴趣喝,但是喝了几周之后其实大家都没有什么兴趣了。有个同学听闻大峰哥在做这件事的时候,就直接打电话给超市,送了几箱百事可乐过来,最终貌似由于百事可乐的版本不对而作罢。话说回来,个人觉得还是可口可乐比百事可乐好喝一些。

pepsi
百事可乐经典款

刚到了 NUS 的时候,由于数学系刚刚搬迁,除了教室不足之外,连 PHD 的办公位都很紧张。刚开始的时候,新来的 PHD 都要通过抽签的方式来决定是否拥有办公位。由于本人的运气比较背,连续两次都没有抽中办公位,于是在 NUS 的第一个学期只好在学校里面的几个图书馆之间打转。距离 S17 最近的图书馆自然是 Science Library。图书馆里面的书并不是所有的都能够外借。而不能外借的通常来说都是由任课老师所指定的,当时正在使用的教材。除此之外,其余的书籍基本上都能够外借。NUS的图书馆除了 Science Library 之外,Central Library 和 Business Library 都是非常不错的图书馆。当年读书的时候除了在 Science Library 借过书之外,在其他 Library 也借过不少的资料。NUS 的一个特点就是在走廊,图书馆的外面拜访了不少的桌子和椅子,专门给学生们自习或者讨论问题用的。当年准备 Qualify Exam 的时候恰好是圣诞节和元旦的时候,而每次到了 Public Holiday,图书馆都会闭馆。所以在当时没有办公位的情况下,Qualify Exam 的准备工作个人就是在图书馆门口的座位上准备的。

ScienceLibrary2
Science Library 的门口
ScienceLibrary1
数学的 GTM 教材

 

提到博士生的生活,除了日常的搬砖和去超市购买日用品之外,经常做的事情就是组团出去吃海鲜或者火锅。而且新加坡的火锅通常来说都是自助的形式,30 新币左右就可以吃到饱。刚开始去新加坡的时候,经常和富贵等人一起去吃 West Coast Plaza 的川江号子火锅,或者在周末的时候跟陈老师去吃 Shengsiong 附近的添一点火锅。提到添一点火锅,一开始还想着经常吃撑,不过到了后面的时候基本上也就是看情况而定。在 PHD 第一年的某个假期,个人和陈老师经常中午去吃添一点火锅,一开始先吃肉和蔬菜,然后到了最后就只吃虾,于是到了晚上的时候就再也不用吃饭了。后来除了火锅之外,大伙又在 Novena 地铁站附近发现了一个海鲜自助餐,维也纳海鲜,那里整体的环境和氛围都相对偏好。无论是牛肉还是螃蟹,甚至各种饮料都是畅饮。所以,后续我们年级的 PHD 如果有啥集体活动的时候,大伙都会选择去那边吃。之后 RDD 同学来的几次,都会去维也纳海鲜吃自助,其实那里的螃蟹和龙虾整体来说还是非常不错的。

vienna
维也纳海鲜自助

除了各种各样的自助餐之外,其实海鲜一直是新加坡的特色,而个人比较推崇的就是黑胡椒螃蟹。提到黑胡椒螃蟹,就想到司北当年从日本来新加坡旅游,个人请他在克拉码头的珍宝海鲜楼吃了一顿饭,貌似三个人花费大概在 120 SGD 左右。珍宝海鲜楼的黑胡椒螃蟹在新加坡的食物中都算得上是一流的。当年 RDD 来的时候,其实也吃过不少黑胡椒螃蟹。整体来看,黑胡椒螃蟹或者螃蟹米粉是新加坡的一大特色,来新加坡的朋友千万不要错过这几种美食。

jumboseafood.jpg
珍宝海鲜楼

生活都包括衣食住行,对于留学生来说不可避免的就是租房问题。当年的 PGPR 和 UTown 还没有对 PHD 们开放的时候,大伙通常来说都会在外面租房子住。一开始的时候,姜师兄帮忙在 Block 602 #11-28 租了一间房,我和陈老师共同分担房租。其实后面 RDD 来玩的时候,也会去短租一些房子。至于找房子的问题,除了通过朋友们介绍或者转租之外,当年租房子的时候个人都会去华新论坛或者狮城论坛上面找。对于学生而言,一般都在华新论坛上面逛。每当看到一个合适的房源,都会去现场看一下,跟房东聊一下,然后就签订一份协议。不过相比国内现在的租房市场来说,当年签订的协议基本上就是君子协议,一般也就按时交房租就可以了。不过一开始在 Block 602 的时候,是 760 SGD 一间房,后续涨到了 800 SGD,貌似到了后面就越来越高了。和陈老师住的时候其实也就是住了一年,个人在 Block 602 的时候换过四个室友,陈老师,XXX(我真不记得了,就住了两个月),温同学,杰爷(我居然跟杰爷住过),上将。之后房东就不让我,杰爷和上将继续住了,我和上将就申请了 PGP 的房子,就剩下杰爷找了一个 260 SGD 的床位继续住。不过杰爷后续去了美帝国之后,从 Princeton 毕业之后大概找了一个几十万 USD / Per Year 的工作,估计再也不会住 260 SGD 的床位了。没过几年,上将也去澳洲继续攻读博士学位,当年在 Block 602 住过的几位室友恐怕很难再聚集到一起了。(未完待续)

block602
West Coast Plaza 附近的 Block 602

 

从高考志愿谈起

高考志愿

2018年6月10日,又是一年高考刚结束的日子。每次到了这个时候,都会回想起笔者在 2005 年高考填写志愿的时候。记得当年最火的方向应该是生物工程或者生命科学一类的专业,然后有不少优秀的学生去选择了这类专业。当时貌似还有人说计算机的人才过剩,会出现过了几年人才过剩,毕业生不好找工作的情况。不过当年自己也没想那么多,就完全凭着兴趣选择了最想学的方向,也是大多数人不会选择的方向,那就是数学与应用数学专业。

一般提到数学专业,绝大多数人的反应就是:“读完之后大概只能够当老师了吧?”有的人也会说:“读了数学专业,再去金融或者计算机专业会变得容易许多。”这一类的话笔者当时确实也听了不少。不过,当年还年轻,也没想那么多事情,就一门心思的想把数学学好,做自己喜欢做得事情,也就是所谓的 Follow My Heart。

当年笔者在本科一直研究着数学,后来又在博士生阶段继续从事数学研究。在数学界学习的时候,笔者一直在学习数学相关的知识。通常来说老师只会告诉书本上的内容,包括定理和证明之类的。并没有告诉学生们这些数学知识该怎么用。这个其实也不怪老师们。毕竟大多数老师并没有工业界的工作经验,基本上都是在搞科学研究。事后回想起这些数学知识,就好比了解了一个精巧的工具箱,里面有着各种各样的工具,但是却没有人告诉笔者这些工具该如何使用,该用在什么实际场景中。所以,经常就会有人问老师:“学习那么多数学知识究竟有没有用?”

剑宗与气宗

其实,数学并不是没有用,而是对大多数人没有用。数学有没有用就看每个人对数学的掌握程度和应用程度,如果一个人只能掌握到高中的水平,那基本上也就是加减乘除这种量级了。如果一个人能够掌握微积分这种程度,那就可以从事机器学习的相关工作。通常来说,在工业界搬砖的话,如果是机器学习的面试,一般或多或少都会问到一些微积分和线性代数的知识。如果是博士生去面试投行的 quant ,还需要会概率论,随机过程等统计学知识。

从笔者在工业界工作这几年的情况来看,一般工业界能够用到的数学边界,通常来说就在泛函分析,抽象代数,微分流形,随机过程这几门课的难度,再高级一点的课程恐怕就用不上了。而数学专业的两门基础课数学分析和高等代数,在工业界可以说是无处不在。而学习数学课,通常来说就像打基础的一个过程,更像是一种修行,好比学武的修炼内功。

金庸的《笑傲江湖》里岳不群这样说:三十多年前,咱们气宗是少数,剑宗中的师伯、师叔占了大多数。再者,剑宗功夫易于速成,见效极快。大家都练十年,定是剑宗占上风;各练二十年,那是各擅胜场,难分上下;要到二十年之后,练气宗功夫的才渐渐的越来越强;到得三十年时,练剑宗功夫的便再也不能望气宗之项背了。然而要到二十余年之后,才真正分出高下,这二十余年中双方争斗之烈,可想而知。

而学习计算机的正反馈其实相对快很多,在 GitHub 上下载源码装上了环境就可以运行,就能够看到效果。而学习数学的正反馈其实慢很多,毕竟看了很多数学书也不见得马上能够投入生产环境使用,甚至可能一辈子都无法投入实际使用。但是学习数学有一个好处,那就是思考问题和分析问题的时候会把实际问题抽象出来,把实际的问题转化成以前解决过的问题,用类似的方法和技巧进行解决。

其实选择什么样的专业也跟一个人的性格有关系。有的人就喜欢那种立竿见影的效果,学习一个东西就希望能够立刻投入生产使用,能够看到有产出,希望得到正反馈;而有的人会把得到正反馈的时间延长,期待通过长时间的学习,获得一个更大的正反馈。如果是学习工科的话,通常来说做一个东西所得到的正反馈就会很快;如果是学习理科的话,得到正反馈的时间就会变得很长,甚至没有正反馈。

数学的作用

其实,并不是学数学的人就一定能够做成每一件事,能够干好每一个行业。如果是数学系的学生刚刚进入工业界,最有可能面临的情况就是短期内无法产出,没有相应的成果,毕竟在公司内部都是半年甚至三个月考核一次。数学系的人的产出在短期内估计无法与计算机系的人相比。只有当数学系的人具备了写代码的能力,并且能够独立负责一个模块,能够实现一个功能的时候,这个人的数学能力才能够发挥出来。

虽然现在是一个知识爆炸的时代,但是数学系的课程却没有发生过太大的改变。十年前的课本和现在的课本也差不了多少,估计未来也不会发生巨大的改变,最多是删减一些内容。最关键的是,数学课本上写成公理,定理,推论这类的东西是正确的,是不会被推翻的(当然课本上也有写错的时候)。十年前是正确的,现在是正确的,未来也是正确的。但是其他学科就不太一样了,技能更新太快,现在所学的技能未来很可能就没有用处了。数学从来就没有大热过,很多人根本就不会选择数学专业,也不需要主动去劝退别人,数学系的学生从来都是主动退出。从中小学开始,就有很多人被数学虐得死去活来了,也不会去做“明知山有虎,偏向虎山行”的事情。

不过,凡是热衷于干脑力劳动的人,一般都会觉得当年要是多学一点数学该有多好。在最后,摘选知乎上的一段话:https://www.zhihu.com/question/47952938/answer/375655910

虽然说计算机和金融这俩行业都不能迷信数学,即把数学在其中的地位无限拔高。但这俩行业离开了数学,就是达内培训班和清华叉院的区别,就是银行柜员和文艺复兴的区别。就冲这个区别,数学的王者地位,还是无可动摇的。

 

在新加坡的这五年—生活篇

之前的一篇文章撰写了笔者在新加坡的助教故事,本篇文章将会介绍笔者在新加坡的一些生活经历。

当年在中学地理课本里面,就写着新加坡是一座花园城市。不过毕竟耳听为虚,眼见为实。当笔者从新加坡的机场走出来的时候,看到一棵有一颗高大的树木(请原谅我不知道它们叫什么树),樟宜机场航站楼里面的绿化情况。就清楚地知道了地理教材上所言非虚,“花园城市”果然名不虚传。从机场到 NUS 坐了一路地铁,但是从 Clementi 下车之后到 West Coast Plaza 的一路却是公交车,明显可以感受到新加坡的绿化工作相比其他城市好不少。除了某些时候由于邻国烧芭导致空气质量低下之外,整个新加坡的空气质量和环境还是十分赞的。

IMG_2100

(图)办公室外随手拍一张新加坡的天空

IMG_2103

(图)滨海湾花园

IMG_2102

(图)新加坡的公路

作为一个 NUS 的学生,除了日常的繁重学习之外,自然还有着丰富的课余活动。据说,NUS 的本科生想住在学校的宿舍的话,除了要保证成绩之外,还要保证一定的社会工作时间。这个社会工作包括社工,学校的活动等等。要想做好一些公益活动或者社会实践,只靠平时挤时间是完全不够的。从 NUS 的每年的日程安排来看,教学的时长大约是 8 个月。这就意味着 NUS 的假期长度明显高于国内。一个假期是在 12 月 – 1 月,大约 5 周的时间,主要是圣诞节和元旦;另一个假期是从 5 月开始,直到 7 月底结束。而每年 8 月开学的时候,绝大多数本科生都要进行一个大型的表演活动,所以,每次到了放暑假(5 月)的时候,学校里面都会看到不少的本科生占据了食堂,办公楼,图书馆的一些空旷地带,然后开始准备上两三个月的表演材料。经常看到的就是一堆本科生围成一圈,席地而坐,然后开始一边聊天一边做手上的工作。最终,学生们会根据做好的花车和编排好的节目在每年 8 月份的时候举行盛大的游行活动。
NUS花车1NUS花车2

(图)NUS 本科生们的花车表演

对于博士生而言,虽然课余生活没有本科生那么丰富,但是也是要学会“苦中作乐”的,否则天天看书写论文的日子实在是不好过。在 NUS 内部,不仅有着健身房和游泳池,在 MPSH 和 YIH 附近还有着乒乓球桌和羽毛球场地。提到 NUS 的游泳池,一个是在 UTown 的一个屋顶上,是露天游泳池,和 Marina Bay Sands 相比就是高度低了点,其他都没有什么问题。另外一个大的游泳池就是在 MPSH 附近,里面有一个 50 米长的游泳池,并且有八条赛道。通常来说,白天的时候不会有太多的人去游泳,晚上的时候人会多一点。不过博士生的时间相对自由一些,因此自己在平时也会挑选一些 free time 去游泳。因为新加坡身处热带,降雨非常多,一旦遇到雷电天气,为了大家的安全着想,游泳池的管理员就会让大家上岸,等雷电天气过了之后才会让大家重新下水游泳。除了平时会抽空去游泳池之外,当年住在 PGP 的时候,每次到了周六或者周日,都会与卫同学从 PGP  坐早晨的第一班 A2 出发去游泳池,一起在游泳池里面谈笑风生。
IMG_2099

(图)MPSH 的游泳池

IMG_2097

(图)UTown 的游泳池

IMG_2101

(图)Marina Bay Sands 的屋顶游泳池

除了健身之外,和大家日常生活相关的那就是衣食住行。NUS 的食堂其实还真不少,除了距离 NUS 数学系最近的 Science Canteen 之外,还有工程学院,Central Library ,YIH,商学院的食堂,其实最经常去的还是 Prince George Park 的食堂。记得当时每次从 Science 去 PGP 的时候,笔者都会和杰爷在 S17 的楼下朝 YIH 的方向一眼望去。如果能够看到 A2 快来了,那就选择去 PGP,否则就会就近选择 Science Canteen。其实,NUS 的食堂价格相对外面还算便宜,一顿饭大约 5 新币左右,也就是不到 30 人民币。不过就算食堂再好吃,有的时候我们也会选择出去吃顿更好的。刚到新加坡的时候,2010 级的 PHD 们一般都是去 West Coast Plaza 吃添一点火锅或者川江号子火锅。每次想吃火锅的时候,只需要在 S17 坐 C 车过去即可。虽然在 Clementi Woods 上面有一家 Sakura 的自助餐厅,但是吃了一两次之后个人感觉实在是挺一般的,因此后面就不再主动去那一家。后来我们发现 Clementi 附近有“黄土地”卖羊肉泡馍和肉夹馍,还有“福苑家传菜”,有的时候也会选择在 AYE 上面坐公交车过去。到了后来,NUS 附近的 Kent Ridge 地铁站开通了之后,去 Buona Vista 或者 Holland Village 变得十分方便。于是,每到周末的时候,就会和卫同学坐地铁去这两个地方吃拉面或者其他食物。有的时候,如果大家的时间能够凑齐的话,会选择去更远的地方,例如 Vivo City 或者克拉码头附近。不过后来快毕业的时候想再去吃一顿这些地方,发现有的店铺已经关门了,而笔者都不知道它们是什么时候停止营业的。真是“花儿还有重开日,人生没有再少年”。

NUS食堂

(图)NUS 的 UTown 食堂

在新加坡除了各种各样的中国食物之外,其实相对多一点的就是各种各样的自助餐了。刚到新加坡没多久的时候,就有同学发现了 Novena 地铁站的维也纳海鲜自助(Vienna International Seafood & Teppanyaki Restaurant)。除了跟众多 PHD 们去过这一家,还跟 RDD 同学去过几次。里面的食物除了日常的海鲜三文鱼之类的,还有牛排等食物。除此之外,强烈推荐的食物就是黑胡椒螃蟹,这个可以去珍宝海鲜楼(Jumbo Seafood)和无招牌海鲜(No Signboard Seafood),其中后者在 VivoCity 就有一家分店。除了海鲜之外,还和 RDD 同学一起去过 Clementi 的 Seoul Garden,这是一家韩式烤肉店,整体感觉也是不错的。记得当时吃饭的点貌似是工作日的下午一点左右,然后看到 Clementi 小学的学生们已经放学了。。。。。

Jumbo1

(图)珍宝海鲜楼

提到出行方面,在 NUS 的 Kent Ridge 地铁站还没有修好之前,大家都是通过公交车出行,要么在 S17 楼下坐 95 路公交车去 Buona Vista 地铁站,要么在 Central Library 坐 96 路公交车去 Clementi 地铁站,要么在 AYE 上面坐 197,198,963 直接去 Vivo City。不过新加坡的 Bus 质量都挺好的,坐起来也算比较舒服,毕竟是 Benz 的牌子。不过,自从地铁开通了之后,大家貌似都不怎么坐公交了。不过有的时候我还是会选择坐公交出行,毕竟在地面上还能够看看新加坡的风景,在地下就只能够看手机了。记得当年跟 RDD 同学还一起坐在双层 Bus 的二楼第一排一起看风景。
新加坡Bus1

(图)新加坡的 Benz 公交

新加坡的住宅一般分成两种,一种是组屋,一种是公寓。不过自己从来没有住过公寓,基本上都是住在组屋。组屋一般来说比公寓的租金会低一点,不过只要是好一点的组屋,也不会特别便宜。除了在外租房之外,NUS 的宿舍也是非常不错的。一开始的时候,由于 Utown 还未建成,NUS 给博士生提供的宿舍是在 BoonLay 那边,所以有的同学每天都会坐学校提供的 Bus 往返学校和宿舍区。到了后来,UTown 建成了之后,博士生的宿舍一般就是 PGP 和 UTown 这两个宿舍群。一般来说,这两个宿舍群给大家提供的都是单人间的宿舍,只是略有不同而已。在 Prince George Park,每个房间就住一个人,只不过一层楼有十几个房间,大家公用一个大的浴室和卫生间。而在 UTown,则是一个四人间的屋子,每个人住一间屋子,然后公用卫生间和浴室。由于 PGP 有空调的屋子貌似都有独立的卫生间和浴室,所以会比 UTown 贵不少。不过,在都没有空调的前提下,UTown 的宿舍会比 PGP 的宿舍便宜一些。

IMG_2098

(图)PGP 的单人间宿舍

在购物方面,最近的商场那应该就是 West Coast Plaza。由于新加坡一年到头都是夏天,所以我们只需要购买夏天的衣服就可以了。因此,West Coast Plaza 里面的 Nike Factory 店就成为了我的首选。一是 Nike 的衣服确实也还不错,二是那边的衣服确实相对便宜一点。除了 West Coast Plaza,Vivo City 是一个较大的购物广场,可以在里面买到更多的东西。无论是买日常的衣服,还是其他东西,或者来这里吃饭,都是不错的选择。不过整体来说,自己来 Vivo City 的次数还是相对少,毕竟笔者的活动范围有限,不愿意跑太远的路程。(未完待续)

在新加坡的这五年---助教篇

很多 PHD 在国外攻读博士学位的时候,除了做科研和发表论文,还要负责一定量的教学工作,毕竟这些 PHD 以后是非常有可能去大学或者科研机构去任教的。回想当年(2009 年,i.e. 将近十年前),收到新加坡国立大学 Offer 的时候,除了一些 Congratulations 的话语和愿意提供给我 Offer 的信件之外,最重要的就是被数学系告知每周都需要做一定量的教学工作。在攻读博士学位期间,笔者不仅给本科生修改过作业,还给本科生上过习题课;而每次到了期中期末的时候,还要负责监考。在新加坡读书那五年,当助教的过程中,身边发生了不少有趣的事情,时隔多年也不知道能否一一想起,于是提笔写下此文,希望多年之后还能够想起那么多有趣的人和有趣的事。

KentRidgeRoad

NUS 的 Kent Ridge Road,Block S17 过街天桥。一条走了 3000 次的路。

助教开始

刚进入 NUS 的时候,也就是 2010 年秋季。低年级的 PHD 们自然还处于一个适应期和修课的阶段,于是系里面也没有给低年级的 PHD 们很重的工作量,也没有让低年级的 PHD 们去教本科生的习题课。于是我们拿到的任务就是修改作业,同时授课老师会给我们提供一份作业答案,我们只需要照着那份答案修改即可。其实修改作业还算好,没有给笔者造成很大的压力。当时压力比较大的就是给本科生上 Maple(一种数学软件)。说到压力大并不是说这门课有多难,而是要英语给本科生讲这门课。作为一个英语一直不太好的人,当时的听说读写还是存在很大的困难,何况在刚到新加坡没多久的情况下就要给本科生讲习题课。但是,这些都是数学系给的任务,不做的话就没有办法顺利拿到学位,一切都只能够硬着头皮上。当时教 Maple 的时候不仅需要给学生讲一些基础概念,还要负责学生们的上机操作。通常来说,学生在运行程序出 Bug 的时候除了自己 Debug 之外,更多的则是直接问我们各种各样的问题。所以,在教课的过程中需要不停地给学生们查看 Maple 程序里面的 bug,解答各种奇怪的数学问题。有一次在教课的过程中,有个学生对某个习题提出了自己的意见,不过当时自己没有回答出来,当时也不知道是自己的英语问题还是其他的问题。不过事后还是重新梳理了思路,给了学生一个合理的解释。在教 Maple 的过程中,除了学到了一些新的知识之外,最大的收获应该就是自己的英语口语能力的到了提升,并且能够独立地讲习题课。

当年刚到 NUS 的时候还有一些小插曲,由于当时数学系刚从 Block S14 搬到 Block S17,办公室的座位十分紧张,并不能够保证所有 PHD 都有办公座位。因此就需要通过抽签的方式来决定哪些人有座位,哪些人没有座位。而笔者非常悲剧的通过两次抽签,成为了当年系里面唯一一个没有自己座位的 PHD。所以笔者在第一个学期每次从老师那里拿到作业的时候,都只能够拿到 Science Library 去修改,然后带回 Block 602(当时在外租的房子)。只有到了需要归还给教课老师的时候,再从 Block 602 拿到系里面。所以,当时修改作业给我的最大印象就是把学生们的作业搬来搬去是非常累的一件事情。话说,在当年没有办公室座位的时候,笔者只能去 Science Library 去看书。但是,自从有了办公室之后,除了日常的借书之外,就几乎没有去过 Science Library 了。

ScienceLibrary2

Science Library 的门口

ScienceLibrary1

Science Library 中的 GTM 系列

在修改了一年的作业之后,通过一年多的课程的学习,除了数学知识的增加之外,自己的英语能力也得到了相应的提高,至少用英语讲几节习题课是没有太大的问题了。在 2011 年的时候,应该是在 2011 年的第一个学期,学校组织了一次教学的培训,那就是 CDTL(Centre for Development of Teaching & Learning)那边组织的提供了两天的培训,系里面不少的同学都去参加了那个培训。在培训的第一天都是在听那些教课的老师传授经验,至今能够记住的只有一句话:“每个人能够专注的时间非常短”。第二天则是所有来参加培训的 PHD 们都有一次十分钟的练习机会,然后老师和其余的 PHD 们都会来提供意见与建议。当年 CDTL 培训完之后,给每个学员提供了一个杯子,记得当时我还问培训老师这个我能否带走,老师给出了肯定的答案。于是,这个杯子就被我从 CDTL 拿到了 S17,然后从新加坡带回国,最后放在了我目前的办公桌上。

IMG_1666

CDTL 的杯子

除了学校提供的助教培训课程之外,数学系主管教学的老师们也会给学生们提供培训课程。于是,到了第二年,系里面主管教学的 VT 老师就给第二年的 PHD 们群发邮件,告诉大家系里面将会组织一次培训,每个 PHD 都收到了一份习题和相应的答案。然后大家将会在一个下午现场操练一下,分别讲一讲那份习题,VT 老师会给大家相应的建议。在这次培训之后,大家就算正式接受过学校和院系的助教培训了,就要给学生们带习题课了。

助教生涯

说到第二年助教,那是自己唯一一次教线性代数的课程,Linear Algebra,MA1102。当时所用的教材是 NUS 的几位老师所写的,作者有 VT,NG 等。虽然这门课的难度并没有国内的难度大,但是教这门课确实也花费了不少的功夫。因为选择这门课的学生不仅有数学系和工程系的学生,甚至还有文科的学生。对于理工科的学生来说,这门课可能难度还行;但是对于文科,例如 Arts 之类的学生来说,这门课的难度估计已经远远超过了他们的想象。记得当时也有一些来自文科院系的学生反映了学这门课比较困难,所以每次这些学生遇到困难的时候,我总是会在下课之后多给他们讲一些内容。一来学生选了这门课就要拿到相应的学分,二来有的学生确实学习态度十分端正。说来说去,线性代数也算是自己第一次带一门课,可能对于老师来说,第一次独自带一门课,对学生总是会好很多。现在回想起来,通过这门课也认识了一些很不错的朋友,虽然毕业之后大家都再也没有见过面,不过当年能够在一起共同学习一门课也是一种缘分。

linear_algebra_i_ma_siu_lin_victor_tan_and_ng_kah_loon_1516770173_954ef566 (1)

Linear Algebra 的教材封面

数学系的老师除了教授本专业的课程之外,最重的课程应该就是 MA1505 和 MA1506。这两门课的名字叫做 Mathematics (I) 和 Mathematics (II),按照国内的教学内容来看就是大学数学。为什么说课程量重呢?因为这两门课是面向全校所有院系的,不仅有数学系的人会听课,还有计算机系(School of Computing)的人,甚至还有整个工程院系(Faculty of Engineering)的本科生。所以每个学期的学生人数都是一千多人,教课的时候老师们都只能够选择那种很大的课堂,然后分成几个很大的班级,分别教授同样的课程。记得每次教这两门课的时候都要用数学系的四个老师去教,而助教的人数就更多了,每次都要花费数十个 PHD 才能够提供足够多的习题课供学生们选择。而数十个 PHD 则几乎是一个年级的全部 PHD,所以,随着后来 PHD 们数量的减少,教学的任务就变得越来越重。在 2011 年的时候,每个 PHD 只需要教课 4 小时可以了,但是到了 2014 年的时候,每个 PHD 都必须有 5 小时以上的工作量才能够把整个习题课解决掉。

IMG_1660

贴一张当年 MA1505 课程安排的工作量

因为要教 4-5 小时的习题课,于是大家都倾向于把习题课安排在同一天,因为这样的话只需要去一天就好了。这样虽然能够减少去的次数,不过教四节课那天实在是非常累,讲完之后基本上都不愿意继续说话。在 UTown 没有修好之前,MA1505 通常都会安排在 Faculty of Engineering;而在 UTown 修好之后,MA1505 就改到了 UTown 的教室。除了习题课之外,MA1505 通常都会给学生们提供答疑的时间,一般来说每个人每周去一个小时就可以了。有一次,我和富贵,何老师同时教一门课,于是三个人一合计就把时间选择在了某一天的早上,从 9:00-12:00,每次一个人连去三小时,一个学期算下来虽然工作的时间量没变化,但是去的次数少了很多。由于 UTown 或者 Engineering 距离 NUS 的游泳池非常近,于是自己在教课之前或者教课之后会选择去游泳池健身。不过整体来说,NUS 的助教的工作量还是属于能够接受的范围内,一般来说不会占用一个 PHD 很多的时间。

IMG_1658

上面这幅图是在 2013 年当助教的时候,在 Faculty of Engineering 买的午饭,也是当年发的第一个微信朋友圈。

IMG_1659

当年 MPSH 的 Swimming Pool

通过当年的助教,确实把之前所学的很多内容重新学习了一遍,虽然之前在本科的时候学过数学分析和高等代数,但是多年过去难免忘记很多细节。借助助教的机会重温了当年的许多课程,也算是把自己多年的所学进一步巩固了一下。时至今日,一旦有一些空闲时间,笔者就会翻开之前所学的数学书,看一看当年的内容是否已经生疏,是否需要重新学习一遍。

助教故事

提到当 NUS 数学系的助教,就不能够不提到大峰哥。当年在 VT 给大家培训的时候,我们就发现只有大峰哥把习题全部自己做了一遍,然后逐字逐句给大家解释得很清楚,同时 VT 老师也对大风歌给出了非常高的评价。于是,在未来几年里面,大峰哥都主要在给 VT 老师当助教。大峰哥在数学系做助教的时候,尽职尽责,不仅能够做到认真备课,还把课堂上的所有 PPT 和资料自行整理了一遍。这里的整理并不只是把资料整理好给学生,而是把所有的课堂要点和考试关键点用 LaTex 整理出来,并整理成 PDF 发给学生当学习资料。而且每次大峰哥在考试之前都开设专门的答疑时间,给全体学生们的考试答疑解惑。最终的结果就是大峰哥连续 N 次拿到 Best Tutor 的职位,每次的学生评分都在 4.5 以上,据说有一次的评分达到了 4.8(满分是5)。记得之前笔者讲得最好的时候貌似也就是 3.7 左右的得分,从来没有上过 4 分,与大峰哥的得分形成了鲜明的对比。

BestTutor1

NUS 数学系的 Best Tutor 们

虽然说笔者从来没有拿到过 Best Tutor,但是自认为教课也算认真负责。那几年只有一次讲线性代数,一次讲数学物理方法。剩下的时间全部是讲 MA1505 和 MA1506,每一学期几乎都是面对相同的教学内容,只是学生换了一波又一波。因此,笔者在 2013 年秋整理了 MA1505 的讲义和资料,不仅使用 WordPress 整理在个人主页上(zr9558.com),还在习题课的时候打开自己的主页,使用所做的资料给学生们授课。除此之外,在每次考试之前,无论是期中考试还是期末考试,都会给学生们划出考试重点,甚至在考试之前还会写出考题预测(虽然也没有命中某个题目,但是足以命中某类题目)。即使笔者那么做,也并没有提高学生的评分。不过,在教 MA1505 和 MA1506 的时候,还是认识了不少优秀的学生。当时来新加坡就读的大部分都是 SM2,SM3 这些政府项目,也就是说这些大陆来的学生在毕业之后是需要留在新加坡工作几年的,需要履行当年所签下的合同。

TutorialsMA1505

以上图片是当年在 zr9558.com 上面给学生所整理的资料

除此之外,还有许多有趣的人和有趣的事情尚未写下来,后续笔者会持续更新当年求学路上的点点滴滴。

 

黑盒函数的探索

黑盒函数的定义

在工程上和实际场景中,黑盒函数(black box function)指的是只知道输入和输出对应关系,而不知道它的内部结构,同时也不能写出具体表达式的一类函数。正如下图所示,每次给定一组输入,通过黑盒函数的计算,都能够得到一组输出的值,但是却无法写出 Black box 函数的精确表达式。

Blackbox3D-withGraphs

与之相反的是函数或者系统称之为白盒函数(open system),它不仅能够根据具体的输入获得相应的输出,还能够知道该函数的具体表达式和细节描述。例如 f(x) = \sin(x)f(x) = \ln(x) 等都是白盒函数。

黑盒函数的研究对象

无论是白盒函数还是黑盒函数,都有很多的学术界人士和工业界人士去研究。通常来说,对于一个函数 f(x) 而言,我们都可以研究该函数的以下性质:

  1. 最大值与最小值,i.e. \max f(x)\min f(x).
  2. 根,i.e. \{x:f(x) = 0\}.
  3. 函数的单调性与凹凸性等。

对于具有明显表达式的函数,例如 f(x) = \sin(x) 等,我们能够使用的方法和技巧都很多,其方法包括但不限于导数,积分,Taylor 级数等等。但是对于黑盒函数,我们能够使用的方法和技巧就会一定的限制。本文将从如何研究一个函数的根,最大值和最小值等方向入手,逐步向大家展示黑盒函数研究中所遇到的数学与机器学习方法。

黑盒函数的根

对于多项式 p(x) = a_{n}x^{n}+\cdots + a_{0} 而言,多项式的根指的是使得 p(x)=0x 的解。特别的,对于二次多项式而言,也就是 ax^{2} +bx+c=0, 它的根可以表示为:

x = \frac{-b\pm\sqrt{b^{2}-4ac}}{2a}.

对于一般函数 f(x) 而言,它的根指的是 \{x:f(x)=0\} 这个集合。下面我们来介绍一下如何计算一个函数的根。

二分法

在数学分析中,介值定理(Intermediate value theorem)描述了连续函数在两点之间的连续性,具体描述是:

[介值定理] 如果连续函数 f(x) 的定义域包含 [a,b], 而且通过 (a,f(a))(b,f(b)) 两点,它也必定通过区间 [a,b] 内的任意一点 (c,f(c)), 其中 a<c<b.

从介值定理可以得到,如果我们知道 f(x_{1})<0f(x_{2})>0, 那么必定存在 x_{0} \in (x_{1},x_{2}) 使得 f(x_{0})=0。根据这个定理,我们可以提出二分法来计算函数的根。

如果要计算 f(x) = 0 的解,其一般步骤是:

  1. 先找到一个区间 [a,b], 使得 f(a)f(b)<0;
  2. 求这个区间的中点 m=(a+b)/2, 并求出 f(m) 的取值;
  3. 如果 f(m)=0, 那么 m 就是函数的根;如果 f(m)f(a)>0, 就选择 [m,b] 为新的区间,否则选择 [a,m] 为新的区间;
  4. 重复第 2 步和第 3 步直到达到最大迭代次数或者最理想的精度为止。

 

Bisection_method

 

牛顿法(Newton’s Method)

牛顿法的大致思想是:选择一个接近 f(x) 零点的初始点 x_{0}, 计算这个点相应的函数取值 f(x_{0}) 与导数值 f'(x_{0}), 然后写出通过点 (x_{0},f(x_{0})) 的切线方程,并且计算出该切线与横轴的交点 x_{1}. i.e.

x_{1} = x_{0} - f(x_{0})/f'(x_{0}).

我们可以不停地重复以上过程,就得到一个递推公式:

x_{n+1}= x_{n}-f(x_{n})/f'(x_{n}).

在一定的条件下,牛顿法必定收敛。也就是说 x_{n} 随着 n 趋近于无穷,将会趋近于 f(x)=0 的解。

Ganzhi001

割线法

根据导数的定义:

f'(x_{0}) = \lim_{x\rightarrow x_{0}}\frac{f(x)-f(x_{0})}{x-x_{0}}

可以得到,当 x 靠近 x_{0} 的时候,可以用右侧的式子来估计导数值,i.e.

f'(x_{0}) \approx \frac{f(x)-f(x_{0})}{x-x_{0}}.

当我们不能够计算 f(x) 的导数的时候,就可以用上式来代替。

于是,割线法与牛顿法的迭代公式非常相似,写出来就是:

x_{n+1} = x_{n} - \frac{x_{n}-x_{n-1}}{f(x_{n})-f(x_{n-1})}f(x_{n}).

在这里,割线法需要两个初始值 x_{0}x_{1}, 并且它们距离函数 f(x)=0 的根越近越好。

割线法1

备注

对于黑盒函数而言,我们是不知道它们的表达式的,因此以上的方法和技巧在黑盒函数的使用上就有限制。例如牛顿法是需要计算函数的导数值的,因此不适用在这个场景下。但是对于二分法与割线法,只需要计算函数在某个点的取值即可,因此可以用来寻找黑盒函数的根。

黑盒函数的最大值与最小值

对于能够写出表达式的函数而言,如果要寻找 f(x) 的最大值与最小值,可以计算 f(x) 的导数 f'(x), 然后令 f'(x) =0, 就可以得到函数的临界点(critical point),再根据周围的点导数的性质即可判断这个点是否是局部最大值或者局部最小值。

Weierstrass 逼近定理

对于黑盒函数而言,通常来说我们只知道一组输入和相应的输出值。如果只考虑一维的情况而言,那就是 \{(x_{i},y_{i})\in \mathbb{R}^{2},0\leq i\leq n\}n+1 个样本。根据 Weierstrass 逼近定理可以知道:

  1. 闭区间上的连续函数可以用多项式级数一致逼近;
  2. 闭区间上的周期为 2\pi 的连续函数可以用三角函数级数一致逼近。

用数学符号来描述就是:

[Weierstrass 逼近定理] 假设 f(x) 是闭区间 [a,b] 连续的实函数。对于任意的 \epsilon>0,存在一个多项式 p(x) 使得对于任意的 x\in[a,b],|f(x)-p(x)|<\epsilon.

因此,如果要计算黑盒函数的最大值和最小值,可以使用一个多项式去拟合这 n+1 个点,于是计算这个多项式的最大值与最小值即可。

Lagrange 插值公式

按照之前的符号,如果我们拥有 n+1 个样本 \{(x_{i},y_{i}), 0\leq i\leq n\}, 那么我们可以找到一个多项式 p(x) 使得 p(x_{i}) = y_{i} 对每一个 0\leq i\leq n 都成立。根据计算,可以得到该多项式是:

p(x) = \sum_{i=0}^{n}\bigg(\prod_{0\leq j\leq n, j\neq i}\frac{x-x_{j}}{x_{i}-x_{j}}\bigg)y_{i}.

于是,要计算黑盒函数的最大值与最小值,就可以转化成计算 p(x) 的最大值与最小值。

除了数学方法之外,机器学习中有一种算法叫做启发式优化算法,也是用来计算黑盒函数的最大值和最小值的,例如粒子群算法与模拟退火算法等。

粒子群算法(Particle Swarm Optimization)

PSO 最初是为了模拟鸟群等动物的群体运动而形成的一种优化算法。PSO 算法是假设有一个粒子群,根据群体粒子和单个粒子的最优效果,来调整每一个粒子的下一步行动方向。假设粒子的个数是 N_{p},每一个粒子 \bold{x}_{i}\in \mathbb{R}^{n} 都是 n 维欧几里德空间里面的点,同时需要假设粒子的速度 \bold{v}_{i}\in\mathbb{R}^{n}。在每一轮迭代中,需要更新两个最值,分别是每一个粒子在历史上的最优值和所有粒子在历史上的最优值,分别记为 \bold{x}_{i}^{*}1\leq i \leq N_{p})和 \bold{x}^{g}。在第 t+1 次迭代的时候,

\bold{v}_{i}(t+1) = \bold{v}_{i}(t) + c r_{1}[\bold{x}_{i}^{*}(t) - \bold{x}_{i}(t)] + c r_{2}[\bold{x}^{g}(t) - \bold{x}_{i}(t)],

\bold{x}_{i}(t+1) = \bold{x}_{i}(t)+\bold{v}_{i}(t+1), \text{ } 1\leq i\leq N_{p}.

在这里,c>0,并且 r_{1}, r_{2}[0,1] 中间的随机数。

模拟退火(Simulated Annealing)

SA1SA2SA3

模拟退火算法是为了模拟金属退火现象。其核心思想是构造了温度 T 这个维度,当温度 T 高的时候,分子运动速度快,能够探索更多的区域;温度 T 低的时候,分子运动速度慢,能够探索的区域有限。随着时间的迁移,温度 T 会从一个较大的值逐渐降低到 0。

模拟退火的大体思路是这样的:先设置一个较大的温度值 T,随机初始化 \bold{x}(0)。假设目标函数是 E(\bold{x}), 需要寻找 argmin_{\bold{x}}E(\bold{x}),然后执行以下的程序:

Repeat:

a. Repeat:

i. 进行一个随机扰动 \bold{x} = \bold{x} + \Delta \bold{x}

ii. 计算 \Delta E(\bold{x}) = E(\bold{x}+\Delta\bold{x}) - E(\bold{x})

如果 \Delta E(\bold{x}) <0,也就是 E(\bold{x} + \Delta\bold{x})<E(\bold{x}),选择 \bold{x}+\Delta\bold{x}

否则,按照 P = e^{-\Delta E/T} 的概率来接受 \bold{x} +\Delta\bold{x}

b. 令 T = T-\Delta T

直到 T 足够小。

总结

本文从数学和机器学习的角度,简要介绍了部分计算黑盒函数的最大值,最小值和根的方法,后续将会介绍更多的类似方法。

 

zr9558's Blog