乌村夜话 - VOL 6

Author Avatar
xmoiduts 3月 09, 2020
  • 用其他设备扫码打开本文

寒冬腊月做项目,戴口罩会被打吗?

前情提要

上回书说到了2019年10月。M4CO课程结束后,我便一直在思考自己下个学期应该选什么课程。(剧透一下,有机会的话可以选一个半学期的大论文,起码是给自己干活)因为:

  1. 一年小半的听课生活让我觉得,瑞典留学(外加欧陆不含英国)做Master项目无外乎又一轮难度进阶的本科;
  2. 自己没有工作经验,会与瑞典的就业市场形成鸡·蛋死锁的情况,笔者就想在毕业前获得一点点能写CV的项目经历。

所以我就选择了做项目而非继续听课。同样的因素也导致了三个月后找论文翻车[下集预告]

ALL-IN 三个月的Project

什么是做项目?

Uppsala CS Track 有多种项目可选:

  1. Project CS
  2. Project in Computational Science
  3. Computer System Project

【1】Project CS 是计算科学的项目,典型模式是:乌普萨拉大学邀请一家企业与校方合作,在校内模拟工作环境,朝九晚五地做一个作品出来,持续两个Period(即四个半月)。我见过它们做出的作品,可以理解为XXX管理系统

大老远跑国外花五万搞个培训班级别的东西,看起来并不合算 如果我的AD换成offer 那我选这个课将绝杀。可惜换不得,这个Project CS也就被Pass掉了。

后来,实际选课的人大约5个。

【2】Computer System Project 不了解。

主管老师那时正在病休,不太爱理我们的邮件咨询,也Pass了。

【3】Project in Computational Science 计科学实践项目,典型模式是乌普萨拉大学和校内导师或校外企业之一合作,进行一项研究或做一个项目。不需要做出真正可用的产品,能将一些科研的方法进行实践就可以了,最后出一份报告【我们做成了论文那么长,谁叫那瑞典小哥这么轴啊】 【选题一览】

乍一看这个也挺不错,加之同届很多人在计算科学专业之下,笔者就想混选去那边了。

然而,项目依赖于计算科学的学分,选课办公室也可能搞错学分把你拒掉。

IT学院的很多风口课程都属于计算科学,比如图像分析,机器学习,并行计算等。

在亲自上门进行一番“亲切而友好的磋商”后,笔者终于选上了这个项目。

选上还不够,笔者需要从校方提供的20个项目中选出的志愿偏好,每个志愿再按照先来后到的顺序组队。我被分到了 Skogforsk 项目,搞其中的一个子课题。

Skogforsk(英语直译Forest Research)是瑞典的林业研究机构,研究森林与林业的方方面面。我们的课题与涉林区道路有关。


引子

高等教育是一种极其昂贵的商品,但在国内大学就读的学生可能无法感同身受。以985大学为例,年付四五千的学费和一千多的住宿费,在寒…难…贵子的年代,最为人诟病的要素,基本是较差的宿舍条件和夜间停电停网。

笔者在海外瑞典留学,居住在24小时给电给网,生活设施一应俱全的宾馆式公寓中(留学生专属,学校不管瑞典学生的住宿),居住体验可谓Cozy。代价?房租比国内宿舍贵了40倍!

在国内,学生之所以能以低廉的价格住上“还凑合”的宿舍,是因为国家对学生进行了大力投入——你能考入双一流学校,本质上就已经拿了80%的隐形奖学金。

笔者参与的项目时长三个月,价值15学分,折合学费31250瑞典克朗。在给 SkogForsk 做活的同时,我们(留学生)也需要向学校缴纳高额费用。

You pay for your supervisors’ supervision.

交着钱给人家干活(确信)

消歧义:

笔者选这门付费课程,有凑学分的成分在里面。

想做项目完善你自己的CV未必要像我一样选带学分(交学费)的课程,直接和教授聊吧,说不定还能反过来给你带来一点小工资、论文经历和深造推荐呢。请读者/潜在新生不要因为我说“做项目还要交钱”而对学校失去兴趣。

项目开始

11月初,我们在校内与SkogForsk(以下或简称“公司”)的员工进行了初次会面,公司讲解了项目背景,并解释了我们所做子课题的意义:

我们拿到的题目是根据过去收集的驾驶数据来搞个模型,预测驾驶员的行为。但与自动驾驶没什么关系。驾驶数据包含道路线形和车辆CAN-BUS上采集到的数据。

由于机器学习太火,公司要求我们也用上ML相关技术。

我的队友

项目被分配为三人组队,成员分别是我、我的一个中国同学(简称CL)和一个瑞典小哥T.S.。

作为“当地人”,T.S.理所当然的成为了队伍中与公司交流的成员。他的整体表现一直很强势也很轴,自项目一开始就划定了一套进度节点的日程表,并且拟定了一套NN技术的尝试路线。每次我和CL有什么新点子时,他肯定会马上把我们的想法怼回去:

What (我猜他憋住了两个词) are you talking about?

——T.S.

不过有时候,涉及到自己的工作内容,也要坚持怼回去——比如,笔者报这项目是为了做点IT实践的,不能在这坐着光写Introduction。再三坚持下,笔者也找了种方法(RF)去拟合数据。

做项目的环境

凭栏远望,云雾升腾

学校有一间小屋供我们和Project CS的学生做项目。起初屋子里只有桌椅,干活要自带电脑。移时,学校仿佛听见了我们的呼唤,派人给各个team发了电脑!

这个年纪出来留学的人,小时候可能接触过微机室里的卧式机箱。我原以为发的品牌机应该是上古配置,打开一看,嗬!I7-7700 CPU, 16GB内存,莫非学校一直在扮猪吃老虎?

……但如果你觉得还不赖的话,GT 730 显卡……

Computational Science 的大多数项目都要用到炼丹,在庞大的神经网络计算需求面前,这张显卡就如同土豆一般羸弱。

没办法,我们只能八仙过海各显神通。

  • 我们的方案:

    身处海外,我们使用国际大厂的服务少了很多“麻烦”,Google 为研究人员提供了在线 Jupiter Notebook 环境,称之为 Google Colaboratory。2019年份,普通用户也可以免费使用到2/4核CPU,12/24GB内存,外加可选Tesla K80GPU或Google V2-8 TPU实例.

    顾名思义,V2-8 TPU有8核,总计占据一个刀片的空间,刀片上有4片TPU芯片,每个芯片有2核。我们三个月如一日地白嫖着Google的算力资源,美汁汁(如不白嫖,该配置4.5USD每个机时)。

  • 其他组的方案:

    有人做CNN,算力需求比较大,免费的Colab有单次时间限制,无法满足他们。所以他们在线租GPU服务器干活用。

167%工作量的学姐

上期说过,这次要聊COCP不和水课一起上的副作用。

我有个学姐,上学期选了10学分的满配COCP,由前文提过的M4CO(5学分),外加本学期开课的Constraint Programming(5学分)组成。我们每学期要修30个学分,但她上学期没选别的课。所以剩下的25学分都要这个学期上课。

……都要给她累哭了。本来 计算科学项目 就是独占三个月的工作量,一加上COCP那么难的课(还有别的课),别说留学生,就算是能修福报的人也会吃不消。

与公司的“多次”会面

题目虽然是驾驶员行为预测,但我们这个三人小队连什么是驾驶员的行为都不知道,就只好去问甲方。每次去人家那边开会都能白嫖一杯咖啡,去的次数一多,我都有点不好意思了。别的组说他们每周开一次会,起初我们觉得“啊 那太多了”,没想到后来我们却成了开会最多的组。

视线转回到项目内容


数据预处理

拿到数据小样后,我们就开始了初步可视化。

plotRT.png

这是一条长达数百公里的驾驶路线,途中密布着林区小路。即使是经验丰富的老司机也无法记住全部路径并脑内规划线路。所以,一切都要依赖导航软件的帮助。

  • 数据小样是他们自己拿GIS软件粗略合的,有着很多错漏重复,和公司沟通后得出结论:我们需要从原始数据集开始重新处理数据。

  • 数据分为两种:道路线形驾驶记录。两者的采集间隔不同(每米/每秒),需要按照欧氏距离绑定间隔最短的位置对;驾驶记录每秒刷新10次,而其GPS坐标每秒刷新1次,故还要对位置做插值。

  • 数据集中丢失了很多路段的数据,需要排除;停车/倒车路段的上下文也要排除;

  • 有些路段需要往返驾驶,但道路数据不含方向信息,需要无辜的瑞典小哥手动标记驾驶数据,把返程路段的坡度/弯度方向反转。

  • 驾驶记录的时间戳每秒都有错误,两条数据的间隔也分布在0.04秒到0.2秒之间。我们也是花了好大功夫才定位、修复问题,并确认修完的数据还能用。

  • 基于驾驶记录给出的距离数据,瑞典小哥计算出了记录中没有的加速度,将其作为Ground Truth之一。

在CL进行了一番数据相关性分析之后,我们选定了9个参数作为ML模型的输入,4个参数作为输出。

模型

  • NN

    大家最熟悉的神经网络

  • Random Forest

    集合群体智慧,在样本和特征选取上均具备随机性的的分类/回归森林

  • XGBoost

  • 1-D CNN

    当前时刻的驾驶行为受前后路况影响,要”瞻前顾后“,这与CNN的行为不谋而合。

  • GRU

    同上,不过CL竟然只用了脚下和身后的路况。一般人开车都会用前方道路决定现在的驾驶行为。


模型的构建与比较持续了近一个月。这是瑞典每年日照最短的时期。12月的白天只有亮光,却很少能见到太阳本尊。无数个日子里,我们乘着天光到校,披星戴月回家。去年我过得并不舒服。但在室内灯光的衬托下,这个冬天倒没有那么难熬其实是嫖到公交卡了

这年轻人啊,就像正午十二三点的太阳

效果

原本被我们寄予厚望的时序型网络GRU和兼顾前后数据的CNN均告败北,NN表现平平,树形结构(Tree Ensembles)的表现却出乎我们意料。

All_models.png

产生上图结果所用的数据经过了Z-Score标准化,神经网络们很在意这个,但树形结构好像并不需要,为了能有个参数用来比对,我们还是把标准化后的数据喂给了所有模型。

Loss: MSE(蓝色,回归问题) / 交叉熵(橙色,分类问题)

转换为未标准化的数据后,RF在速度上的误差为5-9(m/s)2(取决于测试集划分方法),NN误差为9-10;作为对比,公司曾用方法的误差为16,我们的模型比原方案降低了一半的MSE Loss

但在分类问题(刹车/离合)上,我们的查准率(Precision)小幅过半,而查全率(Recall)连一半都没到。

备注:我个人接触炼丹实操问题不久,当时甚至连ROC-AUC都不知道,知道后已经来不及用了。

为了探究分类问题表现不那么好的原因,笔者使用 Google Earth Pro 查看了沿线街景,发现有些路段的视线被森林严重遮挡,司机的驾驶行为并非单由道路线形本身决定。下图为真实林间路段街景图。

braking-sight-street.jpg

延伸阅读:在斯堪的纳维亚半岛开欧洲卡车的视频

其他

在项目内容之外,课程还顺带要求我们做Presentation——包括一次录像预演和一次正式展示。校方请来了(好像是音乐学校的老师,平时给高端人口指导仪容仪态和演说技巧的那种)为我们讲解演讲中的气息、手势、身体姿势等举止行为;每个小组都要单独和课程老师做预演,可以说辅导是三对一的——三个老师对一个小组。

通过与T.S.三个月的相处,我有点理解瑞典为什么能一直维持很高的发展水平(?)了:

这小哥的做事风格总是简单粗暴直接,“优雅”从来不是他考虑的内容——满是胶带补丁的笔记本电脑、用橡皮筋绑着的手机充电线(估计是使用四五年的荣耀千元机了,接触不好)、直接在Latex正文里插入注意事项、丝毫不输996的肝力(他比我们都能肝):尽管大众眼中的瑞典从来不加班,却也有一批像这哥们一样,能从早坐到晚,回家再做到半夜的当地人。这样一批人,加之瑞典人民能坐住冷板凳潜心钻研的整体性格,也会支撑着瑞典未来的发展。

不过,以这个瑞典小哥的变量命名能力,他去任何公司应该都能永葆职位[/滑稽]

2019年末的暖冬

欧洲虽然比中国还北,但得益于北大西洋暖流的影响,并不像大家所想的那样寒冷。Uppsala在瑞典东部,与斯京一样,冬天应该是-10°C微冷·积雪的。

但2019年末这个冬天却并不是这样。

笔者一直想找个路面有积雪的日子,骑上单车去拍摄Uppsala的冬景。无奈老天不赏光,整个冬天直到3月,尽管降雪时有发生,可气温一直在0度上下反复摩擦,雪落有声,日出无痕,空留一滩积水。

时值三月,笔者去自助洗车棚对自行车做开春的例行维护,碰上了周末骑车运动的陌生瑞典人。简单的交谈中他表示:

我搬来Uppsala已经很久很久了,刚来时这里的冬雪是相当大的,最近5年则变成了不太多的雪和很多冰路。今年,则是几乎没雪。对于自行车运动来说这算是个利好,但总归不太正常。

这段时间,国内(尤其B站)人们总是在说Greta如何如何,我倒不是支持这些罢课游行的学生,毕竟他们也会珍惜一切不上课的机会,和相似阶段的我们并无二致。关于环保意识在欧洲的日益兴盛,暗感是气候变化这把火烧到他们自己身上了——对于瑞典人来说,北欧以外的地方基本就是……哪儿?

另一方面,发达国家承平日久,瑞典已经过了两代半的好日子,可谓是不知饥馑。年轻人从小接触的丰饶、和平与稳定自然是他们世界里”与生俱来的一部分“,是Granted的。西卡西……

国内方向,从米粉(马前卒《睡前消息》)一例中,也可以见微知著,这种现象也正在现代中国生根发芽:四五十年前是奢侈食品的米粉,如今演变成了”传统文化“的一部分。如果你相信”现在的普通人祖上都曾阔过,当时的普通人根本没机会传世至今“这种前提的话,这说法好像也没什么不对。本次新冠疫情也正好像调试棒一样,对国人持续鞭策,警醒我们修炼自己的内功。

不练内功会怎样呢?

某电商平台,去年年初无门槛优惠券没管住,造成了xx亿的损失。之后就看他们闷声招人养伤,估计内功会修一修。

另某电商平台,今年年初小家电优惠券翻车,这家 家大业大,估计只会波及几个”兄弟“了。

苦练七十二变,笑对八十一难

“免费”Julbord

Julbord直译圣诞桌,可以理解为瑞典版的年夜饭,会在每年的12月十几号,圣诞之前阖家吃上。期间,就连宜家餐厅也会推出自己的圣诞桌自助。

食材主要是高蛋白、高脂肪、高胆固醇的卡路里炸弹——香肠、鱼、奶酪蛋糕什么的。

但即便是瑞典这样物质极大满足的国家,也会有人受种种因素所困,不能负担这样一桌自助。

还好,Uppsala的一家Student Nation(学生组织,与学生会不同)今年连续几天都组织了免费圣诞桌活动,邀请所有人前来就餐。

据了解,食品为食品公司所捐赠,由志愿者进行数天活动期间的服务,Nation则提供场地。

我去连续吃了两天不是真想占人家便宜啊,实在是懒得做饭了,说实话此类食品的饱腹感特别强,两小盘下肚就饱了;但期间有艺术家来演奏/合唱,相信能给很多人代来一丝温暖和希望吧。

你知道吗?

在瑞典戴口罩上街冲塔安全吗?

欧洲人认为戴口罩表示你已经得病了,就不应该出现在大街上。在部分国家,已有数例报道表示东亚裔(无论国籍)戴口罩上街受到了人身攻击。

自意大利爆出新冠疫情以来,笔者(和本地的大量华人一并)在思想觉悟上与国内高度看齐,毫不轻视这些小颗粒带来的高传染性,自动自觉戴上口罩,在平时就很宅的基础上进一步减少了外出。

那么地处关外极北之地的瑞典人民怎么看我呢?

经过多次必要出门的实测,瑞典人民没有对我进行物理攻击,一些细看比较年轻的人士会故意在我面前咳嗽/捂嘴,学校里面大家则更为克制,只是在我背后讨论着Corona。

公交车上大家并没有离我一米远,相反,瑞典人并没有拒绝坐我旁边。

其实笔者并没有感觉太不爽,就当作自己在做一些行为艺术吧。如果能够成为他们茶余饭后的一点谈资,帮他们从内心打个预防针,那我就已经知足了。


欧洲比东北还北,能拥有高温结界的国家少之又少,能像热带发达城市国家一样高效管理的国家同样鲜有耳闻。说实话,意大利的表现让我对南欧的印象上升了好几个台阶。

这集我看过

下面列举了属文当下欧洲的一些操作,可笔者隐隐约约觉得这些Episodes我都在哪看过……

  • 3月初 瑞典数千人级别的滑雪节;

  • 3.7 意大利封区; 瑞典MelodyFestival(音乐节),27000人齐聚体育馆,旁边就是首都的复复线大流量通勤铁路站点,火车经停区域覆盖了瑞典1/3的人口;

  • 3.8 德国截留瑞士口罩(备注,瑞士是造手表贼有钱的那个国家,瑞典是有宜家/Minecraft/Spotify的国家)

超市抢购了吗?

有点,但不那么夸张,在意大利超市爆卖的同时,瑞典酒精消毒液很早就没货了,超市的销量明显增加但基本还有存货。


UU Medical Research -> 生物