中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

成為機(jī)器學(xué)習(xí)工程師第一年,我學(xué)到的 12 件事

2019-07-23    來源:raincent

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

作者:Daniel Bourke 來源:InfoQ

 

 

機(jī)器學(xué)習(xí)工程師再次榮登全球 IT 高薪榜單,但是成為一名機(jī)器學(xué)習(xí)工程師卻沒那么簡單。你不僅要處理代碼中的各種問題,還需要不斷學(xué)習(xí)、與其他部門的人員溝通、了解和學(xué)會使用各種新型代碼庫或模型……成為機(jī)器學(xué)習(xí)工程師的第一年,本文作者 Daniel Bourke 學(xué)到了 12 件重要的事,在此與你分享,如果你有共鳴,歡迎點(diǎn)贊和留言。

機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)都是含義較為寬泛的術(shù)語。舉個例子,即便兩人同為數(shù)據(jù)科學(xué)家,他們所做的事也可能大不相同。機(jī)器學(xué)習(xí)工程師也同樣如此。兩者的共同之處在于利用過去的(數(shù)據(jù))來理解或預(yù)測(構(gòu)建模型)未來。

我會先介紹一下我當(dāng)時(shí)的角色,然后再展開講述本文的要點(diǎn)。

當(dāng)時(shí)我們有一個小規(guī)模機(jī)器學(xué)習(xí)咨詢團(tuán)隊(duì),從事數(shù)據(jù)收集、數(shù)據(jù)處理、模型建立及服務(wù)部署等各個環(huán)節(jié)的工作,凡是你能想到的任何行業(yè),我們都有所涉及,所以每個人都身兼數(shù)職。

我使用“當(dāng)時(shí)”這兩個字眼是因?yàn)槲椰F(xiàn)在已經(jīng)不是一名機(jī)器學(xué)習(xí)工程師了,目前我專注于自己的事業(yè)。 你可以查看我做的一個視頻。

作為機(jī)器學(xué)習(xí)工程師的一天

每天早上九點(diǎn),我走進(jìn)工作室,和同事打完招呼,把食物放進(jìn)冰箱,泡上一杯咖啡,再走向我的辦工桌。接著我坐下來開始看前一天的筆記,打開 Slack,查看新消息和團(tuán)隊(duì)分享的論文或博客鏈接。我總會發(fā)現(xiàn)一些可以閱讀的內(nèi)容,因?yàn)檫@個領(lǐng)域發(fā)展很快。

處理完消息,我就開始瀏覽論文和博客,然后閱讀其中吸引我的內(nèi)容。通常情況下,我都會讀到一些可能對我正在研究的問題有幫助的內(nèi)容。閱讀時(shí)間一般會花費(fèi)一個小時(shí),有時(shí)會更長,視具體內(nèi)容而定。

為什么用這么長的時(shí)間?

閱讀是最基本的元技能,如果還有比這更好的方式,我會去學(xué)習(xí)和使用,好讓自己節(jié)省時(shí)間和力氣。

時(shí)針轉(zhuǎn)到上午十點(diǎn)。

如果有一個項(xiàng)目的截止日期快到了,我就會縮短閱讀時(shí)間,轉(zhuǎn)而推進(jìn)緊急的項(xiàng)目,這部分工作占用的時(shí)間最多。我會回顧自己前一天的工作,然后查看我的記事本看下一步要做什么。

我的記事本記的是當(dāng)天的日志。

“我已經(jīng)將數(shù)據(jù)處理成了正確的形狀,現(xiàn)在我需要在模型上運(yùn)行它。開始階段我會設(shè)置一個較短的訓(xùn)練時(shí)間,取得一些進(jìn)展后再逐漸延長。”

我也會遇到困難。

“出現(xiàn)了數(shù)據(jù)不匹配的情況。接下來我需要解決數(shù)據(jù)不匹配的問題,在嘗試新模型前得到一個基線。”

大多數(shù)時(shí)間都用來確保數(shù)據(jù)形式能夠成為模型。

下午四點(diǎn),我開始進(jìn)行收尾工作。我會清理一下自己創(chuàng)建的混亂代碼使其清晰可讀,然后添加一些注釋,最后再進(jìn)行重構(gòu)。萬一別的人會讀呢?我一般都會這樣想。當(dāng)然通常情況下讀的人會是我自己,因?yàn)槲液芸炀蜁洰?dāng)時(shí)的一連串想法。

下午五點(diǎn)我的代碼就已經(jīng)傳到 GitHub 上,第二天要用的筆記也已經(jīng)記好了。

上面描述的是理想狀態(tài)下的一天,并不是每天都是如此。有時(shí)到下午 4:37 了,我的腦子里會突然蹦出一個好想法,然后我就得把它實(shí)踐下去。

現(xiàn)在你已經(jīng)大致了解了我作為機(jī)器學(xué)習(xí)工程師的一天是怎樣度過的,接下來我會帶你了解一些更具體的內(nèi)容。

1. 最重要的是數(shù)據(jù)

如果你熟悉一些數(shù)據(jù)科學(xué)的第一原理,這點(diǎn)對你而言不過是老生常談。 但奇怪的是我經(jīng)常會忘記它。很多時(shí)候我們關(guān)注的是構(gòu)建一個更好的模型,而非改善構(gòu)建模型的數(shù)據(jù)。

構(gòu)建更大的模型、使用更多算力可以帶來不錯的短期效果,但是,捷徑走多了,最后就不得不走一些遠(yuǎn)路。

第一次接觸一個項(xiàng)目,多花些時(shí)間熟悉數(shù)據(jù)。通常情況下,你首先會估計(jì)出一個時(shí)長用來熟悉數(shù)據(jù),而所謂的“多花時(shí)間”就是多花兩倍的時(shí)間。長遠(yuǎn)來看,這樣做會節(jié)省你的時(shí)間。

這并不是說你不應(yīng)該從小處著手。后文會談到這一點(diǎn)。

面對新的數(shù)據(jù)集,你的目標(biāo)應(yīng)該是成為一名行業(yè)專家。你需要檢查數(shù)據(jù)集的分布情況,尋找不同種類的特征、異常值的位置,并了解為什么它們是異常值。如果你都不能了解自己正在處理的數(shù)據(jù),又怎么能指望你的模型呢?

 

 

探索性數(shù)據(jù)分析生命周期示例(每次遇到新數(shù)據(jù)集你會做的事)。

2. 溝通問題比技術(shù)問題更困難

我遇到的主要問題都不是技術(shù)性的,而是溝通層面的。當(dāng)然,技術(shù)難題總是存在的,但解決它們不就是一名工程師的工作嗎?

不要低估溝通的重要性,不管是外部溝通還是內(nèi)部溝通。沒有什么比解決錯了技術(shù)難題更糟糕了。

這種情況是怎么發(fā)生的?

從外部層面上看,問題在于客戶的需求與我們團(tuán)隊(duì)能提供的服務(wù)以及機(jī)器學(xué)習(xí)可以提供的服務(wù)之間不匹配,當(dāng)然,跟后者的關(guān)系更大。

從內(nèi)部層面上看,由于團(tuán)隊(duì)成員往往身兼數(shù)職,因此很難確保每個人都目標(biāo)一致。

這些挑戰(zhàn)并不獨(dú)特。機(jī)器學(xué)習(xí)看起來很奇幻,在某些情況下確實(shí)如此,但在另外一些情況下就不是了,承認(rèn)這一點(diǎn)很重要。

外部溝通問題如何解決?

經(jīng)常聯(lián)系。你的客戶了解你能提供什么服務(wù)嗎?你理解客戶的問題嗎?客戶理解機(jī)器學(xué)習(xí)能提供什么,不能提供什么嗎?什么樣的方式才能有效傳達(dá)自己的發(fā)現(xiàn)?

內(nèi)部溝通問題呢?

你可以根據(jù)解決內(nèi)部溝通問題的軟件工具的數(shù)量來判斷內(nèi)部溝通有多難。 這些工具有 Asana、Jira、Trello、Slack、Basecamp、Monday 及 Microsoft Teams。

我找到的最有效的方法之一是在一天結(jié)束時(shí)在相關(guān)項(xiàng)目的交流通道中簡單更新一條消息。

更新內(nèi)容包括:

三至四項(xiàng)
我做了什么
為什么這么做

下一步:

根據(jù)以上內(nèi)容,我接下來打算做什么

這種方式完美嗎? 不,但它似乎有效。 它讓我有機(jī)會反思我做了什么以及想做什么。這樣做還有一個額外的好處是公開化,這意味著如果有人不滿意我的工作,我可能會受到批評。

作為工程師你有多優(yōu)秀并不重要,影響你能否維護(hù)和獲得新業(yè)務(wù)的是你的溝通能力,也就是你能不能把自己的技能及其帶來的好處傳播出去。

3. 穩(wěn)定性>先進(jìn)性

我們碰到過一個將文本進(jìn)行分類的自然語言問題。我們希望,用戶在將一段文字發(fā)送到一項(xiàng)服務(wù)后,這段文字能被自動劃分到兩類中的一類。如果這個模型對預(yù)測結(jié)果不自信,這段文字就會被傳送給人工分類員。每天可以發(fā)起 1000~3000 次分類請求,從數(shù)量上看不多也不少。

BERT是今年的熱門,如果沒有谷歌的規(guī)模計(jì)算,訓(xùn)練一個 BERT 模型來做我們需要做的事需要大量數(shù)據(jù)改動。這還只是投入生產(chǎn)之前。

于是我們使用了另一個方法ULMFiT,從理論上看它不是最先進(jìn)的,但仍能產(chǎn)生非常多的結(jié)果,且使用起來更加容易。

與其執(zhí)著于在一個東西上追求完美,不如嘗試其它有用的東西,這會帶來更多價(jià)值。

4. 機(jī)器學(xué)習(xí)的兩大障礙

將機(jī)器學(xué)習(xí)應(yīng)用到實(shí)踐中存在兩大障礙 ,一是從課程學(xué)習(xí)到項(xiàng)目落地的障礙,二是從電腦模型到實(shí)際生產(chǎn)模型的障礙(模型部署)。

在網(wǎng)上搜索機(jī)器學(xué)習(xí)課程,可以找到非常多的內(nèi)容。我利用其中的一些內(nèi)容創(chuàng)建了自己的人工智能碩士學(xué)位項(xiàng)目。

然而,在我學(xué)完許多最優(yōu)質(zhì)的課程,并開始成為一名機(jī)器學(xué)習(xí)工程師之后,我的技能還是建立在機(jī)器學(xué)習(xí)課程構(gòu)建的骨架之上。在現(xiàn)實(shí)中,項(xiàng)目根本不是結(jié)構(gòu)化的。

我缺少特定知識,這種技能在課程中是學(xué)不到的,比如如何質(zhì)疑數(shù)據(jù)、要探索什么以及利用什么。

特定知識:課程中沒有但可以學(xué)習(xí)的技能。

什么是修正?

我很幸運(yùn)能和澳大利亞最優(yōu)秀的人才一起工作,我愿意學(xué)習(xí),愿意犯錯。當(dāng)然,犯錯不是目的,但為了正確,你必須明辨什么是錯的。

如果你正在學(xué)習(xí)機(jī)器學(xué)習(xí)的課程,那就跟著學(xué)下去,但同時(shí)你也要把所學(xué)知識勇于實(shí)踐,開展自己的項(xiàng)目,用特定知識來武裝自己。

關(guān)于部署

在這方面我仍然很弱,但我確實(shí)注意到了一個趨勢————機(jī)器學(xué)習(xí)工程和軟件工程正在融合。有了Seldon、Kubeflow和Kubernetes之類的服務(wù),機(jī)器學(xué)習(xí)很快會成為堆棧的另一部分。

你可以在 Jupyter Notebook 上構(gòu)建一個模型,但是怎樣才能讓幾千人,甚至是幾百萬人都能獲取呢?據(jù)我觀察,在大公司以外沒有太多人知道怎么做。

5. 20% 時(shí)間原則

我們有一個 20% 時(shí)間原則,意思是我們會用 20% 的時(shí)間來學(xué)習(xí)東西(things)。“東西”一詞 的含義較為松散,在這里它指的是機(jī)器學(xué)習(xí)領(lǐng)域的內(nèi)容,而且相關(guān)內(nèi)容很多。

這一原則不止一次體現(xiàn)了它的價(jià)值,比如 我們就是在花 20% 的時(shí)間學(xué)習(xí)時(shí)才發(fā)現(xiàn) ULMFiT 優(yōu)于 BERT。

我們花 20% 的時(shí)間來學(xué)習(xí)就意味著剩下的 80% 的時(shí)間會花在核心項(xiàng)目上。

80% 的時(shí)間用在核心產(chǎn)品上(機(jī)器學(xué)習(xí)專業(yè)服務(wù))

20% 的時(shí)間用在與核心產(chǎn)品相關(guān)的新事物上

時(shí)間不一定總是遵循二八比例進(jìn)行劃分,但有這樣一個目標(biāo)還是很不錯的。

如果你的商業(yè)優(yōu)勢在于你是自己所在領(lǐng)域的最優(yōu)秀的,那么未來你的優(yōu)勢應(yīng)該是繼續(xù)保持自己作為最優(yōu)秀人才的地位,而這就意味著不斷學(xué)習(xí)。

6. 被閱讀的論文只占十分之一,被使用的就更少了

這是比較粗略的說法, 但如果你去探索任何數(shù)據(jù)集或現(xiàn)象,很快就會發(fā)現(xiàn)它確實(shí)普遍存在。 按照 Price 定律的說法,全部作者總量的平方根貢獻(xiàn)了一半的出版物。

換句話說,在每年提交的成千上萬篇論文中,可能會有 10 篇具有開創(chuàng)性。 而在這 10 篇開創(chuàng)性的論文中,有 5 篇可能來自同一所研究所或個人。

所以結(jié)論是?

你無法跟進(jìn)每個新突破(新突破指的是創(chuàng)新性突破),所以最好學(xué)會基本原則,打下堅(jiān)實(shí)基礎(chǔ),再去應(yīng)用這些原則。 它們已經(jīng)經(jīng)受住了時(shí)間的考驗(yàn)。

接下來我要說的是探索 - 利用問題(exploration versus exploration problem)。

7. 做你自己最大的質(zhì)疑者

你可以通過成為你自己最大的質(zhì)疑者來解決探索 - 利用問題。

這個問題其實(shí)是體現(xiàn)了在嘗試新事物與舊技重操之間的兩難困境。

利用

運(yùn)行一個你已經(jīng)用過的模型來得到高精度數(shù)字是件很容易的事,你可以把它作為新基準(zhǔn)匯報(bào)給團(tuán)隊(duì)。 但是如果你打算得到一個好結(jié)果,就要記得多檢查幾次你的工作,同時(shí)讓你的團(tuán)隊(duì)也這樣做。

探索

我們可以花 20%的時(shí)間來進(jìn)行探索, 但其實(shí) 70%-20%-10% 這樣的時(shí)間劃分比例可能更好。 你可以在核心產(chǎn)品上花費(fèi) 70%的時(shí)間,在核心產(chǎn)品的上層構(gòu)建上花 20%的時(shí)間,然后在那些可能進(jìn)展不順利的事上花費(fèi) 10%的時(shí)間。

我做機(jī)器學(xué)習(xí)工程師時(shí)沒有親身實(shí)踐過這個比例劃分,但現(xiàn)在我正在向這個標(biāo)準(zhǔn)靠近。

8. “玩具問題” 有用

玩具問題(toy problem)是有用的,尤其可以幫助理解一個新概念。先從小處做起,可以先構(gòu)建一個你自己數(shù)據(jù)的子集,或者一個不相關(guān)的數(shù)據(jù)集。

在一個小團(tuán)隊(duì)工作的技巧就是先讓一件事運(yùn)作起來,然后進(jìn)行重復(fù)迭代, 最后加快速度。

9. 橡皮鴨

我是從 Ron 那里學(xué)到這一點(diǎn)的。如果你在一個問題上卡住了,繼續(xù)坐著盯著代碼看可能會幫你解決它,也可能不能。但你還可以和其他的團(tuán)隊(duì)成員討論一下,假裝他們是你的橡皮鴨。

“Ron,我正試著遍歷這個數(shù)組,并跟蹤它的狀態(tài),與此同時(shí)我還要遍歷另一個數(shù)組并跟蹤其狀態(tài),然后我想將這些狀態(tài)組合成一個元組列表。”*

“嵌套循環(huán)嗎?你為什么不把它向量化?”

“我可以這樣做嗎?”

“試試看。”

10. 從零開始構(gòu)建的模型正在減少

這點(diǎn)牽涉到了上文我們提到的機(jī)器學(xué)習(xí)工程正在與軟件工程融合這一觀點(diǎn)。

除非你的數(shù)據(jù)問題十分具體,否則許多主要問題都是十分相似的,涉及到分類、回歸、時(shí)間序列預(yù)測及推薦。

谷歌和微軟的 AutoML 及其它服務(wù)允許那些能上傳數(shù)據(jù)集并選擇目標(biāo)變量的人獲取世界一流的機(jī)器學(xué)習(xí)內(nèi)容,雖然這些服務(wù)還處于發(fā)展的早期階段,但它們的勢頭越來愈強(qiáng),發(fā)展速度也越來越快。

此外,由于 fast.ai 之類的庫以及各種 model zoo(一組預(yù)先構(gòu)建的模型,如 PyTorch hub 和 TensorFlow hub)的存在,開發(fā)人員只需幾行代碼就可以調(diào)用最先進(jìn)的模型。

這意味著什么?

了解數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的基本原則是必須的,但知道如何利用它們來解決問題才更有價(jià)值。

現(xiàn)在你的基線可能要么接近先進(jìn)模型,要么已經(jīng)稱得上先進(jìn)了。

11. 數(shù)學(xué)還是代碼?

處理客戶問題時(shí),我們都是代碼優(yōu)先。 所有的機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)代碼都是用 Python 寫的。 有時(shí)我在閱讀論文并重現(xiàn)論文實(shí)驗(yàn)結(jié)果時(shí)會稍稍涉足數(shù)學(xué),但 99.9%時(shí)間里,現(xiàn)有的框架就已經(jīng)包含了數(shù)學(xué)。

這并不是說數(shù)學(xué)不必要,畢竟機(jī)器學(xué)習(xí)和深度學(xué)習(xí)都是應(yīng)用數(shù)學(xué)的形式。

了解最小矩陣運(yùn)算、一些線性代數(shù)和微積分知識,特別是鏈?zhǔn)椒▌t,足以讓一個人成為機(jī)器學(xué)習(xí)領(lǐng)域的從業(yè)者。

請注意,我的目標(biāo)不是發(fā)明一種新的機(jī)器學(xué)習(xí)算法,而是向客戶展示機(jī)器學(xué)習(xí)可以為他們的業(yè)務(wù)提供什么以及不能提供什么。

旁注:在這篇文章的過程中,fast.ai 發(fā)布了一個新課程《深度學(xué)習(xí)基礎(chǔ)》,從零開始介紹深度學(xué)習(xí)涉及的數(shù)學(xué)和代碼知識。 它面向的是跟我一樣熟悉深度學(xué)習(xí)和機(jī)器學(xué)習(xí)應(yīng)用但缺乏數(shù)學(xué)背景的人。 為了解決這個問題,我認(rèn)真學(xué)了這門課程,并立刻將它添加到我最喜歡的機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)資源列表中。 如果基礎(chǔ)扎實(shí),你可以構(gòu)建自己的先進(jìn)技術(shù),而無需在舊技術(shù)的基礎(chǔ)上再去迭代。

12. 你去年做的工作到了明年可能就沒用了

這是必然的。隨著軟件工程和機(jī)器學(xué)習(xí)工程日益融合,這種情況越來越多。

你所處的就是這樣一個多變的領(lǐng)域。

有什么是一成不變的呢?

雖然框架和庫都會發(fā)生變化,但底層的統(tǒng)計(jì)學(xué)、概率論以及數(shù)學(xué)是沒有什么終止日期的(適逢 fast.ai 推出新課程,它們恰恰迎來了好時(shí)機(jī))。

最大的挑戰(zhàn)仍然在于:你如何應(yīng)用他們。

原文鏈接:https://towardsdatascience.com/12-things-i-learned-during-my-first-year-as-a-machine-learning-engineer-2991573a9195

標(biāo)簽: 機(jī)器學(xué)習(xí) 數(shù)據(jù)處理

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:什么是數(shù)據(jù)科學(xué)?數(shù)據(jù)科學(xué)相關(guān)的名詞解釋

下一篇:AI攻陷多人德?lián)湓俚荢cience,訓(xùn)練成本150美元,每小時(shí)贏1000刀