4個步驟成功構(gòu)建出一個機器學(xué)習(xí)團隊
導(dǎo)讀
對一個公司來說,如何從0到1構(gòu)建一個機器學(xué)習(xí)團隊,是很多公司非常頭疼的問題,這篇文章給出了一些建議,對求職者來說,同樣具有參考價值。
在過去的幾年里,機器學(xué)習(xí)有了巨大的發(fā)展。但是,盡管機器學(xué)習(xí)是一門學(xué)科,管理機器學(xué)習(xí)團隊的技藝卻更年輕。當(dāng)今許多機器學(xué)習(xí)管理人員被迫進入管理崗位,要么是出于需要,要么是因為他們是最好的個人貢獻者,而且許多人純粹來自學(xué)術(shù)背景。在一些公司,工程師或產(chǎn)品負責(zé)人的任務(wù)是建立新的機器學(xué)習(xí)能力,而沒有任何真正的機器學(xué)習(xí)經(jīng)驗。
管理任何技術(shù)團隊都是困難的:
- 你必須雇傭優(yōu)秀的人。
- 你需要管理和發(fā)展它們。
- 你需要管理你的團隊的輸出,并確保你們的方向是一致的。
- 你會希望做出良好的長期技術(shù)選擇和管理技術(shù)債務(wù)。
- 你還必須管理來自領(lǐng)導(dǎo)層的期望。
管理一個機器學(xué)習(xí)團隊更加困難:
- 機器學(xué)習(xí)人才昂貴而稀缺。
- 機器學(xué)習(xí)小組有不同的角色。
- 機器學(xué)習(xí)項目時間安排不明確,不確定性高。
- 機器學(xué)習(xí)也是“技術(shù)債的高息信用卡”。
- 領(lǐng)導(dǎo)經(jīng)常不理解機器學(xué)習(xí)。
我最近參加了加州大學(xué)伯克利分校的“全棧深度學(xué)習(xí)訓(xùn)練營”,這是一門教授全棧生產(chǎn)深度學(xué)習(xí)的精彩課程。Josh Tobin的一個講座提供了關(guān)于機器學(xué)習(xí)團隊的最佳實踐。作為Josh講座的一部分,本文將為你提供一些關(guān)于如果你是一名經(jīng)理,如何考慮建立和管理機器學(xué)習(xí)團隊的見解,如果你是一名求職者,這篇文章也可能幫助你在機器學(xué)習(xí)領(lǐng)域找到一份工作。
第1步:定義角色
讓我們來看看最常見的機器學(xué)習(xí)角色和它們需要的技能:
- 機器學(xué)習(xí)產(chǎn)品經(jīng)理與機器學(xué)習(xí)團隊一起工作,給其他業(yè)務(wù)和最終用戶提供能力。這個人設(shè)計文檔,創(chuàng)建線框圖,制定出優(yōu)先級和執(zhí)行機器學(xué)習(xí)項目的計劃。
- DevOps工程師負責(zé)部署和監(jiān)控生產(chǎn)系統(tǒng)。此人負責(zé)運行部署的機器學(xué)習(xí)產(chǎn)品的基礎(chǔ)設(shè)施。
- 數(shù)據(jù)工程師是構(gòu)建數(shù)據(jù)pipeline、從數(shù)據(jù)存儲中聚合和收集數(shù)據(jù)、監(jiān)控數(shù)據(jù)行為的人……這個人使用Hadoop、Kafka和Airflow等分布式系統(tǒng)。
- 機器學(xué)習(xí)工程師是訓(xùn)練和部署預(yù)測模型的人。這個人使用TensorFlow和Docker等工具來處理生產(chǎn)中運行在真實數(shù)據(jù)上的預(yù)測系統(tǒng)。
- 機器學(xué)習(xí)研究員是訓(xùn)練預(yù)測模型的人,但通常是前瞻性的或不是生產(chǎn)關(guān)鍵的。這個人使用TensorFlow,PyTorch,Jupiter建立模型和報告來描述他們的實驗。
- 數(shù)據(jù)科學(xué)家實際上是一個用于描述上述所有角色的總括性術(shù)語。在一些公司中,這個角色實際上需要通過分析回答業(yè)務(wù)問題。

那么這些角色需要什么技能呢?上面的圖表顯示了一個很好的視覺效果,橫軸是機器學(xué)習(xí)的專業(yè)水平,而氣泡的大小是交流和技術(shù)寫作的水平(越大越好)。
- 機器學(xué)習(xí)DevOps主要是一個軟件工程角色,它通常來自一個標(biāo)準(zhǔn)的軟件工程管道。
- 數(shù)據(jù)工程師屬于與機器學(xué)習(xí)團隊積極合作的軟件工程團隊。
- 機器學(xué)習(xí)工程師需要罕見的機器學(xué)習(xí)和軟件工程技能的結(jié)合。這個人要么是一個自學(xué)成才的工程師,要么是一個在研究生畢業(yè)后從事傳統(tǒng)軟件工程師工作的科學(xué)/工程博士。
- 機器學(xué)習(xí)研究員是機器學(xué)習(xí)專家,通常擁有計算機科學(xué)或統(tǒng)計學(xué)的碩士或博士學(xué)位,或完成了一個工業(yè)獎學(xué)金項目。
- 機器學(xué)習(xí)產(chǎn)品經(jīng)理和傳統(tǒng)的產(chǎn)品經(jīng)理一樣,但是對機器學(xué)習(xí)的開發(fā)流程和思維方式有著深刻的了解。
- 數(shù)據(jù)科學(xué)家的角色包括從本科生到博士生的廣泛背景。
第2步:構(gòu)建團隊
關(guān)于構(gòu)建一個機器學(xué)習(xí)團隊的正確方法,目前還沒有共識,但是有一些最佳實踐是根據(jù)不同的公司原型及其機器學(xué)習(xí)成熟度級別而定的。首先,讓我們看看不同的機器學(xué)習(xí)公司原型是什么。
原型1 :初創(chuàng)和專業(yè)的機器學(xué)習(xí)
- 這些公司中沒有人在做機器學(xué)習(xí),或者機器學(xué)習(xí)是在一個特定的基礎(chǔ)上完成的。顯然,公司內(nèi)部幾乎沒有機器學(xué)習(xí)的專業(yè)知識。
- 這些企業(yè)要么是中小型企業(yè),要么是技術(shù)含量較低的教育或物流等行業(yè)的大公司。
- 機器學(xué)習(xí)經(jīng)常有唾手可得的成果。
- 但機器學(xué)習(xí)項目得到的支持很少,很難聘用和留住優(yōu)秀人才。
原型2:研究和開發(fā)機器學(xué)習(xí)
- 這些公司的機器學(xué)習(xí)工作集中在公司的研發(fā)部門,他們經(jīng)常雇傭機器學(xué)習(xí)研究人員和有發(fā)表論文經(jīng)驗的博士生。
- 這些是石油和天然氣、制造業(yè)或電信等部門的較大公司。
- 他們可以聘請有經(jīng)驗的研究人員,并致力于長期的業(yè)務(wù)重點,以獲得大的勝利。
- 然而,很難獲得高質(zhì)量的數(shù)據(jù),通常情況下,這類研究工作很少轉(zhuǎn)化為實際的業(yè)務(wù)價值,因此投資金額通常很小。
原型3:產(chǎn)品中嵌入機器學(xué)習(xí)
- 在這些公司中,某些產(chǎn)品團隊或業(yè)務(wù)單位除了擁有軟件或分析人才外,還擁有機器學(xué)習(xí)專長。這些機器學(xué)習(xí)人員向團隊的工程/技術(shù)主管匯報。
- 這些公司不是軟件公司就是金融服務(wù)公司。
- 機器學(xué)習(xí)的改進可能會帶來商業(yè)價值,此外,在創(chuàng)意迭代和產(chǎn)品改進之間存在一個緊密的反饋周期。
- 不幸的是,招聘和培養(yǎng)頂尖人才仍然非常困難,獲取數(shù)據(jù)和計算資源可能會滯后。機器學(xué)習(xí)項目周期和工程管理之間也存在潛在的沖突,因此長期的機器學(xué)習(xí)項目可能很難被證明是正確的。
原型4:獨立機器學(xué)習(xí)部門
- 這些是機器學(xué)習(xí)部門直接向高級領(lǐng)導(dǎo)匯報的公司。機器學(xué)習(xí)產(chǎn)品經(jīng)理與研究人員和工程師合作,將機器學(xué)習(xí)構(gòu)建成面向客戶的產(chǎn)品。他們有時可以發(fā)表長期研究。
- 這些公司通常是大型金融服務(wù)公司。
- 人才密度允許他們雇用和培訓(xùn)頂級從業(yè)者。高級領(lǐng)導(dǎo)可以整理數(shù)據(jù)和計算資源。這使得公司可以在機器學(xué)習(xí)開發(fā)的工具、實踐和文化方面進行投資。
- 缺點是,模型移交給不同的業(yè)務(wù)線可能是具有挑戰(zhàn)性的,因為用戶需要購買機器學(xué)習(xí)的好處,并在模型的使用上得到教育。此外,反饋周期可能很慢。
原型5:機器學(xué)習(xí)優(yōu)先
- 在這些公司中,CEO投資機器學(xué)習(xí),而整個行業(yè)中也有專注于快速成功的專家。機器學(xué)習(xí)部門從事具有挑戰(zhàn)性和長期性的項目。
- 這個群體包括大型科技公司和以機器學(xué)習(xí)為重點的初創(chuàng)公司。
- 他們有最好的數(shù)據(jù)訪問(數(shù)據(jù)思維滲透公司),最有吸引力的招聘渠道(具有挑戰(zhàn)性的機器學(xué)習(xí)問題往往會吸引頂級人才),最簡單的部署流程(產(chǎn)品團隊對機器學(xué)習(xí)有足夠的了解)。
- 這種類型的公司原型很難在實踐中實現(xiàn),因為在文化上很難在所有地方嵌入機器學(xué)習(xí)思維。
根據(jù)你的公司類似于上面的原型,你可以做出適當(dāng)?shù)脑O(shè)計選擇,大致可分為以下三類:
- 軟件工程師vs研究:機器學(xué)習(xí)團隊在多大程度上負責(zé)構(gòu)建或集成軟件?軟件工程技能在團隊中有多重要?
- 數(shù)據(jù)所有權(quán):機器學(xué)習(xí)團隊對數(shù)據(jù)收集、入庫、標(biāo)識和流水線有多少控制?
- 模型所有權(quán):機器學(xué)習(xí)團隊是否負責(zé)將模型部署到生產(chǎn)中?誰維護已部署的模型?
以下是設(shè)計建議…
如果你的公司專注于機器學(xué)習(xí)研發(fā):
- 研究絕對優(yōu)先于軟件工程技能。因此,這兩個組之間可能缺乏協(xié)作。
- 機器學(xué)習(xí)團隊對數(shù)據(jù)沒有控制權(quán),通常不會有數(shù)據(jù)工程師來支持他們。
- 機器學(xué)習(xí)模型很少投入生產(chǎn)。
如果你的公司已經(jīng)將機器學(xué)習(xí)嵌入到產(chǎn)品中:
- 軟件工程技能將優(yōu)先于研究技能。通常情況下,研究人員需要很強的工程技能,因為每個人都需要生產(chǎn)他/她的模型。
- 機器學(xué)習(xí)團隊一般沒有自己的數(shù)據(jù)生產(chǎn)和數(shù)據(jù)管理。他們需要與數(shù)據(jù)工程師一起建立數(shù)據(jù)管道。
- 機器學(xué)習(xí)工程師完全擁有他們部署到生產(chǎn)中的模型。
如果你的有一個獨立的機器學(xué)習(xí)部門:
- 每個小組都有很強的工程和研究技能,因此他們在團隊中緊密合作。
- 機器學(xué)習(xí)團隊在數(shù)據(jù)治理討論中有發(fā)言權(quán),并擁有強大的數(shù)據(jù)工程功能。
- 機器學(xué)習(xí)小組不干涉用戶的模型,但仍然負責(zé)維護它們。
如果你的公司是機器學(xué)習(xí)優(yōu)先:
- 不同的團隊或多或少以研究為導(dǎo)向,但一般來說,研究團隊與工程團隊緊密合作。
- 機器學(xué)習(xí)團隊通常擁有全公司范圍內(nèi)的數(shù)據(jù)基礎(chǔ)設(shè)施。
- 機器學(xué)習(xí)團隊將模型交給用戶,由用戶操作和維護。
下面的圖片很好地總結(jié)了這些建議:

3、管理項目
管理機器學(xué)習(xí)項目非常具有挑戰(zhàn)性:
- 根據(jù)Lukas Biewald的文章,即使在一個領(lǐng)域中,性能也可能有很大差異。
- 機器學(xué)習(xí)是非線性的。項目停滯數(shù)周或更長時間是很常見的。在早期階段,很難計劃一個項目,因為不清楚什么會起作用。因此,估計機器學(xué)習(xí)項目的時間表是非常困難的。
- 由于不同的價值觀、背景、目標(biāo)和規(guī)范,研究和工程之間存在文化差異。在不相容的文化中,雙方往往不重視對方。
- 通常,領(lǐng)導(dǎo)階層就是不理解這一點。
那么,如何更好地管理機器學(xué)習(xí)團隊呢?秘密武器是概率性地計劃機器學(xué)習(xí)項目!
本質(zhì)上,從這開始:

到

下面是一些其他的好方法:
- 你應(yīng)該嘗試一系列的方法。
- 你應(yīng)該根據(jù)投入來衡量進展,而不是結(jié)果。
- 你應(yīng)該讓研究人員和工程師一起工作。
- 你應(yīng)該盡快把端到端管道連接起來,以證明快速的勝利。
- 你應(yīng)該在機器學(xué)習(xí)時間表的不確定性上教育領(lǐng)導(dǎo)。
4、招聘人才
根據(jù)Element AI發(fā)布的《2019年全球人工智能人才報告》,有強有力的證據(jù)表明,頂級人工智能人才供不應(yīng)求。在人工智能研究的前沿,大約有2.2萬人在積極發(fā)表論文,并在學(xué)術(shù)會議上發(fā)言。只有大約4000人參與了對整個領(lǐng)域產(chǎn)生重大影響的研究。總共有36500人自稱是人工智能專家。與此相比,軟件開發(fā)者的數(shù)量在美國是420萬人,在世界上是2640萬人。
(1)如何尋找機器學(xué)習(xí)人才?
下面是一些招聘機器學(xué)習(xí)工程師的策略:
- 聘用有軟件工程技能、對機器學(xué)習(xí)有濃厚興趣及有學(xué)習(xí)欲望的人士。然后你可以訓(xùn)練他們進行機器學(xué)習(xí)。
- 考慮到現(xiàn)在大多數(shù)計算機科學(xué)本科畢業(yè)生都有機器學(xué)習(xí)的經(jīng)驗,去找初級職位吧。
- 明確你需要什么。例如,并不是每個機器學(xué)習(xí)工程師都需要做DevOps。
以下是雇傭機器學(xué)習(xí)研究人員的策略:
- 關(guān)注發(fā)表文章的質(zhì)量,而不是數(shù)量(例如,創(chuàng)意,執(zhí)行質(zhì)量)。
- 尋找具有研究重大問題眼光的研究人員。許多研究人員關(guān)注流行問題,卻沒有考慮它們的重要性。
- 尋找有學(xué)術(shù)以外經(jīng)驗的研究人員。
- 考慮招聘鄰近領(lǐng)域的人才,如數(shù)學(xué)、物理和統(tǒng)計。
- 考慮雇傭沒有博士學(xué)位的人。例如,有才華的本科生和碩士生,工業(yè)獎學(xué)金項目(谷歌,F(xiàn)acebook, OpenAI)的畢業(yè)生,甚至是專注的自學(xué)者。
你是如何找到這些候選人的呢?
- 有標(biāo)準(zhǔn)的信息來源,比如LinkedIn,通過招聘中介,參觀大學(xué)的招聘會。
- 你應(yīng)該參加著名的機器學(xué)習(xí)研究會議(NeurIPS, ICLR, ICML)的機器學(xué)習(xí)研究人員和著名的應(yīng)用機器學(xué)習(xí)會議(O 'Reilly, ReWork, TensorFlow World)的機器學(xué)習(xí)工程師。
- 你可以關(guān)注ArXiv的令人印象深刻的研究論文,并聯(lián)系第一作者。
對于一個長期的戰(zhàn)略,你需要考慮如何吸引這些候選人,讓你的公司脫穎而出:
- 由于機器學(xué)習(xí)實踐者希望使用最先進的工具和技術(shù),你的公司應(yīng)該致力于研究型項目,在博客上公布它們,并為你的機器學(xué)習(xí)團隊投資工具和基礎(chǔ)設(shè)施。
- 由于機器學(xué)習(xí)從業(yè)者希望在一個令人興奮的領(lǐng)域建立技能和知識,你的公司應(yīng)該圍繞學(xué)習(xí)建立團隊文化(即閱讀小組、學(xué)習(xí)日、專業(yè)發(fā)展預(yù)算、會議預(yù)算)。
- 由于機器學(xué)習(xí)從業(yè)者想要與優(yōu)秀的人一起工作,你的公司應(yīng)該招聘高知名度的人,或者幫助你最好的人通過發(fā)表博客和論文來建立他們的檔案。
- 因為機器學(xué)習(xí)從業(yè)者想要處理有趣的數(shù)據(jù)集,你的公司應(yīng)該在招聘材料中表現(xiàn)出你的數(shù)據(jù)集的唯一性。
- 由于機器學(xué)習(xí)實踐者想要做重要的工作,你的公司應(yīng)該推銷你公司的使命和機器學(xué)習(xí)對這個使命的潛在影響。更重要的是,你應(yīng)該從事那些對今天有實際影響的項目。
(2)如何面試機器學(xué)習(xí)候選人?
那么,在機器學(xué)習(xí)面試中,你應(yīng)該問些什么呢?
- 第一件事是驗證你對候選人優(yōu)點的假設(shè)。對于機器學(xué)習(xí)的研究人員來說,要確保他們能夠創(chuàng)造性地思考新的機器學(xué)習(xí)問題,并探究他們對之前項目的思考程度。對于機器學(xué)習(xí)工程師,確保他們是具有扎實工程技能的多面手。
- 第二件事是確保候選人在較弱的領(lǐng)域達到最低標(biāo)準(zhǔn)。對于機器學(xué)習(xí)研究人員,測試他們的工程知識和編寫良好代碼的能力。對于機器學(xué)習(xí)工程師,測試他們簡單的機器學(xué)習(xí)知識。
與傳統(tǒng)的軟件工程面試相比,機器學(xué)習(xí)面試的定義要模糊得多,但以下是常見的評估類型:
- 背景和文化相符
- 白板編程
- 結(jié)對編程/調(diào)試(通常是特定于機器學(xué)習(xí)的代碼)
- 數(shù)學(xué)題
- 關(guān)鍵項目
- 應(yīng)用機器學(xué)習(xí)(例如,解釋如何使用機器學(xué)習(xí)解決問題)
- 以前的項目(方法、試驗和錯誤、結(jié)果)
- 機器學(xué)習(xí)理論(如偏差-方差權(quán)衡、過擬合和欠擬合、特定算法…)
(3)如何找到從事機器學(xué)習(xí)的工作?
假設(shè)您是一名機器學(xué)習(xí)候選人,正在閱讀本文。你可能會問:“我怎么能找到機器學(xué)習(xí)的工作?”
- 同樣,有標(biāo)準(zhǔn)的資源,如LinkedIn,招聘人員,校園招聘。
- 你可以參加機器學(xué)習(xí)研究會議,和那里的人交流。
- 你也可以直接申請公司的門戶網(wǎng)站(記住這里有人才缺口!)
找工作當(dāng)然不容易,但有幾個方法可以脫穎而出:
- 建立一般的軟件工程技能(通過CS課程和/或工作經(jīng)驗)。
- 表現(xiàn)出對機器學(xué)習(xí)的興趣(通過參加會議和/或參加MOOCs)。
- 表明你對機器學(xué)習(xí)有廣泛的知識(例如,寫博客文章綜合一個研究領(lǐng)域)。
- 演示完成機器學(xué)習(xí)項目的能力(例如,創(chuàng)建小項目和/或復(fù)現(xiàn)論文)。
- 證明你可以創(chuàng)造性地思考機器學(xué)習(xí)(例如,贏得Kaggle競賽和/或發(fā)表論文)。
為了準(zhǔn)備面試,你應(yīng)該:
- 使用網(wǎng)絡(luò)資源進行一般的軟件工程面試的實踐。
- 準(zhǔn)備詳細談?wù)勀氵^去的項目,包括你所做的權(quán)衡和決定。
- 復(fù)習(xí)機器學(xué)習(xí)理論和基本的機器學(xué)習(xí)算法。
- 創(chuàng)造性地思考如何使用機器學(xué)習(xí)來解決面試公司可能面臨的問題。
我還建議大家去看看Chip Huyen在訓(xùn)練營發(fā)布的幻燈片:https://twitter.com/chipro/status/1196232680364376064,它包含了機器學(xué)習(xí)面試過程中雙方的一些重要經(jīng)驗。文后有下載鏈接。
總結(jié)
對于大多數(shù)傳統(tǒng)公司來說,機器學(xué)習(xí)是一門新興的、不斷發(fā)展的學(xué)科,組建機器學(xué)習(xí)團隊充滿了已知和未知的挑戰(zhàn)。如果你跳到最后,以下是最后幾個要點:
- 有許多不同的技能涉及到生產(chǎn)機器學(xué)習(xí),所以有機會為許多人作出貢獻。
- 機器學(xué)習(xí)小組變得更加獨立和跨學(xué)科。
- 管理機器學(xué)習(xí)團隊是困難的。沒有什么靈丹妙藥,但轉(zhuǎn)向概率規(guī)劃可能會有所幫助。
- 機器學(xué)習(xí)人才稀缺。作為一名經(jīng)理,在機器學(xué)習(xí)的工作描述中,要明確哪些技能是必須具備的。作為一名求職者,作為一個局外人打入市場可能會面臨殘酷的挑戰(zhàn),所以要把項目作為樹立認知度的信號。
希望這篇文章為你有效地建立機器學(xué)習(xí)團隊提供了有用的信息。在接下來的博客文章中,我將分享更多我在全棧深度學(xué)習(xí)訓(xùn)練營中學(xué)到的東西,敬請期待!