一直想写一篇博客回顾一下过去的五年,以前每年年末都会写篇空间日志回顾一下过去的一年,或是在元旦或是在春节前后,空间用的人越来越少之后也就此搁笔了。一直觉得每个人活着都是奇迹,以前爱用笔,现在喜欢用照片,最近在尝试视频,想好好记下自己走过的路和看过的风景。重新整理了一下自己的博客,便是想重新提笔写些东西,有犹豫过,毕竟这是把日志写在了互联网上了,大多数都是陌生人在看这篇日志。虽然传言互联网流量只有三分之二是正经东西,其中爬虫占了百分之九十,但也会思考这样是否合适,无论如何,我只想写写东西,别人怎么看就不关我的事了。

这是一篇流水账,从高三的最后一个学期写到博士的第一学期,从对未来踌躇满志到迷茫,再到现在。高中的经历颇为惊险,从误入计算机到遇见曾老师,从几次福州培训到第二次省复赛差点完蛋,从省选一塌糊涂到低分飘过复旦夏令营。高中的经历是精彩而短暂的,同班同学的厉害程度和在复旦的感觉无二,每天都在想着如何提高自己的成绩,以及在空余时间展望一下未来。

因为保送,所以我高三下学期是在复旦读预科和 ACM 训练里度过的,修的是三门课,计算机系统(金城老师),线性代数(张巍老师)和离散数学下(赵一鸣老师)。这三位老师基本让我见识到了复旦教学水平的巅峰了,课程确实有点难度,也没适应大学自学和写作业的节奏。现在回头看,计算机系统读得很认真,最后拿 B+ 算是尽力了,二进制运算的练习题再多做一点可能会更好。线性代数就有点对不起张巍老师了,如果去读他推荐的那本外国线性代数的教材,不从行列式开始学起的话,我可能对矩阵的理解会更透彻一些,作业如果多做些也是好的。离散数学从下开始学起真的跟天书一样,至今没懂伽罗瓦域的实际应用。线性代数和离散数学学下来的教训是,如果你没学懂,可能不是你笨,也不是老师不会教,可能是教材的锅,多看几本教材可能有帮助,后来我从图书馆借了清华大学出版社的教材,例子讲得明白,习题也有答案解答。

至于 ACM,属于一个大学遗憾,一开始没很上心,以至于后来遗憾退队,连邀请赛都没去打过,写在简历上的只有 ACM Training Experience。三个人一起打比赛想想还是很燃的,再拿个牌也是美滋滋的。其实当时如果把训练认真对待,把每一题的解法都仔细拆开解读,想来也不是很难的事情。ACM 的题目颇为巧妙刁钻还是有点意思的。以至于现在还会上去打点比赛,回味一下做题的感觉。

转眼到了暑假,我加了个实验室开始读论文,到现在我最喜欢的事情还是读论文,读到一篇好文章依然能让我精神奕奕几日。那个暑假和几名初中发小玩了《笑傲江湖 Online》,很好玩的修仙武侠 3D 游戏,刷副本、刷装备、刷活动和 YY 帮战,和现在的剑三差不多,只是少了能一起玩的人了。

九月大学正式本科开学,很忙,课程表很满,一学期至少是 25 学分以上。这么满的课程安排,留下的自学和复习时间真的很少,我认识的每个学霸,无一不是熬夜学习或者时间自理能力极强的人。课前是需要预习的,课后是需要整理笔记和写作业的,基础知识的重要程度是能够帮助你补齐短板,拓宽视野。这个的重要性不在于让你在未来遇到问题时能够解决问题,而是给予你一种新的思考问题的方式。如果为了解决问题,今后遇到了再学也可以,但难的是遇到问题时,通过你的知识储备,找到这个问题的本质并解决它。

一个学校分成了很多校区,实际上增加了很多人力的时间成本,交通时间增加了,交流时间减少了,以至于很多不在本部的人,只能认识本专业的人。两个相距不远的校区是极限了,分成四个校区有些同学基本只能一年见一次了。唯一聊以安慰的是校车免费也算准时。四年的时间,基本被各种事情安排着时间,紧急重要、紧急不重要、重要不紧急和不重要也不紧急。对未来有目标但没有规划,一直都按走一步看一步的思路过日子,以至于发现时间都悄悄溜走了。没有规划的后果是,把没有好绩点归咎于做科研,把没有好科研归咎于课程太满,把没有空余时间归咎于谈恋爱,把没有好好谈恋爱归咎于财务没有独立,把没有财务独立归咎于没有空余自由安排的时间,把没有自由时间归咎于没有充裕睡觉时间。没有好好地规划每天的时间,让一切都有了借口。

本科里面可圈可点的就是技能树点的比较多:折腾 OpenCV 的时候更熟悉了 C++ 和 Linux;帮别人写作业熟悉了 Matlab;数据库大作业会了前后端加数据库的搭配;数据结构大作业学了 Three.js;自己搞了几个小网站,对 JS / CSS / PHP 用得也比较习惯了;自己看论文也翻过很多书,对计算机视觉传统方法比较了解;做脑图像 MRI 预测脑年龄对神经网络、谷歌服务器部署和回归算法有了深入理解;去基金公司实习对量化投资的分析也有了些入门。

做计算机视觉第一篇看的文章是人脸识别的鼻祖 ASM 和 AAM,对 ASM 的学习第一次学到了 PCA,当时理解起来确实不容易,但最后也算是吃透了。第一篇工作是基于内容识别的视频缩放工作,当时为了复现 Michael Rubinstein 的 Improved Seam Carving for Video Retargeting 的工作,稠密的三维网络流至今印象深刻,是对 Opencv 1.0 IplImage 的内存管理、笔记本内存和风扇的三重考验,写了一个多月,终于代码跑出结果的时候,对产出的结果是令人十分失望的。一个人做一项冷门的研究,失败结果带来的沮丧感是很恐怖的,别人工作的结果是漂亮而简洁的,但你连第一步复现都做不出来。它会让你怀疑这个课题的意义,这几个月工作的意义,甚至怀疑自己是否适合做研究。客观来看,视频缩放这个课题,影响结果好坏的是由两部分构成的,一是显著物体检测,二是缩放的方法。在当时,我觉得显著物体检测部分是有进步的空间的。

于是我进入了本科研究的第二个阶段,显著性物体检测,从现在来看,这是另一个大坑,因为一些基本方法已经把几个大数据集刷到了很高的结果,如果要往上提高一点,需要引入复杂的、自己都不太能信的计算,相比对于结果的微弱提升,这些后续方法都算不上好工作。在显著性物体检测上,我犯的一个严重错误就是低估了别人工作的复现结果而开始了自己的尝试。这是由第一个问题带来的后续影响,我应该深入挖掘一下前人工作的代码,而不能仅通过读论文就对别人的论文进行批判。结果是,我确实找到了一个看似巧妙地新思路来解决这个问题,但原始版本的算法,远不及普通基于色差的计算结果。虽然后续改进了几个版本,跑出来的结果超过了别人的算法,但我不能说这是一篇成功的工作,因为一是相比于几个百分点的提升,需要付出的计算量是巨大的,虽然都能在一秒钟内跑出结果,但基于色差的算法更为简洁。二是,如果我一开始采用了别人基于色差的计算的工作,我将有更多的时间投入到视频缩放的真正的工作上去。于是做实验、调代码和写论文花去了我大三上学期主要的时间,在老师的修改下第一次投稿不太成功,两个 weakly reject,一个 weakly accept。如果当时再有经验一点,其实投个 workshop 也不错,但偏偏第一篇工作不服输,rebuttal 的结果是拒稿。

如果故事到这里还行,因为大三上也不算特别晚,距离第二年申请还有整一年的时间,但在大三下,我按捺不住越来越多微信公众号变现的故事,我也想尝试一把公众号的运营。切入点是学校里没有的讲座咨询综合。收益是完整从零搭建手机网页端的经验和八千元创新大赛奖学金,代价是大三下三个月时间。想法是,学校因为没有每周讲座的统一告示栏,都是教学楼贴海报的形式,所以我想通过写一个网页,社团可以发布上传讲座信息,后端程序每周整理一份本周的讲座活动综合,通过微信公众号发布推文广而告之。故事看起来很完美,完整闭环也解决痛点,看起来是不缺流量,广告变现指日可带。虽然在别人家下干活(微信公众号)就会有诸多限制,但技术上还不是最麻烦的,最难的部分在于推广和宣传,即便我们一个个练习了七八十个团学联、社团的组织者,但做到全校讲座活动资源的大整合,仍是不成功的。刚开始每周尚有二三十个活动和七八百的阅读量,但一个月后,活动发布的热情和阅读量都迅速下滑。因为我们的定位是既想服务于观众、也想服务于活动组织者,但没有精力去推动这个正循环永动机的起步,于是两边受累,慢慢散失了流量。现在想来:

  1. 应该要直接的经济刺激,调动社团们的积极性。
  2. 尽早做出门票系统让剧团分发门票的时候就可以使用,那将会是一个很好的推广。尽管门票系统在之后也做了,但那时候太晚了,大势已去。
  3. 爬虫部分如果能做出来,这套系统应该也不会死。

经济刺激的理解很简单,如果每个活动,社团更新将有 20 元的红包,直接发到更新的人手里,相比于本超勤工俭学一小时 17.5 元,也算是蛮多的。门票系统我感觉做的还是很不错的,但是做的太晚了,早点让几个剧组使用的话,应该可以带来不少的人流,不过潜在的问题是,也不是所有剧组都喜欢电子票,有些不差钱的剧组也愿意制作漂漂亮亮的门票让观众当做纪念。爬虫部分一是比较难,二是我原以为我们只需要前几周,自己去摘录海报,就能让系统自然地运作起来,实际上,我们人工摘录海报进行了快两个月,工作量是巨大的。

最后一年通过正儿八经地去陆家嘴的一家量化投资的私募实习,满足了初中看《小时代》对上海陆家嘴的执念,也算是穿过西装皮鞋去上过班的人了。感受就是大家各司其职,前台负责前台的工作,销售负责拉业务,量化投资部门作为公司赚钱的核心,更有压力、更为严格,氛围也很让我喜欢。部门的大佬资历很丰富,谨慎谦虚,按我的观察,他的主观投资直觉比程序跑出来的结果更胜一筹,毕竟很多宏观政策尚未通过模型量化。因为部门里的几名干将,我可以说这是很好的量化投资部门。我在四个月的时间,用 Python 和 Django,做了全栈工程师做了前后端和数据库所有的事情,搭建了一套实时监控 (RMS) 和投资组合系统 (PMS),基本是把数据可视化成网页的形式,内部人员通过账号密码登录,每日通道返回的交易数据文件可以自动化处理,投资信号当前盈亏也有良好的展示,后期可以接入回测分析部分的代码。做出这样的产品留下,我还是很自豪的,起码对得起当初面试一坐下我就开始谈钱的时候的自信,虽然最后拿的是一天 200(税前),真的算是很良心的实习生了。作为我量化投资方向的入门导师,这家公司教会了我很多,也让我决定暂时离开量化继续读计算机的博士,一个是因为我觉得量化里面对因子的调研还差了些味道,政策对股市的影响实在是太大了,这部分如果不能很好的考虑进去,那么一切的盈利都是一种侥幸。二是我真正喜欢的东西还是人工智能。

我理解的人工智能不是让计算机像人一样思考,具有情感才叫做人工智能,而是计算机在对知识的吸收、理解和运用方面,在解决问题的能力方面,都比人高出一截。人终其一生的学习时间和思考时间也是有限的,有些自然和宇宙的终极问题,我觉得给出答案的可能是计算机来完成。我学习计算机视觉的最终目的也是想在人工智能上更进一步,现在我觉得自然语言处理也很有意思,不过这是后话了。

毕业的时候交的答卷不算失败,但也只能勉强及格,因此全校的红毯是从没想过的,因为申请失利,未来一片迷茫,那时候就想着低调毕业。迷茫,是从申请的时候开始的,英语成绩过了美国研究生学校的明线,但离暗线还有一定距离。申请的文书写得颇为糟糕,很感谢每个帮忙改过文书的人,简历也挺苍白的,绩点一般,论文工作几乎没有,科研经历讲不出什么东西。每天刷着一亩三分地来评估自己适合什么样的学校,申请季算是整个大学生活最焦虑的一段时间了,按照一个不知名的心理测试结果,我的焦虑值是我平时一倍有余。申请的结果分为两种,一是拒信,二是拖了很久的拒信。这两种结果我是更讨厌第二种的,但平心而论,我是最讨厌申请费巨贵的拒信的,真是很大一笔钱。每次刷地里,我真的很为那些连收了五六封拒信最后收到一封录取的人而开心的,真的很能体会到他们在黑暗中见到曙光的感觉。因为不太喜欢做纯开发,想好了走 PhD 的路,就全部申请了 PhD,所以结果便是全聚德。不想做开发是想离开舒适区,去做一个知其然而知其所以然的人。我是很坦然地接收了这个结果,因为藏着掖着并不能改变结果,申请结果的不及格还是不及格。

接受了全聚德的结果,我在延毕和 GAP 中选择了 GAP,因为我觉得我的大学生活可以到此结束了,未来的路不管好不好走,我都选择继续往前走。在去微软亚洲研究院 / Face++ 实习或者去国外交流上,我选择了后者。虽然最终结果没法出去交流,但我也算是对生物统计做了一些尝试。这个领域的问题,样本是真少,维度是真大,低样本高维度依然是线性模型的天下,很多复杂的模型,虽然空有一身本事,但在低样本的数据环境下依然不会有特别好的结果。所以这半年算是对生物统计领域有了一个简单的尝试,对神经网络模型摸索了半年参数,也算有所收获。兜兜转转,最后我选择了 Computer Vision 和 Computer Graphics 都有所建树的老师,可能我对数学背景强的老师有偏爱,最终我的导师也有很强的数学背景。

说到数学,机缘巧合我在复旦一开始认识最多的人便是数学系的,几次看论文,和几次对某些问题有更深次的理解的时候,往往都伴随着学到了新的数学工具。因此我对数学有一种发自内心的崇敬,一直想在有空的时候多学一点,在 18 年的上半年,申请告一段落的时候,我去厦大旁听了一学期的数学课,一口气听了四门,实变函数、复变函数、泛函分析和拓扑学。听完之后的感觉是实变函数最简单,拓扑学也有点意思,复变还是需要花时间好好看书,到后面听得有点云里雾里。至于泛函分析,我觉得老师讲的、书上写的和我理解的好像都不是一回事。总之囫囵吞枣学了个大概,每天下课去海边走走吹了半年海风,整体感觉颇为不错,圆了以前的一个执念,成为了半个厦大人。

期间忙里偷闲学了小提琴🎻,目前最喜欢的乐器是小提琴和钢琴两种了,钢琴不适合在哪来都能练习,于是拾起了小提琴,果真是最难的乐器,没有之一,学了十二个课时只能说刚刚入门,一年后才能开始学揉弦,后面还有很长的路要走,每天上课的心情是,前面一个小孩和后面一个小孩都拉得比你好。不过还是很开心,虽然难,但毕竟是自己喜欢的东西,懂了乐理,懂了谱子,没有特别高的期望,就想今后有天能给自己拉出好听的曲子。

还顺手练了练照相技术📷,趁年轻多点些技能点,摄影圈子真是难混,微博好好的一个群到后面都是互相求赞求转发求留言,花点钱买个设备,靠着大光圈和高爆的日系滤镜,都能拍糖水拍小清新,整个首页也都是汉服的摄影让我对微博的摄影圈子审美疲劳,其实 Ins 上现在也有点腻,不怎么刷了,就当做有个地方发发照片而已。拍的还不好,还在摸索中,一直在追求好看的光影,能拍到一张好的光影真是令人激动。也越来越不爱拍静物,少了人,画面就少了灵魂。

时间线拨到了半年前,收拾妥当了两箱行李,坐了四班飞机转了三次一天一夜到了南方小城 Baton Rouge,我一直觉得它的中文名巴吞鲁日有待商榷,忒土了一点。房租便宜,汽油便宜是我颇为满意的地方,工资也差不多够花,想攒钱那是想多了。空气比厦门糟糕一些,但人少了很多,我已经喜欢上人少车少的地方了,安静,适合静心工作和学习。没来之前做的第一个项目是从 Mesh 文件里展现 3D 头骨,用 Three.js 做的,虽然最后好像没什么用处,但算是一个尝试。第二个项目是做图片切成任意碎片的工具,上传图片可以切割成拼图并保存下来,上传碎片和拼接方案可以展现拼接结果,并交互式的调整两张碎片的位置和旋转角度。这个项目暂时还没有用上,希望今后能用上。第三个项目是做视频水面分割的任务,典型的 Pixel-level 的视频分割,目标是水,光照、纹理和颜色在不同时间点都不一样,还有反光、倒影和阴影等问题,颇有难度,小做一下后就先放一边了。第四个项目是碎片拼接的简化版,做文档垂直碎片的拼接,简化版好做一些,但还是有点挑战,最后的拼接结果我还是比较满意的,但还有提升的空间,最后整理成了论文并准备投稿。掌握了一点做科研的门路,每周都要有合理的工作安排,论文要在 Deadline 之前越早弄好越好。

PhD 期间要修 42 学分的课,真的是非常非常多的,好在做的是 RA,可以专心做研究,上过一门 OpenGL Shader Language 和 CUDA 入门的 GPU 课,颇有意思,老师上课认真,几乎没有 slide,全程拿着代码上课的分格。作业有点难度,都是代码题,每年布置的作业甚至考卷都不一样,让你抄,网上能找得到答案算我输,恍惚间有种回到了本科预科读计算机系统,做二进制炸弹的作业的那种感觉。

哦对了,还有一件人生大事就是在爸妈的赞助下,自己靠着 3500 刀的小积累,买了人生第一辆车,2018 年款的 Mazda CX-3 Sport,混动红搭配车载导航。买时是 1588 迈的认证二手车,第一任车主是 Dealer 它自己,所以还多送了一年的保修,最后的到手价格是 20500 美元,算是经过了大半个月痛苦的调研、比较和讨价还价之后拿到的非常满意的价格。预计要开个七八年,我今后可能还会换很多车,但我想等我到了五六十岁,还会再买一辆 CX-3 来开,毕竟第一辆车是最特别的。

再来说说 Baton Rouge 这个城市,黑人密度虽多但我却不太害怕,我依然相信人和人之间一般情况下仍是存在善意的,我每次和陌生人打招呼的时候,也总能得到热烈的回应。公共交通极差,校车打个七十分,因为我的实验室和我住的地方没有校车直达,所以两迈的距离,坐校车要花上半小时,去市中心等一小时一班的公交车那简直是不可能的事情,所以至今我只是路过市中心而已。能感觉出这个州比较穷,比如只有几条路有路灯,路面坑坑洼洼,破房子也比较多,每天都有的枪击案。不过总体而言还行,能打个八十分。

一学期下来因为不参加教会,所以认识的人比较少,拜个手指数下来,外国人不过十个吧,中国人倒是认识了很多很多人,忙里偷闲去 CSSA 做个场记拍拍照当练手,CSSA 里的人挺有意思的,我很喜欢主席 Austin,不容易。有一个很好的印度哥们 Sanschit,羽毛球好手,新生第一天坐在隔壁认识的,很活泼的人,愿意耐心地听完我不流利的英语和换着方式把他想说的讲给我听,明年多和他约约。一个不错的语伴 Milla,典型美国长大的白人女生,第一年需要打工赚钱,需要有好成绩,暑假才能有钱买车。

至此就是从 2013 年 2 月到 2018 年 12 月,五年零十个月的故事了,走过了人生的 5% 还是颇为感慨的。体验过很多不错的经历也做过很多傻逼的令人后悔的事情。如果把初中和高中定义为青春的话,我想把这五年多的时间定义为后青春时期,人生的路慢慢脱离爸妈家庭,老师的约束力也不是那么强了,慢慢的这条路只剩下你自己在走,好的坏的,种下的甜果苦果都要自己吃。希望自己不要成为自己讨厌的那种人,希望这个世界能因为我而变得更美好一些,希望世界和平。

最后还是俗套一下,立几个 2019 年的 Flag 吧:

  1. 不算已经完稿的文档碎片拼接,再完成四篇论文吧,一个季度一篇。
  2. 尽量尝试不同的菜,做一个菜谱网站,希望里面能收录 30 个我熟练掌握的拿手菜。
  3. 希望我的爱车不要出任何事故,希望巴村路上的各种野蛮驾驶不要撞到我的车。
  4. 希望能找到一个能用机器学习解决的日常小问题,有实际用处、代码量不大且真正解决了某个日常小痛点。

祝,新年快乐,身体健康,万事如意!