點擊上方「Deephub Imba」,關注公眾號,好文章不錯過 !
如果想了解黑匣子內部發生了麼,提高創造力或成為第一個將最新科學研究帶入業務的開發人員 這篇文章應該可以幫到你。
我們將討論如何選擇一篇「好」的論文作為開始,這對於初學者來說會比較容易;本文中將概述典型的論文結構以及重要信息的位置;並提供有關如何處理和實現論文的分步說明,並分享在遇到困難時可能有所幫助的連結。
從哪兒開始?如果你想讓你的學習順利無壓力的開始,應該找一篇「好」的論文。作為起點建議選擇一篇描述你熟悉概念的並且被引用度高的論文。
高引用率的舊論文通常解釋了非常基本的概念,這些概念也是最近研究的基礎,這些基礎知識會更好的幫你理解最新的論文。但是要記住對於深度學習,2016 年之前的論文已經過時了。引用量高的論文意味著許多其他科學家能夠理解並使用該方法,也側面說明了該方法是可重複的。要找出特定論文的引用次數,可以在 Google Scholar 中搜索它。引用次數超過 1000 次的論文被認為是高被引論文。
最後,較舊的論文描述了更簡單的概念,這對初學者來說是一個很大的優勢。
論文結構:忽略什麼,讀什麼典型的深度學習論文具有以下結構:
Abstract
Introduction
Related Work
Approach in Details
Experiments
Conclusion
References
摘要Abstract:論文的整體內容摘要,它很短。重點介紹為什麼這種方法比以前的方法更好,以及它的新穎之處。摘要會發布在會議日程表和在線歸檔(如 Arxiv)中,它們的唯一目的是說服你閱讀這篇特定的論文。如果你已經選擇了一篇論文來閱讀,可以隨意跳過摘要,但是如果你打算進行論文的創作,這個部分是你論文「營銷」的關鍵。
引言Introduction:是重要的必讀部分。它提供了論文中提到方法的高級概述。通常它不是太技術性並且非常「用戶友好」,因此如果閱讀的時候請先閱讀這部分,因為可以讓我們在深入研究算法細節之前先熱身。
相關工作Related Work:所有科學論文(以及深度學習)都是相關的,因為每一項發現都建立在之前數十項甚至數百項研究工作的基礎之上。相關工作概述是每篇論文的必填部分。作者必須確保他們的工作是相關的,並且解決了以前論文中的重要的問題的同時不會重複其他研究人員之前所做的工作。這是學術界的一個重要部分——但對我們(從業者)來說不是,所以如果知識閱讀和實現論文可以跳過,但是如果編寫改進改論文實現的方法的新論文,這裡一定要看。(或者有時你可能正在尋找該領域的其他基本論文/概念來閱讀,這裡也可以給你新的思路)
詳細方法Approach in Details:這是論文中最複雜和最具挑戰性的部分,也是最重要的部分(一定要閱讀!)。不要期望過高,也不要期望通過一次閱讀就了解所有內容。因為這是在編碼時一次又一次仔細閱讀理解的部分,所以我們的「樂趣」就從這裡開始。
不要害怕複雜的公式,在大多數情況下,它們解釋了基本概念。這就是研究人員以他們的形式「開的玩笑」。對於論文的實現我們甚至不用關注他們,當然如果你想改進論文,這些複雜的公式還是需要用的。看不懂也沒關係多看看論文,用不了多久你就會習慣了🤣。
在閱讀論文時,必須獲取可能需要的所有信息,例如:數據預處理技術、詳細的神經網絡架構、損失函數、訓練技巧和後處理。如果閱讀了幾次都不太明白也沒關係,後面我會告訴你怎麼做。
實驗Experiments:這一節充滿了圖表、表格和圖像。通常它包含有關數據集、訓練和指標評估的詳細信息,以及對模型在各種超參數下的表現以及與其他論文中的最新方法進行比較的回顧。如果論文是關於計算機視覺的,也會有模型預測的可視化。這部分可以選擇感興趣部分閱讀。
結論Conclusion:是對論文的總結,有時包含作者對未來研究的想法。小學作文中老師都說過要扣題對吧,這部分就是要與前面的摘要和引言呼應。所以跳過它沒什麼問題。
參考文獻References:學術界有一個嚴格的規則:如果研究人員使用屬於其他人的想法,他/她必須添加對原始作品的引用。當論文中已經解釋了這些參考文獻中的概念或只是不重要時,可以跳過大多數此類參考文獻。但是有時作者可能會說:「我們使用了論文 [2] 中描述的模型架構,只修改了最後一層的激活」。在這種情況下,您需要找到並閱讀論文 [2] 以完全理解該方法。
現在——是時候閱讀論文了。在接下來的 30 分鐘裡,你應該高度專注,因為你正潛入一個有挑戰性並且令人興奮新世界。
去哪裡尋求幫助?對許多人來說,「實現論文」意味著「快速閱讀論文,然後在網際網路上尋找現成的實現」(paperwithcode:說的對😘)。這是的確是最簡單的方法,但不是有益的方法。我強烈建議你從頭開始,不要馬上尋找現成的解決方案。至少自己做些事情因為那才是對你的技能提高的關鍵。
即使你是一個完全初學者,總有一些事情你可以做:
下載數據集,研究它,對數據集做EDA,寫一個數據加載器等等。這是一項簡單而又容易的任務,但一旦完成它,你就會有信心並幫助你繼續前進:
開始編寫模型架構,簡化或跳過你不理解的部分。例如這裡有一個奇怪的權重初始化器(跳過它,使用通用甚至默認的那個)。以前從未使用過PReLU激活(那就先用ReLU)。你現在的目標是創建一個可訓練的模型把流程跑通(有輸入,有輸出,可以進行訓練),而不是要訓練出論文的模型或表現更好的模型。在論文中有一個自定義的損失:用一個類似的損失替換它。對優化器、數據擴充、後處理進行同樣的處理——簡化或跳過。這樣你最終會得到一個原型。你甚至可以使用這個原型跑通完整的流程,看看它如何工作-也許結果不會那麼糟糕🙂
下一步就是填補缺口,修復工作不好的部分。再次閱讀論文仔細理解你之前漏掉的概念。如果你被卡住了也不要生氣。因為你已經有原型了,這是一個很大的進步你已經學到了很多。你甚至可以給論文的作者寫信,因為在學術界大部分的論文作者還是非常的友善的。
覺得完全卡住了?那就進行總結一下具體是哪裡的問題,有重點的提高相關的知識。在下一篇論文,你會寫得更好,因為這是一個學習的過程。文章的開始建議選一篇被高度引用的論文。現在你就能感受到好處了。流行的論文在網際網路上有幾十種實現,(paperwithcode:我又來了🙃),這裡推薦paper With Code的原因是它包含了可能所有流行論文的代碼實現。這些有的實現是官方的,有的來自像你我這樣的研究人員。例如,word2vec在PyTorch和Tensorflow中有67個paper With Code實現。
您可以複製粘貼,但一定要花時間來理解代碼。
最後總結選擇一篇被高度引用的舊論文。
仔細閱讀它並試著獲取儘可能多的信息——數據準備、模型架構、損失函數和訓練細節。
如果你不明白所有的事情,不要著急
通過跳過和簡化你不理解的概念來創建一個原型。如果你的原型與論文中的方法相去甚遠也沒關係,但是要試著自己改進草稿。
在網際網路上尋找文章和代碼。複製粘貼,但要閱讀和理解。
重複一篇新論文。然後感受第二次的感覺是多麼的順利🙂
真正的學習發生在步驟2-5上,所以你在這裡花的時間越多,你學得就越快。好運!
作者:Olga Chernytska
喜歡就關注一下吧:
點個 在看 你最好看!