机器学习从业人员到底做什么?
這篇文章是系列文章的第1部分,第2部分將闡述AutoML和神經架構搜索、第3部分將特別地介紹Google的AutoML。
關于機器學習人才的稀缺和公司聲稱他們的產品能夠自動化機器學習而且能完全消除對ML專業知識需求的承諾經常登上媒體的新聞頭條。在TensorFlow DevSummit的主題演講中,Google的AI總指揮Jeff Dean估計,有數千萬擁有可用于機器學習的數據而缺乏必要的專業知識和技能的組織。因為我在fast.ai主要專注于讓更多的人去使用機器學習并且讓它更容易使用,所以我密切關注剛才所提的機器學習人才稀缺等問題。
在考慮如何使機器學習的一些工作自動化以及讓具有更廣泛背景的人更容易使用這項技術,首先有必要問的是:機器學習行業從業者到底在做什么?任何用來解決機器學習專業知識稀缺的方案都需要回答這個問題:我們是否知道去教什么技能、去建立什么工具或者去自動化什么工序。
從事機器學習行業的人做什么?
構建數據產品是一項復雜的工作
雖然許多關于機器學習的學術來源幾乎都是預測建模,但這只是從事機器學習在正常情況下做的其中一件事。適當地分析商業問題,收集和清理數據,構建模型,實施結果,然后監控變化的過程在很多方式中是相互關聯的,這往往很難僅僅通過單個部分進行孤立(至少不知道其他部分需要什么)。正如Jeremy Howard等人在《設計出色的數據產品》上寫道:偉大的預測建模是解決方案的重要組成部分,但它不再獨立;隨著產品變得越來越復雜,它就會消失在管道中。
構建數據產品是一項復雜的工作
來自Google,D. Sculley等的一個團隊撰寫了經典的機器學習案例:《技術債務的高利率信用卡》,這是關于在實踐中使用機器學習時時常產生的代碼復雜性和技術債務。作者發現了許多系統級別的交互、風險和反模式,包括:
1.膠水代碼:為了將數據輸入和輸出通用軟件包而編寫的大量支持代碼;
2.管道叢林(pipeline jungles):以ML友好格式準備數據的系統可能成為刮擦,連接和采樣步驟的叢林,通常帶有中間文件輸出;
3.重新使用輸入信號的方式會導致其他不相交系統的意外緊耦合;
4.外部環境的變化可能使模型或輸入信號的行為意外發生改變的風險,這些可能難以監控。
作者寫道:現實世界的“機器學習”工作中一個重要部分是致力于解決這種形式的問題...值得注意的是,膠水代碼和管道叢林是整合問題的癥狀,可能是過度分離的“研究”和“工程”角色的根本原因 ...學術界可能會驚訝地發現,許多機器學習系統中只有很小一部分代碼實際上在進行“機器學習”。
當機器學習項目失敗時
在其中一次機器學習項目中,我發現了在工作空間失效的故障模式:
1.數據科學團隊構建了一個非??岬臇|西卻永遠不會被使用。關于他們正在進行的工作,組織的其余部門沒有任何支持,而且一些數據科學家對將什么投入生產并不十分清楚。
2.數據科學家積壓生產模型的速度比工程支持生產模型要快得多。
3.數據架構工程師由數據科學家分離出來。管道中現在沒有數據科學家所要求的數據,數據科學家也在利用數據架構工程師所收集的數據源。
4.該公司已經明確決定生產功能/產品X.他們需要數據科學家來收集支持此決策的一些數據。數據科學家感覺PM正在忽略與決策相矛盾的數據; PM認為數據科學家正在忽視其他商業邏輯。
5. 數據科學家大材小用:數據科學團隊采訪了一位令人印象深刻的數學建模和工程技巧的職位申請者,一旦被聘用,求職者就會加入到需要簡單業務分析的垂直產品團隊中。
在之前,我將這些視為組織失敗,但它們也可以被描述為各種從業者過分關注構成完整數據產品的復雜系統的一部分。這些是數據產品管道的不同部分之間的溝通和目標對齊的失敗。
那么,從事機器學習行業的人做什么?
如上所述,構建機器學習產品是一項多方面且復雜的任務。以下是機器學習從業者在此過程中可能需要做的一些事情:
理解上下文:
1.確定可以從機器學習中受益的商業領域;
2.與其他利益相關者溝通有關機器學習是什么和自己不具備的能力(通常存在許多誤解);
3.了解商業戰略,風險和目標,確保每個人都在同一平臺上;
4.確定組織擁有哪種數據;
5.適當地構建和審視任務;
6.理解操作約束(例如,在推理的時候選出實際可用的數據);
7.主動識別道德風險,包括騷擾者或進行宣傳/虛假宣傳活動(并計劃如何降低這些風險);
8.識別潛在的偏見和潛在的負反饋循環。
數據:
1.制定計劃收集更多不同的數據;
2.將來自許多不同來源的數據整理在一起:這些數據通常以不同的格式或不一致的慣例收集;
3.處理丟失或損壞的數據;
4.可視化數據;
5.創建適當的訓練集,驗證集和測試集;
模型:
1.選擇使用哪種模型;
2.將模型資源需求納入約束(例如,完成的模型是否需要在邊緣設備上運行,在低內存或高延遲環境中運行等);
3.選擇超參數(例如,在深度學習的情況下,這包括選擇架構、損失函數和優化器);
4.訓練模型(并調試為什么訓練不成功),這可能涉及:
?? 4.1調整超參數(例如學習率);
?? 4.2輸出中間結果,以查看損失,訓練誤差和驗證誤差如何隨時間變化;
?? 4.3檢查模型錯誤的數據以查找模式;
?? 4.4識別數據潛在的錯誤或問題;
?? 4.5思考你需要改變清理和預處理數據的方式;
?? 4.6意識到你需要更多或不同的數據增強;
?? 4.7意識到你需要更多或不同的數據;
?? 4.8嘗試不同的模型;
?? 4.9確定你的數據是否欠擬合或過擬合;
產品化:
1.使用你的模型作為端點創建API或Web應用程序以實現產品化;
2.將模型導出為所需的格式;
3.計劃你的模型需要使用更新的數據進行重新訓練的頻率;
監控:
1.跟蹤模型隨時間的變化;
2.監控輸入數據,以確定它是否隨著時間的推移而變化,從而使模型無效;
3.將你的結果傳達給組織的其他成員;
4.制定監督和應對錯誤或意外后果的計劃。
當然,不是每個機器學習從業者都需要完成上述所有步驟,但此過程的組件將成為許多機器學習應用程序的一部分。即使你只是處理這些步驟的一部分,熟悉其余過程也有助于確保你不會忽視會妨礙項目成功的注意事項!
機器學習中最難的兩個部分
對于我和我認識的許多其他人,我要強調機器學習(特別是深度學習)中最耗時和最令人沮喪的兩個方面:
1.處理數據格式化,不一致和錯誤通常是一個混亂和繁瑣的過程。
2.訓練深度學習模型是一個眾所周知的脆弱過程。
清理數據真的是ML的一部分嗎?是。
處理數據格式化,不一致和錯誤通常是一個混亂和繁瑣的過程。人們有時會將機器學習描述為從數據科學分離的過程,就像機器學習一樣,你可以從完美地清理數據,格式化數據集開始。但是,根據我的經驗,清理數據集和訓練模型的過程通常是交織在一起的:我經常在模型訓練中發現導致我返回并改變輸入數據的預處理的問題。
有必要去處理雜亂和不一致的數據
訓練深度學習模型是脆弱且困難的
訓練模型的困難嚇退了許多常常感到沮喪的初學者。甚至專家經常抱怨模型訓練過程有多么令人沮喪和變幻無常。斯坦福大學的一位人工智能研究員告訴我,他教過深度學習課程,并讓所有學生都做自己的項目,真是太難了!學生們無法讓他們的模型進行訓練,我們通常都會說:“好,這是深度學習”。擁有十多年經驗并獲得NIPS 2017年度時間獎的人工智能研究員Ali Rahimi在他的NIPS獎頒獎演講中抱怨模型訓練的脆弱性。有人向AI研究人員詢問:你們當中有多少人已經從零開始設計了一個深層網絡,從設計開始,架構以及其他流程來構建它,當它無效時,你感到糟糕透了?許多人舉了手。對于我來說,大概每3個月發生一次。甚至AI專家有時也難以訓練新模型,這一事實意味著該過程至今不能將其納入通用產品的方式實現自動化。一些深度學習的最大進步將通過發現更強大的訓練方法來實現。我們已經看到了一些像dropout(dropout是指在深度學習網絡的訓練過程中,對于神經網絡單元,按照一定的概率將其暫時從網絡中丟棄)、超融合和遷移學習這樣的進步,所有這些都使訓練變得更容易。通過遷移學習的力量,當為足夠狹窄的問題域定義時,模型訓練可以是一個健壯的過程。但是,我們仍然有辦法讓訓練更加健壯。
對于學術研究人員
即使你正在從事機器學習的理論研究,理解機器學習從業者在實際問題中所經歷的過程也是有用的,因為這可能會為你提供關于最相關或最具影響力的研究領域的見解。
正如Googler工程師D. Sculley等人寫道,技術債務是工程師和研究人員都需要注意的問題。為了提供微小精度優勢而以大幅提高系統復雜性為代價的研究解決方案很少是明智的做法......降低技術債務并不總是像證明新定理那樣令人興奮,但它是持續強勁創新的關鍵部分。為復雜的機器學習系統開發全面,優雅的解決方案是非常有益的工作。
AutoML
現在我們已經概述了機器學習從業者在其工作中所做的一些任務,我們已經準備好評估自動完成這項工作的嘗試。顧名思義,AutoML是一個專注于自動化機器學習的領域,作為AutoML的子領域的神經架構搜索,目前正受到大量關注。
以上為譯文。
本文由阿里云云棲社區組織翻譯。
文章原標題《what do machine learning practitioners actually do?》,
作者:Rachel Thomas?譯者:虎說八道,審校:。
閱讀原文
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的机器学习从业人员到底做什么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于机器学习,你需要知道的三件事!
- 下一篇: 【杭州云栖】飞天技术汇CDN与边缘计算专