入行AI最需要的五大技能章

把機(jī)器學(xué)習(xí)當(dāng)做一種技能

作為一名軟件工程師,我們應(yīng)該活到老學(xué)到老,時(shí)刻與不斷發(fā)展的框架、標(biāo)準(zhǔn)和范式保持同步。同時(shí),還要能活學(xué)活用,在工作中使用最合適的工具,以提高工作效率。隨著機(jī)器學(xué)習(xí)在越來(lái)越多的應(yīng)用程序中尋得了一席之地,它成為了廣大工程師迫切希望掌握的一門(mén)課題。

機(jī)器學(xué)習(xí)比一個(gè)新的框架更難掌握。要成為一名高效的實(shí)踐者,你需要深入理解該領(lǐng)域相關(guān)的理論,廣泛了解這個(gè)行業(yè)的現(xiàn)狀,以及具備以非確定性的方式構(gòu)建問(wèn)題的能力。

你可以在網(wǎng)上找到很多教程來(lái)教你如何在一個(gè)精心挑選過(guò)的數(shù)據(jù)集上訓(xùn)練一個(gè)現(xiàn)成的模型,并使之達(dá)到不錯(cuò)的準(zhǔn)確性。事實(shí)上,具備更多的相關(guān)技能是成為一個(gè)高效機(jī)器學(xué)習(xí)工程師的關(guān)鍵。

以下是我們與50多個(gè)頂尖機(jī)器學(xué)習(xí)團(tuán)隊(duì)的一些對(duì)話,他們來(lái)自海灣地區(qū)和紐約,這次來(lái)到Insight公司是為了探求人工智能從業(yè)者需要共同面對(duì)的問(wèn)題??,并希望能夠加快自己融入應(yīng)用人工智能領(lǐng)域的步伐 。

為什么機(jī)器學(xué)習(xí)“并不僅僅是另一種工具”

部署機(jī)器學(xué)習(xí)解決方案不僅僅是用數(shù)據(jù)對(duì)任意一個(gè)模型進(jìn)行訓(xùn)練。你還需要了解:

你所擁有的**數(shù)據(jù)的類(lèi)型**、**數(shù)據(jù)集在統(tǒng)計(jì)上如何分布**,以及數(shù)據(jù)集存在怎樣的偏差。

適用于特定數(shù)據(jù)集的**統(tǒng)計(jì)模型**,以及這些模型成功的概率。

模型**優(yōu)化**的相關(guān)指標(biāo),以及模型輸出的含義。

換句話說(shuō),要對(duì)模型進(jìn)行集成、部署和調(diào)試,除了要具備工程上的能力之外,你還需要了解統(tǒng)計(jì)的基本原理、線性代數(shù)和優(yōu)化理論。

要針對(duì)某個(gè)問(wèn)題構(gòu)建一個(gè)定制化的機(jī)器學(xué)習(xí)解決方案,需要考慮的東西涵蓋了從數(shù)據(jù)的獲取、標(biāo)記和預(yù)處理到模型的構(gòu)建、更新和服務(wù),以及這個(gè)過(guò)程中的所有一切。

最后,我們認(rèn)為,為標(biāo)準(zhǔn)Web應(yīng)用程序構(gòu)建一套R(shí)EST API是一個(gè)可以提前完成的任務(wù)。另一方面,機(jī)器學(xué)習(xí)模型不總是能保證收斂或者產(chǎn)生可用的輸出。學(xué)習(xí)如何審視和交付有影響力的機(jī)器學(xué)習(xí)產(chǎn)品的最佳方法是了解其理論基礎(chǔ)是如何與數(shù)據(jù)分類(lèi)學(xué)相關(guān)聯(lián)的。

轉(zhuǎn)行到應(yīng)用AI之前最需要掌握的5個(gè)技能

1. 統(tǒng)計(jì)學(xué)

要深入理解機(jī)器學(xué)習(xí),必須要有扎實(shí)的統(tǒng)計(jì)學(xué)基礎(chǔ)知識(shí),這涉及到幾個(gè)方面:

度量模型是否成功的各種方法(精確度、召回率、ROC曲線下面積等)。損失函數(shù)和評(píng)估指標(biāo)的選擇是如何**偏離模型的輸出**的。

如何理解**過(guò)擬合**和**欠擬合**,以及**偏差/方差折衷**。

你對(duì)模型的結(jié)果有什么樣的**信心**。

2. 機(jī)器學(xué)習(xí)理論

在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時(shí)候,實(shí)際上發(fā)生了什么?是什么使得某些任務(wù)可行,而其他任務(wù)不可行?要弄清楚這些問(wèn)題,最好的方法不是深入研究理論知識(shí),而是試著通過(guò)圖形和示例來(lái)了解機(jī)器學(xué)習(xí)。

需要理解的概念范圍包括:不同的**損失函數(shù)**的工作原理是什么、為什么**反向傳播**是有用的、**計(jì)算圖**是什么。而對(duì)于**如何建立一個(gè)功能模型**,以及**如何跟團(tuán)隊(duì)里的其他人員進(jìn)行有效地交流**,這些都需要深入地理解。下面我給出了一些參考資料:

谷歌的深度學(xué)習(xí)課程對(duì)深度學(xué)習(xí)做了一般性地介紹。

Fei-Fei Li的計(jì)算機(jī)視覺(jué)課程,以及Richard Socher的NLP課程,則提供了更為專(zhuān)業(yè)的介紹

Goodfellow編寫(xiě)的深度學(xué)習(xí)書(shū)籍相當(dāng)不錯(cuò),可用于全面了解深度學(xué)習(xí)方面的基礎(chǔ)知識(shí)。

另一個(gè)基本技能是閱讀、理解和實(shí)施論文的能力。這個(gè)一開(kāi)始做起來(lái)可能會(huì)感覺(jué)比較困難,所以最好的方法就是閱讀附帶代碼的論文(例如,研究GitXiv上的論文),并試著去理解它是如何實(shí)現(xiàn)的。

3. 數(shù)據(jù)處理

如果你去問(wèn)任何一個(gè)數(shù)據(jù)科學(xué)家他們的主要工作是什么,他們會(huì)告訴你,90%的工作是數(shù)據(jù)處理。這與應(yīng)用AI同樣重要,因?yàn)槟P偷某晒εc否與數(shù)據(jù)的質(zhì)量(和數(shù)量)強(qiáng)相關(guān)。數(shù)據(jù)工作包含多個(gè)方面,但可歸納為下面幾類(lèi):

數(shù)據(jù)采集(包括:找到好的數(shù)據(jù)源、準(zhǔn)確度量數(shù)據(jù)的**質(zhì)量**和**分類(lèi)**、獲取和推斷標(biāo)簽)

數(shù)據(jù)預(yù)處理(**缺失數(shù)據(jù)**填補(bǔ)、**特征工程**、數(shù)據(jù)**增強(qiáng)**、數(shù)據(jù)**規(guī)范化**、交叉驗(yàn)證分割)

數(shù)據(jù)后處理(使模型的輸出可用、清理工作、處理**特殊情況**和**異常值**)

熟悉數(shù)據(jù)處理工作最好的方法是獲取一個(gè)數(shù)據(jù)集并試著使用它。有很多在線數(shù)據(jù)集,以及很多提供API的社交媒體新聞媒體網(wǎng)站。基于上面提到的幾個(gè)步驟,我們可以這樣進(jìn)行學(xué)習(xí):

獲取一個(gè)開(kāi)源的數(shù)據(jù)集,并對(duì)其進(jìn)行檢查。它有多大(點(diǎn)和特征的數(shù)量)?數(shù)據(jù)如何分布?是否存在缺失值或異常值?

構(gòu)建一個(gè)將原始數(shù)據(jù)轉(zhuǎn)換為可用數(shù)據(jù)的轉(zhuǎn)換流程。如何填補(bǔ)缺失值?如何正確處理異常值?如何規(guī)范化數(shù)據(jù)?能創(chuàng)造出更多的表現(xiàn)特征嗎?

檢查轉(zhuǎn)換過(guò)的數(shù)據(jù)集。如果看起來(lái)一起正常,請(qǐng)繼續(xù)下一章節(jié)!

4. 對(duì)模型進(jìn)行調(diào)試或調(diào)優(yōu)

調(diào)試機(jī)器學(xué)習(xí)算法(無(wú)法收斂,或者得到的結(jié)果不合理)與調(diào)試普通代碼有著很大的區(qū)別。同時(shí),要找出合適的架構(gòu)和超參數(shù)則需要具備扎實(shí)的理論基礎(chǔ)和完備的基礎(chǔ)架構(gòu),以便對(duì)不同的配置進(jìn)行徹底的測(cè)試。

由于目前機(jī)器學(xué)習(xí)領(lǐng)域發(fā)展迅猛,而調(diào)試模型的方法也在不斷地發(fā)展。以下是從我們部署模型的討論和經(jīng)驗(yàn)中總結(jié)出來(lái)的“合理性檢查”列表,這些條目也以某種方式反映了許多軟件工程師熟悉的KISS原理。

從一個(gè)已經(jīng)被證明可以使用類(lèi)似數(shù)據(jù)集的**簡(jiǎn)單模型**開(kāi)始,以盡快獲得**基線**版本。經(jīng)典的統(tǒng)計(jì)學(xué)習(xí)模型(線性回歸、最近鄰居等)或者簡(jiǎn)單的啟發(fā)式算法或規(guī)則通常能幫你**解決80%的問(wèn)題**,并且能更快地實(shí)現(xiàn)需求。剛開(kāi)始的時(shí)候,要用最簡(jiǎn)單的方式來(lái)解決問(wèn)題(請(qǐng)參閱谷歌的機(jī)器學(xué)習(xí)規(guī)則的前幾點(diǎn))。

如果你決定訓(xùn)練一個(gè)更復(fù)雜的模型以改進(jìn)基線版本,那么可以用**數(shù)據(jù)集的一個(gè)很小的子集**來(lái)進(jìn)行訓(xùn)練并達(dá)到過(guò)擬合。這能夠確保這個(gè)模型至少還有學(xué)習(xí)的能力。不斷地對(duì)模型進(jìn)行迭代,直到對(duì)5%的數(shù)據(jù)量過(guò)擬合。

一旦開(kāi)始用更多的數(shù)據(jù)進(jìn)行訓(xùn)練,那么超參數(shù)就開(kāi)始發(fā)揮更大的作用了。你需要理解這些參數(shù)涉及到的**理論**,這樣才能找到合理的值。

請(qǐng)采用有針對(duì)性的方法對(duì)模型進(jìn)行調(diào)優(yōu)。簡(jiǎn)要地記錄下你曾經(jīng)使用的所有配置及其結(jié)果。在理想情況下,可以使用**自動(dòng)超參數(shù)搜索**策略。最開(kāi)始的時(shí)候,使用隨機(jī)搜索就足夠了。

你的開(kāi)發(fā)能力越強(qiáng),則這些步驟實(shí)現(xiàn)起來(lái)就越快,反之亦然。

5. 軟件工程

許多的應(yīng)用機(jī)器學(xué)習(xí)允許你充分發(fā)揮自己在軟件工程方面的技能,雖然有時(shí)也會(huì)有一點(diǎn)小改變。這些技能包括:

測(cè)試流水線的各個(gè)方面(數(shù)據(jù)的預(yù)處理和增強(qiáng)、輸入輸出的整理、模型推理時(shí)間)。

基于**模塊化**和可重用的原則來(lái)構(gòu)建代碼。

在訓(xùn)練過(guò)程中的不同點(diǎn)對(duì)模型進(jìn)行備份(**設(shè)置檢查點(diǎn)**)。

配置一個(gè)**分布式的基礎(chǔ)架構(gòu)**,這樣能更加有效地進(jìn)行訓(xùn)練、超參數(shù)搜索或者推演。

有關(guān)一名優(yōu)秀的機(jī)器學(xué)習(xí)工程師所需掌握的軟件技能,請(qǐng)查看我們的專(zhuān)題文章“從學(xué)術(shù)界轉(zhuǎn)行到應(yīng)用AI”。

工作中的小竅門(mén)

以上那些資源能幫你處理和解決實(shí)際的機(jī)器學(xué)習(xí)問(wèn)題。但是,應(yīng)用AI這個(gè)領(lǐng)域的變化非常快,因此,最好的學(xué)習(xí)方式是親身實(shí)踐,嘗試構(gòu)建一個(gè)端到端的方案來(lái)解決一個(gè)真正的問(wèn)題。

行動(dòng)項(xiàng):

尋找一個(gè)可能會(huì)比較有趣的產(chǎn)品來(lái)構(gòu)建。什么能使你的生活更有效率?什么工具可以改進(jìn)使用數(shù)據(jù)完成某些工作的方法?什么是以數(shù)據(jù)驅(qū)動(dòng)的方式來(lái)解決一個(gè)有趣的問(wèn)題?

搜索與問(wèn)題相關(guān)的數(shù)據(jù)集。對(duì)于大多數(shù)比較容易處理的問(wèn)題來(lái)說(shuō),已經(jīng)打過(guò)標(biāo)記的數(shù)據(jù)也許就是你正在尋找的。如果你的問(wèn)題沒(méi)有對(duì)應(yīng)的標(biāo)記過(guò)的數(shù)據(jù)集,那么現(xiàn)在就來(lái)做這件事吧。你可以通過(guò)哪些方法來(lái)找到類(lèi)似的數(shù)據(jù),或者高效地標(biāo)記數(shù)據(jù),或者以其他方式來(lái)加速完成這個(gè)工作?

在動(dòng)手之前,先看看你手頭的數(shù)據(jù)是否在數(shù)量和質(zhì)量上能滿足當(dāng)前任務(wù)的要求。在使用TensorFlow之前,最好先在網(wǎng)上找找其他人解決類(lèi)似問(wèn)題的方法。有哪些相關(guān)的**博客帖子**和**論文**能夠加快完成工作?

尋找一些靈感,然后深入研究!雖然你探索得到的模式和范例可能后來(lái)會(huì)被證明是錯(cuò)誤的,但這對(duì)你也有好處,因?yàn)樗茏屇愀钊氲亓私鈫?wèn)題的復(fù)雜性。

最后的建議

人工智能是一個(gè)令人興奮、不斷發(fā)展的領(lǐng)域。機(jī)器學(xué)習(xí)工程師對(duì)于獲取相關(guān)知識(shí)的需求非常強(qiáng)烈,但這很容易被相關(guān)的新聞所淹沒(méi)。我們建議你只跟蹤少量的信息來(lái)源和新聞信札,以便能夠?qū)⒐P(guān)和抽象研究與該領(lǐng)域的創(chuàng)新分離。這里有一些資料也許對(duì)你有所幫助:

黑客新聞(Hacker News):黑客新聞是一個(gè)專(zhuān)注于計(jì)算機(jī)科學(xué)、數(shù)據(jù)科學(xué)和企業(yè)家精神的社會(huì)新聞網(wǎng)站。它由著名的創(chuàng)業(yè)孵化器Y Combinator運(yùn)營(yíng)。不要因?yàn)榫W(wǎng)站的名字而拋棄這個(gè)網(wǎng)站! “黑客”這個(gè)詞的原始含義與網(wǎng)絡(luò)罪犯無(wú)關(guān),它指的是那些依靠自己高超的編程技能來(lái)提出完美解決方案的人。

引入AI(Import AI):Jack Clark負(fù)責(zé)的有關(guān)人工智能的新聞信札,它始終與該領(lǐng)域最先進(jìn)最重要的發(fā)展保持同步。

Insight博客:我們保持著相當(dāng)活躍的步伐。在AI博客中的一些帖子談?wù)摰搅艘恍?a target="_blank" rel="nofollow">過(guò)去的項(xiàng)目,這些可以觸發(fā)一些靈感來(lái)解決有趣的問(wèn)題。我們還定期發(fā)送一些有關(guān)AI的內(nèi)容到郵件列表。注冊(cè)用戶請(qǐng)?jiān)L問(wèn)這里

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

文章為簡(jiǎn)譯,更為詳細(xì)的你容,請(qǐng)查看原文鏈接

本文由用戶為個(gè)人學(xué)習(xí)及研究之目的自行翻譯發(fā)表,如發(fā)現(xiàn)侵犯原作者的版權(quán),請(qǐng)與社區(qū)聯(lián)系處理yqgroup@service.aliyun.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容