復(fù)盤人生第一次科研經(jīng)歷
去年五一,我正在洛陽(yáng)旅行,本已收到了騰訊公司的offer,準(zhǔn)備假期過后去實(shí)習(xí)。這時(shí)候?qū)熗蝗粊?lái)了電話,讓我6月份回實(shí)驗(yàn)室做科研。
一瞬間我覺得自己好悲慘,大廠實(shí)習(xí)泡湯了,研究生最后一段自由時(shí)光也成了泡影。
科研的主題是Text2SQL,就是把一句話翻譯成對(duì)應(yīng)的SQL語(yǔ)句。這是我畢業(yè)的開題方向,當(dāng)初對(duì)NLP這個(gè)朝陽(yáng)領(lǐng)域很感興趣,有幾個(gè)不錯(cuò)的idea??晌乙簿椭共接诖?,沒嘗試過代碼實(shí)現(xiàn),看的論文不到10篇,處境很尷尬。
放棄了實(shí)習(xí)的念頭,我在6月底重回實(shí)驗(yàn)室后,經(jīng)歷半年多我終于對(duì)Text2SQL領(lǐng)域有了清晰的認(rèn)識(shí)。完成畢業(yè)論文的同時(shí),產(chǎn)出了paper和專利,并在10月份獲得了耶魯大學(xué)Text2SQL比賽的全球第二名。

從開始的懵懂、工程能力不足到最終收獲了還不錯(cuò)的結(jié)果,我對(duì)這半年多經(jīng)歷用了3個(gè)方面來(lái)概括:
1.閱讀領(lǐng)域內(nèi)近3-5年頂會(huì)論文
2.站在巨人的肩膀上,強(qiáng)化工程能力
3.充分利用學(xué)校和實(shí)驗(yàn)室資源
一、閱讀領(lǐng)域內(nèi)近3-5年頂會(huì)論文
閱讀已有工作是開展科研的必經(jīng)之路,既是為了站在一個(gè)制高點(diǎn)飽覽研究領(lǐng)域這塊蛋糕,也是為了提升學(xué)術(shù)嗅覺與idea能力。同時(shí),可以避免想出了一個(gè)很好的idea立即開始復(fù)現(xiàn),結(jié)果提交論文時(shí)才發(fā)現(xiàn),這個(gè)點(diǎn)早就被別人做掉了的極端現(xiàn)象。
高效收集paper的4個(gè)途徑:
1)在研究領(lǐng)域的公開賽事或榜單上學(xué)習(xí)Top名次的解決方案(一般都有相應(yīng)的論文鏈接)。比如Text2SQL領(lǐng)域有:WikiSQL、TableQA、Spider、CoSQL等比賽,里邊有大量值得學(xué)習(xí)的paper。
2)收集2-3篇綜述論文。一篇好的綜述概括了該領(lǐng)域的整體進(jìn)展、已有工作以及潛在的研究方向等等,能夠給予我們啟發(fā),事半功倍。
3)在谷歌學(xué)術(shù)上通過關(guān)鍵詞搜索相關(guān)論文。論文質(zhì)量可以根據(jù)引用數(shù)量、會(huì)議等級(jí)來(lái)衡量。

點(diǎn)擊某一篇文章的“被引用次數(shù)”鏈接,可以跳轉(zhuǎn)進(jìn)入引用了這篇論文的界面,繼續(xù)尋找有價(jià)值的論文。很多論文其實(shí)沒有精讀的必要,我們?cè)谑占艘慌撐暮?,不妨先讀讀摘要、實(shí)驗(yàn)、結(jié)論部分,再確定是否需要通篇精讀,以提高效率。

當(dāng)然一些經(jīng)典的paper是一定要看的,比如做NLP肯定不能錯(cuò)過Transformer、BERT等等。
4)在Github上搜索資源整合項(xiàng)目。如果這個(gè)領(lǐng)域比較熱門或者正處于上升期,一般都會(huì)有熱心用戶分享自己整理的資料。例如,關(guān)于Text2SQL我已經(jīng)整理好了一份大禮包,包含了背景、論文、數(shù)據(jù)集、解決方案、應(yīng)用案例等內(nèi)容,幫助感興趣的小伙伴們節(jié)省時(shí)間:
https://github.com/yechens/NL2SQL
二、站在巨人的肩膀上,強(qiáng)化工程能力
有了學(xué)術(shù)積累和idea后,就需要快速?gòu)?fù)現(xiàn)idea。剛開始我有一個(gè)誤區(qū):科研一定要從0做到1。
后來(lái)導(dǎo)師告訴我大可不必這樣。聰明的人會(huì)先參考別人的解決方案(特別是SOTA),在學(xué)習(xí)過程中強(qiáng)化工程和coding水平,形成更優(yōu)雅的代碼風(fēng)格。這就像站在巨人的肩膀上,我可以基于他們的工作實(shí)現(xiàn)自己的想法,取其精華,去其糟粕。
還是以Text2SQL為例。這個(gè)任務(wù)的數(shù)據(jù)處理部分特別繁瑣,需要同時(shí)考慮文本和數(shù)據(jù)庫(kù)信息,僅預(yù)處理就包含了上千行代碼。我參考了Spider上的Top方案后,發(fā)現(xiàn)大家在這部分有很多思路是共通的,完全可以借鑒。這樣一來(lái),我可以把更多精力放在模型結(jié)構(gòu)設(shè)計(jì)和后處理上,這兩者對(duì)最終結(jié)果有關(guān)鍵影響。
有的同學(xué)表示說,“自己之前沒有太多接觸神經(jīng)網(wǎng)絡(luò),現(xiàn)在要改實(shí)驗(yàn)代碼,覺得好難”,這就涉及基本功問題了。我們每天需要額外擠時(shí)間來(lái)補(bǔ)漏洞,提升自己的coding能力。
如果喜歡看書,我推薦Keras之父的《Python深度學(xué)習(xí)》和李沐老師的《動(dòng)手學(xué)深度學(xué)習(xí)》。兩本書我都認(rèn)真看過,非常經(jīng)典和通俗易懂。
三、充分利用學(xué)校和實(shí)驗(yàn)室資源
最后一個(gè)關(guān)鍵是學(xué)會(huì)充分利用現(xiàn)有資源,這個(gè)資源包括學(xué)術(shù)資源、人力資源、硬件資源。
學(xué)術(shù)資源
最直接的學(xué)術(shù)資源就是實(shí)驗(yàn)室的師兄師姐們,還有大Boss——導(dǎo)師。
師兄中肯定有人發(fā)過paper,無(wú)論是寫作還是關(guān)于編程和技巧,和他們聊過之后都給我?guī)?lái)了啟發(fā)。導(dǎo)師是我研究領(lǐng)域中的權(quán)威人物,可以幫助我把關(guān)idea是否work、是否有足夠的競(jìng)爭(zhēng)力,甚至在沒有任何思路的時(shí)候點(diǎn)醒我,提供有價(jià)值的idea。
人力資源
導(dǎo)師精力有限,往往神龍見首不見尾,不可能顧及所有人,所以帶領(lǐng)學(xué)弟學(xué)妹們的工作一般留給了高年級(jí)同學(xué)。如果研究的方向他們也感興趣,大家完全可以一起合作。例如讓coding能力強(qiáng)的師弟幫忙做一些實(shí)驗(yàn),coding弱些的同學(xué)分析數(shù)據(jù)和badcase,便于我迭代模型。不僅讓他們有所收獲,也幫助我分擔(dān)了很多工作量,一舉多得。
如果能帶學(xué)弟學(xué)妹們投中論文,我想他們一定會(huì)從心里發(fā)出感激的,沒準(zhǔn)也更愿意在今后的工作中加上我的名字。
硬件資源
俗話說巧婦難為無(wú)米之炊,做科研有了idea和coding能力,沒有機(jī)器也還是白搭。所以無(wú)論是在實(shí)驗(yàn)室還是公司,要善于利用資源。
我在實(shí)驗(yàn)室時(shí),老板很慷慨的采購(gòu)了服務(wù)器,還有Tesla V100顯卡讓我們做實(shí)驗(yàn)。實(shí)驗(yàn)室24h可以進(jìn)出,提供免費(fèi)飲用水和咖啡。如果做出了成績(jī)(比如會(huì)議中稿,比賽拿下SOTA)會(huì)有豐厚的物質(zhì)獎(jiǎng)勵(lì)。
如果實(shí)驗(yàn)室沒有這些硬件資源,應(yīng)該主動(dòng)和老板溝通,請(qǐng)他幫忙協(xié)助解決。
總結(jié)
路漫漫其修遠(yuǎn)兮,吾將上下而求索。
做科研是一條艱辛的路,特別是從0到1的過程。但是通向光明之路,從來(lái)沒有一帆風(fēng)順的選擇。
為了避免拖延癥和摸魚,我會(huì)給自己羅列各個(gè)階段的deadline,然后從學(xué)術(shù)調(diào)研、coding實(shí)驗(yàn)、多次迭代方面進(jìn)行攻堅(jiān)。如果真的感覺很累,我會(huì)停下來(lái)離開實(shí)驗(yàn)室,去球場(chǎng)和朋友打球;或者跑跑步,呼吸新鮮空氣,讓自己清醒放松。
最后推薦幾個(gè)深度學(xué)習(xí)方向科研工作的神器吧,希望能為同學(xué)們的科研道路提供幫助:
arxiv:論文收錄網(wǎng)站(防止自己的idea被剽竊,完成論文后可以先掛上去,證明原創(chuàng)性);
PaperwithCode:論文和代碼的結(jié)合工具,包含了很多NLP、CV方向的SOTA論文和模型實(shí)現(xiàn);
dblp:計(jì)算機(jī)英文資料收集網(wǎng)站,支持各種字段搜索(會(huì)議、作者、時(shí)間等);
Connected Paper:論文引用信息可視化工具,分析出文獻(xiàn)的前世今生;
NLPIndex:NLP學(xué)術(shù)搜索神器,同時(shí)鏈接了paper、code、graph,是上述上個(gè)神器的綜合體;
Deepl:翻譯神器,特點(diǎn)是地道,更接近真人翻譯(略勝于谷歌翻譯)
diagrams:畫圖好幫手,制作高大上的流程圖、模型圖必備,可以在線導(dǎo)出為pdf高清矢量圖(放大后圖片細(xì)節(jié)不失真)
我是葉琛,一個(gè)愛旅行,懂養(yǎng)生的算法工程師兼干貨博主,也是個(gè)喜歡用接地氣的文風(fēng)為年輕朋友分享互聯(lián)網(wǎng)經(jīng)驗(yàn)和算法知識(shí)的人。
硬核碼字不易,如果覺得有幫助請(qǐng)一鍵三連或點(diǎn)個(gè)贊喲!

參 考 資 料
[1] https://github.com/yechens/NL2SQL
[2] arxiv: https://arxiv.org/
[3] PaperwithCode:https://paperswithcode.com/
[4] dblp: https://dblp.uni-trier.de/
[5] ConnectedPaper: https://www.connectedpapers.com/
[6] NLPIndex: https://index.quantumstat.com/
[7] deepl: https://www.deepl.com/translator
[8] diagrams: https://app.diagrams.net/
[9] Spider: https://yale-lily.github.io/spider
