CoAI

从高中辍学到获最佳学生论文——清华硕士王义达的非典型AI之路

  • 2020年11月30日 17:32

转载自 AI科技评论,作者 陈大鑫


2020年2月8日,这一天是王义达28岁的生日,作为清华-伯克利深圳学院计算机硕士在读生,彼时的他因为疫情的缘故正在家做两件事情。
一是准备投稿到NLPCC的一篇论文,进展比较顺利;二是做一个解码方法的项目,出了一些BUG,王义达这天改了一天的BUG。
八个月后......
2020年10月8日,十一假期就要结束,王义达第二天还要接着在腾讯微信实习。
正想着明天继续在微信实习的他收到了黄民烈老师发来的微信。
黄老师告诉王义达刚收到邮件通知,他们的论文获得了NLPCC 2020(第9届CCF国际自然语言处理和中文计算会议)最佳学生论文奖!

听到消息那一刻还是很开心的,要感谢黄老师和各位学长等很多人,虽然不是A类会议,但也是一种对我成长的认可。——王义达


3701606728541_.pic_hd.jpg


论文链接:https://arxiv.org/abs/2008.03946
基于Transformer的大规模预训练语言模型极大地促进了开放领域对话的研究进展。然而目前这一技术在中文对话领域并未被广泛应用,主要原因在于目前缺乏大规模高质量的中文对话开源数据。
为了推动中文对话领域的研究,弥补中文对话语料不足这一问题,王义达所在的清华CoAI课题组发布了一个包含1200万对话的大规模中文对话数据集LCCC,并开源了在LCCC上预训练的大规模中文对话生成模型CDial-GPT。
开源链接:https://github.com/thu-coai/CDial-GPT
王义达论文中所提供的数据集LCCC(Large-scale Cleaned Chinese Conversation)主要包含两部分: LCCC-base 和 LCCC-large。
他们设计了一套严格的数据过滤流程来确保该数据集中对话数据的质量。这一数据过滤流程中包括一系列手工规则以及若干基于机器学习算法所构建的分类器。
过滤掉的噪声包括:脏字脏词、特殊字符、颜表情、语法不通的语句、上下文不相关的对话等。
王义达论文中在STC数据集上微调了GPT LCCC-large模型的参数,并使用这一微调后的模型生成了如下对话示例:

3711606728586_.pic.jpg

AI科技评论通过黄民烈老师联系到了王义达同学,想要请他介绍一路以来的学霸经验。
经过一番交流,AI科技评论发现这位28岁AI“少年”的一路成长似乎并不顺利。

他曾高三辍学,后又参加过两次高考,毕业后经历创业失败,之后经过两次考研,最终经调剂考上了清华大学-伯克利深圳学院。


两次高考  | 少年不知愁滋味

第一次高考前辍学打工当服务员很辛苦,虽然做科研也很辛苦,但是热爱可以带来动力。

——王义达

高三那年,因为种种原因,王义达从内蒙古呼伦贝尔市海拉尔第三中学辍学了。
他去了家门口的一个烤串儿店打工,每天的工作是洗碗、点炉子、上菜、打扫卫生,偶尔给顾客烤个串儿,有时会因为上菜慢或者上错菜而被顾客骂。有一次他去拿冰镇啤酒,瓶子因为热胀冷缩炸了,手上破肉见骨,现在还留有疤痕。

由于打工的辛苦,王义达还是听了妈妈话去参加了当年的高考。出分后,他盯着电脑网页上的300多分,心情并没有十分大的波动。半年的时间没有上学,所以他也没期待什么,结果是符合自己预期的。彼时尚未真正面临人生十字路口的王义达颇有种「少年不知愁滋味」的心态。

而在高考后的两个月里,王义达突然意识到自己已经成年,需要为家庭、为未来着想了,同时他觉得自己还年轻,关于未来还有大把的机会。于是当了半年“闲散人员”的王义达决定回学校复读。

复读的一年,王义达在同学家借住。他回忆说道:父母是普通工人,妈妈为了多赚点钱去日夜守锅炉房,我当时也跟着在那里住,但那里环境噪音非常大,面对面说话都要喊着说,我在那里休息不好,睡眠不好,非常影响学习。所以我去了同学家住,同学妈妈做饭非常好吃,叔叔阿姨对我很好,还送我们上下学。

2011年夏,王义达再次参加高考。这一年,分数勉强够得上普通211大学。
然而在当时的环境下,他关于如何填报志愿、如何选择合适的院校和专业的问题并没有足够的信息资源,小地方的信息闭塞和不对称使得他对于“985、211”这些概念不是十分了解,对专业的认识也只局限于作为社会显著共识的热门专业「金融」。
最后,王义达随便报了一个离家近的一本大学:黑龙江大学。当时给他补课的老师建议他学数学,以后也可以考研,于是他进入了黑龙江大学中俄学院的数学与应用数学专业,第二专业应用俄语。
回想当年报志愿时的选择,王义达倒也不觉得有什么遗憾:“那个分数只够上一个末流211学校,我当时还想学金融,显然是录不上211大学的。最后选了数学专业,对现在的AI研究还是有些帮助的,回想起来,感觉一切冥冥中自有天意。”


本科 | 四年蹉跎时光

没什么天分,认知也不够,感觉这四年自己就像一只傻狍子;当时努力奋斗的意愿太弱了,信息闭塞也使我像个无头苍蝇找不到努力的方向。——王义达

因为是在中俄学院,王义达的数学和专业课都是来自俄罗斯新西伯利亚国立大学的老师来教授,教授语言自然是俄语。尽管俄语是必修的语言课,但要完全听懂用俄语教授的常微分课程,对他来说难度是不小的。

对此,王义达自言“没什么天分,没办法,只好放弃了对专业课的学习。”
至于本科所学对以后的科研道路是否有影响,王义达坦言:“我觉得AI所需要的数学基础大部分都来自考研期间的积累,清华科班一路学下来的那批人太厉害了,但是我都不记得我本科学到了什么,会说两句俄语、知道数学分析、线性代数、还有泛函数理逻辑什么的基本概念。
不过,本科的学习经历仍然有些积极影响,这来自他三门主要专业课的数学老师。“数学老师没有看轻我,而是鼓励我学习,让我没有对数学产生厌恶感,以至于后来考研的时候我还挺喜欢数学的。”王义达说。
外语障碍、游戏诱惑、挂科N门,王义达认为自己的本科四年还算快乐,但毕竟是有些遗憾的: “专业课我听着头疼,也不咋爱听,所以四年间也没咋学习,光玩了,当时认知不够。”
直到后来决定考研之前,「认知不够」四个字似乎一直贯穿了他从高中到大学的四五年时光。

3721606729393_.pic_hd.jpg

毕业季照片 左四为王义达


创业 | 一地鸡毛 

我这压根儿算不上什么创业,当时就是小孩子闲着没事瞎胡闹,什么都不懂。——王义达

2014年,王义达经校招去了深圳的诺普信公司工作了两三个月。本来这家公司招他们过去是要去乌克兰做项目,结果当时乌克兰正在打仗,加上公司战略调整,最终没去成。
之后王义达被调到了互联网部门。当时老板投资10个亿要做农业互联网(推销农药),要求员工阅读互联网思维的书、学习中欧商学院的课程。
王义达看了这些书,加上深圳这个充满朝气的国际化大城市带给他的莫名的鼓舞,年轻稚嫩的他就此和朋友一起去搞创业了。

那年,一篇名叫《我为什么辞职去卖肉夹馍》的文章在微信朋友圈疯狂转发,名校毕业的孟兵放弃高薪的IT工作,身份从程序员变为“西少爷肉夹馍”餐饮店的老板,将互联网模式引入了传统餐饮行业,创造出行业爆款。

王义达觉得可以成为「风口上的猪」了,于是打算卖煎饼。
然而他好像把卖煎饼看得太过简单了。“那个摊子就没支起来, 我和朋友研究了下怎么做菜煎饼,当时还买了个炸排骨的设备,为了买排骨秘方,我还坐车去了一个叫梁山的地方,结果去了人家店早就不开了。” 王义达回忆道。

后来听说直播要火,他就又和朋友搭伙转做直播网站。

几个月后网站做出来后,他们联系到人人网一个子公司的总裁,但是人家觉得我们很幼稚,一番折腾下来,到最后,他们赔了一些钱,也散了伙。
后来朋友去了北京的教育机构当老师,而王义达终于沉淀下来了。

失败很多,但是失败有的时候不一定是坏事,如果我卖煎饼成功了,卖的可以养活自己,可能就没有后面读研究生深造的机会了。 ——王义达


考研初战 | 失败与经验并存
直接冲清华,要考就考最好的。——王义达
2015年的冬天格外寒冷,王义达带着20多年的「失败」回到了家里的十八线小城市。他待在家里思考了一个月「人生该往何处去」,最终作出一个后来改变了他人生轨迹的决定:考研 !跨考计算机!
王义达选择了报考清华大学。不过他并非一开始就定了学校,他先复习后报考,报考前几天,他才呆呆地发现不同学校竟然考的不一样,各种计算机学校一大堆,他有选择困难症,看了几个官网就头疼不想看,最后干脆莽了一下报了清华大学。

搏一搏,单车变摩托,最差的结果也是回到现在的境遇,他心想。

至于为何选择报考计算机,王义达谈到:“其实受到之前所谓互联网思维的影响,觉得学计算机和金融很赚钱,而很多互联网大佬都是计算机专业出身,另外当时有看钢铁侠,觉得非常酷,所以就报了计算机。”
为此,考研人王义达做了一些准备:
一是买考研资料
他买了有《数据结构》、《组成原理》、《计算机网络》、《计算机系统》四本408(计算机考研专业课代码)的书,以及永乐大帝的考研数学复习全书。

二是花50块钱买两只猫

王义达在家马路对面的猫贩子那里看到了可爱的小黑和小白,问了价格,感觉还可以,“就像小孩似的兴奋地带回家了,也没问妈妈”。

后来他离开海拉尔的时候把两只猫给了同学养,在人生低谷时期从它们那里得来的温暖陪伴,王义达犹记在心。

3731606733539_.pic_hd.jpg

呼伦贝尔是中国最冷的地方之一,在王义达所在的那个片区,冬天的很多时候都是像电影里的暴风雪那种天气。

在家复习期间,王义达每天晚上都出去跑上几公里,现在的他回想起来,倒十分佩服当年的自己:“很奇怪当时是怎么才有的勇气,换做现在,我可能就无法在那种情况下坚持下来。”
过了4个月,王义达意识到自己复习效率太低,人也变得有些抑郁了,CS的那些知识对于当时的他来说很有难度。于是在16年的春天,王义达回到了度过四年青春的黑龙江大学,在学校附近租了房,每天去图书馆复习。
家里条件一般,租房的费用加上生活费就用掉了父母月收入的一半,所以有一段时间他就每天吃馒头咸菜和炒白菜。
“倒是学会努力了,就比图书馆里的其他同学努力一点点吧。”王义达对那段时间的自己给出了自我肯定。
但这一年,王义达考研失败了。
一部分原因是因为他按照408(计算机考研统考专业课代码)来复习的,在考试前两个月才发现清华大学考的是912(清华计算机考研专业课代码),912号称是国内计算机考研最难。
912和408几乎完全不一样,他每科都出现了大量知识盲点,最后结果出来,专业课终究还是差了16分。


考研再出发 | 终将抵达春天

这次真的是又莽了一次,反正就是想着要考上清华。——王义达
17年春天,王义达考研再次出发:去清华蹭课!
为了能够在北京生存下去,他准备找一份程序员的工作,为此他自学了3个月C++:先是在「学堂在线」上看了郑丽老师和邓俊辉老师的课程,然后自学了某马培训机构的视频课。
之后,王义达就带着2000多块钱就去了北京。很幸运的是,到北京的当天下午,王义达就找到了工作,之后他就开启了边工作边复习的模式。
在北京租房是一笔大开销,好在有本科同学的接济,王义达先在同学公司的库房借住了几周。
之后,王义达在在人大西门附近找了一个1000块月租的隔断房,因为平时伙食上的开支不多,确实撑到了发工资,否则他身上的那些钱在北京连两周都难撑过去。发工资后他就搬到了同事租的次卧。
平时工作不太忙,也不加班,王义达基本上半天就能做完工作任务,剩下半天就用来复习。
他说道:“有一次我写数学题时,猛然发现老板就站在我身后,不过他竟然也没骂我,现在回想起来,很感谢当时老板的宽容。
秋季开课以后,就是一段和学校门卫斗智斗勇的日子了。清华的正门管的很严,王义达就走清华的一个小门“偷偷”地溜进清华的校园去蹭课,当时除了《计算机操作系统》(秋季不开课),每门课他都去旁听了。
蹭课结束后,他就在清华四教或六教自习,但是在四教会多一些。四教经常会有很多清华附中的学生来自习,看着他们朝气蓬勃、意气风发的样子,他有时会很羡慕。另外,他也会羡慕来自习的清华情侣。
为了全身心投入复习,王义达从10月份开始就不工作了。
他说起这段挺有意思的经历:“我没有辞职,而是请假了。是的,考完试我就又回去上班了,老板都忘了我这个人了,但是也没拒绝我回去上班,所以我就感慨自己在有些事情上真的蛮幸运的。”
在考研复习的最后两个多月,王义达心理上开始有些紧张。
“压力很大,很多时候心都静不下来,当时脑子里经常想今年要是再考不上可咋办,来年还要不要三战。”王义达说。

而他当时的一个办法就是练字,来磨练性子缓解内心无声的压力。

3741606733646_.pic_hd.jpg

这一年,王义达的专业课考了近100分,可惜数学不太如人意,因为当时太紧张,监考老师收卷的那一刻他才意识到选择题的答题卡涂串了好多。

最后出分总算高出了校线10分,但是没能够上清华本部的复试线,很伤心,心想今年又浪费了一年。
当时TBSI组织调剂面试,他没自信就不想报了,但是咬着牙报了去面试,心想就当涨涨经验了,万一明年进复试也有个经验。
面试之后没几天,他正在床上玩手机,突然收到邮件被录取了,他猛地坐了起来,然后嘭的一声撞房梁上了,眼前一黑就没意识了......
室友说他嘭一声之后好几秒才醒来,然后王义达就贼高兴,当晚就拉着与他拼房的室友吃起了烧烤。
入学前的算法比赛
研究生入学之前,王义达换了份薪水翻倍的工作。 这份工作也不是特别忙,于是他利用空余时间参加了当年的腾讯广告算法大赛,大概持续两个月,当时没有服务器,他只能用攒下的工资买了一台带1050Ti显卡的游戏本。

因为是第二届比赛,网上只有少量的上届选手经验和kaggle的比赛经验帖。
王义达回忆了那次过程曲折的比赛:
当时我哪懂这些啊,我就一个帖子一个贴子地去查专业名词、算法和代码库,先是用了LightGBM模型,然后用了FFM做融合,各种特征工程的帖子也一顿看,进度慢得跟乌龟一样。
后来到了复赛,数据量徒然增大,游记本完全不够用了。好在有好人相助,当时我帮同参加比赛的一个清华研究生处理了一些模型上的问题(当时他还没论文,现在已经很多篇顶会了),他是一门课的助教,有很多经费,买了一家大厂的服务器资源,就借我用了一下。
我跑了一些神经网络模型,融合后出了不错的结果排名就都高了不少,比赛前我又找到了一个很强的特征,最后排名到了二十几名。
最终官方判结果的时候,中间有些结果不作数了,说是前几名的小号,最终我排到了十几名, 如果有队友的话成绩应该能再好点吧,毕竟我太小白了。”
这次比赛结束后,王义达就开始看吴恩达等大佬的课程视频疯狂补了些基础。


读研 | 守得云开见月明

清华这个新平台让我的视野开阔了很多,让我的机会也多了很多,而最重要的是黄老师等人对我的帮助。——王义达
2018年9月,王义达正式迎来了研究生生活。
王义达是有机会去伯克利学习一年的,但是学费要30-40万左右,看到这个数字后他就压根没再幻想了。
TBSI 是双选形式,老师和学生互选,但是王义达研一整整一年的时间都没有导师。没设备没资源研究工作不好开展,他就只能去应聘大厂的实习,靠着之前的比赛经验和从吴恩达等课程学到的基础知识,他通过了百度NLP的面试。
百度NLP实习
百度NLP在业内属于Top级别的,王义达来到这边做开放域对话,百度的mentor人很好,给他介绍了各种AI顶会以及近期要完成的目标。
王义达之后就着手入门:先是看了一个survey, 然后着手用open-nmt这个库改写一个auto-encoder的seq2seq模型,这个小工作让他花了不少时间,对他来说挺有难度,后来他掌握了之后后面很多工程都用到了这个库。
腾讯AI Lab实习
在百度NLP短暂实习一段时间后王义达又去了腾讯AI Lab,碰巧腾讯AI Lab这边正赶上一位重磅级大佬离职,AI Lab开始向业务转型,他进去先是做了3个月的CS服务器端开发。
后来他又做了3个月的图卷积分布式系统,属于优化分布式存储,一开始用的是tensorflow,后来发现pytorch支持的更好就转到了pytorch......
“这两段国内顶级大厂的实习经历对我的帮助很大,我也算是某种程度上见到了世面。”王义达表示。
终遇黄老师
另一边,学校这边也不能没有导师,王义达有一天加了个微信群,正好看到黄老师在做talk,看到黄老师的分享,通过黄老师的讲解对对话系统有了直观的了解,觉得对话系统很神奇,是未来机器人智能很重要一个环节。
于是他就在对话这个方向上又看了些文献,看了黄老师团队的文章, 好好补了一下这方面的知识,虽然还是欠缺太多基础。但他还是鼓足勇气冒昧的去给黄老师发邮件问能不能跟着做科研。
在一番面试之后终于来到了实验室从数据做起,王义达回忆说:“在面试过程中,黄老师并没有问我太过往的经历,也没有在意我的本科学历等因素,他好像只关心我当下掌握NLP的水平和coding能力,觉得我有些潜力,就收留我了。我内心真的非常感谢,说实话确实对过往不佳的学历和匮乏的学术经历感到心虚,没想到真的那么幸运。
在来到北京之前,黄老师让银河学长带着他协助一个人机对话的比赛,处理了一些数据,跑了一些对话生成的baseline模型评价指标,入门了Transformer、GPT等模型,以及看更多的开放域对话生成的论文。

“但是我好像确实笨,总是慢半拍,直到现在我的写作和PPT才进步了一些。但总归是能力提升上来了,而不是去水文章。最近也是刚刚完成了一篇从调研到设计到完成实验到修改论文,自己撑起来的一篇论文,刚刚投稿到AAAI,感觉还算可以。至于这篇NLPCC最佳学生论文,虽然是我努力去完成的工作,但还是多亏了黄老师的眼光和指导。”


科研体悟 | “学渣”的科研心声

关于科研,其实网上大佬的经验和各种教授的经验更可靠,我这里只从学渣的角度简单说下吧。——王义达
1、要想开始科研,基础肯定要扎实,包括coding、理论等方面。
2、做科研最好有人带,也要做好充分的功课如读survey,前人踩过的坑要尽量避免。
3、做科研不能太急功近利,也不能太久不出成果:熟能生巧,要踏踏实实把一个项目负责完负责好,跑一遍流程,慢慢会成长的。
4、做科研要选好方向:
有的方向杂乱多难,有的落地场景又有限,这样的方向不适合科研小白,失败的可能性大,代价也不见得负担得起。
而如果有一个比较合适的大方向,细分领域的问题也是很值得注意的,有的方向比较火,竞争比较激烈;而有的方向虽然火,但需要设备和资源(如预训练);还有的方向比较新,已有的研究还不多而又很值得,代价也不大(不像弄数据又苦又累要做好久), 出成果的概率就比较高。
5、科研流程要规范:
问题、motivation以及出发点够不够make sense, 这些最好要获得老师和学长的认可才行,作为小白,自己想的很多东西大都比较扯了,不要以为自己很有idea。得到认可之后,就要看看别人的实验是怎么做的solid ,怎么分析insight,如何证明contribution的可靠性和价值。
6、写作、展示、表达很重要:
这个完全是黄老师耐心教出来的,感谢老师,虽然我很抵触、很不喜欢PPT和presentation,但是这点很重要!!!
7、运气、“玄学”、“爱”等:
科研需要实力、意志力也需要运气,同时科研不完全是竞赛,科研是为了解决、贡献、推动一些东西,力量很小也是一块砖,就像大家一起建长城为的是把长城建好,惠及人民,不能完全是比赛找出谁最会建长城,能者多劳一点,小砖小瓦也是贡献。
除了这些运气、努力和意志力之外,我觉得对我而言可能还有一个更重要的因素,那就是我的老娘。她给我从小培养了一种不自知之明”,没有为我的人生设上限。母亲小学没毕业,她很少说「你不能干什么」、「你一定要干什么」。
我印象中她对我说的最多的是「你能行」、「你最棒」,「那有啥不行的,我永远支持你」。

最后,王义达分享了他对自己一路走来的感想:
随着年龄的增长,我看到了社会上存在的很多壁垒、围城和很多不可能。但是母亲给我的成长环境一直让我心中存有希望,让我看到有无限可能,正如科技的进步让这个世界有无限可能。