- 原文地址:3 Levels of Deep Learning Competence
- 原文作者:Jason Brownlee
- 譯文出自:掘金翻譯計劃
- 本文永久連結:github.com/xitu/gold-m…
- 譯者:Hearfishle
- 校對者:portandbridge, ezioyuan
深度學習不是一顆靈丹妙藥,但是在許多非常具有挑戰性的領域裡它已經證明了自己的高效。
這意味著企業對高效的深度學習從業者的需求量巨大。
問題是,一般的企業如何去鑑別這些從業者的好壞?
作為一名深度學習的從業者,你如何用最好的方式去證明你可以提供熟練的深度學習模型?
在這篇文章中,你將瞭解勝任深度學習的三級能力,並且作為一個從業者你需要在每一層次具有怎樣的表現。
在閱讀本文之後你將瞭解:
- 評估深度學習能力水平的問題,最好是通過專案作品集去解決。
- 三個能力級別的層次結構可被使用去給從業者分類,並且提供一個框架去明確從業者所應具備的技能。
- 初學者最常犯的錯誤是認為剛開始學就想達到等級 3,他們想一次學會所有的能力,從而導致了困惑和挫敗感。
讓我們開始吧。
深度學習能力的三個等級 照片由 [Bernd Thaller] 拍攝,所屬權歸拍攝者
概述
本文分為三個部分,分別是:
- 如何評估(深度學習)能力
- 建立深度學習作品集
- 深度學習能力的等級
如何評估(深度學習)能力
你如何知道一個從業者有能力做深度學習?
這是個艱難的問題。
- 一個科研人員也許可以把一個技術的數學性講述的很好並且提供一系列的論文。
- 一個開發人員使用直觀的解釋和一系列的 API 也能把技術講明白。
他們都看似非常懂。
但是,一個真正的商業專案是不需要解釋的。
我們需要使用模型去做有效的預測,我們需要的是結果。
結果勝過一切。
就是這樣,結果勝過那些傳統的能夠代表能力的東西,諸如教育背景,工作履歷和經驗水平。
大部分開發者和招聘開發者的經理已經明白了這個道理。
但一些人還沒有。
建立一個深度學習作品集
回答從業者是否勝任這一問題,最好的方法是去展示(能力)而不是告知(招聘者)。
從業者必須提供證據去證明他們理解如何去應用深度學習的技術,並且使用他們去開發高效的模型。
這意味著要使用開源倉庫和可用的公共資料集去開發一個公開作品集。
這樣做有很多的好處,因為:
- 展示你傾注技巧搭建的模型。
- 讓別人審閱程式碼。
- 捍衛你的設計決定。
(在作品集中)如實地討論真實專案,就能讓人很快弄清,從業者是不是真的理解這些專案。
- 為了評估這個能力,僱主必須要求從業者提交包含已完成工作的作品集,然後著重進行查閱。
- 為了證明這個能力,深度學習的從業者必須建立和維護一個已完成的專案的作品集。
作為一個從業者,問題變成了:有哪幾個能力等級,每個等級又有什麼樣的能力期望?
深度學習能力的等級
從業者應該認真的選擇要開發的專案,因為它還可以用來去證明你的技術能力。
在本節中,我們將概述深度學習能力的等級以及作為一名從業者,您可以開發和實施的專案型別,以便從中學習、獲取和展示每一級能力水平。
深度學習能力分為三個等級,分別是:
- 等級 1:建立模型
- 等級 2:除錯
- 等級 3:應用
這可能不完整,但是為商業開發中的從業者提供了一個良好的出發點。
對等級劃分的一些解釋:
- 假設你早已是一個機器學習從業者,並不是從零開始。
- 並不是所有的商業開發都要或者可以完美使用等級 3 的從業者。
- 許多從業者想一開始就進入第 3 級,並且想很快搞清楚 1 級和 2 級的事情。
- 等級 2 常常被忽視,但是我認為它是關鍵,(因為可以)證明有更深入的理解。
其他沒有被討論到的可能和能力相關的話題還有從零開始寫程式碼、處理大資料和資料流、GPU 程式設計、開發新的方法,等等。
如果你有關於能力等級或者專案的想法。請在下面的評論裡展示出來讓我知道。
現在讓我們把目光放回到每個等級上。
等級 1:建模
能達到這一深度學習能力的等級意味著你早已是一個機器學習從業者了。
這是最低的等級並且意味著你可以在傳統的機器學習專案中高效地使用工具和方法。
但這並不意味著要你去有個更高階的證照或者你是什麼專案大牛。相反,這意味著你熟悉應用機器學習的基礎知識和能夠從頭到尾的建立預測性建模專案端到端工作的過程。
這並不是一個嚴格的先決條件。因為如果需要的話,這些元素可以被快速的學會。
這一等級的能力,會有以下表現:
- 庫能力:你(應該)知道如何去使用一個開源的深度學習庫去開發一個模型。
- 建模能力:你知道如何去應用使用神經網路去開發機器學習的過程。
庫能力
庫能力意味著你知道如何去搭建一個開發環境並且使用最普遍的 API 層去定義,載入,並且使用神經網路模型去預測。
這也意味著你知道每種神經網路模型最基本的差異,以及使用它的最佳時機。
這並不意味著你知道每種函式過程和每種引數。這也不意味著你知道具體技術的數學描述。
建模能力
建模能力意味著你知道如何使用神經網路模型從頭到尾地去完成一個機器學習專案。
具體而言,這意味著你有能力完成如下事情:
- 判斷監督學習問題並且收集相關資料。
- 準備資料,包括特徵選擇,輸入損失值,縮放和其他轉換。
- 使用目標測試工具評估一套模型和模型架構。
- 選擇和準備一個最終的模型並且使用它去對新資料進行預測。
這些能力意味著你可以高效的駕馭神經網路使之用於新專案的開發和建立有效模型上。
這一能力並不表示,你是應用所有或者一些神經網路技術的專家,或者你可以獲得最好的結果。這也不意味著你熟悉所有資料型別。
專案
展示這種能力水平的專案應該是使用開源的深度學習庫(比如 Keras),並在公開的機器學習資料集上顯示應用機器學習過程的每一步。
這並不意味著要去實現對資料集的最佳預測結果,甚至不意味著使用神經網路是資料集的最佳可能模型。相反,你的目標應該是展示自己使用神經網路的能力,而最有可能用到的是比較簡單的模型,比如多層感知機。
一個不錯的資料集資源是在 1990 年到 2000 年被廣泛使用的小型記憶體資料集。可以用它去證明機器學習甚至是神經網路的表現。例如在 UCI Machine Learning Repository列表中的一些。
資料集很小,很容易在記憶體中容納,這意味著專案的範圍也很小,允許使用健壯的模型評估方案。如 k-摺疊交叉驗證,並且可能需要仔細的模型設計,以避免過擬合。
我希望有一系列專案能夠處理標準預測建模專案的普遍問題,例如:
改變輸入資料,從而展現出適用於神經網路的資料預處理技能:
- 輸入具有相同範圍的變數。
- 輸入不同比例的變數。
- 混合了數字型別和分類型別的變數。
- 變數失去部分值。
- 具有冗餘輸入功能的資料。
處理多種目標變數,從而展現出合適的模型架構技能:
- 二分類任務。
- 多類分類任務。
- 迴歸任務。
等級 2:除錯
假設具有的能力等級為 1,然後展示你可以使用傳統和現代的技術從深度學習神經網路模型中發揮最大的功效。
它演示了下列事情:
- 學習能力。你可以改進神經網路模型的訓練過程。
- 泛化能力。你可以減少訓練資料的過度擬合還有減少樣本外資料的泛化誤差。
- 預測能力。你可以降低最終預測模型的方差和提升模型的技能。
學習能力
學習能力就是說,你知道如何去配置和調整學習演算法的超引數來讓程式達到更好的表現。
這意味著在調整隨機梯度下降超引數方面的技能,例如:
- 批量大小
- 學習速率
- 學習速率計劃
- 適應學習速率
這意味著調整影響模型能力方面的技能,例如:
- 模型選擇
- 啟用函式的選擇
- 節點的數量
- 層的數量
化解(機器)學習過程中的相關問題的技能,例如:
- 梯度消失
- 梯度爆炸
它也意味著用技術去加速學習的技能,例如:
- 批處理規範化
- 分層培訓
- 遷移學習
泛化能力
泛化能力意味著,你知道如何去配置和調整一個模型去減少過擬合,去提升模型在樣本外資料的表現。
這包括經典的技術例如:
- 權重正則化
- 增加噪聲
- 提前停止
這也包括一些現代的技術例如:
- 權重約束
- 活動規範化
- 隨機失活
預測能力
預測能力意味著你知道如何使用技術去減少預測時所選模型的方差,並結合模型以提高效能。
這意味著要使用整合技術,例如:
- 模型均衡
- 堆疊整合
- 權重均衡
專案
證明這一能力水平的專案可能不太關注應用機器學習過程中的所有步驟,而是關注特定的問題,還有以緩解問題為設計目標的一個或多個技術。
與這三方面的能力相稱的問題,可能包括:
- 模型訓練太慢的問題
- 對訓練資料集過擬合的問題
- 方差過高的問題
再說一次,這並不意味著在一個具體的問題裡實現最佳的表現,僅僅是顯示技術的正確使用方法和它處理已確定問題的能力。
清楚展示專案中研究的問題,比選擇資料集甚至問題型別都更重要。
一些資料集自然會帶來一些問題,例如,小的訓練集和不平衡的資料集會帶來過擬合的結果。
可以使用標準機器學習資料集。也可以人為設計問題然後再去證明它,或者還可以使用資料集生成器。
等級 3:應用
這個能力等級高於能力等級 1 和 2,並且展示你可以在具體問題裡使用深度學習神經網路技術。
這就是說,要在 simple tabular datasets 以外的場合展現深度學習的技術。
這也是對問題領域裡不同型別和特定問題例項的深入學習的演示。在這些領域中,這些技術可能表現良好,甚至是最先進的。
它演示如下事情:
- 資料處理能力。你可以為神經網路載入和準備具體問題的資料。
- 技術能力。你可以為具體問題比較和選擇合適的神經網路模型。
資料處理能力
資料處理能力意味著你可以獲得,載入,使用和準備模型所使用的資料。
這很可能證明運用標準庫處理資料,以及運用標準技術準備資料的能力。
問題域和對資料的處理可能包括:
- 時間序列預測。將時間序列問題處理為監督學習問題的程式碼。
- 計算機視覺。用於載入影像和轉換以調整畫素大小(可能是標準化)的API。
- 自然語言處理。用於載入文字資料和轉換譯碼字元或者單詞的 API。
技術能力
技術能力意味著你可以準確識別適合特定領域建模問題的技術、模型和模型體系結構。
這將很可能需要你熟悉學術文獻和/或行業中針對該領域一般類問題使用的常用方法。
問題域和針對具體問題的方法可能包括:
- 預測時間序列。使用序列預測模型。比如卷積神經網路模型和迴圈神經網路模型。
- 計算機視覺。使用深度卷積神經網路和使用特殊體系結構。
- 自然語言處理。使用深度迴圈神經網路模型和使用特殊體系結構。
專案
能表現出這一能力水平的專案,必須涵蓋應用機器學習過程,用上細緻的模型調整方法(等級 1 和 2 的能力),還必須將重點放在特定領域的資料集上。
資料集來源於這裡:
- 被使用在學術領域去驗證方法的標準資料集
- 機器學習競賽網站的資料集
- 由你收集和定義的獨特資料集。
可能存在大量屬於給定問題域的問題。儘管會有一個更常見或更突出的子集,這些可能是示範專案的重點。
域和突出的子問題的一些示例可能包括:
- 時間序列預測。單一變數,多元變數,多步和分類。
- 計算機視覺。物體分類,物體定位和物體描述。
- 自然語言處理。文字分類,文字翻譯和文字概括。
可取的做法或許是,在跨領域的高水平層面上展示能力,這樣就能讓資料處理手法、建模技術和技能很好地表現出來。
在解決了最突出的問題和技術之後,也可能需要專門研究某個領域,並縮小對細微子問題的演示專案的範圍。
因為這種型別的專案可能表現出深度學習的更廣泛吸引力(例如,超越經典方法的能力),直接跳到這一水平是有危險的。
有經驗的從業者,要是在其他機器學習方法或者該專門領域具備更深入的知識和經驗,或許能做到這一點。
然而,這是非常困難的,因為你可能不得不學習並且必須一次駕馭和證明所有三個等級的能力。
這是迄今為止初學者犯的最大的錯誤。他們鑽研特定領域的專案並遇到一個又一個的障礙。因為他們對庫的用法、從頭到尾完成一個專案的流程以及提高模型表現的過程這幾個方面還掌握得不好,更別說所涉領域中運用的特定資料處理技術和建模技術了。
再說一次,可以從這一個等級開始,但給你帶來的可能僅僅是三倍的工作量和挫敗感。
你對能力框架產生共鳴了嗎?你認為這很空洞嗎? 請在評論區讓我知道。
擴充套件閱讀
如果你想研究的更深入,這一節為你提供此課題下更多的資源。
帖子
文章
總結
在這篇文章中,你發現了深度學習能力的三個等級,作為一個從業者,你必須在每一個等級上證明什麼
具體而言,你學習了:
- 深度學習的能力最好是通過專案組合去評估。
- 三個能力級別的層次結構可用於對從業者進行分類,並提供一個識別預期技能的框架。
- 最普通的錯誤是新手從 3 級就開始,意味著他們試圖一下就學到所有的等級,導致困惑和挫折感。
你有問題嗎? 在下方評論區提問,我將盡我所能去回答。
如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可獲得相應獎勵積分。文章開頭的 本文永久連結 即為本文在 GitHub 上的 MarkDown 連結。
掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。