邓攀的“贪心”算法:从生物跨界到计算机是什么体验?

2022-08-18 | 作者:微软亚洲研究院

编者按:科研之路并非繁花似锦,很多时候是在一条没有脚印的道路上探索未知。科研之路应该怎么走?如何抓住机遇实现转弯?微软亚洲研究院主管研究员邓攀在以《人生的“贪心”算法》为题的演讲中,分享了自己从本科毕业到现在一路走来的经历与收获。从生物跨界到计算机,邓攀是如何做到“内心有谱,丝毫不慌”的?遇到机会,她又是如何竭尽全力把握住每一个可能的?一起来看邓攀怎样编写了自己人生的“贪心”算法吧!

点击“阅读原文”或在以下地址可观看邓攀的分享视频:

https://www.bilibili.com/video/BV1Rv4y1K7AE


大家好,我是邓攀。我本科就读于清华大学生命学院,期间进行的是生殖干细胞相关的研究。博士的研究方向是线粒体,研究细胞的能量中心在各种毒性损伤下的应激反应。现在,我是微软亚洲研究院的一名研究员。

有时候我自己都会诧异:我一个学生物的,怎么就来了微软呢?我来了微软,怎么还在做生物呢?我是怎么做到这么酷的事情的呢?

话说回来,我现在确实是在做着自己非常喜欢的事情。今天,我将和大家分享我一路走来的经历与收获。

我的分享主题是《人生的“贪心”算法》——回顾自己从本科毕业到现在的十年历程,“贪心”的思想真是精确描述了我的每一步选择。

做实验和写代码,我全都要

故事开始于 2012 年,是我抵达纽约、开始博士学习的第一年。

我们研究生院有“轮转”制度,每个新入学的博士生在第一年的时候都可以选择 3-5 个自己感兴趣的实验室,进行 2-3 个月的“短期体验”,再决定自己想要加入哪个实验室进行博士阶段的研究。

那个时候,计算生物学还是一个挺小众的方向。出于好奇,我选择了一个利用计算方法研究微生物群体行为的实验室。

我在那个实验室轮转时进行了一个短期的探索项目。当时,我们发现:一种叫做假单胞杆菌的细菌被添加到培养基上之后,逐渐就会长成这种树杈状的分支结构。如果同时放上两个菌落,狭路相逢的时候,它们还会互不打扰,各退一步。

邓攀在实验室轮转时进行的科研探索项目

我们就很好奇,在一马平川的培养基上,是什么让细菌在扩散时出现这种模式的呢?相隔老远的细菌又是怎么知道彼此的存在的呢?

通过对微生物进行各种定向基因改造,结合很多脑洞大开的实验,我们找到了影响菌落形态和菌落间通讯的分泌因子,用数学模型解释了菌落行为的原因,还在 Matlab 里模拟出了菌落群体的扩散过程。

现在讲起来,我还觉得这项研究非常有趣。当时,我也一度考虑过要加入这个实验室,继续这个方向的研究。虽然生物和编程我都很感兴趣,但生物实验的训练必须要有场地和环境;而编程学起来则自由很多,我可以利用晚上和周末的时间学习。因此,最终我还是选择了传统生物学研究方向,利用课余时间自学编程。

不得不说,年轻时候的我真是精力旺盛。但也就是这个想法,才让我今天站在这里成为了可能。

不管有没有用,我全都学

说到做到。在接下来的几年里,虽然我主要进行的还是传统生物学研究,可我把研究生院里能选的关于计算生物、生物统计的课程全部上了一遍,还在 Coursera 上学习了很多公开课,并认真做了笔记、完成了作业。当时慕课刚刚兴起,网上有非常多高质量的公开课程。

邓攀的线上学习部分摘录

其实当时我也不知道这些课程对于未来的生物研究有没有帮助,或者对我未来找工作有没有帮助,大多时候我的学习纯粹出于对知识的好奇。

举例来说,听说一门算法课教得很好,但是这门课程的语言是 Java,那我就去学习 Java;听说 C++ 更能培养计算思维,我就去 USACO 上用 C++ 刷题(那时候 LeetCode 刚刚成立);听说大数据云计算特别 fashion,我就去学习了云计算的课程……

后来,这些“不功利”的学习经历都对我起到了非常大的帮助。比如来微软面试算法时,我能够“内心有谱,丝毫不慌”。这段算法学习经历也帮我获得了第一次计算机方向实习的可能。

遇到机会,就全力以赴

这些年来,我有一个观察:中国学生和欧美学生相比,女生和男生相比,都更容易说一句话:我不行。但真的是自己不行吗?还是你觉得自己没有准备好?因为自己没有十足的把握,害怕失败,所以不敢尝试?

由于专业性质的原因,生物学专业的学生一般是不会在在校时到企业实习的。但博四那年春天,我突然听到两个消息:一是实验室要在那年夏天从纽约搬到麻省的伍斯特,所以暑假的时间几乎进行不了实验;二是有一个名为 Google Summer of Code 的暑期实习项目正在接收申请。

Google Summer of Code 这个项目每年二月份启动,组织方先筛选一批符合标准的开源项目,再开放学生报名,由开源组织筛选他们心仪的学生。入选的学生会在暑期进行三个月的线上全职实习,为开源项目贡献代码,许多学生也会选择在实习结束后成为长期的开源贡献者。

这个项目对于当时只会闷头写代码的我来说是一个好消息,恰好那个暑假我也有充裕的时间。问题只有一个:我听到这个消息的时候,距离学生申请项目的截止日期只剩两周。

在这两个星期的时间里,我需要从一百多个开源项目中选择出我想要申请的项目,按照项目的要求完成代码任务,并提交申请书。而当时我对于 GitHub 的了解程度仅限于:在一堂不到 2 个小时的入门课上,我建立了账号,并 fork 了一次同学刚刚建立的 repo。

根据我当时可怜的技能和兴趣,我很快锁定了要申请的项目——一个用 C++ 编写的主要应用于生物医学研究的机器学习库。它们的项目主页上写着:欢迎女生申请。

当时的我想:我一定要抓住这个机会。

“我是女生,我是生物医学专业的,我写过C++ 。”

靠着这点强行给自己找来的优势,我开始啃起了这个项目的代码任务:在线性代数库里增加均值计算的功能模块。听起来很简单,但对于当时的我来说好像要小学生去解一道微积分的习题。整个代码库有大约 50 万行代码,我需要从里面找到目标路径,理解 dependency,参照其它功能的实现形式来完成这个同时支持 CPU 和 GPU 后端的 feature,写好本地测试,在 Docker 里跑通,再通过 GitHub 提交这个任务——每一步都需要从头学起。

不瞒大家说,那两个星期里,我是边哭边完成这件事情的。看不懂代码、配不好环境、编译会报错、测试通不过,甚至别人的讨论我也看不明白。觉得好难,觉得我什么都不会,全都是问题,觉得没有时间了……

但最后,我还是坚持了下来,尽我所能的完成了 feature,并通过了 Pull Request 的所有测试,如愿以偿拿到了实习的 offer。

那时的我心虚吗?说实话,我是心虚的。申请时我简直是靠着一口气完成了任务,实习期间我又能够应付的过来吗?

但我要退缩吗?我不要。那时候我发了一条朋友圈,到现在我也觉得很有道理:人生的所有机会都是“赶鸭子上架”。想等到什么都准备好,可能就来不及了。

邓攀博士四年级的暑期

那个暑假,我重构了基于 C++11 特性的线性代数库后端,统一了数据存储和运算的接口,引入了全新的序列化模块,完成了近 4 万行代码的增删。后来,我继续贡献着代码,正式成为了团队的一员,在第二年担任了实习项目的mentor,并参加了团队组织的布达佩斯线下 hackathon。

这段经历极大地“膨胀”了我的自信。此后,我也曾在全球 C++ 开发者大会上“厚脸皮”地做过闪电演讲,在 San Jose 世界科幻大会上申请担任 coffee talk 活动的志愿者负责人,在刚加入微软亚洲研究院不久时,在全院活动上主动代表讨论小组向全院汇报……我发现,这种经历会不断带来正向的反馈。现在,面对我的确感到有挑战的任务,我不会说“我不行”,而是说“我没有把握,但我可以试试”。

人生没有最优路径

你们是不是发现一个问题:以我现在的职业发展方向——计算生物学来看,我其实走了一些弯路。

读博中期那几年,我也曾十分困扰。在通宵实验连轴转却始终观察不到我想要的生物现象时;在周日的暴风雪里开车半小时冲到实验室却只看到了阴性结果继而只能打道回府时;在做了三个月的实验不知为何失败却又没有办法设断点排除故障时……我也曾后悔:为什么博士一年级的时候我没有选择计算生物方向呢?如果当初做出不同的选择,是不是就不会这么心力交瘁,也可以有更光明的未来——比如投入毕业就转码的大潮中,或者更早就乘上计算生物的这股东风,职业发展更加风生水起呢?

邓攀演讲时分享的照片

但现在我不再这么认为了。

首先,受限于我当时的视野与能力,我已经做出了当时最合理的选择。人生没有固定答案,我们也没有办法规划出最优路径。

其次,也许我看上去做了一些“无用功”,但我认真对待过的每一份经历,都会形成我的独特积淀,最终塑造出我的独特人生。

最后,最重要的是,在这个不停尝试和探索的过程中,我找到了自己真正热爱、愿意为之奋斗的领域。

找到自己真正的热爱,勇敢地走下去

科研其实是一件挺痛苦的事情,你太容易感受到失败和挫折。现在大家还一个比着一个的“卷”:今年你发了 5 篇论文,明年我就要发 10 篇,同辈压力令人难以承受。

这个时候,只有找到你自己真正热爱的领域,你才不会轻易被外界的压力裹挟,才能不去追逐热点与 low hanging fruit,而是真正静下心来,去思考、去推敲、去创造一些真正有价值的成果。

而如果你真的找到了自己的真爱,那就勇敢地走下去,不要轻易地放弃。毕竟,坚持和投入才是成功的诀窍。

在我心中,微软亚洲研究院一直是一个学术圣殿。准备面试的时候,我和朋友说:我高考恐怕都没有这么认真过。但当铁岩博士在面试中问我,除了计算生物我还对什么方向感兴趣的时候,我大概给出了一个标准的面试错误答案。我说:如果不是知道微软亚洲研究院在做计算生物,我可能就不投简历了。

在知道自己到底想要什么之后,说话就是这么硬气。

想想我来研究院已经快两年了,感觉我还处在和研究院的“蜜月期”。这里有极大的学术自由,尊重每个人的研究兴趣,还有太多优秀、靠谱的同事,可以进行思维的碰撞与跨领域的交流。虽然做研究依然让我时不时长吁短叹、抓耳挠腮,但我依然感觉这是在做一件让自己快乐的事情,我也总是充满了动力。

最后,用著名英国女作家弗吉尼亚·伍尔夫的一句话作为收尾吧:No need to hurry, no need to sparkle. No need to be anybody but oneself。

科研是一个不停求索的过程,人生也是。希望我今天的分享能够为年轻的大家带来一些帮助与启发。

讲者介绍

邓攀,微软亚洲研究院主管研究员,清华大学生物系学士,康奈尔大学细胞与分子生物学系博士。曾在 Molecular Cell, Cell Research, Seminars in cancer biology, PNAS 等国际学术期刊发表论文。当前研究方向为计算生物学,包括并不限于深度学习在免疫学、基因组学、表观遗传组学和微生物组学中的应用。

标签