論文不公開代碼,應該被直接拒稿?

機器之心報道

機器之心編輯部

論文代碼是否應該公開已是爭論已久的問題,有從業者呼籲通過代碼提交減少當下各類論文中的「水分」,也有研發人員表示「代碼提交」類問題得因「研究」而異。不過單從我們最關心的各類頂會而言,似乎可以簡單從三個角度去看待此問題:如果評審能夠拿到底層代碼或者數據,是否能更好地做評審工作?開放代碼對作者有好處嗎?對讀者有好處嗎?

上週,圖靈獎得主 Yann LeCun 公開質疑谷歌大腦的論文無法復現,引起了社區熱議。Lecun 表示,即使是 NLP 的一些頂級研究人員也無法復現谷歌大腦的語言模型 Transformer-XL 所得到的結果。此外,有人還面向廣大研發人員發出了「江湖懸賞令」,稱成功復現者將獲得「酬勞」。

論文不公開代碼,應該被直接拒稿?

迄今為止,行業內仍有相當數量的優質研究未能復現,這也使得後來的研究工作多多少少受到影響。但由於各項研究的本質各不相同,所以這類問題需要多維度地去看待。例如,一篇偏理論的論文其算法可能不是核心,又或者由於研究所用數據涉及所有權問題,因此代碼無法公開,從而導致可復現性受到阻礙。

那麼研究論文的代碼是否應該「開源」?我們來看開發者們的觀點。

論文代碼是否應該「強制」開源?

近日,一位網友在 Reddit 社區呼籲,希望所有研究者都能在發表論文的同時公開自己的代碼,否則應該被直接拒絕。

論文不公開代碼,應該被直接拒稿?

發起人認為,任何形式的研究行為均可看做對知識體系的貢獻,並終將造福於人類社會。在他看來,不將論文代碼公開阻礙了這一進程,這樣的行為不應受到鼓勵。

他表示自己經常聽到類似這樣的評論:「如果我需要用代碼申請專利並用它賺錢怎麼辦?」發起人給出瞭如下解決方案:不要寫研究論文,而是為專利準備相關項目和文檔。

此外也有這樣的評論:「如果有人剽竊我的想法怎麼辦?」發起人建議,可以將論文先上傳到 arXiv 這樣的論文預印版平臺上。

發起人同時表示,審稿人在論文代碼沒有公開的情況下就接收論文,這點讓他感到理解無能。難道科學領域的審稿過程不應該確保其研究結果的可復現性嗎?審稿人是如何做到在論文代碼未公開的情況下進行測試的呢?

就目前的情況而言,公開代碼並不是研究者發表論文時的「硬性規定」。在這一話題的評論區,許多人表達了自己的觀點:

觀點 1:研究本來就是要共享

寫論文之前,就要準備好為新技術的研究和開發做貢獻,因為研究本來就是要共享的。隱瞞那些公開後能夠造福大眾的重要信息,這樣的行為是卑劣的。

論文不公開代碼,應該被直接拒稿?

觀點 2:有些數據、代碼是保密的,不能也不願公開

我在石油領域做 ML 工作,這個領域的數據和代碼都沒有人公開,因為這些東西是保密的。那些論文的作者僅拋出一些方程來「解釋」他們的神經網絡是如何工作的。這些方法都是使用 Keras、PyTorch 等框架基於現有方法實現的,但作者仍然選擇不公開他們的代碼。

為什麼會這樣?很大程度上是為了避免別人仔細檢查他們所提出的方法。每個人都會在論文中寫道「我們進行了超參數調整並選擇了最優的參數」。但這些超參數到底是多少,誰又知道呢?

因為它們屬於 ML 應用研究,嚴格來說並不是 ML 本身,所以這些研究全部基於現有實現是沒有問題的,但是這類研究也沒有什麼價值。

很多時候情況確實非常荒謬——「未完全解釋的方法」使用「未公開的數據」在「未共享的模型」上取得了 98%的準確率。這就像是一篇刪除了你想知道的所有研究重點的 Medium 文章。

神回覆:

我做了一個準確率為 100% 的人臉識別項目。來源:相信我就好了,哥們兒。

論文不公開代碼,應該被直接拒稿?

觀點 3:論文本身應該包含足夠多的細節,但是否開源是各人的自由

論文本身就應該包含足夠多的細節,這樣其他人才能瞭解如何復現。分享代碼可以讓他人輕鬆地復現,但如果論文作者不願分享的話,則需要在方法部分提供更多的細節,這樣讀者才能自行復現。決定是否分享代碼是研究者的自由,別人無權干涉。

論文不公開代碼,應該被直接拒稿?

觀點 4:是否公開代碼需根據研究類型而定

我是做理論研究的,甚至不知道如何創建 docker 容器。我發表了很多論文,並在 GitHub 上公開了所有的代碼。有時候我會使用不同的編程語言來實現我的論文,那些方法依然有效。

如果論文所提出的方法無法從外部驗證,那麼它是否缺乏作為有用工具的依據?方法的設計應獨立於其編程方式。在我看來,決定論文是否需要公開代碼時,根據論文的具體貢獻來做判斷是更明智的做法,而不是一概而論。

論文不公開代碼,應該被直接拒稿?

觀點 5:不會拒絕沒有代碼的論文,但會有疑慮

他們並不是不能寫方法實現,但是「令」他們這麼做可能毫無意義。你已經有了可以生成結果的腳本,為什麼不直接把它們放到 GitHub 上呢?

我從未因為論文沒有代碼而拒絕一篇論文,但是沒有代碼會讓我產生很多疑慮。

論文不公開代碼,應該被直接拒稿?

強制提交代碼可能不切實際

ICML、ICLR 和 NeurIPS 都在努力推進將實驗代碼和數據作為評審材料的一部分提交,並鼓勵作者在評審或出版過程中提交代碼以幫助結果可復現。

以機器之心近期報道的 NeurIPS 為例:NeurIPS 組委會從 2019 年起就鼓勵論文作者提交代碼(非強制),而且成效顯著。在 NeurIPS 2019 的最後提交階段,有 75% 的被接收論文附帶了代碼。今年,NeuIPS 將代碼提交從「鼓勵」變成了「強烈建議」(仍不強制),還提供了提交代碼的準則和模板。

目前依然有很多研究結果缺乏可復現性,很多優秀研究沒有提供對應的代碼。從可復現性層面看,每一年相較上一年都有不錯的進步,同時也受到越來越多的關注。從研究角度來說,很多後來的研究者會基於先驅工作做一些新的探索,而缺乏可復現性將使其變得舉步維艱。

此外,秉承著辯證思考的觀點,有些研究者會對前沿工作有些懷疑,認為其研究結果存在水分。而提供可復現的代碼能在一定程度上消除這樣的質疑。

但不公開代碼就直接拒絕未免過於「一刀切」,畢竟,可復現性並不是評價論文的唯一標準。

可復現性是重要的屬性,但不是唯一的屬性

如果對強制要求可復現性進行「一刀切」,將導致非常糟糕的後果。舉例而言,部分研究真正有價值的部分是展示可能性,「什麼是可能的?」這個問題也很關鍵,部分研究連代碼也未發佈,如果將可復現性作為絕對價值來看待,那麼就會大概率錯失這類研究成果。

採用「放之四海皆準」的策略是一種錯誤,要求每一篇論文都是可編程復現的會降低各類研究社區的活力與創新。機器之心早期報道過微軟研究院 John Langford 的觀點,值得借鑑。

從機器學習角度出發,John Langford 認為其研究類型至少有三種:

算法:研究目標是發現一些更好的算法以解決各種學習問題,是頂會中最典型的類型。

理論:研究目標是一般性地理解哪些學習算法是可能的,哪些是不可能的。雖然這些論文同樣可能提出算法,但它們通常並不要求一定要實現,因為這會浪費作者、評審者和讀者的時間。

應用:這些研究的目標是解決特定的任務。AlphaGoZero 就是一個例子,它在圍棋領域中用算法擊敗了世界冠軍。對於這類研究而言,

由於計算量大、數據所有權等特點,編程的可復現性可能不切實際。

而另一種可行方案是將代碼作為補充資料進行定位,例如像附錄那樣查看代碼(和數據)的提交,以便於評審探究和使用。而對於作者本人而言,提供額外的代碼也便於說服那些善於質疑的評審。

值得肯定的是,各大頂會的組委會都在積極嘗試探索針對提交代碼的「平衡」,沒有所謂的「一刀切」,從 19 年的嘗試到今年初看效果,還是能感受到長足的進步。找到最適合各社區的「平衡」才是長久之道。

參考鏈接:https://www.reddit.com/r/MachineLearning/comments/fzss9t/d_if_a_paper_or_project_doesnt_publicly_release/


分享到:


相關文章: