这篇blog不包含任何技术内容,只是回忆一下我的大学生活。
当我开始写这些的时候,竹园宿舍里的学生们已经陆陆续续开始离开。晚上看去,有些小室已经一片黑暗;有些透过窗户看去,室内也七零八落。我把显示器寄回家了,现在无论是打游戏还是看代码都不方便,正好有空写写这些。
我的一个同学界老师,他每次都可以在朋友圈里发一些很有文采和趣味的文字。我推测这一定程度上是由于其在江苏省参加高考,那里当时对于作文的要求比全国卷高的多,当然更大的原因还是他本身就很有文采。然而,我既没有文采,也没有过那样的训练,所以我只打算朴素地写出来。
我回家后补充了部分内容,以及图片轮播的功能。这样让这篇blog看起来更像个回忆录。由于插入了许多图片,所以最好在PC端以及科学上网的环境下观看。
序
在特殊的2020年夏,我毕业于河北省三河市第二高级中学,参加普通高等学校招生全国统一考试,考入西安电子科技大学计算机类。
实际上高中生活还是比较快乐的,虽然在河北,但并不是所有的高中都能搞所谓“衡中模式”。说难听点其实就是镇里生源一般,搞也搞不起来。当时两三周休息一次,早6晚10,每天其实写完作业就没啥事了,还算阳间。当时上学不让带手机,过剩的好奇心被宣泄在了物理化学生物上。我经常将遇到的一些有趣的习题不分科目地手抄到一个纯蓝色的厚封皮写字本上,这样好似“记录物种图鉴”,用于打消晚自习的无聊(实际上整个blog website就是那些蓝皮本的精神续作)。
在放假的时候,我时不时用零花钱买来一些乱七八糟的东西(当然都在安全范围以内),来试图搓一些好玩的事情,比如这个:
“蓝晶雨”
这个反应生成的反式产物不溶于水,在水里看起来bulingbuling的,当时做了些送女同学。所以看得出来,我其实没被那么”高压“地摧残过,所以在高考完还能保存一些求知欲和好奇心,这在后面其实带来了一些好处。比如还有一些杂七杂八的:
显然,当时的我对所谓高考,个人命运很难有什么直观的认识。在那里,口耳相传的都是传说都是”北航北理“。老师口中的“衡水”,“石家庄二中”与我而言只是个虚无缥缈的概念,廊坊教育也很落后,没什么河北省的其他市一起联考。所以直到一分一档线出来的时候,我才真正感受到了铁拳。最后以全省4000多名(在学校里这甚至是年级第三)来到了西安电子科技大学。
那么当时为什么报西电呢?原因很简单:看知乎看的。2020年的时候知乎上还是清一色的“万般皆下品,唯有CS高。”,于是就报了“计算机类”。在那悠闲的暑假里,我玩着ARK: Survival Evolved,浑然不知后面会发生怎样的故事,更不知“信息差”三个字到底会有多么沉重。恰如那句“美好时光,只在昨日”。
大一
我是12号那天下午就到宿舍了,后来见到了舍友,他们人都很好。不夸张的说,我估计整个四年里50%的运气都是用在这次随机匹配舍友里了。我们四个人齐了以后,在综合楼里不知道吃啥,吃了家什么米线,那个米线很难吃,四年里我们没有一个人再去那家店吃过了。我们的作息基本一致,一个人上床了其他三个人也过一会儿跟着上床了,也不怎么打呼噜,也没有什么逆天习惯,跟他们住四年是一件非常愉快的事情。
按照西电的传统,新生入学是有一个新生入学考试,然后用于选拔试点班和英语分班。实际上只有英语分班是有用的,可以帮助提前考四六级。对于试点班,我只能说那是欺负刚高考的学生不清楚里面的门道,自己被别人卖了还帮人数钱。然而我自己就是”不清楚里面的门道“的,我看那考试成绩挺考前的,就报了个”人工智能图灵班“,一个是因为受一些文学作品影响,另一个又是知乎吹什么”算法工程师“。然后直接上套,专业直接就变成了”人工智能“(电子信息类)。
在第一个学期,班里会多上一门“高等代数”,这门课有(I)和(II),各自4个学分。这门课平时的作业题很少,也没什么练习册,我当时学起来总是似懂非懂。这门课的老师乔老师,我们当时称他为“图灵班精神班主任”,因为他确实很有人格魅力。在他授课的时候,经常说一些题外话,他说的那些话是那种非常令人信服的鸡汤,言谈间可以感受到他对我们充满希望。
然而,我当时并没能一时间适应过来,因为这门课没有练习册或往年题之类的。以及我当时还是单打独斗的状态,我在学习这门课时被一些比较边边角角的知识,比如什么行列式的极限,奇奇怪怪的打洞技巧,一些华丽的证明给干扰了,并没有很好的抓住重点。然而考试时全是几道基本概念沿申的大题,我解答的并不好。我记得那天是下午,我脑子昏昏沉沉,甚至在所有的大题中矩阵求逆的时候,我都同时作了行列初等变换,最后总评只有70多分,直接班里倒数第三。
跟这个相比,高等数学和下学期的大学物理其实就顺利得多了,有课后题和往年题,对着他们一顿“拟合”,就能得到不错的成绩。当然,大一的时候上来就接受到77的4学分,是很令人沮丧的,尤其是一开始想幻想保研的(没必要装外宾,相当一部分人刚入学都是这个想法。)。西电是不允许刷分的,所以在大一上学期如果就有一门大学分的课考的不好,那相当于直接就从卷排名的竞赛里出局了。除非心理素质足够强大,能背着这个debuff然后仍然使劲内卷每一门的课。
大一学年有两门思政课,他们现在名字已经换了,我那时候叫他们思修和近代史。之前上这些课的时候,我都以为过了就行,就天天最后几排摸鱼。当时我很不理解为什么有的人上这些课这么积极,他这么热爱文史为什么会来西电?后来,当我得知政治课是要算进保研,且一门3个学分,然后那些很积极的人往往事先打听好哪个老师给分高,然后就积极参加活动,最后总评往往95以上的时候,一切就都说得通了。
以及那时候我已经知道了更多的事情,比如所谓保研去外校,要看一个叫“rank”的东西,就是你的排名。如果不是什么1%,5%,甚至第一第二,很容易就被筛下去了。然而这些实验班往往基数小,卷王居多,会带来很大的劣势。想到自己77的高等代数(I),以及后知后觉的各种事情,我好像意识到:“这不做题确实不行啊,但只做题好像更不行啊。”
大一一年里,我某种程度上曾试图扩宽过一些视野:
- 我一开始曾去听了一个技术俱乐部的技术沙龙,第一次是讲怎么搭个blog,那学长一顿操作,“这样那样再这样”,就搭好了,我感觉十分神奇。但下一次沙龙就变成什么素数快速筛,快排,我完全听不懂。
- 乔老师和教高数的叶老师在上课的时候都曾提过什么“解数以百计的线性方程组”的“数学建模竞赛”,我当时跟风报了美帝数学建模,然后拉了俩班里同学来送,后来发现这在西电里是套利空间极大的一种竞赛。我当时上来一顿“清风数学建模”,根本不知道在干什么,但我本人有点喜欢这种瞎整东西然后用matlab画出来的活动,我还整的挺来劲。
- 然后大一下有个学科导论,是轮转着拉一些学院里的老师来讲自己的研究方向,这些研究方向现在看来都很具有西电特色。我当时听完这个课懵懵懂懂的听说什么“机器学习”,“深度学习”,“炼丹”。我图书馆整来了本西瓜书,发现完全看不懂。我去看什么反向传播的推导,一堆角标一堆partial,完全不知所云。
- 我加了一个聊天灌水群,即使是现在,我还是觉得这个群有点《魔法禁书目录》里的暗部组织的意思。那里面的人都身怀绝技,有高中学过信息竞赛的,有门门不费吹灰之力90+的,搞什么TCS,sys。他们平等地歧视平民玩家在XDU online里能做的一般性质的努力,如卷均分,数模,和“炼丹”。我大一的时候曾一度看这个群看的想退学。
但除了这些以外,还是有一些收获的。当时有一个院级的小车比赛,简单来说就是学院买了一批JetRacer,然后办了这么一个小比赛。第一阶段是简单用JetRacer里自带的代码实现巡线,然后在一个赛道上计时;第二阶段是一段更难的赛道,然后可能会放小人,红灯,绿灯等的玩具模型,需要实现巡线,看到障碍停下来,减速,加速等动作。我当时跟俩同学就硬着头皮上了,然后经历了“啥是CUDA啊?”,“这PyTorch是啥?是不是要装这个?”,“这啥意思?它咋说我没这个包啊?”,“这个报错是啥意思?”等一系列疑问,后来有点回过味儿来是怎么回事了。然后第二阶段我是在那个JetRacer上部署了一个Darknet框架下的yolov3。先是要标数据,把那些在赛道上拍下来的玩具模型的图片打标签。然后训练一个yolov3,然后稀里糊涂的部署上去,然后我记得一开始那inference很慢,就又稀里糊涂的搞了一堆有的没的,然后这车就能在那赛道上蠕动了。
小车那个事情的成功带来了不小的正反馈,后来暑假回家了,我开始准备所谓“全国大学生数学建模竞赛”。因为我发现国赛里有一类题目,它们是“A题”。这种题是要先建模出给定物理情景下的数学模型,然后写成matlab,然后第一问一般是参数标定,第二问开始作参数反演,然后逐渐增加难度。这非常对我口味。以及我当时被这篇知乎里的西电学长(这位学长好像最后去了中科大,不知道出于什么原因知乎删号了,希望他一切都好)所鼓舞,然后也开始学习A题。
这个学长知乎文章里放的他们那个校赛作品,我机缘巧合下通过某位学姐要过来了,我将其打印了下来,甚至现在还在我的包里。
在暑假里,我正在学习A题相关的技术,我突然意识到我好像可以把他们记录下来,正好以blog的形式。于是我搭建了自己的blog,选了一个自己喜欢的主题,然后在网上搜如何自定义,慢慢对什么html,CSS,JavaScript有了概念,后来就变成了现在的样子。
当时最大的困难就是如何看懂那些式子,以及如何实现他们。很多时候那些参考资料的作者,他们的教育背景都是数学或物理,用的符号系统有些晦涩难懂。看懂了这些以后,如何优化代价函数,以及如何离散化也都是不小的困难。所以一个技巧就是:“如何搜寻自己看得懂资料”,以及之后:“如何将他们连缀在一起,来帮助自己理解某些事物。”
2020年A题中炉温曲线的拟合
当时我拟合出来A题第一问的参数以后,非常的高兴。因为这事实上从代码出发,构建了一个真实情景(当然有所简化)里的状态。现在想起来也仍然很高兴。以及当时我还探索了所谓“元胞自动机”,其实就是用计算机实现一个非常大的模拟,然后建立一系列规则来模拟一个复杂的过程。我在这篇博客里留下了不少可视化的动图,可惜源代码现在都已经找不到了。
因为均分受挫,外加懒惰等原因,慢慢也就不怎么来上课了。有一次翘课还引发了一个稀奇的经历,那是大一上学期西安下雪的时候,我和一个同学翘了高数课出来玩雪,然后当天晚上我睡觉的时候感觉有点冷,醒来以后就有点发烧了。到了晚上的时候我觉得太难受了,想去校医院输液之类的。结果我遇到校医院,几句话就让我隔离了。让我舍友拿什么洗漱用品,盆子啥的,我大晚上就被一辆面包车给拉到西安市第八医院,先在发热门诊测核酸,然后不出结果不能走。
当时恰巧的是,有一名陕师大的女同学,和两名西北大学的女同学也都被这么困着。后来大晚上我和那位陕师大的同学被关进留观室,大晚上急诊叮铃咣当的我也没怎么睡着。第二天,说我是阴性的,但意思是还是要隔离。但医院那儿好像不太想因为这种事占用医疗资源,让我联系学校,然后学校那时候隔离区正好有床位空出来了,我又很恰巧的跟一个西电学姐一块,被面包车拉回西电,然后在隔离区被关了四天。现在想想,那好像是我上大学跟女生说上话最多的时候?
然而,即使有一些收获,但整个大学生活其实从高代第一学期爆炸的时候就已经定下了个焦虑的基调。
大二
暑期准备的数学建模竞赛,在大二一开学的第二周就开始了。然而事与愿违的是,A题忽然从基于ODE/PDE的优化问题,变了个风格,变成了一个高维的非线性问题,具体是说计算一个简化的FAST射电望远镜的反射率等指标,并且对反射面板的位置等进行优化。我当时对那样的优化问题一是十分陌生,二是我后来发现我根本没能正确理解题目所设置的优化情景,于是那次以省一告终。那时候看见QQ空间里同级的直接喜提国一国二,还是挺难受的。
以及升入大二,之前意识到的一些矛盾逐渐显露出来。比如学院前身是电子工程学院分出来的,培养方案里没有计组计网操作系统。“我不是计算机类吗?”。
后来学院开了计组这门课,以及操作系统和计网的选修。不过计网和操作系统都是大三时候了,那时候的选修没啥人想好好上了。只不过从课里其实也没能学到什么东西,因为老师当年上学的时候都是EE背景,教这些也是把青椒拉过来赶鸭子上架,效果肯定不会太好。
这其实给当时班里的同学带来了更大的困扰。以及大一分流结束,大部分人都选了计算机科学与技术,人工智能学院其实并不是多少人第一选择。以及当时大一结束,大二开学评奖学金,西电试验班那必然是严格按学生手册的比例来卡人,我的两个同学都快吃了3年600块钱“低保”(三等奖学金)了。以及我们看后面的培养方案,什么“脑科学”,“数电模电”(虽然这个西电人均都得学),“信号与系统”,“数字信号处理”,不少同学都有些难绷。这也让当时大一稀里糊涂就被整进“人工智能”的我有些无所适从。
当时学院通知班里,搞了个“导师制”,说让一两个同学一组联系学院里的一些导师。现在看来这个举动其实起到了捅破窗户纸的作用,不然像我当时那样成绩不出众也没啥经历的人,是不太敢联系老师做东西的。我当时依稀记得大一学科导论里,有个老师看着挺好说话的,实际上那个老师也是被迫营业,毕竟这种课犯不着让大老板来回跑一趟。后来我就联系了这位冯老师,后来证明他确实是个好老师。
冯老师当时给了我两个课题,让我二选一,一个是遥感图像的融合分类,另一个是无线电信号的调制识别。我选了后者,因为当时道听途说什么:“别做CV”之类的。他最开始给了我些论文,在之前一些杂七杂八的积累下,我有点琢磨明白这个任务是做什么了的。简单来说就是一些无线电信号,他们以IQ调制的格式被“记录下来”,然后需要把他们进行分类,其中的难点在于低信噪比下的信号很难分辨,以及类似调制方式但不同阶数的调制方式容易混淆。
我一开始的时候先动手尝试了一下,其实一开始我并没有去自底向上的把什么:“采样,滤波,调制,射频”给搞明白,一个是本身能力有限,第二个是其实也不应该这样来做。我记得当时找到了CSDN上的一份代码,好像是CNN+LSTM来进行分类。里面其实全是错误,但我当时不会Python,更不会什么PyTorch。我就在那个基础上改了。我当时先是在自己的笔记本电脑上,装什么CUDA,anaconda,PyTorch,现在笔记本里还存着叫“Radio(3)”的环境:
名为"Radio(3)"的虚拟环境
然后我鼓捣鼓捣着,把一些工具函数写通,然后还鼓捣了半天一些可视化结果的程序,例如什么一边训练一边把loss,accuracy什么的都动态的画出来(后来知道还有什么tensorboard,Wandb)。然后把数值结果跟一些论文的设置对齐了。
当时冯老师的意思是让我看看能不能用一些时频处理的方法,来将信号处理一下,然后再用炼丹的方法进行分类。为此我花了相当长的时间搞明白什么是”时频脊线“,”短时傅里叶变换“,”小波变化“等等,以及他们如何实现。甚至我还从一些冷门小众的书里翻出一些奇奇怪怪的技术,什么相位解绕。但事实证明这个思路基本死路一条,从朴素波形里炼丹炼出来的特征已经够好了。但不得不说,这跳过”信号与系统“和”数字信号处理“硬看这些,很锻炼人,受益匪浅。然而这个项目本身仍然没有什么推进。
我会和冯老师时不时在教室里碰个头然后汇报,一般都是他课上完,在附近找个空教室。他确实掏出了相当多的时间听我讲一些异想天开的事情,不切实际的想法,虽然他其实也不清楚以及确实没精力替学生想技术层面的事情。我最开始找他汇报,都是各种抽象画,杂乱无章的实验数据,他也没有绷不住直接开喷。当然现在我如果向老板什么的汇报下实验进展,那肯定得上来几十页PPT招呼好了。就整个过程有点像那种奶奶接小孩放学,然后一路上听小孩说一天在学校里发生了什么一样。实际上大部分青椒是抽不出或者不愿抽出这些时间的……
冯老师后来购置了两台主机,其中一台送来了南校区,被我占据了一年。那台主机有两个GTX 2080Ti,但其中一块疑似是矿卡。当时南校区的网安大楼还没建完,所以这台电脑在宿舍不断电的时候电脑就被我放在宿舍里,后来宿舍断电以后有段时间寄存在隔壁小室混学生工作的舍友的活动室里,再后来我和同学去家属区租了几个月个单间,整个单间里就放这台机器。
那时候多少有点郁郁寡欢,于是过生日的爆米给自己买了个fufu,她一直陪我到现在,我基本出远门的时候都会把她塞行李箱里,哪怕她头很大。
fufu正在发表关于调制识别的相关指示
佳在学习概率论同时我在学习电路基础
我和他都担心保不了研,因为我俩的成绩都是一个样,我爆的是高代,他爆的是大物(后来我俩必修课排名确实差不多)。我俩决定冲那个上面说的”套利空间“极大的美赛,按照当时西电的政策,美赛O和F可以直接保研(后来是+20,但跟直接保研没区别)。为了这层保险,我当时直接选的E题,然后靠做科研实习的时候学来的一顿画图技术,和慢慢学的PPT功力,然后搞个元胞自动机,这事居然真成了,拿了个F。那次经历其实揭示了一个……社会运行的规律,我不知道如何总结,我只能这么叙述:”如果我是在美赛A题,例如某道人人都能想到用元胞自动机的,比如土地沙漠化,鱼群迁徙等用元胞自动机,那大概率就寄了。但如果在E题F题这里,搞元胞自动机,那有可能就稳了。“
那次套美赛的利其实是有“时代背景”在里面的。当时由于疫情情况复杂多变,先是封校了,然后在21年冬季的时候,又封宿舍了。那时候每个小室每天出一个人给其他四个人打饭,现在想起来是段荒诞的日子。左右两室,各四个人,闭门不出,在宿舍上网课。
大概在2021年12月底的时候,情况有所缓和,校园里部分商家开业了。那时候好像也管的不是很严了(但你如果不回宿舍,其实也没别处可去,教学楼,体育馆,都是关着的)。那时候有小道消息称,那时候某个学校栏杆处是可以钻出去的,但我从没找到过。在12月31号跨年的时候,我们小室好像举行了一次“庆祝”。当时新综的重庆鸡公煲开了,我和一个舍友排了好久,点了个大份的(当时加不了啥佐料,里面没啥东西),然后宿舍里其他人贡献点自热火锅,辣条什么的,庆祝了一下。
20年跨年的时候,我们宿舍聚在一起打桌游;22年跨年的时候,由于一些众所周知的原因,那时候我们已经滚蛋回家了;23年跨年的时候,我当时由于实习,人不在学校。
封宿舍下简陋的聚餐
当时,返乡是个大问题,我家那会儿已经不让回来了。我本来是想在学校里过年了,但据说如果留校需要统一搬到丁香某宿舍住(但那年留校其实不用搬),我就前往广东,找爷爷奶奶逃难了。是真的有点仓皇出逃的意思,我的三叔来白云机场接我,他带我去广州一个地方转了转,我不知道那是哪,我只指导我当时穿着一件秋衣走在大街上,非常的尴尬。
那是我第一次跨过秦岭淮河以南,我记得当时从西安逃出来,然后飞机落地看见棕榈树,以及绿叶,感觉有那么一点不真实。我进了一家书店,那书店一层摆着些手办,二层甚至有计算机黑皮书,和穿着JK的女高中生,我还是觉得有点不真实。后来到了爷爷奶奶家,用柜子和一个小桌子,以及老人家不习惯用的微波炉,搭建了一个“工位”,我在这种状态下跟队友一起准备那年美赛。
然后为了比赛时候的顺利,我们一致同意提前返校。那时候正月十五还没过完,我在老综合楼超市买了汤圆,事实证明那是很劣质的汤圆,非常难吃。我们在开始前还拿几道题演练了一下,基本就是决定用“乱入E题”这道打法,把啥都往里装。后来高强度忙活了很久,比赛结束以后,我忘了是去了哪里的麦当劳,我们去恰了一顿麦来庆祝。我已经想不起来是不是从这次起的头了,后面好像我们一遇到什么值得纪念,或者单纯心情不好的时候,都会去吃麦。只不过肯定不是当时那家,是丈八一路那家,因为那里出学校,坐6号线直接能到。
这个事情结束后并不是休息,而是速通上学期的期末考试。依稀记得在22年和23年,由于疫情原因,期末考试的时间表往往一变再变,非常折磨人。
后来过了几个月,这事居然成了。这个F在大二下的时候缓解了不少焦虑,但没太多,毕竟心里清楚这个F只是投机,没啥含金量。但还是宽慰出了一些时间搓自己乐意的事情。我用冯老师的那台电脑,尝试了一手用GAN生成人头。朴素的GAN实现只能给出那种模糊的人头,而且那些数据集也是那种画风比较早的时候的。我当时自己爬了几千张图,然后裁剪出人头,然后用那台主机训一个PGGAN。事后发现,我当时只是裁剪了动漫人头,没有用仿射变换作对症,所以效果还是有些抽象。这段经历后来被我整理进了这篇博客。我看懂一个人用PyTorch写的PGGAN用了不少时间,然而真正训练的时候2块2080Ti还是不太够用。当时真的很想有卡用。适逢那时候是炼丹里结构狂热的最后几年,看到各种奇怪的,暴力搜索出的SOTA,登上CCF-A会,被知乎屡屡推送,有些一作不乏本科生,然后一看实验设置:8 Tesla V100。
那段时间的项目经历带来一个隐形的好处:后来大二下学期开了门信号与系统,空科院的孟老师给我们上课。网上现在还能搜到古早时代的BBS,说她如仙女下凡,这句话即使是现在说也没什么问题。因为我之前为了调制识别那个项目一顿摸索的原因,这门课学的很顺利,所以不咋来上课。有一次她签到,我在距离下课15分钟的时候直接推门而入,只能说场面有些尴尬。在学到傅里叶变换的时候,有一些需要记忆的变换对,书上一般是在附录上直接给出。我当时通过手推了一遍,整理了进了一张图里:
常用傅里叶变换对
她看完了直夸我是个”人才“,后来这门课有个大作业,其实单纯基于短时傅里叶变换来给音频去个噪。但我当时感觉这没什么意思,我试了用ICA处理了一下鸡尾酒问题,然后也写成了一篇blog,然后发给她看了。不过这实践归实践,刷题刷的不够还是寄,最后信号总评94,班里的卷王好像都98,99了。94还是孟老师给找补了几分。不过这次以后,我然后开始隐约觉得,blog有读者其实也挺不错的,因为之前写完都是自娱自乐,自己看着玩的。
那段时间跟一个高中女同学时不时有联系,她当时去了河北工业大学。当时交流时透露出她想出国开润的想法,学雅思之类的,她在学校里好像还进什么算法相关的社团了,然而这些我因为大一加的那个群的缘故,十分PTSD。当时有点想一起,但我可以说从来就不会口语,全国卷一毕竟不需要口语,我甚至连音标和什么语法都咋不认,单纯的将英语看作某种猜谜,全国卷就能130,140了。其实不会口语只是个托辞,实际上是没那勇气。后来就有点像刘慈欣小说《赡养上帝》里秋生家的拿着动态照片的那个上帝,她后来人直接踏上远征,transfer到阿美的一个学校了,洋人的学校名字一般都不太好记,UW什么的。但当时多少点亮了点开润的火星,我开始幻想港三新二了。
以及那一年的期末考试也不咋顺利,大二上是数据结构直接爆炸,这个原因有很多。主要是没学,因为一学这个就想到那些群里耀武扬威的算法竞赛壬,不过他们确实厉害,他们会的东西我估计两辈子都练不来。然后大二下数电也是直接爆炸,这门课能70多还幸亏是佳考试前给我上来灌了一堆知识点,然后那些选择填空里都考了不少。这两门课的共同点都是,他们都是那一年期末考试的最后一门,属于是期末周开始速通,速通到最后强弩之末了,寄了也正常。
因为均分更寄了,就更幻想港三新二了。因为据传言那里”看GPA不看排名“,但这其实只是我的一厢情愿。不过港三确实看国奖,因为西电的每学年的加分政策,哪怕不是均分第一也是有可能能拿的,只要先叠加分,然后在院里答辩,让被拉来的老师投票给你,就还有希望。当时为了叠那个加分,也是去联系了联系混大活里那些搞PPT竞赛的人。其中一个电院的同级女生,也是河北省的,后来一聊发现还是衡(中)系的。我在这个事情上出了点力,挂了个名。也是段稀奇的经历,从她那儿学到了点PPT哲学。当然学术上的PPT跟这个不是一个风格,不过也能兼收并蓄。她们一年来西电的能有十几号人,然而我待了四年了,没能找到另一个跟我一个高中的学弟学妹/学长学姐。
大二暑假的时候,我算了下时间,发现这时候比较关键,那年暑假就没有回家,一直在推进调制识别那个项目。在大二一年里,我也间断的在阅读一些这里的文献,慢慢也有点抓住问题的本质了,然后PyTorch也会了点。当时跟天桑一起在学校里琢磨这个事情,然后慢慢开始用overleaf。天桑的情况跟我和佳很类似,只不过他第一门爆的令人更加难绷,他大一上高数慕课没做,结果别人都90多分,他80多分。
那时候学校里没什么人,也没什么饭馆,食堂就几个固定档口。当时怕没啥吃的,提前屯了不少泡面零食啥的,后来都没用上,慢慢也过期了。那时候那台主机已经被我搬进宿舍了,一天到晚的开着很耗电,比空调都耗电,冯老师给补贴了点电费。当时可谓是:”夜阑卧听机箱响,CVPR入梦来。“。
我记得有一天学校要检修电路,停了一天的电,我那天就和天桑一块去图书馆避暑了,我那天在写一个关于在炼丹中应用小波变换的blog。后来到了快晚上,图书馆要闭馆不让待了,我俩在我宿舍里下了会儿象棋。那天晚上很热,又因为停电,非常难以入眠。我忘了是不是那一天,天桑非想尝试一下益禾堂里一个什么带着橄榄俩字的饮品,就包装还是个类似漱口水瓶子的样子,那个非常非常难喝,现在益禾堂好像已经不卖这个了。
然而残忍的是,我逐渐就意识到了,这样的一个”题材“是入选不了”CVPR“小说集的,然而入不了所谓A会,然后又没rk,在推免的时候基本就是大写一个寄。那时候认识了一些学弟,发现他们大一快结束的时候就已经在一些非常厉害的外校实验室做RA了,还有V100用。当时非常感慨,感觉自己忙活半天瞎忙活。但为了一些简历上的成果和有始有终,我和天桑还是把这个事情推进完了,在开学前投了出去。
虽然,冯老师不能指导我发A会,但他教会我的比单纯学会灌一篇A会要多。有时候我去他办公室找他玩,看到他并发的处理各种事务,左手贴车票,右手接电话,抬头看微信,低头找合同。以及组里的师兄师姐,投TGRS,都不是很容易;然而其他的一些老师,由于一些原因,可以一次十几篇。他谈到这个的时候,非常乐观,丝毫不放在心上。即使在写作上,他没法给出一些很“senior”的修改意见,但他还是会尽力看的。不过也有可能是我当时写的太烂了,根本用不到什么“senior”的修改。
大三
大三开学的时候,我又一次参加了数模国赛,试图冲击A题。那年的A题是一个波浪能装置的优化,基本就是联立4个振动方程,难度变低了不少,大部分队伍的结果都是对的。然后我当时在一个平均功率的定义上有点发昏,那结果好像差了个2倍,然后又省一了。
然后我清楚的记得,那年的国家奖学金答辩是在国庆假期放完。我很在意这次机会,国庆假期里跑了好几次教学楼,去找那种一个人都没有的空教室,然后打开那儿的多媒体来练习讲答辩PPT。因为教学楼的教室没课的时候一般总会是有一两个人在自习的的,所以我往往需要爬上爬下的做线性搜索。最后答辩那天,我裹个大衣,佳和天桑也穿个差不多的风衣和大衣,在那会议室门口替我加油。
抓拍到的天桑(已打码)
当时受疫情影响,那边的老师是在北校区搭个腾讯会议,他们问问题的时候我根本听不清说啥,反正叽里呱啦的完事了,后来拿到了,我以为有”港三新二“的希望了,当然后来的结果就是希望粉碎的稀巴烂。
之后,我试图在Kaggle上拿个奖牌来充数。当时有个引力波分类的赛题,挺符合我当时背景的。我花费了不少时间在那上面,然后慢慢掌握了一些炼丹中实验管理的事情,当时没什么计算资源,冯老师的那台电脑因为研究生搬过来了,已经被召回了。本来能有一张3090的主机用,后来跟那人闹掰了,然后就自费autodl了。最后蹭上了个银牌的位次。
后面跟一个人做跟人体动作相关的工作,让我意识到了一个很直观的事实:首先,我发现我做的那个人体动作的任务,感觉跟那自动调制识别的在实现上的难度,差不多啊。那怎么一个就登神长阶CCF-A了,一个就狗不理了。佳在做一些压缩上的事情,草稿纸上都是一些我看不太懂的熵,比特的推导,动不动就得寄存器,查汇编指令,这怎么世俗意义上到头来还不如炼丹呢?后来佳在知乎上刷到一个清华大学智能产业研究院的老师,在那儿实习了一段时间,然后也变成炼丹的形状了。
大三上学期因为我多报了一些学院选修,所以是我最后一次要有期末周的时候,但由于疫情放开的原因,大三上学期的考试也变成了开学再考。我记得最后那一次,要考的有微机原理,数字信号处理,操作系统,机器学习,人工智能概论,模式识别。所以又是一顿速通,当时从我们宿舍阳台往外看去,有五只小狗以及一只大狗,他们时常在那片空地上嬉戏打闹,当时预习累了我和舍友们时不时就看看他们。后来某一天以后就看不见那些小狗和大狗了。
其实很早的时候我就玩不下去均分那一套了。有一个重要原因,人工智能学院由于之前18级临走前说:“从课上学不到什么”,于是一拍脑门,开始把期末考试题每年都大改一次,以及本身我们也拿不到往年题,这实在是令人难以评价。对于那些排名非常靠前的人,他们需要尽可能多的去做一些应试的事情,尽可能大的扩充自己的“训练集”,从而来覆盖考试中有可能出现的测试集;而对于像我这样的,就算再认真去钻营考试的事情,最后的排名也不会有什么变化,然而还是要体面地过了这个考试。这对于两拨人来说都是内耗。不过有些信奉社会主义达尔文的人会认为,卷不动就是菜。对于这种人,相信他早晚有被铁拳砸醒的时候。
以及那些课里所考察的内容,他们有没有用,更是一个槽点。一个夸张的例子是,比如你正在深入学习机器学习,看PRML,那么你考机器学习大概率要吃瘪。对一门课程有一些理解,和能在这门课上考个高分,两者之间往往有一个很大的夹角,这个夹角甚至会是钝角。然而诚然,均分是一个很好的筛选手段,那些大学里能一直绷得住均分的也都很了不起。但,那些没绷住的人总应该值得有第二次机会。然而推免的时候,大部分学校的教务还是会卡rank,要卡1%,卡5%,甚至直接卡前一两名。确实有人拿到的剧本是爽文男主,成绩又好科研又强;但大部分还是想找个学上的普通人,这两者里只能二选一。在现在“炼丹数模化”的趋势下,情况只会变得越来越糟糕。
实际上那时候我在推免上的想法已经变成忒修斯之船了,我相信大部分人一开始都是想“提升学历”,“985”,“title”,“地域”,“科研”……但我当时意识到了一些事情,就是对我个人来说哪一方面更为重要。即使是“科研”方面,也分叠积木缝diffusion刷点的low-level vision,调LoRA搞“垂直应用”的NLP,以及千奇百怪的各种方向……有快乐的搓东西,有痛苦的搓东西;有搓的出来东西,有搓不出来东西;有横向满天飞,有打卡考勤扣补贴。
后面推免的过程之前其实记录过,在这里。当时一开始的时候我是图谋过冲港三PhD的,然而我这条件被彻底干碎,清北华五,ACM金,顶会一作。我连进鱼塘的机会都没,于是直接就放弃了。后来发现,原来是得提前当RA啥的,然而那时候我还在”自动调制识别“。不过结局是好的,至少做的方向我还是挺喜欢的。毕竟真硬核的图形学不敢碰,人家共轭梯度法都要自己手撸C++,所以我借着PyTorch的自动微分来做3DV,cosplay一下怎么了?因为通过之前的事情我其实有点明白了,”上车得选能上的车上“。有些方向,大一的时候没接触过,后面也就没吃这碗饭的机会了。时间和社会,都不等人。
这里有一件奇怪的事情,那就是我科研启蒙做的是调制识别;我玩过PlutoSDR来收发,来模拟调制识别的过程;我学的好的课是信号与系统和数字信号处理;我最开始用的是matlab,然而我还是天天想给自己贴”CS“。我现在看着081200计算机科学与技术,和CS PhD几个字,就像咕噜看到了魔戒,只剩下:”my precious, my….“了。但你问我如果是这个有啥用,我好像也说不上来。可能只是叶龙好龙?或者是虚荣心?也可能是单纯缺乏自信,觉得这样的title可以让自己好受一些?
虽然有几次,有学弟或者同学问我:”哇NJU,你去CS还是AI还是SE了?“,我一回答”电院“,往往都会有……那么几秒的尴尬。以及我当时在南大电院夏令营的时候也遇到了一些比较尴尬的”文化冲突“,比如有个哥们问这ICCV是SCI几区,然后我说是会议,他以为是某个EI水会,但从某种意义上来说,他说的还是对的。但当时我真的卷不了CS,我直接丢盔卸甲的润了。
081200计算机科学与技术/Computer Science and Engineering
在推免中,飞飞学长洗涤了我的心灵,让我下定决心抵抗“魔戒”的诱惑。那时候我满脑子只剩下塔塔开了,然后点进什么绿群,知乎,焦虑一天。从他的毕设致谢可以猜出,他度过了充实,幸福的大学四年。他在研究中始终非常纯粹,纯粹地为了乐趣,然而我还不能做到这么纯粹,多少带功利。在推免中,我还认识了晨哥,谢师傅,美生大哥等院里的同学,我们时常讨论,交流一些事情,从而增加对这个世界的认识。
大四
后来保研结束,我跟导师说我要实习,他很困惑:“你啥也不会怎么去实习?”,但还是同意了。
哦对,我大四的时候还做了一次数模国赛A题,定日镜场的系列问题。那次基本就是做着玩了,当然最后也寄了。
然后大四那年也去评了一次国家奖学金,这次就没那么紧张了,搓完PPT就去了。不过也用处不大了……
后来我去实习,在那里也没啥活干。于是就摸鱼写blog,没事搓搓毕设,那里确实有对我当时的需求来说足够多的V100用。不过那时候,我也知道这个道理:“没卡可以做没卡工作,有卡可以做有卡的工作,那如果做不出来工作,那往往是人的问题。”。在那里我认识了一些一块实习的同学,双君,士博,世超,越哥和雄哥,他们教会了我很多。
当时是直接住家里了,那时候通勤的一些经历记录在了这里,说实话不太想遭遇第二遍了。当时上班的时候每天5点多起,然后K7787再到北京坐地铁。这个事情多少对心理有点伤害,交工牌的那一天,我最后一次沿着去北京站的路线在1号线里,看到地铁门上面什么“大望路”,“国贸”,“永安里”几个字,感觉有点头晕目眩,和有一点想吐。
在实习快结束的某个周末,那时候我人已经不去on-site了。我在某一天星期日,高中返校的时候,和一个高中同学,偷偷混入了学校。因为不太好意思见高中老师,所以就是偷偷混进去的。
我俩混进去以后,感觉我俩就像科幻小说里,时间穿越过来的,“不能与人接触”。我们没有校服,而且拿着手机,大摇大摆的走着,估计都以为我俩是老师。印象里的教室和走廊,怎么实际上这么窄。我知道我很熟悉这里,但我又感觉很陌生。强烈的反差感让我只有一种“感慨”的复杂情感,当然我也找不到除了我那同学以外熟悉的人来说。真正令人感到安心和舒适的,不是熟悉的环境,而是熟悉的人。大概,以后要是回西电南校区,估计很难有一样的感慨。
实习结束的时候,那天我去交工牌,把工牌交给HR的时候,我感觉我赎回了灵魂。然后我去十里河逛了逛那儿的花鸟虫鱼市场,东西还挺多的:
在那里实习的时候,是能体会到一些事情的。比如相比于具体“做好”一件事情,如何糊弄周报,混KPI,甩锅,才是更加重要的。有人的地方就有利益分配,就会有互相倾轧。领导拍板什么奇形怪状的思路,Leader只能照做,然后手底下的员工开始表演干活。小时候家里人总说考个好大学去北京上班,如今得以窥探一点真相,我可能想读个PhD接着逃避下去。
我的mentor是一位经验丰富的女士,我无法估计她在各种公司里混了几年了。她应该是早年间自所的博士,应该早到那时候连ICLR都没有。虽然她不能给予什么research本身的见解,也跟不上现在大水漫灌的思路了。但她的职业嗅觉和职业素养还是很全面的,言谈举止间教会了我很多。
实习结束后我回到了学校,然后4月份基本是在完善毕设。5月份是盲审和一些别的乱七八糟的,同时将毕设的结果整理了一下,试探性的问了问能不能投个会议,导师同意了,所以还忙活半天投稿。然后6月份就是毕业,聚餐,合影,收拾东西,卷铺盖走人。
我在西安上学到大四,也没怎么进城里转过。五一之前的几天一个高中同学来西安玩,拉着我进城区转了转,我记得最后一天晚上,我和他在长安大排档吃饭,然后辅导员通知要交那个毕业生照片(集体拍照的时候我在实习),然后我一翻包发现找不着了,慌的一批,当时饭也没咋吃好。
前几天学弟拉着我去跟他们合个影,在那儿我见到了本科一作NeurIPS,ICLR的同级同学,我一句话不敢说。他们去了港三新二甚至是阿美,神采奕奕,郎才女貌。而我在一旁,专硕,085402,衣带渐紧,脸上起着痘,还在考虑啥时候去租房子线下进组。我看着他们,只敢心里感叹:“大丈夫生当如此”,甚至不敢接下半句“彼可取而代之”。听学弟说,他们的科研当时都进展的很顺利,都有一些senior的PhD来带。我回过头来看看自己,感到了盛夏中的一丝萧瑟,瞎忙活这么久,结果呢?
“但他们blog没我写得好。”
后来听说,21级好几个智科的学弟,都入了NJU智科的夏令营。我隐隐约约感受到了081200魔戒的感召,有点羡慕和嫉妒。
终
今天(2024年6月25日)早上,我送走了最后一个舍友。我陪他走到西门,然后挥手道别。
他拉着行李箱,拉着拉着,轮子掉了。我想帮他看看轮子啥情况了,然后伸手一摸被烫了一下。
旁边有辆美团单车,我骑上单车,仿佛像荒野大镖客2里亚瑟摩根奔向结局一样,日光熹微。
我回到宿舍,四下无人,回忆了这些并完成了这篇blog。
为什么我要写这么多呢?引用另一个已经飞升了的西电学长在其博客中的话:“输出文字,是很重要的一种能力,也能敦促我反过来系统性地回顾、总结,写的是生活也好,科研也罢,或许这些日后看来非常稚嫩无知的文字,是这一路最忠实的见证者。”
另一方面是,知乎上的处于同一阶段的人生赢家们,往往不会把一些拿不上台面的事情展开说。万一有人能看到我的经历,从而少走点弯路呢?
那以后要做什么呢?不太清楚,先减个肥吧,然后早睡早起,养好皮肤。之后,我想发遍SIGGRAPH,CVPR,ICCV,ECCV,NeurIPS,ICML,ICLR,然后留下一个homepage作为赛博漂流瓶。可能几年后有人看到那个homepage和blog website,会心里念叨:“这人有点东西。”。这是不是也挺好玩的?
最后感谢一下如下店铺/堂口,排名不分先后:
竹园食堂—母鸡汤泡饼,竹园食堂—肉夹馍,竹园食堂—湖南蒸菜;
海棠食堂—小笼包;
老综合楼—第一佳大鸡排,老综合楼—膳当家黄焖鸡米饭,老综合楼—李小姐家炸鸡,老综合楼—东北菜,老综合楼—金美佳烤冷面,老综合楼—小杨粥铺;
新综合楼—益禾堂,新综合楼—沙县小吃,新综合楼—麦当劳,新综合楼—小码头,新综合楼—毛月湘菜;
丈八一路—麦当劳,西电教苑—木子铁,阳光天地—悦屋老板娘家烤肉;
不管怎么样,那四年里的日子是开心还是焦虑,都像那小时候夹在本子后来里找不到的树叶一样,是再也找不回来的。等待我以及看到这里的人的,只有渺茫不定的未来,偶尔冒出的美好回忆往往只能反衬现在的痛苦。所以,我也该走了,就让回忆留在这里吧。
西安电子科技大学南校区—礼仪广场—2024-6-25-早上6点