近日,Insight AI 釋出了一篇題為《Transitioning from Software Engineering to Artificial Intelligence》的文章,提出一名軟體工程師如果打算轉行做人工智慧,需要掌握這 5 項技能:統計學、機器學習理論、資料整理、除錯/調節模型、軟體工程。
Chris Lesniewski-Laas 正在與 Insight AI 員工討論 Dropbox 的機器學習問題
關於將機器學習作為一項技能
作為軟體工程師關鍵在於要緊跟框架、標準以及正規化的最新狀態。軟體工程師不停地努力學習,希望把最好的工具運用到工作中。機器學習在當今諸多的應用程式中找到了立足點,很自然地它就變成了許多工程師想要掌握的一項技能。
但是,相比於新框架機器學習更難掌握。作為一個高效的實踐者,你需要充分理解該領域的理論、廣泛掌握當前最尖端的知識,並且有能力以不確定的方式塑造問題。
網上很多的指南只會簡單地教你如何在一個策劃好的資料集上訓練可以立即使用的模型,並達到一個不錯的準確度,然後就結束了。事實上,要成為一個優秀的機器學習工程師必須掌握更加廣泛的技能。
以下是我們與超過 50 個灣區和紐約頂尖的機器學習團隊對話的精華部分,他們來到 Insight AI,準備好解決其問題並加速實現人工智慧應用的普及。
為什麼機器學習不只是「另一個工具」
部署機器學習的解決方案不僅僅是在你的資料集上隨意訓練一個模型。它需要理解以下內容:
- 你擁有的資料型別、它的統計學分佈方式、它含有什麼偏差。
- 適用於你的特定資料集的統計模型,以及這些模型成功的可能性。
- 相關指標的最佳化以及你的模型輸出的意義。
換句話說,為了整合、部署以及除錯模型,除去工程學的知識,你還需要有統計學、線性代數和最佳化理論的基礎知識。
為一個問題搭建特定的機器學習解決方案,你需要考慮從資料的獲取、標記和預處理到構建、更新並服務一個推理模型以及中間的一切等問題。
最終,我們認為可以提前為標準的網站搭建一個資料介面(REST API)。我們不能保證機器學習模型總是收斂或產生有用的輸出。學習如何審視和傳遞有效的機器學習產出的最佳方式是理解其理論基礎與資料分類之間聯絡的方式。
轉行人工智慧你需要掌握這 5 項技能
1—統計學
為了理解機器學習,堅實的統計學基礎知識是必須的。這包括:
- 評估模型成功的不同方法(精確度、召回率(recall)、特徵曲線下的面積等)。你選擇的損失函式和評估指標如何測量你的模型輸出的偏差。
- 如何理解過擬合(overfitting)和欠擬合(underfitting),以及偏差/變數權衡。
- 模型的結果與置信度之間有什麼聯絡。
2—機器學習理論
當你在訓練神經網路時,實際上發生了什麼?是什麼使這些任務可行而其它的不行呢?對待該問題的好方法是,在深入理解理論之前,首先透過圖和例項理解機器學習。
需要理解的概念有不同的損失函式工作的方法,反向傳播有用的原因,以及計算圖究竟是什麼。深入理解構建函式模型並且與團隊其他成員有效地對其進行溝通非常關鍵。以下是一些資源,以高層概述開始,逐漸深入。
- 谷歌的深度學習課程是一個優秀的入門課程(https://www.udacity.com/course/deep-learning--ud730)。
- 李飛飛的計算機視覺課程(http://cs231n.stanford.edu)和 Richard Socher 的自然語言處理課程(http://cs224d.stanford.edu)中包含更多專門的方法。
- Goodfellow 的深度學習書(http://cs224d.stanford.edu)特別好,對基礎進行了全面概述。
另一個基礎技能是有能力閱讀、理解和實驗研究論文。起初看上去這似乎是一個艱鉅的任務,所以一個不錯的方法是從一篇後面附有程式碼的論文開始,並深入理解其實現。
3—資料整理(Data Wrangling)
問任何一個資料科學家,他們會告訴你其 90% 的工作是資料再加工(data munging)。它對於應用人工智慧的重要性就如同你的模型的成功與你的資料的質量(和數量)高度相關一般。資料在許多方面起作用,可分為以下幾個類別:
- 資料獲取(找到好的資料來源,精確測定資料的質量和分類,獲取並推理標籤)
- 資料預處理(補全缺失值(missing data)、特徵工程、資料增強、資料歸一化、交叉檢驗拆分)
- 資料後處理(使模型的輸出有用,去除人為資料,處理特殊情況和異常值)
熟悉資料整理的最好方法是掌握原始的資料集,並嘗試使用它。網上有很多的資料集並且許多社交媒體和新聞媒體網站都有著很好的應用程式介面。遵循以下步驟是一個不錯的學習方法:
- 掌握一個開源的資料集並對其進行檢測。它有多大(觀測值和特徵值的數量)?資料是如何分佈的?是否有缺失值或者不含異常值?
- 開始在原始資料和有用資料之間構建一條轉換的通道。你是如何回填丟失值的呢?處理異常值最合適的方法是什麼?你如何歸一化資料?你可以創造更具表現力的特徵嗎?
- 檢查你的轉換資料集。如果一切看上去都不錯,進行下一步吧!
4—除錯/調節模型
對一些不收斂或者包含與除錯程式碼非常不同的過程但是給出合理結果的機器學習演算法進行除錯。同樣地,找到正確的架構和超引數需要堅實的理論基礎,良好的基礎建設工作可以測試不同的配置。
由於該領域在向前發展,除錯模型的方法也在不斷進化。以下是從我們的討論和部署反映了 KISS 理論和軟體工程師之間的熟悉度的模型的經驗中得來的「合理性檢查(sanity checks)」。
- 儘快從已被證明可以在類似資料集上工作的簡單模型入手,掌握基線。古典統計學習模型(線性迴歸、最近鄰等)或者簡單的啟發式方法或規則會讓你明白 80% 的方法並且更快地進行實現。入門的時候,以最簡單的方法去解決問題(檢視谷歌機器學習規則的第一點)。
- 如果你決定訓練一個更加複雜的模型以在基線上有所提升,不妨從資料集的一小部分入手,在分資料集上訓練模型使其過擬合。這保證了你的模型最起碼的學習能力。不斷地在模型上迭代直到你可以過擬合 5% 的資料。
- 一旦你開始在更多的資料上訓練,超引數就開始變得更重要了。理解這些引數背後的理論從而理解什麼是要探索的合理值。
- 使用理論方法調節你的模型。寫下你使用的最低限度的配置並總結其結果。理想情況下,使用自動超引數搜尋策略。在最開始,隨機搜尋可能就足夠了。儘可能地去探索更多理論方法吧。
許多步驟都能被你的開發技能加速,這引出了最後一個技能。
5—軟體工程
許多應用型機器學習允許你充分利用軟體工程技巧,有時需要做些變換。這些技巧包括:
- 測試轉換線路的不同方面(資料預處理和增強、輸入和輸出清除、模型推理時間)。
- 構建模組化的程式碼和可重複的實驗加速方法。
- 在訓練的不同階段備份模型(檢查點)。
- 建立一個分散式基礎架構來執行訓練、超引數搜尋或者更有效地推理。
想要知道更多我們推薦的成為優秀機器學習工程師的軟體技能,請檢視我們的推文:https://blog.insightdatascience.com/preparing-for-the-transition-to-applied-ai-8eaf53624079
在工作中使用工具
上述資源會幫助你處理切實的機器學習問題。但是應用人工智慧領域變化的特別快,最好的學習方式是動手實踐並且真正嘗試構建一個完整方案解決實際的問題。
待辦事項:
- 找一個你可以構建的產品應該會很有意思。什麼可以讓你的人生更高效呢?什麼是可以提升使用資料完成的方法的工具?什麼是解決一個有趣問題的資料驅動的方法?
- 尋找與問題相關的資料集。對於如今大多數容易處理的問題,你應該尋找標註資料。如果對於你的問題不存在標註資料集,那麼你就應該變得有創造性一點。什麼是尋找相似資料或者高效標註資料的方法?
- 從探索資料入手,看看你嘗試完成的任務在你所擁有資料的數量和質量下是否可行。在你開始 TensorFlow 之前,網上搜尋人們解決過的相似問題是一個不錯的主意。哪些是你可以閱讀的相關博文與論文,有助於你加快探索新方法?
找一些靈感,然後深入研究吧!記住,儘管機器學習工程的核心是構建產品,但是它還包含一個不可或缺的理論層面。你會探索一些模型和正規化,這些東西在未來也許被證明是不成功的,但是這非常好,因為它會使你更好地瞭解問題的複雜性。
附言
人工智慧是一個令人興奮、不斷變化的領域,它對機器學習工程師的需求很大,鋪天蓋地的新聞都在圍繞這個主題進行報導。我們建議聽取一些可靠的資源和新聞,從而將與該領域密切相關的一些創新中分離 PR 和抽象研究。以下是一些有所幫助的資源。
- Hacker News:這是一家關注電腦科學、資料科學和創業精神的社會新聞網站。由 Y Combinator 運營—一家著名的公司孵化器。別被名字騙了!「hacker」這個單詞最初的用法與網路罪犯沒什麼關係,而是指一些透過程式設計技巧相處聰明地解決問題的人。
- Import AI :由 OpenAI 的 Jack Clark 運營的一家不錯的簡報,在行業內保持領先地位。
- Insight Blog:我們時刻在進步。在我們 AI blog 中有一些推文關於之前的不同工程,並且可以為有趣的問題的結局提供不錯的靈感。我們同樣向訂閱的客戶定期傳送人工智慧的內容。
原文連結:https://blog.insightdatascience.com/preparing-for-the-transition-to-applied-ai-d41e48403447