如何寫一篇好論文
在之前幾個月做實驗寫論文的過程中,積累了一些關于怎樣寫出一篇好論文的想法,不總結一下,過段時間大概就忘了,遂總結成此文。
本文分 7 章,前 6 章寫對于好論文的寫作來說很重要的六個方面:審美、邏輯、包裝、信息來源、工具和折騰,最后一章是后記。
需要說明的是,這篇文章的題目是『如何寫一篇好論文』而不是『如何寫好一篇論文』。這是因為本文所講的六個方面更像元方法(meta methodology),即不是寫論文的具體步驟,而是論文寫作的指導思想(-_-|...)。這些元方法除可用在論文寫作上,還可用于選方向、找 idea、想算法、做實驗、做展示等方面,從而寫出一篇好論文。不過,因為其他幾個步驟過于龐雜,所以本文僅從論文寫作方面切入來闡述這些元方法。
再需要說明的是,我是計算機專業的,所以以下內容都是根據自己在本專業學習的經驗所寫,不一定適用于其他專業 (但大概思想應該也是相通的吧)。
1. 審美
要做出好的東西并寫出一篇好論文,必須要知道什么是『好』,這也就是審美,或者說品味。
審美不到位,就會造成自己覺得做得挺好,但在導師和審稿人看來還差得遠的情況;審美如果有偏差,也就是和學術人應有的審美不相符,那么做得越多,在審稿人看來就越不符合要求。
一般的學術研究過程中,學生將初稿寫出來之后,要交給導師審查,然后學生修改,如此反復多次,這個過程實際就是導師以自己的審美糾正學生審美的過程。同理,審稿人審稿也就是審稿人以自己的審美糾正投稿作者的審美的過程。由此,寫過多次論文的學生才知道什么是好論文,以及怎么寫出好論文。
但以上過程是由外界糾正的,每寫一篇論文要半年左右,那么每糾正一個問題要半年左右,對于研究生來說,可用的時間不過一兩年,由外界糾正來提高是不現實的。所以自發的審美培養就顯得尤為重要。
所以端正審美,把自己的審美和審稿人的審美看齊,并提高自己審美的標準,對于要盡快出論文的研究生,就顯得很必要了。
當然這里不是說審稿人的審美就一定正確,不同的審稿人有不同的喜好,有些不喜歡復雜的方法,不喜歡拼接模型的方法,有些可能認為只要能work就無可厚非。但總體來說,審稿人們基本的審美觀應該都是差不多的。
對于學術審美來說,以下幾個問題很關鍵:
- 什么是好的問題?
- 什么是好的算法/idea?
- 什么是好的工具/workflow?
- 什么是好的論文?
- 什么是好的表述?
個人對于以上幾個問題的回答如下:
- 什么是好的問題?個人認為沒有定論,不過我比較喜歡 big clean problem,一般這類問題也是領域內比較基礎的問題,但我的能力一般解決不了。。。
- 什么是好的算法/idea?個人比較喜歡有創新性的且具有 simple, general, natural and elegant 特點的算法或 idea。也就是說我不太喜歡復雜的方法,不喜歡 ad-hoc 的方法 (事實上 ad-hoc 的方法一般也都很復雜),不喜歡不夠自然的方法,不喜歡 dirty 的方法(但對于現實數據來說,不dirty的方法好像也不現實?)。這里要說一下『自然』的含義,我的理解是,一個方法,如果你在了解了它的過程之后,不禁發出類似于“這個問題就該這么解決''的感嘆,那么它就是自然的,也就是這個方法的每一步——從 motivation 到具體步驟——在你看來都是水到渠成的,那么它就是自然的。當然,以上幾個特點不太可能同時具備。另,寫這篇文章時搜到了What Is Elegance in Science? - The New Yorker,感覺寫得挺好。或許也可以看看《Elegance and empiricism》。
- 什么是好的工具/workflow?個人比較喜歡簡單專一的工具,即這個領域的問題它很專業,專業到全能,但這個領域之外的問題,它絕不涉及。最好短小精悍。另,個人用的一些工具見第 5 章。
- 什么是好的論文?自然,好的論文首先要有干貨,即確實提出了新東西,提出了好算法。另外,個人認為好的論文必須有邏輯,即講清楚問題的來龍去脈,講清楚自己方法的 motivation,講清楚方法的主體框架,另外,實驗要全面真實,即實驗不能 ad-hoc。其中關于邏輯的部分見第 2 章。除此之外,好的論文必然從外表看也是好論文,即從排版到圖表,都顯得工整、標準、堅實。這部分見第 3 章。
- 什么是好的表述/表現方式?個人認為好的表述/表現方式應當簡單直接明了有邏輯,盡量方便高效。不要有復雜的句式,不要有奇怪少見的單詞,不要有華麗的修飾,不要有春秋筆法,不要繞來繞去。把想說的問題表述清楚,每一句話都有邏輯來源,即不要有某一句話讓人不知道為什么放在這,這樣就可以了。這部分見第 2 章。
端正了審美之后,審美還有高度的問題。雖然對于審美有沒有高低這個問題,不同的人有不同的看法,但在學術審美上,基本的審美還是有區分的,比如一般來說,有邏輯的論文就是比沒有邏輯的論文好。在審美方向沒問題時,審美高度不夠,就造成沒有品位的問題。即自己覺得做得不錯了,但在別人看來還差得遠還有很多不足。而且因為自己覺得做得不錯了,也就不知道怎么提高。
審美高度的培養應該不太容易短期見效果,需要見到足夠多好東西且自身能力足夠才行。好比對于名畫,要區分名畫們各好在哪,各有什么缺憾,讓美術生來說肯定比普通人要有見解。而除見得多之外,還要自身能力夠強,好比讓杰出畫家來看,肯定比美術生更有真知灼見。
2. 邏輯
寫論文,邏輯是最重要的,邏輯必須從有 motivation 開始到投稿結束貫穿始終,即想法要有邏輯,算法要有邏輯,實驗設計要有邏輯,實驗分析要有邏輯,論文行文要有邏輯,文字表述也要有邏輯。
那么邏輯是什么,怎么理解『邏輯』二字?對于學術和論文來說,這里的邏輯,只是強調前因后果,來龍去脈,有依憑,講得通 (即『make sense』)。
具體來說,算法要有邏輯,就是當別人問你“你的算法為什么行得通''或“你的算法是怎么工作的''或“你的算法比已有方法強在哪,為什么''時,你必須能講得出所以然。要注意的是,你不能用步驟來解釋原因,即你不能說因為我怎么怎么做,所以就怎么怎么樣,而是必須再往深層挖掘。你對這些問題挖掘得越深,對自己的算法理解也就越深 (自己想出的算法自己真的并不一定能透徹地理解),寫出的論文也越有邏輯。
接著說論文行文要有邏輯。常見到說論文要講好故事,既然是講故事,那么故事的起因、發展、結果都要講清楚。起因就是你研究的是什么問題,這個問題是怎么來的,研究這個問題有什么用。發展就是這個問題別人研究到什么程度了,出現了什么問題,你提出了什么方法來解決這些問題,你的方法為什么能解決這些問題,又是怎么解決的,具體過程是什么。結果就是你做了什么實驗來證明你的方法解決了問題,這些實驗全面嗎,可靠嗎,你怎么論證你的實驗結果。把這些事情交代清楚,故事框架才算完滿,審稿人也不會讀得一頭霧水。
但僅僅交代了這些事情只是完成基本要求。故事要講得好,首先要找好角度,找好切入點,即你從哪個角度來說明你的算法,你要側重體現你算法的哪個方面,怎么定位你的算法。審稿人肯定沒精力和心情去分析你的算法好在哪,哪個地方是你算法的核心,哪個地方是你算法的主要創新,這些問題都必須你告訴他。而且你也不能說自己的算法好在很多個地方,審稿人沒心情關注這么多東西,所以你必須抽出最重要的一兩點,從這個角度來說明你的算法,這就是你論文的切入點。可以假想你的算法就是一個三維建筑,從某個角度看這個建筑時,這個建筑最宏偉最漂亮,那么這個角度就是切入點。
找好角度以后,就是布局。即如果把整篇論文劃分為多個部分,把你要說的所有內容劃分為多個部分,把你的算法劃分為多個部分,那么如何循序漸進地把整個故事講完,怎么講比較清晰,比較容易讓人懂,每個部分講什么內容,講多少,講到什么程度,在這個位置是宏觀概括算法思想還是講一點細節,在這里要不要放張圖,這張圖應該是什么內容,讀者看完這張圖應該能理解到什么,我要不要舉個例子把整篇論文串起來,這個例子在哪里引入,這個例子在圖例里要怎么表現。諸如此類的問題在寫之前要想好,在寫的過程中行文布局也還要不斷調整。
布局好之后,就是具體遣詞造句了,也就是表述。表述一要注意邏輯,二要簡單。邏輯就是要有上下文,即你寫的每一段,每一句,乃至每一個詞都要有上下文,不能出現兩段話之間沒有邏輯關系,讓人不知道你為什么突然要在這里說這個。思維或許可以跳躍,但是行文絕對不能跳躍,所有文字都要由因果、轉折等關系串聯起來。簡單即句式要簡單,學術論文不喜歡華麗的句式,也不喜歡過長的句子以及過多的從句。
一篇有邏輯的論文,讀者讀完后會覺得思維很清晰,覺得你說的有道理,知道你為什么這么做,也知道每一步發生了什么,也覺得整個過程符合直覺 (不符合直覺的地方也被你說服了),整個過程很自然,讓他來做他也會這么做。
一篇有邏輯的論文應該可以很容易地提綱挈領,找到整篇論文的邏輯脈絡,進而畫一幅思維導圖出來。甚至可以說有邏輯的文本就應該可以組織成由樹形結構和線形結構構成的連通圖,思維導圖自然是這類連通圖的一種特殊形式。其中樹形結構可以理解為包含關系,線形結構可以理解為因果關系,連通圖即是說沒有任何一個論點是憑空提出的。實踐上,或許可以找一篇自己覺得邏輯比較好的頂會論文,讀完之后嘗試把它的邏輯脈絡用思維導圖畫出來,以此體會論文邏輯應該怎么寫(我還沒有實踐過...)。事實上,最好這幅圖能覆蓋到每一句話,也即每一句話都能用邏輯串聯到這幅思維導圖里。
3. 包裝
一個會議收到上千篇論文,編輯怎么知道他要把哪些送去 review 而把其他的拒掉,而如果遇到幾篇差不多水平的論文,他又怎么確定要留下哪一篇。這時候,一篇論文的包裝往往就很重要了。編輯希望自己的期刊逼格高一點,所以他會盡量選擇包裝好的論文 (這一段是在第一次寫學術論文無從下手怎么辦? - 李晨的回答 - 知乎上看到的,雖然答主是學材料的,但這個觀點還是可以借鑒的)。
這似乎是個偏見,但偏見又是必然存在的,要發論文也就只能暫時屈從于這個偏見 (《Deep Paper Gestalt》似乎說明人工審稿確實更青睞顏值高及以特定方式排版的論文? )。而從另一個角度來說,排版和外形都不過關的論文,其作者能力應該也沒有多強,那么一般也做不出特別好的東西。
那么怎么包裝自己的論文呢?首先,排版要過關,圖表要過關,絕不能讓人一看你的論文就覺得是三流論文,這部分主要靠工具和審美。選對工具,審美又好,則排版自然不錯,圖表也美觀,甚至配色也比別人好看。
對于審美的問題,看幾十篇頂會論文也就知道頂會審美是什么樣的了。
看的時候主要是看頂會大佬的論文都是怎么排版的,各段大概多長,圖表放置在哪,是什么風格,圖表大概復雜到什么程度。看十幾二十篇之后,大概就能有個印象。另,對于圖表還可以注意圖的大小,對齊情況,字體大小,占的版面大小,線條粗細、配色風格等。
對于工具的問題,多試幾個不同的工具,找一個上手不難,用得順手,操作方便,功能強大,出來的效果又比較不錯的。在這個過程中,不免要多搜索多折騰,但磨刀不誤砍柴工,折騰一下比費很大勁畫出一張很糟糕的圖還是值得的。
除了外表顏值外,內容的包裝也很重要。內容的包裝體現在兩方面,一是論文是否有真東西,沒有真東西而只顧逼格就是灌水了,但這部分是寫論文之前的事情,不是本文討論的主題。二是論文文本的包裝,即論文講故事的方式和表述如何。以小說來說,即情節如何,文筆如何。這部分我覺得那篇知乎回答已經說得很好了。論文文本里,最重要的就是 abstract,introduction 和第一張圖(似乎還有 conclusion),大多數人讀論文時都先關注這三部分,最多再多看一眼實驗部分。原回答里對于如何寫好這部分也做了論述,而且該問題下的其他回答也有不少關于這部分的內容。
除講故事的方式外,論文的深度也需要包裝,同樣的研究問題,同樣的算法,甚至同樣的實驗結果,給大佬和菜鳥寫,寫出的深度是不一樣的。大佬所知較廣,且有較完善系統的知識體系,就能對問題、算法、實驗結果進行更好的形式化和擴展,寫出的論文自然看起來系統、深刻、高大上。菜鳥所知較少,抽象和歸納能力也不足,寫出的論文看起來就比較瑣碎,也很難與已有成果相聯系,最后可能盡管工作不錯,但看起來motivation不足,insight也不夠,工作也不夠系統。要解決這個問題也只有多看其他經典的文章,更多地接觸相關的領域,同時多從不同角度審視自己的研究問題、算法和實驗結果,以期能得到更深刻的理解,才能寫出深刻的論文。
學習對內容的包裝可以繼續在頂會大佬論文里找靈感。當然也不是每一個頂會大佬都寫得一手好論文,所以最好選自己熟悉的且覺得寫得好的論文來作參考。看他的論文每一段寫了什么內容,他是怎么講故事的,每一段講到什么程度,在 introduction 里講算法也肯定不會講細節,那么他講到了什么程度,他把算法抽象到了什么程度,他的圖都是什么內容,圖所表現的內容在整個故事里處于什么地位。除此之外,還要宏觀地體會一下這篇論文好在哪,它研究的是什么問題,這個問題難度和重要程度如何,他為什么研究這個問題,為什么提出這個方法,這篇論文有哪些閃光點,評審為什么會接收這篇論文,這篇論文對其研究領域的貢獻能有多大。
接下來,在自己寫論文的時候就要想象自己就是大佬,經常想想如果大佬來寫這篇論文,他會怎么寫,他會從什么角度介紹這個算法,他會如何布局謀篇,他會如何設置圖表,他會給論文起什么題目等等。哪怕有時的想法似乎過于自大,覺得自己的論文還配不上也沒關系。當然空想有些難度,此時找幾篇頂會論文放旁邊照著模仿也可以。
總之最后我們希望達到的目標是,當你的論文不包含任何作者信息時(如 Blind Review),審稿人讀完這篇論文時,苦思冥想了一圈該方向大佬,就是想不出這篇論文最有可能是哪個大佬寫的。
4. 信息來源
對信息的審美影響智商,也影響精神層次的高度信息的品味 - 河森堡的微博 - 微博。兩個接觸并使用不同來源的信息的人,在對待問題時的態度和想法是不一樣的,解決問題時的能力也是不同的。獲取一些優質的信息來源對做好事情來說是很重要的。
書籍的信息一般更系統,但有可能比較過時。論文的信息更新,但不夠系統。英文的信息比中文的信息一般更新,更可靠。一個英文好且能 fq 的人,比另一個英文差且不能 fq 的人,就能接觸到更多更新更可靠的信息。編程時遇到同樣一個錯誤,會拿錯誤信息去百度的比不會的強,會搜英文錯誤信息的比只會搜中文錯誤信息的強,會谷歌的比只能百度的強,能找對關鍵詞的比不能的強,會判斷信息可靠性的比不會的強。在遇到問題時在谷歌搜索,往往第一個條目 (通常是 Stack Overflow)就能得到解決方法,而在百度下只能得到一堆個人博文,一個個點進去內容都差不多,還都是過時的方法。有時要搜某個會議或軟件的官網,谷歌第一條就是,而百度往往在第 N 條。另,英文的博客/論文通常比中文的更有深度更有干貨。
除搜索之外,還可以在各種社區獲取優質信息。如除關注大佬的主頁之外,還可以關注大佬的 Twitter、GitHub、微博等,大佬之間往往也是有互動的,所以關注了一個就能逐漸扯出一堆大佬,逐漸就關注了一圈大佬,掌握了業界風向。
另,維基百科很有用。很多概念在維基百科上有很專業的描述。
5. 工具
工欲善其事,必先利其器。有趁手的工具能成百倍地提高工作效率。以下是一些工具的介紹。
-
MathJax/LaTeX 。投國外會議或期刊應該大都要用 LaTeX,早點學習一下也可以熟悉一下環境。而且確實寫論文時,LaTeX 敲起來方便,排版出來又很漂亮。當然 LaTeX 的學習曲線比較陡,那么可以先不學習 LaTeX ,只學習其中關于數學公式的部分。學習 LaTeX 數學公式排版時,可以使用 Markdown,在 Markdown 中的公式一般是用 MathJax 渲染的,用搜索引擎搜索『MathJax 教程』可以看到怎樣用文本命令敲出各種復雜的公式。
另,如果遇到某個符號不知道對應的命令時,可以在一個網站上用鼠標畫出這個符號,然后它會識別你畫的符號并給出對應的命令,搜『Detexify』可以找到這個網站。 -
Markdown。一種簡單的排版語言,不用半小時就能學會。在寫小文檔時,用 Word 或 LaTeX 都有點殺雞用牛刀的感覺,此時用 Markdown 就很順手了。一般的 Markdown 編輯器都支持 MathJax 公式渲染,所以用 Markdown 可以寫出漂亮的公式,Markdown 也可以控制多級標題,粗體斜體,列舉,代碼塊,圖片插入等,麻雀雖小五臟俱全。編輯器可以使用 Typora。
-
LaTeX 。Word 排版時總有牽一發而動全身的問題,即改動一處,整個文檔都變了,還得重新調整格式。除此之外,Word 對公式的支持很爛,編輯公式很費勁,而且編輯出來也比較丑。在 Word 中插入圖片比較麻煩,要控制浮動選項等問題。在 Word 中處理交叉引用(比如本文的見第 N 章)及文獻引用也比較麻煩。Word 還有版本的問題,不同版本的 Word 打開同一個文件的效果很可能是不一樣的。
以上這些問題在 LaTeX 里都不是問題。LaTeX 基本不會出現 Word 的版本問題,把源文件放在任何平臺下 (Linux,Windows,Mac),編譯出來都是相同顯示效果的 PDF 文件。只要在寫 LaTeX 時定義好哪一段是標題,哪一段是正文,哪一段是粗體,圖片放哪里,編譯出來的 PDF 就會符合你的要求,所以不會出現牽一發動全身的問題。另,我總感覺 LaTeX 寫的論文和 Word 寫的論文有不一樣的氣質,前者讓人感覺很堅實可靠,后者感覺搖搖欲墜。
LaTeX 的學習曲線比較陡,可以找一些教程初步學習下,如《LaTeX 入門 \ 劉海洋》。對于 LaTeX 編輯器,我目前用的是 TexMaker,類似的還有 TexStudio等。 -
Linux。在 Linux 下執行一些命令或者程序時速度更快,或者更穩定。
而且因為很多算法的作者就是在 Linux 下實現并調試的,所以用 Linux 運行調試算法也可以避免一些奇怪的 bug。
Linux 下的命令行工具十分強大,而諸如 find、grep、sed、awk、cut、vim、head、wc 之類的文本工具也是小巧方便且功能豐富。每當遇到要查看或者簡單地修改一個幾百兆乃至上 G 的文件時,使用這些工具就事半功倍。因為即便 notepad++ 或 Sublime Text 在打開這么大的文件時也很慢很耗內存,太大的會直接卡死或閃退,而若要在文件中搜索字符串,就更是要等到天荒地老。用 grep 搜索文件內容,用 sed 完成文本替換,用 vim 編輯,用 head 查看,用 wc 統計,都無比順手。除此之外,這些工具還可以各種套用。另,在 Windows 下安裝 Git 后使用 Git Bash 也可以使用一部分這些文本工具。 -
Beamer/Marp。這兩者是 PowerPoint 的替代。Beamer 是 LaTeX 的宏包,可以用來寫 Slides,寫出的 Slides 比較學術范,而且因為是 PDF 文件,配合交叉引用,跳轉非常方便。Marp 是一個使用 markdown 編寫 Slides的軟件,使用起來比較簡單,不過可以自定義的地方比較少,而且如果要微調的話需要一些 HTML 和 CSS 技巧。這兩者相比 PowerPoint 的優點在于編寫公式非常方便。而且因為自定義的地方比較少,字體一般都比較大,會強迫你總結要點少說廢話多用列表,做出的 Slides 就比較簡練有邏輯。但總體來說,這兩個工具還是沒有 PowerPoint 強大易上手。
-
yEd,Dia,ProcessOn,draw.io,XMind 等。這些是畫圖工具,相比使用 Word 或 PowerPoint 畫示意圖,這些工具使用起來更方便,做出的圖也更美觀。生成的圖一般也都可以保存為矢量圖 (SVG、PDF等)。
但如果要在圖中添加公式,這些工具一般都不支持。可以選擇使用 LaTeX 或 markdown 敲公式生成 PDF,然后用 inkscape 將公式粘貼到圖中。也可以嘗試學習使用 TikZ 用 LaTeX 畫圖,不過這個學習曲線比較陡,我還沒有學會。 -
Zotero。一個文獻管理軟件,可以用這個軟件管理看過的所有論文,也可以在這個軟件里記論文筆記。用這個軟件管理文獻就不用每次找論文時在文件夾里翻來翻去了。這個軟件還可以從 Google Scholar 等網站直接導入論文,也可以導入其他網頁。
另,我在寫論文時經常遇到不知道一句話怎么用英文表述更合適的問題,所以就想要看看別人的論文是怎么寫的,用 Foxit PDF 閱讀器可以搜索 PDF 中的文本,但速度慢不方便。Zotero 有 PDF 內容搜索的功能,但似乎只能定位到是哪個文件,而我發現在 Zotero 的存儲文件夾里有存儲 PDF 內容的純文本文件,所以就用 shell 命令將所有這些純文本文件復制到一個文件夾下,然后用 Sublime Text 打開這個文件夾,在文件夾下搜索文本。這樣當我想要查找某個表述時,只要在 Sublime Text 里搜索關鍵詞,就可以看到別人的論文是怎么寫的了。 -
fq/kxsw。就像在第 4 章里說的,信息來源很重要。而不會 fq 的話,就失去了一大半優質的信息來源。
6. 折騰
以上提到的很多東西必須自己嘗試才能學會,這個過程就需要各種折騰。敢折騰會折騰能學到不少東西,折騰的過程中必然有各種糟心的麻煩,但只有折騰過后才能找到適合自己的。比如安裝系統是折騰,但只有學會裝系統之后,才能不怕死地裝各種軟件,跑各種程序,玩各種命令。學 Linux 學 LaTeX 是折騰,但折騰過后可以學會不少有用的工具。裝各種軟件是折騰,但只有嘗試過各種軟件之后,才能找到適合自己的工具,打造自己的 workflow。
7. 后記
搜『論文寫作』、『paper writing』、『academic writing』能找到不少有關論文寫作的相關知識。另,機器翻譯學術論?文寫作?方法和技巧——劉洋。
另,整體看這篇文章可能稍顯羅嗦...
另,很多內容可能都比較主觀。
8. 算法
目前感覺機器學習的很多算法都是『直覺+近似』的模式。即由某個現象得到一種直覺,然后以算法近似表達出這種直覺即可,往往不需追求精確也能達到好的效果,甚至很多時候因為不精確,反而泛化能力不錯。如 word2vec,由『詞義相近的詞往往上下文也差不多』這種現象而得到『以上下文來表達中心詞』這種直覺,然后怎么確定上下文呢,近似點,搞個 window,window 內的都一樣對待就得了。。。這個例子舉得似乎不太好。。
9. 。。。
- 問題要 solid、important
- 方法要 simple、neat、elegant、general、scalable、efficient、robust、innovative
- 論文要 easy to follow,最好有一些圖增強可讀性,最好有一些讓人眼前一亮的圖(引入問題 或 呈現算法效果或實驗結果),要講明白 motivation,最好有 complexity analysis,另外最好有 insight
- 實驗要 convincing/promising,實驗設計最好巧妙些(最好控制變量,最好不太復雜又能說明問題?),最好有 detailed analysis,數據集最好 real-world 且最好大一些
well written、good presentation
End
論文中了,所以這篇文章應該不算“妖言惑眾”了。。
2019.1 -- 2019.3
2019.8.13

浙公網安備 33010602011771號