【我們為什麼挑選這篇文章】這篇文章的特別之處在於,是美國知名網站 Insight AI 與超過 50 個灣區和紐約頂尖團隊對話後的精華分享。內容不是艱深難懂的理論知識介紹,而是完整的學習方向指引,並且整理了非常實用的練習方法。究竟,AI 團隊們都認同的人工智慧專家必備五大技能為何?又該如何訓練?下面完整告訴你!(責任編輯:劉庭瑋)
近日,Insight AI 發布了一篇題為《Transitioning from Software Engineering to Artificial Intelligence》的文章,提出一名軟體工程師如果打算轉行做人工智能,需要掌握這 5 項技能:統計學、機器學習理論、數據整理、調試/調節模型、軟件工程。
關於將機器學習作為一項技能
作為軟體工程師關鍵在於要緊跟框架、標準以及範式的最新狀態。軟體工程師不停地努力學習,希望把最好的工具運用到工作中。機器學習在當今諸多的應用程序中找到了立足點,很自然地它就變成了許多工程師想要掌握的一項技能。
但是,相比於新框架機器學習更難掌握。作為一個高效的實踐者,你需要充分理解該領域的理論、廣泛掌握當前最尖端的知識,並且有能力以不確定的方式塑造問題。
網上很多的指南只會簡單地教你如何在一個策劃好的數據集上訓練可以立即使用的模型,並達到一個不錯的準確度,然後就結束了。 事實上,要成為一個優秀的機器學習工程師必須掌握更加廣泛的技能。
以下是 我們與超過 50 個灣區和紐約頂尖的機器學習團隊對話的精華部分,他們來到 Insight AI,準備好解決其問題並加速實現人工智能應用的普及。
為什麼機器學習不只是「另一個工具」
部署機器學習的解決方案不僅僅是在你的數據集上隨意訓練一個模型。它需要理解以下內容:
- 你擁有的數據類型、它的統計學分佈方式、它含有什麼偏差。
- 適用於你的特定數據集的統計模型,以及這些模型成功的可能性。
- 相關指標的優化以及你的模型輸出的意義。
換句話說, 為了整合、部署以及調試模型,除去工程學的知識,你還需要有統計學、線性代數和優化理論的基礎知識。
為一個問題搭建特定的機器學習解決方案,你需要考慮從數據的獲取、標記和預處理到構建、更新並服務一個推理模型以及中間的一切等問題。
最終,我們認為可以提前為標準的網站搭建一個數據接口(REST API)。我們不能保證機器學習模型總是收斂或產生有用的輸出。學習如何審視和傳遞有效的機器學習產出的 最佳方式是理解其理論基礎與數據分類之間聯繫的方式。
轉行人工智能你需要掌握這 5 項技能
1. 統計學
為了理解機器學習,堅實的統計學基礎知識是必須的。這包括:
- 評估模型成功的不同方法(精確度、召回率(recall)、特徵曲線下的面積等)。你選擇的損失函數和評估指標如何測量你的模型輸出的偏差。
- 如何理解過擬合(overfitting)和欠擬合(underfitting),以及偏差/變量權衡。
- 模型的結果與置信度之間有什麼聯繫。
2. 機器學習理論
當你在訓練神經網絡時,實際上發生了什麼?是什麼使這些任務可行而其它的不行呢? 對待該問題的好方法是,在深入理解理論之前,首先通過圖和實例理解機器學習。
需要理解的概念有不同的損失函數工作的方法,反向傳播有用的原因,以及計算圖究竟是什麼。深入理解構建函數模型並且與團隊其他成員有效地對其進行溝通非常關鍵。以下是一些資源,以高層概述開始,逐漸深入。
- Google 的深度學習課程是一個優秀的入門課程(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% 的方法並且更快地進行實現。 入門的時候,以最簡單的方法去解決問題(查看 Google 機器學習規則的第一點)。
- 如果你決定訓練一個更加複雜的模型以在基線上有所提升,不妨從數據集的一小部分入手,在分數據集上訓練模型使其過擬合。這保證了你的模型最起碼的學習能力。不斷地在模型上迭代直到你可以過擬合 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 中有一些推文關於之前的不同工程,並且可以為有趣的問題的結局提供不錯的靈感。我們同樣向訂閱的客戶定期發送人工智能的內容。
——————————————————————————————
【TechOrange 徵才:社群編輯+實習編輯】
► 你是否常在各類豐富的科技趨勢裡流連忘返?
► 你是否常被創業故事弄得熱血沸騰無法成眠?
► 你是否喜歡很有挑戰性、嘗試新事物的工作?
我想你大概就是得了 TO 病,不加入不行了。
準備好你的履歷自傳,寄至 jobs@fusionmedium.com
記得標註你要「應徵 TO 社群編輯」,才不會跑錯棚哦!
>> 詳細職缺訊息
—————————————————————————————
(本文經 機器之心 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈 觀點| 如何從一名軟件工程師轉行做人工智能? 〉。Photo credit: A Health Blog via Visual Hunt)
延伸閱讀
【自學就能創業】16 歲少女發明視網膜 AI 診斷模型,幫助全球 300 萬窮人免於失明!
60 歲才接觸電腦,82 歲日本阿嬤自學成為 iPhone 遊戲工程師
【自學平台 Udacity 翻轉你的命運】一個 46 歲的短期女工,自學轉職成為自動駕駛工程師
「稍後閱讀」等於「永遠不讀」:三大原則教你管理網路好文,製作個人自學資料庫!