写点什么

对自己深度学习方向的论文有 idea,可是工程实践能力跟不上,实验搞不定怎么办?

用户头像
Giant
关注
发布于: 刚刚
对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?

去年五一,我和朋友正在洛阳旅行,本已收到了腾讯公司的 offer,准备假期过后去实习。这时候导师突然来了电话,让我 6 月份回实验室做科研。


一瞬间我觉得自己好悲惨,大厂实习泡汤了,研究生最后一段自由时光也成了泡影。


科研的主题是 Text2SQL,就是把一句话翻译成对应的 SQL 语句。这是我毕业的开题方向,当初对 NLP 这个朝阳领域很感兴趣,有几个不错的 idea。可我也就止步于此,没尝试过代码实现,看的论文不到 10 篇,面临的状况比题主更差。


放弃了实习的念头,我在 6 月底重回实验室后,经历半年多我终于对 Text2SQL 领域有了清晰的认识。完成毕业论文的同时,产出了 paper 和专利,并在 10 月份获得了耶鲁大学 Text2SQL 比赛的全球第二名。

从开始的懵懂、工程能力不足到最终收获了还不错的结果,我对这半年多经历用了 3 个方面来概括:


  1. 阅读领域内近 3-5 年顶会论文

  2. 站在巨人的肩膀上,强化工程能力

  3. 充分利用学校和实验室资源

一、阅读领域内近 3-5 年顶会论文

阅读已有工作是开展科研的必经之路,既是为了站在一个制高点饱览研究领域这块蛋糕,也是为了提升学术嗅觉与 idea 能力。同时,可以避免想出了一个很好的 idea 立即开始复现,结果提交论文时才发现,这个点早就被别人做掉了的极端现象。

高效收集 paper 的 4 个途径:

1)在研究领域的公开赛事或榜单上学习 Top 名次的解决方案(一般都有相应的论文链接)。比如 Text2SQL 领域有:WikiSQLTableQASpiderCoSQL等比赛,里边有大量值得学习的 paper。


2)收集 2-3 篇综述论文。一篇好的综述概括了该领域的整体进展、已有工作以及潜在的研究方向等等,能够给予我们启发,事半功倍。


3)在谷歌学术上通过关键词搜索相关论文。论文质量可以根据引用数量、会议等级来衡量。

点击某一篇文章的“被引用次数”链接,可以跳转进入引用了这篇论文的界面,继续寻找有价值的论文。很多论文其实没有精读的必要,我们在收集了一批论文后,不妨先读读摘要、实验、结论部分,再确定是否需要通篇精读,以提高效率。

当然一些经典的 paper 是一定要看的,比如做 NLP 肯定不能错过 Transformer、BERT 等等。


4)在 Github 上搜索资源整合项目。如果这个领域比较热门或者正处于上升期,一般都会有热心用户分享自己整理的资料。例如,关于 Text2SQL 我已经整理好了一份大礼包,包含了背景、论文、数据集、解决方案、应用案例等内容,帮助感兴趣的小伙伴们节省时间:

https://github.com/yechens/NL2SQL

二、站在巨人的肩膀上,强化工程能力

有了学术积累和 idea 后,就需要快速复现 idea。刚开始我有一个误区:科研一定要从 0 做到 1。


后来导师告诉我大可不必这样。聪明的人会先参考别人的解决方案(特别是 SOTA),在学习过程中强化工程和 coding 水平,形成更优雅的代码风格。这就像站在巨人的肩膀上,我可以基于他们的工作实现自己的想法,即取其精华,去其糟粕。


还是以 Text2SQL 为例。这个任务的数据处理部分特别繁琐,需要同时考虑文本和数据库信息,仅预处理就包含了上千行代码。我参考了 Spider 上的 Top 方案后,发现大家在这部分有很多思路是共通的,完全可以借鉴。这样一来,我可以把更多精力放在模型结构设计和后处理上,这两者对最终结果有关键影响。


如果有同学之前没有接触过神经网络,现在要改实验代码,感觉好难,这就涉及基本功问题了。我们每天需要额外挤时间来补漏洞,提升自己的 coding 能力。


如果喜欢看书,我推荐 Keras 之父的《Python 深度学习》和李沐老师的《动手学深度学习》两本书我都认真看过,非常经典和通俗易懂。

三、充分利用学校和实验室资源

最后一个关键是学会充分利用现有资源,这个资源包括学术资源、人力资源、硬件资源。

学术资源

最直接的学术资源就是实验室的师兄师姐们,还有大 Boss——导师。


师兄中肯定有人发过 paper,无论是写作还是关于编程和技巧,和他们聊过之后都给我带来了启发。导师是我研究领域中的权威人物,可以帮助我把关 idea 是否 work、是否有足够的竞争力,甚至在没有任何思路的时候点醒我,提供有价值的 idea。

人力资源

导师精力有限,往往神龙见首不见尾,不可能顾及所有人,所以带领学弟学妹们的工作一般留给了高年级同学。如果研究的方向他们也感兴趣,大家完全可以一起合作。例如让 coding 能力强的师弟帮忙做一些实验,coding 弱些的同学分析数据和 badcase,便于我迭代模型。不仅让他们有所收获,也帮助我分担了很多工作量,一举多得。


如果能带学弟学妹们投中论文,我想他们一定会从心里发出感激的,没准也更愿意在今后的工作中加上我的名字。

硬件资源

俗话说巧妇难为无米之炊,做科研有了 idea 和 coding 能力,没有机器也还是白搭。所以无论是在实验室还是公司,要善于利用资源。


我在实验室时,老板很慷慨的采购了服务器,还有 Tesla V100 显卡让我们做实验。实验室 24h 可以进出,提供免费饮用水和咖啡。如果做出了成绩(比如会议中稿,比赛拿下 SOTA)会有丰厚的物质奖励。


如果实验室没有这些硬件资源,应该主动和老板沟通,请他帮忙协助解决。

总结

路漫漫其修远兮,吾将上下而求索


做科研是一条艰辛的路,特别是从 0 到 1 的过程。但是通向光明之路,从来没有一帆风顺的选择。


为了避免拖延症和摸鱼,我会给自己罗列各个阶段的 deadline,然后从学术调研、coding 实验、多次迭代方面进行攻坚。如果真的感觉很累,我会停下来离开实验室,去球场和朋友打球;或者跑跑步,呼吸新鲜空气,让自己清醒放松。


最后推荐几个深度学习方向科研工作的神器吧,希望能为同学们的科研道路提供帮助:


arxiv:论文收录网站(防止自己的 idea 被剽窃,完成论文后可以先挂上去,证明原创性);


PaperwithCode:论文和代码的结合工具,包含了很多 NLP、CV 方向的 SOTA 论文和模型实现;


dblp:计算机英文资料收集网站,支持各种字段搜索(会议、作者、时间等);


Connected Paper:论文引用信息可视化工具,分析出文献的前世今生;


NLPIndex:NLP 学术搜索神器,同时链接了 paper、code、graph,是上述上个神器的综合体;


Deepl:翻译神器,特点是地道,更接近真人翻译(略胜于谷歌翻译)


diagrams:画图好帮手,制作高大上的流程图、模型图必备,可以在线导出为 pdf 高清矢量图(放大后图片细节不失真)


Overleaf:使用 LaTeX 进行多人协同编辑平台,包含了大量 LaTeX 插件,编辑功能相当完善;编辑完内容还能实时预览效果。


最近我整理了硕士期间看过的 100 本好书,包含机器学习、深度学习、程序设计、求职面试各个方面。在我的公众号「NLP 情报局」后台回复【书单】即可领取哦!



最后和你正式介绍一下自己哈:


我是叶琛,一个爱旅行,懂养生的算法工程师兼干货答主,也是个喜欢用接地气的文风为年轻朋友分享职场经验和算法知识的人。


总结不易,觉得有帮助请帮我点个赞哟,谢谢你!

发布于: 刚刚阅读数: 2
用户头像

Giant

关注

还未添加个人签名 2021.09.12 加入

还未添加个人简介

评论

发布
暂无评论
对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?