閱讀496 返回首頁    go 阿裏雲 go 技術社區[雲棲]


入行AI最需要的五大技能

1-56BV6jrT8LU5VpXTa5VhBw.jpeg

把機器學習當做一種技能

作為一名軟件工程師,我們應該活到老學到老,時刻與不斷發展的框架、標準和範式保持同步。同時,還要能活學活用,在工作中使用最合適的工具,以提高工作效率。隨著機器學習在越來越多的應用程序中尋得了一席之地,它成為了廣大工程師迫切希望掌握的一門課題。

機器學習比一個新的框架更難掌握。要成為一名高效的實踐者,你需要深入理解該領域相關的理論,廣泛了解這個行業的現狀,以及具備以非確定性的方式構建問題的能力。

你可以在網上找到很多教程來教你如何在一個精心挑選過的數據集上訓練一個現成的模型,並使之達到不錯的準確性。事實上,具備更多的相關技能是成為一個高效機器學習工程師的關鍵。

以下是我們與50多個頂尖機器學習團隊的一些對話,他們來自海灣地區和紐約,這次來到Insight公司是為了探求人工智能從業者需要共同麵對的問題​​,並希望能夠加快自己融入應用人工智能領域的步伐 。

為什麼機器學習“並不僅僅是另一種工具”

部署機器學習解決方案不僅僅是用數據對任意一個模型進行訓練。你還需要了解:

  • 你所擁有的**數據的類型**、**數據集在統計上如何分布**,以及數據集存在怎樣的偏差。
  • 適用於特定數據集的**統計模型**,以及這些模型成功的概率。
  • 模型**優化**的相關指標,以及模型輸出的含義。

換句話說,要對模型進行集成、部署和調試,除了要具備工程上的能力之外,你還需要了解統計的基本原理、線性代數和優化理論。

要針對某個問題構建一個定製化的機器學習解決方案,需要考慮的東西涵蓋了從數據的獲取、標記和預處理到模型的構建、更新和服務,以及這個過程中的所有一切。

最後,我們認為,為標準Web應用程序構建一套REST API是一個可以提前完成的任務。另一方麵,機器學習模型不總是能保證收斂或者產生可用的輸出。學習如何審視和交付有影響力的機器學習產品的最佳方法是了解其理論基礎是如何與數據分類學相關聯的。

轉行到應用AI之前最需要掌握的5個技能

1. 統計學

要深入理解機器學習,必須要有紮實的統計學基礎知識,這涉及到幾個方麵:

  • 度量模型是否成功的各種方法(精確度、召回率、ROC曲線下麵積等)。損失函數和評估指標的選擇是如何**偏離模型的輸出**的。
  • 如何理解**過擬合**和**欠擬合**,以及**偏差/方差折衷**。
  • 你對模型的結果有什麼樣的**信心**。

2. 機器學習理論

在訓練神經網絡的時候,實際上發生了什麼?是什麼使得某些任務可行,而其他任務不可行?要弄清楚這些問題,最好的方法不是深入研究理論知識,而是試著通過圖形和示例來了解機器學習。

需要理解的概念範圍包括:不同的**損失函數**的工作原理是什麼、為什麼**反向傳播**是有用的、**計算圖**是什麼。而對於**如何建立一個功能模型**,以及**如何跟團隊裏的其他人員進行有效地交流**,這些都需要深入地理解。下麵我給出了一些參考資料:

另一個基本技能是閱讀、理解和實施論文的能力。這個一開始做起來可能會感覺比較困難,所以最好的方法就是閱讀附帶代碼的論文(例如,研究GitXiv上的論文),並試著去理解它是如何實現的。

3. 數據處理

如果你去問任何一個數據科學家他們的主要工作是什麼,他們會告訴你,90%的工作是數據處理。這與應用AI同樣重要,因為模型的成功與否與數據的質量(和數量)強相關。數據工作包含多個方麵,但可歸納為下麵幾類:

  • 數據采集(包括:找到好的數據源、準確度量數據的**質量**和**分類**、獲取和推斷標簽)
  • 數據預處理(**缺失數據**填補、**特征工程**、數據**增強**、數據**規範化**、交叉驗證分割)
  • 數據後處理(使模型的輸出可用、清理工作、處理**特殊情況**和**異常值**)

熟悉數據處理工作最好的方法是獲取一個數據集並試著使用它。有很多在線數據集,以及很多提供API的社交媒體新聞媒體網站。基於上麵提到的幾個步驟,我們可以這樣進行學習:

  • 獲取一個開源的數據集,並對其進行檢查。它有多大(點和特征的數量)?數據如何分布?是否存在缺失值或異常值?
  • 構建一個將原始數據轉換為可用數據的轉換流程。如何填補缺失值?如何正確處理異常值?如何規範化數據?能創造出更多的表現特征嗎?
  • 檢查轉換過的數據集。如果看起來一起正常,請繼續下一章節!

4. 對模型進行調試或調優

調試機器學習算法(無法收斂,或者得到的結果不合理)與調試普通代碼有著很大的區別。同時,要找出合適的架構和超參數則需要具備紮實的理論基礎和完備的基礎架構,以便對不同的配置進行徹底的測試。

由於目前機器學習領域發展迅勐,而調試模型的方法也在不斷地發展。以下是從我們部署模型的討論和經驗中總結出來的“合理性檢查”列表,這些條目也以某種方式反映了許多軟件工程師熟悉的KISS原理。

  • 從一個已經被證明可以使用類似數據集的**簡單模型**開始,以盡快獲得**基線**版本。經典的統計學習模型(線性回歸、最近鄰居等)或者簡單的啟發式算法或規則通常能幫你**解決80%的問題**,並且能更快地實現需求。剛開始的時候,要用最簡單的方式來解決問題(請參閱穀歌的機器學習規則的前幾點)。

  • 如果你決定訓練一個更複雜的模型以改進基線版本,那麼可以用**數據集的一個很小的子集**來進行訓練並達到過擬合。這能夠確保這個模型至少還有學習的能力。不斷地對模型進行迭代,直到對5%的數據量過擬合。

  • 一旦開始用更多的數據進行訓練,那麼超參數就開始發揮更大的作用了。你需要理解這些參數涉及到的**理論**,這樣才能找到合理的值。

  • 請采用有針對性的方法對模型進行調優。簡要地記錄下你曾經使用的所有配置及其結果。在理想情況下,可以使用**自動超參數搜索**策略。最開始的時候,使用隨機搜索就足夠了。

你的開發能力越強,則這些步驟實現起來就越快,反之亦然。

5. 軟件工程

許多的應用機器學習允許你充分發揮自己在軟件工程方麵的技能,雖然有時也會有一點小改變。這些技能包括:

  • 測試流水線的各個方麵(數據的預處理和增強、輸入輸出的整理、模型推理時間)。
  • 基於**模塊化**和可重用的原則來構建代碼。
  • 在訓練過程中的不同點對模型進行備份(**設置檢查點**)。
  • 配置一個**分布式的基礎架構**,這樣能更加有效地進行訓練、超參數搜索或者推演。

有關一名優秀的機器學習工程師所需掌握的軟件技能,請查看我們的專題文章“從學術界轉行到應用AI”。

工作中的小竅門

以上那些資源能幫你處理和解決實際的機器學習問題。但是,應用AI這個領域的變化非常快,因此,最好的學習方式是親身實踐,嚐試構建一個端到端的方案來解決一個真正的問題。

行動項:

  • 尋找一個可能會比較有趣的產品來構建。什麼能使你的生活更有效率?什麼工具可以改進使用數據完成某些工作的方法?什麼是以數據驅動的方式來解決一個有趣的問題?

  • 搜索與問題相關的數據集。對於大多數比較容易處理的問題來說,已經打過標記的數據也許就是你正在尋找的。如果你的問題沒有對應的標記過的數據集,那麼現在就來做這件事吧。你可以通過哪些方法來找到類似的數據,或者高效地標記數據,或者以其他方式來加速完成這個工作?

  • 在動手之前,先看看你手頭的數據是否在數量和質量上能滿足當前任務的要求。在使用TensorFlow之前,最好先在網上找找其他人解決類似問題的方法。有哪些相關的**博客帖子**和**論文**能夠加快完成工作?

尋找一些靈感,然後深入研究!雖然你探索得到的模式和範例可能後來會被證明是錯誤的,但這對你也有好處,因為它能讓你更深入地了解問題的複雜性。

最後的建議

人工智能是一個令人興奮、不斷發展的領域。機器學習工程師對於獲取相關知識的需求非常強烈,但這很容易被相關的新聞所淹沒。我們建議你隻跟蹤少量的信息來源和新聞信劄,以便能夠將公關和抽象研究與該領域的創新分離。這裏有一些資料也許對你有所幫助:

  • 黑客新聞(Hacker News):黑客新聞是一個專注於計算機科學、數據科學和企業家精神的社會新聞網站。它由著名的創業孵化器Y Combinator運營。不要因為網站的名字而拋棄這個網站! “黑客”這個詞的原始含義與網絡罪犯無關,它指的是那些依靠自己高超的編程技能來提出完美解決方案的人。

  • 引入AI(Import AI):Jack Clark負責的有關人工智能的新聞信劄,它始終與該領域最先進最重要的發展保持同步。

  • Insight博客:我們保持著相當活躍的步伐。在AI博客 中的一些帖子談論到了一些過去的項目,這些可以觸發一些靈感來解決有趣的問題。我們還定期發送一些有關AI的內容到郵件列表。注冊用戶請訪問這裏

文章原標題《Transitioning from Software Engineering to Artificial Intelligence》,作者:Emmanuel Ameisen,譯者:夏天,審校:主題曲。

文章為簡譯,更為詳細的你容,請查看原文

最後更新:2017-08-28 14:32:30

  上一篇:go  2017中國容器技術使用情況有獎調查
  下一篇:go  成為阿裏雲大使後 怎麼進入管理