恭喜你已經(jīng)有了一個(gè)A類別的idea和相應(yīng)的實(shí)現(xiàn)以及數(shù)據(jù),那么接下來就是寫文章的問題了。計(jì)算機(jī)論文寫作還是有一定的規(guī)律可以遵循的。首先,你需要判斷自己的文章是投往哪個(gè)A類期刊或者會(huì)議,是IEEE的還是ACM的。通常IEEE會(huì)議的格式和ACM會(huì)議的文章格式要求有所不同,我建議你在投論文之前先把該會(huì)議的Call For Papers好好研讀一番,弄清楚文章長度,需要使用的Latex或者Word模板以及匿名方式等一系列非技術(shù)性問題,然后再開始寫作。
在寫作之前,先問問自己如果這篇文章寫好以后給整個(gè)領(lǐng)域(community)的貢獻(xiàn)是什么,這實(shí)際上是整個(gè)文章的靈魂,也就是你解決某個(gè)問題(problem)的方案(idea)。想清楚以后把它(們)按照重要性順序?qū)懴聛恚@些就是你在Introduction里面告訴讀者包括審稿人的contributions。貢獻(xiàn)可能是新算法,新架構(gòu),新實(shí)現(xiàn)或者是前人沒有的insights。你在寫contributions的時(shí)候面向的讀者很有可能是自己,所以可能忽略了problem背景和定義,這些就可以慢慢在Introduction里面填充。
這樣Introduction就寫好了,比如說:某某問題是實(shí)際中存在的一個(gè)問題,這個(gè)問題重要性是blah,blah,blah。之前發(fā)表的論文針對(duì)這個(gè)問題提出了三個(gè)有代表性的解決方案(此處引用可能至少三篇論文)。第一個(gè)解決方案甲大概做了一二三,但是沒做四;第二個(gè)解決方案乙做了一四,但是沒做二三;第三個(gè)解決方案丙做了一二三四,但是性能比較差。在這篇文章中,我們提出一個(gè)性能比較好并且同時(shí)做一二三四的解決方案。接下來寫我們這個(gè)解決方案是如何實(shí)現(xiàn)同時(shí)支持一二三四的情況下提升性能的。比如說用了新算法,新架構(gòu)或者新的實(shí)現(xiàn),都可以。講完基本技術(shù)創(chuàng)新點(diǎn)以后就是contributions,把之前想好的貼上去就可以了。最后在Intro里面加上后續(xù)內(nèi)容組織,比如說第二章是相關(guān)工作,第三章是綜述,。。。
一般來說Intro寫完以后會(huì)寫一章相關(guān)工作(Related Work)。從最Related的論文開始寫起,比如說以上提到的三篇。這里需要著重講的是,Related Work不是記流水賬(e.g.,甲用了idea A,乙用了idea B,丙用了idea C),而是要比較這些論文,闡述她們各自的優(yōu)缺點(diǎn)。
Related Work寫完后,你需要寫一個(gè)Overview來總括你的問題和解決方案。我的經(jīng)驗(yàn)是最好想一個(gè)最最簡單的例子(Running Example),然后使用這個(gè)例子引出你要解決的問題。接著再把之前在Intro中提到的現(xiàn)有解決方案挨個(gè)說一遍,并且用那個(gè)案例表明三個(gè)解決方案的不足(這里最好用實(shí)際數(shù)據(jù))。最后把你的解決方案介紹一下,重點(diǎn)是與前人做的相比較。如果你用了一種新的算法,你可以大概提一下這個(gè)算法的思路以及實(shí)驗(yàn)數(shù)據(jù);如果是新架構(gòu),最好放一張架構(gòu)圖上去,然后闡述一下新架構(gòu)的優(yōu)勢(shì)(以及劣勢(shì))。在這一章介紹自己的idea的時(shí)候,你只需要概略描述即可,凡是涉及到技術(shù)細(xì)節(jié)的東西均可以引用后面的章節(jié)來節(jié)省頁面空間。
后面這一章就完全是技術(shù)細(xì)節(jié)了。如果是自己做的的話,這一章是最好寫的,因?yàn)槟阒恍枰裞ode/算法/架構(gòu)在紙上還原出來即可。注意由于頁面限制,一般來說這一章不可能包括所有細(xì)節(jié),按重要性取舍吧。注意有些corner cases,如果很重要的話,千萬別省略。技術(shù)細(xì)節(jié)講完了,如果頁面允許,你還可以大致講一講你的實(shí)現(xiàn)情況。比如說新的系統(tǒng)是在Linux上實(shí)現(xiàn)的,新加了20000行C代碼,1500行Python以及300行Bash script。C代碼主要干什么,Python主要干什么以及Bash script干什么,最好能與技術(shù)細(xì)節(jié)里面所講的呼應(yīng)。自然地,技術(shù)細(xì)節(jié)和實(shí)現(xiàn)講完了就該講你是如何用實(shí)驗(yàn)驗(yàn)證你的解決方案支持你的contributions啦。根據(jù)上面的例子,你需要寫的是如何從實(shí)驗(yàn)數(shù)據(jù)中展示你的解決方案支持一二三四并且性能不錯(cuò)。支持一二三四這種是或否的問題比較容易說,但是性能不錯(cuò)就需要和前人作品做大量比較了。柱狀圖,折線圖,表格等等數(shù)據(jù)展示手段,只要能說明問題都可以采用。這里需要注意的是,只要你寫在論文里面的文字或者是圖表,你都要想清楚背后的原因,最好能在論文里做充分的解釋。比方說,你采用了新的算法,性能見表1,原因是復(fù)雜度降低了;你采用了新架構(gòu),性能提升見圖3,原因是新架構(gòu)節(jié)省了內(nèi)存拷貝。通常來說,新算法或者架構(gòu)會(huì)總體上提升性能,但也可能會(huì)有異常情況,即新方案比不過老方案的地方。這時(shí)需要格外注意,因?yàn)檫@是你的weaknesses,你需要用令人信服的說法向讀者展示這些異常情況存在的可能性較低,或者可以通過某種簡單方式避免。如果寫到這里你還有充足頁面可用,你可以試圖寫一個(gè)discussion章節(jié)來討論你的方案的缺點(diǎn),以及未來有可能的改進(jìn)情況。不要怕展示缺點(diǎn),你越誠懇審稿人對(duì)你印象越好。如果你是故意遺漏新方法的一個(gè)很顯然的缺點(diǎn),這會(huì)給審稿人非常不好的印象。你也可以提一些你的方案的其他應(yīng)用等等。最后就是結(jié)論啦,用一兩個(gè)段落概括一下解決的問題,解決思路以及貢獻(xiàn)就可以了,比較好寫。如果你需要寫一些附錄,比如說文章里有幾個(gè)定理沒有給出證明,那可以在后面的Appendix章節(jié)中加入。通常Appendix審稿人不太會(huì)讀。我還有一些小建議,希望能對(duì)你有所幫助:
1. 找到會(huì)議程序委員會(huì)(Program Committee,也就是審稿人)的頁面,然后看看哪些審稿人做得和你做的相關(guān)。如果有的話你應(yīng)該在Related Work中引用他們的作品,因?yàn)榇蠹叶枷M约旱恼撐谋粍e人引用。不要怕有禮貌得指出他們的論文缺點(diǎn),如果你說得對(duì),審稿人看到會(huì)很高興的。2. 論文提交前用你能找到的任何有效的書寫檢查軟件檢查一下拼寫錯(cuò)誤或者簡單的語法錯(cuò)誤,我知道有些審稿人會(huì)對(duì)這種小問題過敏,如果一篇論文中此類錯(cuò)誤過多可能會(huì)導(dǎo)致直接悲劇。有條件的話,找一個(gè)英語為母語的人幫你最后把把關(guān)。這里我推薦你如果可能的話找一個(gè)美國教授合作寫論文,可以節(jié)省很多時(shí)間。
3. 如果你之前沒中過2-tier或者3-tier的期刊或者會(huì)議,那么可以先從這些著手,慢慢鍛煉。
我18年博士畢業(yè)之后去互聯(lián)網(wǎng)公司做碼農(nóng),和題目下面的老師們肯定沒得比。我paper寫的算不上好,但是主筆過幾篇architecture & system (MICRO/HPCA/VLDB/TCAD)的論文,算上有些經(jīng)驗(yàn)。下面是我的google scholar截圖,證明我確實(shí)可以回答這個(gè)問題。首先你要搞明白一個(gè)事實(shí),對(duì)于絕大多數(shù)計(jì)算機(jī)的方向,會(huì)議比論文重要。大部分的重要研究成果都是發(fā)表在會(huì)議上,會(huì)議的難度也比期刊高很多,而且research community的人基本都會(huì)看會(huì)議,看期刊文章比較少。一般期刊允許已經(jīng)發(fā)表在會(huì)議上的論文、再加30%的內(nèi)容就可以去投期刊了,這一點(diǎn)可以在各個(gè)期刊的主頁上看到。而如何界定“30%”,花樣就很多了。我個(gè)人的經(jīng)驗(yàn)是這“30%“對(duì)質(zhì)量的要求不高,不信你可以看看我之前發(fā)過的期刊,然后再對(duì)比下之前的會(huì)議文章就知道了。因?yàn)閲鴥?nèi)很多地方在評(píng)職稱、評(píng)獎(jiǎng)項(xiàng)的時(shí)候很重視期刊,因此發(fā)完會(huì)議文章之后再水篇期刊是很劃算的。然后寫paper要從戰(zhàn)略上藐視敵人。十年前我剛讀本科的時(shí)候,學(xué)校里面哪個(gè)老師發(fā)個(gè)好點(diǎn)的會(huì)議,都能成為新聞?,F(xiàn)在在CCF-A類會(huì)議上已經(jīng)可以經(jīng)常見到國內(nèi)的本科生了。難道這十年大家的科研水平突飛猛進(jìn)了嗎?大家的智商突飛猛進(jìn)了嗎?大家的英語突飛猛進(jìn)了嗎?沒有!只是因?yàn)檫@幾年國內(nèi)高校挖了很多海歸,以及國內(nèi)國外的交流越來越多,大家開始學(xué)習(xí)國外寫paper的方式以及做research的方式,當(dāng)然也學(xué)到了很多騷套路。所以,不要覺得寫paper是已經(jīng)很難的事情。
還要搞明白一個(gè)問題,發(fā)paper不是為了顯得誰厲害,而是大家把研究成果貢獻(xiàn)出來分享給社區(qū)。因此,你不能只是去吹你的成果多厲害,而是要把背后你要解決什么問題、這個(gè)問題有哪些難點(diǎn)、你是怎么解決的、你的方法的核心點(diǎn)在哪里,都要說清楚(而且還要讓人看得懂),最后的實(shí)驗(yàn)來給出更為詳實(shí)的證據(jù),加深大家的理解。別人讀完你的論文,對(duì)某個(gè)領(lǐng)域有了新的理解、學(xué)到了新的知識(shí)或者解決問題的方法。想明白這個(gè)設(shè)定,你已經(jīng)在學(xué)會(huì)寫論文的路上邁出了堅(jiān)實(shí)的一大步。下面進(jìn)入正題。
第一點(diǎn):你要學(xué)會(huì)構(gòu)思一篇論文的結(jié)構(gòu),有了結(jié)構(gòu)之后再去填內(nèi)容。 結(jié)構(gòu)是一篇論文的靈魂!論文不是流水賬,也不是秀肌肉,而是一篇結(jié)構(gòu)清晰、內(nèi)容詳實(shí)、證據(jù)充足的推理文章。結(jié)構(gòu)不清晰直接就GG了。一篇論文由摘要、Introduction、正文三部分組成。個(gè)人經(jīng)驗(yàn)摘要不太重要。Introduction是需要介紹整篇論文的框架。然后正文由幾章組成,按照順序依次介紹Introduction中的每個(gè)環(huán)節(jié)。論文的框架,就是將何種背景、如何發(fā)現(xiàn)問題、分析問題、解決問題、做出貢獻(xiàn)的,下圖展示了論文框架的五個(gè)部分。
背景介紹部分是introduction里最簡單的部分了,就是介紹下這個(gè)話題的一些背景知識(shí),,只要不是抄來的就行。問題介紹部分,就是要在一個(gè)大背景之下,限定這篇論文要解決的問題,并且說明這個(gè)問題的重要性,可能需要放一些自己的實(shí)驗(yàn)數(shù)據(jù)或者引用別人的論文作為佐證。一般來說,背景介紹、問題介紹部分不會(huì)有太多技術(shù)含量很高、原創(chuàng)性強(qiáng)的東西。接下來問題剖析部分,就要開始有很多你自己的東西了。比如你發(fā)明了A方法解決B問題。如果B問題是已知的問題, 你就要解釋為什么現(xiàn)在的解決方案都不好或者為什么還沒有解決方案。如果B問題是未知問題、你自己發(fā)現(xiàn)的新問題,那么你就要解釋這個(gè)問題有多重要。這一階段,你并沒有提出任何解決方案,但是一定要有自己對(duì)問題的insight。注意這個(gè)詞,insight! 如果你被拒稿多次,你一定被審稿人批判過沒有insight。對(duì)要解決的問題有深刻的認(rèn)知并且有自己獨(dú)特的見解,是一篇論文的基本要求,有時(shí)候指出問題比解決問題還要重要。解決方案就是對(duì)自己的解決問題的方法的一個(gè)簡介,這個(gè)階段也需要一些原創(chuàng)性。比如自己提出了那些原創(chuàng)性的方法、或者引入了別人沒引入的技術(shù),都算你原創(chuàng)。最后是核心貢獻(xiàn),核心貢獻(xiàn)其實(shí)就是對(duì)你的問題剖析、解決方案的提煉,一般是3-4點(diǎn),比如你指出了某個(gè)別人沒指出的問題、你提出了別人沒提出過的新方法、你的方法效果有多好等等等。框架的構(gòu)思, 注意十二個(gè)字: 環(huán)環(huán)相扣、步步堅(jiān)實(shí)、邏輯嚴(yán)密。上面我講的5步,必須每一步是環(huán)環(huán)相扣的,前有伏筆、后有填坑。比如在問題介紹部分,你指出某個(gè)領(lǐng)域有A、B、C三個(gè)重要問題,但是你后文只打算解決問題A,那么在問題介紹部分你就需要解釋為什么不解決B、C。如果你有證據(jù)證明B和C不太重要,是可以的?;蛘呓鉀Q問題A的貢獻(xiàn)足夠構(gòu)成一篇論文,那么你可以明確表示本文只解決A,B/C以后再說。反正就是不要前面挖了坑,后面不填,要不然你連基本的論文寫作標(biāo)準(zhǔn)都達(dá)不到,很可能直接就GG了。還有就是必須要保證每一步的證明都是能說服審稿人的。比如問題介紹階段,你一定要讓審稿人相信你要解決的問題是很重要的(雖然實(shí)際上可能沒有用),旁證左引、引經(jīng)據(jù)典。比如問題剖析階段,一定讓審稿人覺得聽完你分析,好像非常有道理、好像對(duì)這個(gè)問題有了新的認(rèn)識(shí)??傊褪且徊教た眨瑢徃迦丝赡芫筒淮蛩憷^續(xù)看了。邏輯嚴(yán)密就不多說了,每一環(huán)之間都要是自然的遞進(jìn)關(guān)系,不要強(qiáng)行扯上關(guān)系。寫論文的時(shí)候,我和其他作者的討論,大部分都是在討論整個(gè)框架的推理過程夠不夠有說服力。第二點(diǎn),學(xué)會(huì)寫每一章。從第二章開始,每一章都是更為詳細(xì)的解釋introduction中的內(nèi)容。已我自己寫論文的經(jīng)驗(yàn),第二章可以是背景介紹,把Introduction中的問題介紹和問題剖析更為詳細(xì)的展示出來,該引用論文就引用、該放實(shí)驗(yàn)結(jié)果就放實(shí)驗(yàn)結(jié)果。如果太長可以拆成兩章,總之要把問題的重要性、你的分析、你的insight、你對(duì)前人論文的不足之處的解釋都寫清楚。第三章可以是一個(gè)解決方案的概述。然后可以把解決方案分成兩章分別介紹(第四章、第五章)。第六章講實(shí)驗(yàn),一般是1-2個(gè)大實(shí)驗(yàn)讓審稿人相信你的方案確實(shí)可以,然后3-4個(gè)小實(shí)驗(yàn)作為佐證或者分析一下分支問題。注意!這里每個(gè)實(shí)驗(yàn)也都是和前面的問題分析、提出的解決方案要對(duì)應(yīng)起來的,前面有鋪墊、后面要填坑!論文中的每一段都要師出有名!第七章介紹下related work,第八章再總結(jié)一下。關(guān)于Related work,在我自己的寫作風(fēng)格里,不是特別重要。因?yàn)樵趩栴}的分析階段,我肯定是要把非常相關(guān)的前人的論文并且逐一批判的,一般五六篇到十來篇吧。一般是把一些不是特別相關(guān)的論文放到related work里面再分類討論下,不會(huì)對(duì)整篇文章的邏輯構(gòu)成很大的影響第三點(diǎn),多看論文,總結(jié)經(jīng)驗(yàn)。寫論文一定要多看別人的論文、多反思自己的論文。看的時(shí)候要帶著思考,想想別人為什么這么寫、想想審稿人為什么拒絕你。比如,有些會(huì)議喜歡在introduction中放大量的實(shí)驗(yàn),把核心內(nèi)容都講清楚,光intro都有兩頁紙,有些回憶則是點(diǎn)到為止,具體的證據(jù)可以后面放,這都是要通過總結(jié)經(jīng)驗(yàn)才能發(fā)現(xiàn)的。比如,我投稿被批過論文僅僅是實(shí)現(xiàn)了一些算法、只是engineering 沒有學(xué)術(shù)貢獻(xiàn),為了解決這個(gè)問題,我學(xué)會(huì)了在問題分析階段,把自己要解決的每個(gè)具體問題升華成一類問題,證明我的解決方案對(duì)于很多重要問題都是有非常大的價(jià)值的,而且我發(fā)現(xiàn)我最擅長的就是把某個(gè)dirty work描述的好像很有理論價(jià)值。另外有一個(gè)經(jīng)驗(yàn)就是,不要高估審稿人的耐心值,也不要讓審稿人幫你總結(jié)contribution。一篇computer architecture論文長達(dá)12-14頁,即使是大概看一遍也要兩三個(gè)小時(shí)。好的會(huì)議錄用率可能只有20%,也就是說審稿人花10個(gè)小時(shí)才能看到一篇比較好的文章。審稿人(實(shí)際上是他學(xué)生在看)又都很忙,不會(huì)真的花兩三個(gè)小時(shí)去看一篇垃圾論文的。所以,寫論文要學(xué)會(huì)總結(jié)。我比較喜歡在每一章的開頭處用3-4句話總結(jié)這一章要說什么、把我的核心contribution列出來。對(duì)于每一章的每一段,都在開頭或者結(jié)尾點(diǎn)下題。這樣的話,審稿人只需要花很少的時(shí)間,就能知道我要表達(dá)什么,極大地減輕了審稿人的負(fù)擔(dān)。如果他對(duì)這一章很感興趣,可以仔細(xì)看看,不感興趣的話直接略過也沒關(guān)系,反正get到我的點(diǎn)了。這樣審稿人既可以了解到你的核心貢獻(xiàn),也可以更快的讀完你的論文。最后,你花了10分鐘看完這篇文章,但是什么長進(jìn)也沒有。因?yàn)閷懻撐恼娴氖且患苄量嗟氖虑?,里面的很多思想、很多?xì)節(jié)都是需要大量的練習(xí)和經(jīng)驗(yàn)的積累的,而且我沒見過有誰無師自通。比如最近在公司參與一些system論文的寫作,通常是一個(gè)有經(jīng)驗(yàn)的作者負(fù)責(zé)主筆,3-4個(gè)有經(jīng)驗(yàn)的人深度參與(每個(gè)人20小時(shí)以上),貢獻(xiàn)自己的意見,最終才能完成一篇高質(zhì)量的論文。所以學(xué)寫論文最好的方法,是找個(gè)人帶你寫,比如導(dǎo)師、實(shí)習(xí)的mentor、大師兄之類的。如果你是個(gè)苦于不知道怎么寫論文的博士,很可能說明你現(xiàn)在的環(huán)境,沒有人能夠教你寫,想辦法換個(gè)環(huán)境吧,比如來我們組實(shí)習(xí)。作為一個(gè)被拒稿幾十次,有著豐富被虐經(jīng)驗(yàn)的科研工作者,我對(duì)這個(gè)問題非常感興趣,也來湊湊熱鬧說說我的體會(huì)吧。從我博一開始,就被導(dǎo)師忽悠著投ieee tit,從博一到博五一共被tit拒過六次,其中有五次是直接拒,說我做的東西太差。印象最深的是有一一位以色列副主編直接說我做的東西也就是碩士生的水平,還有一位香農(nóng)獎(jiǎng)副主編說我做的東西是在毀了這個(gè)學(xué)科。所以這里我想說的第一個(gè)準(zhǔn)則就是,想中最高水平的trans,文章里的干貨是最重要的前提。干貨不行,大羅金仙也救不了你的文章。文章的干貨包含三種,第一種是針對(duì)一類新問題提出了一種新穎的解決問題的方法,并用此新方法得到了該新問題一個(gè)好的結(jié)果,這是最頂級(jí)的干貨,也是學(xué)術(shù)界頂級(jí)大佬的成名作中最常見的成果。第二種是方法并沒有創(chuàng)新,無非是把前人的若干方法結(jié)合了起來,然后解決了一系列問題,并得到了較好的結(jié)果。這種類型的干貨也是目前絕大多數(shù)trans論文中的成果。第三種是針對(duì)一個(gè)沒有解決的ooen problem,提出了新的方法把該問題向前推進(jìn)了一步,這種類型的干貨也是非常棒的,足以在任何檔次的trans上發(fā)表。
在我看來,一般的博士生不太可能有第一種干貨和第三種干貨 ,都是集中在第二種干貨。但是只要好好寫,第二種干貨足以在絕大多數(shù)trans上發(fā)表了,如果想在最頂級(jí)的期刊上發(fā)表,則需要在工作的系統(tǒng)性上下功夫,即把所有這類問題全部做完。另外,還需要得到大牛的支持和掛名。
說到論文寫作上,我認(rèn)為越好的trans越注重干貨,越差的trans越注重語言問題,這是由于頂尖trans的審稿人都非常了解論文的工作,能看穿論文的本質(zhì),而差些的trans的審稿人很多都不是所評(píng)審論文的小同行,不能看穿論文本質(zhì),故只能拿語言說事了。
若覺得還不錯(cuò)的話,請(qǐng)點(diǎn)個(gè) “贊” 或 “在看” 吧