0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如果你將踏上機(jī)器學(xué)習(xí)工程師就可能遇到 Daniel Bourke 相似經(jīng)歷

新機(jī)器視覺 ? 來源:陳年麗 ? 2019-07-16 09:57 ? 次閱讀

機(jī)器學(xué)習(xí)工程師的秘密。

如果未來的你將踏上機(jī)器學(xué)習(xí)工程師這條道路,那你很大可能將遇到和機(jī)器學(xué)習(xí)工程師 Daniel Bourke 相似的經(jīng)歷。在這一年的機(jī)器學(xué)習(xí)相關(guān)工作中,他發(fā)現(xiàn)很多事情都和想象的不同,有些事情也許看似沒有意義,卻價值無窮。

于是,他將這些經(jīng)歷與感悟總結(jié)起來,寫成了下面這篇文章。AI 科技評論將其編譯如下,相信這些經(jīng)歷與建議也會給未來將踏入 AI 行業(yè)的你帶來很大的啟發(fā)。

工作站,家庭辦公室和藝術(shù)工作室(照片由作者提供)

引入

實際上,機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)領(lǐng)域所涉及的工作并非想象那么單一;相反的是,它所涵蓋的內(nèi)容非常廣泛。往往一位數(shù)據(jù)科學(xué)家所做的與另一位會有很大的不同。機(jī)器學(xué)習(xí)工程師也是如此,只有在使用歷史(數(shù)據(jù))來理解或預(yù)測未來(建模)這方面比較相似。

為了將這些要點展現(xiàn)在下文中,我首先解釋一下我工作中所擔(dān)任的角色。我們有一個小機(jī)器學(xué)習(xí)咨詢團(tuán)隊,其中的內(nèi)容包含了從數(shù)據(jù)收集到操作、模型構(gòu)建再到能想到的每個行業(yè)的服務(wù)部署,所以我們每個人都扮演著多種角色。

作者Daniel Bourke的社交動態(tài)

工作日常

早上 9 點我走進(jìn)辦公室,問候大家早安,然后把食物放在冰箱里,倒一杯咖啡,走到我的辦公桌前坐下,看前一天的筆記,順便打開 Slack ,閱讀消息以及團(tuán)隊共享論文或博客文章的鏈接。這個領(lǐng)域發(fā)展很迅速,因此每天都有一些新文章。

所以通常在讀完未讀消息后,我會花一陣時間來瀏覽論文和博客文章,并仔細(xì)研究那些理解起來較困難的內(nèi)容。這其中,有一些內(nèi)容可能對我正在做的工作有所幫助。

關(guān)于閱讀時長:一般來說,閱讀會花費我大概一個小時甚至更久,這取決于文章本身。有些朋友會疑惑為什么我在閱讀上花費這么久的時間。但在我看來,閱讀是一種終極元技能。因為一旦有更好的方式來完成我當(dāng)前在做的事情,我可以通過學(xué)習(xí)并使用它,從而節(jié)約更多的時間和精力。但閱讀也有特殊情況,如果有一個項目的截止日期臨近,那么我將把閱讀時間縮短來推進(jìn)該項目。

然后我會檢查前一天的工作,檢查我的記事本所記下的被擱置的工作,這是每天最重要的一部分。

我的記事本是當(dāng)天的流動日記,例如:「我已經(jīng)將數(shù)據(jù)處理為正確格式,現(xiàn)在需要在模型中運行它。我將訓(xùn)練的啟動變得迅捷,當(dāng)程序完成后就馬上進(jìn)行訓(xùn)練?!谷绻以诠ぷ鬟^程中遇到了困難,則會寫下類似于:「發(fā)生了數(shù)據(jù)不匹配的情況,接下來我將嘗試修復(fù)混合匹配,并在嘗試新模型之前獲得基線?!?/p>

然后到下午 4 點,我會開始整理今天的工作,包括:整理寫下的混亂代碼,使其清晰明了,然后添加注釋,最后將它們進(jìn)行更好的組合。因為我常常會想,如果其他人不得不讀這個怎么辦?而剛好通常閱讀這個代碼的人就是我自己,我還經(jīng)常會在短時間內(nèi)忘記一連串的思路......

下午 5 點時分,我的代碼已經(jīng)被更新在 GitHub 上了,然后我就會在筆記本上記下第二天要做的事情。

這是理想的一天,但并非每一天都如此。有時我也可能在下午 4:37 時,突然產(chǎn)生一個新穎的想法,然后去嘗試完成它。

現(xiàn)在你已經(jīng)大致了解機(jī)器學(xué)習(xí)工程師日復(fù)一日的工作日常了,接下來我將具體闡述在工作中所學(xué)到的一些關(guān)于機(jī)器學(xué)習(xí)的經(jīng)驗與教訓(xùn)。

1. 機(jī)器學(xué)習(xí)始終與數(shù)據(jù)有關(guān)

很多時候,機(jī)器學(xué)習(xí)工程師會專注于構(gòu)建更好的模型,而不是改進(jìn)構(gòu)建它的數(shù)據(jù)。盡管構(gòu)建更大的模型并使用更強(qiáng)的計算能力可以提供令人興奮的短期結(jié)果;但是只在意眼前,你最終會在長期目標(biāo)上栽跟頭。

首次接觸一個項目時,請花費大量「不正?!沟臅r間去熟悉數(shù)據(jù)。我這里說的「不正?!?,通常是你預(yù)估時間的三倍。但從長遠(yuǎn)來看,這將節(jié)省你的時間。

這并不意味著你不應(yīng)該從細(xì)節(jié)著手,因為對于任何新數(shù)據(jù)集,你首先應(yīng)該明確的目標(biāo)是成為這方面的「專家」。檢查分布、找到不同類型的特征、異常值在哪兒、為什么它們是異常值……如果你無法講出當(dāng)前使用的數(shù)據(jù)信息,那又怎么讓模型更好的處理這些數(shù)據(jù)呢?

探索性數(shù)據(jù)分析生命周期的示例,更多關(guān)于探索性數(shù)據(jù)分析的詳細(xì)介紹(https://towardsdatascience.com/a-gentle-introduction-to-exploratory-data-analysis-f11d843b8184)

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

我遇到的大多數(shù)主要障礙都不是技術(shù)性的,而是溝通問題。當(dāng)然也總是存在技術(shù)挑戰(zhàn),不過我認(rèn)為這是工程師自身理應(yīng)解決的難題。

永遠(yuǎn)不要低估內(nèi)部和外部溝通的重要性,沒有什么比解決「錯誤」的技術(shù)挑戰(zhàn)更糟的了。這個「錯誤」是怎么發(fā)生的呢?

從外部來看,這并不是客戶所追求的與機(jī)器學(xué)習(xí)提供的東西不匹配,而是們可以提供的東西與客戶需求不匹配;而在內(nèi)部,因為很多人都有多項工作內(nèi)容,所以很難確保每個人都能將整個項目很好的整合起來。

外部問題如何解決?答案就是:下到基層。你的客戶是否了解你可以提供的服務(wù)?你了解你的客戶的問題嗎?他們是否了解機(jī)器學(xué)習(xí)可以提供什么以及它不能提供什么?怎樣更有效的傳達(dá)你的想法?

而對于內(nèi)部問題,根據(jù)嘗試解決問題的軟件工具數(shù)量,你就能大概判斷出內(nèi)部通信有多難:Asana,Jira,Trello,Slack,Basecamp,Monday,Microsoft Teams。我找到的最有效的方法之一是在一天結(jié)束時,每個人在相關(guān)項目頻道中進(jìn)行簡單的工作內(nèi)容更新。更新內(nèi)容包括:3-4 個工作重點、我做了什么、為什么,以及根據(jù)以上內(nèi)容我接下來要做什么。這個方法完美嗎?并不,但似乎很有效。它給了我一個機(jī)會來反思我做了什么和我想從大家那里得到的建議與意見。

無論你是多么優(yōu)秀的工程師,你維護(hù)產(chǎn)品的能力和獲得新業(yè)務(wù)的能力都與你溝通技巧以及這些溝通所帶給你的益處息息相關(guān)。

3. 通常來講,穩(wěn)定性優(yōu)于最先進(jìn)的技術(shù)

現(xiàn)在有一個自然語言問題:將文本分類到不同的類別,目標(biāo)是讓用戶將一段文本發(fā)送到服務(wù)并將其自動分類為兩個類別之一;如果模型對當(dāng)前問題把握不準(zhǔn),那么將文本傳遞給人類進(jìn)行分類;每天的負(fù)載約為 1000-3000 個請求,標(biāo)準(zhǔn)規(guī)模大小。

盡管 BERT(https://github.com/google-research/bert )這一年一直很火,但如果在這個任務(wù)中我們不用谷歌的大規(guī)模計算,而采用 BERT 訓(xùn)練模型來做的話,我們需要的東西需要改動很多內(nèi)容,而且這還是在投入生產(chǎn)之前需要進(jìn)行的工作。

相反,我們使用了另一種方法 ULMFiT,盡管它不是最先進(jìn)的,但仍然能夠產(chǎn)生期望的結(jié)果,并且使用起來更容易。

作者語錄:「Shipping something which works provides far more value than sitting on something you』re trying to push to perfection.」

4. 機(jī)器學(xué)習(xí)中的兩個鴻溝

將機(jī)器學(xué)習(xí)運用到實踐中存在兩個鴻溝。一個是從課程工作到項目工作的鴻溝,另一個是從筆記本中的模型到生產(chǎn)模型(模型部署)之間的鴻溝。

互聯(lián)網(wǎng)搜索機(jī)器學(xué)習(xí)課程會返回大量的內(nèi)容結(jié)果,我用了很多來完成自己的 AI 碩士學(xué)位(https://hackernoon.com/my-self-created-ai-masters-degree-ddc7aae92d0e )。

但即使在學(xué)完了許多最好的課程后,當(dāng)我開始擔(dān)任機(jī)器學(xué)習(xí)工程師時,我的技能仍然是建立在課程的結(jié)構(gòu)化主干上;但在實際工作中,項目并非按照課程那樣安排得井井有條。

我缺乏一些具體的知識,而這些知識并不能從課程中得到。例如:如何質(zhì)疑數(shù)據(jù)?需要探索什么數(shù)據(jù)?需要利用什么數(shù)據(jù)?

那么如何修正這個問題呢?我很幸運能夠成為澳大利亞最優(yōu)秀的人才,但我也愿意學(xué)習(xí)并愿意做錯。錯誤當(dāng)然不是目標(biāo);但為了正確,你必須弄清楚什么是錯的。如果你正在通過一門課程學(xué)習(xí)機(jī)器學(xué)習(xí),那么繼續(xù)學(xué)習(xí)這門課程,但你需要通過在自己的項目上工作,把你正在學(xué)習(xí)的東西放到實踐中,用特定的知識武裝你自己。

作者語錄:「Specific knowledge: skills which can』t be taught in a course but can be learned.」

至于如何進(jìn)行部署,在這點上我仍然做得不夠好,但我注意到了一種趨勢,即機(jī)器學(xué)習(xí)工程和軟件工程正在融合。通過像 Seldon,Kubeflow 和 Kubernetes 這樣的服務(wù),很快機(jī)器學(xué)習(xí)將成為堆棧的另一部分。在 Jupyter 筆記本中構(gòu)建模型是一回事,但是如何讓數(shù)千甚至數(shù)百萬人使用該模型呢?根據(jù)最近在 Cloud Native 活動上的討論情況來看,似乎大公司以外的人都不知道如何做到這一點。

5. 20%的時間

我們有一個規(guī)則——20%的時間。這意味著我們 20%的時間都會花在學(xué)習(xí)上。這里指的學(xué)習(xí)非常廣泛,只要是機(jī)器學(xué)習(xí)相關(guān)的都屬于學(xué)習(xí)范疇,并且我們身邊能夠找到有很多這樣的知識。

事實證明,這不僅僅是寶貴的,BERT 的 ULMFiT 使用時間也是 20%。20%的時間同時意味其余 80%將用于核心項目,即80%將用于核心產(chǎn)品(機(jī)器學(xué)習(xí)專業(yè)領(lǐng)域),20%用于與核心產(chǎn)品相關(guān)的新事物。

它并不總是需要分得這樣清楚,但這樣的分配是一個很好的目標(biāo)。如果你的業(yè)務(wù)優(yōu)勢在于現(xiàn)在所做的最好,那么未來的業(yè)務(wù)則取決于你繼續(xù)做最擅長的事情,也就是不斷學(xué)習(xí)所得。

6. 閱讀十分之一的論文,并采用更少數(shù)量的論文

這是一個粗略的數(shù)字。但探索任何數(shù)據(jù)集或現(xiàn)象,你很快就會發(fā)現(xiàn)這個規(guī)律隨處可見。這是 Zipf 定律(https://en.wikipedia.org/wiki/Zipf%27s_law )或 Price 定律(https://en.wikipedia.org/wiki/Price%27s_model )其中之一,換句話說,在每年數(shù)以千計的提交中,可能會有 10 篇開創(chuàng)性的論文;而在這 10 篇開創(chuàng)性的論文中,有 5 篇可能來自同一所研究所或個人。

你無法跟上每一個新的突破,但可以在獲得基本原則的堅實基礎(chǔ)下應(yīng)用它們。這些基礎(chǔ)經(jīng)受住了時間的考驗,新突破也是基于這些基本原則實現(xiàn)了突破。

接下來是探索與開發(fā)問題。

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

探索與開發(fā)問題是嘗試新事物和重新應(yīng)用已經(jīng)發(fā)揮作用事物之間的兩難選擇,但是你可以通過成為自己最大的質(zhì)疑者來處理探索與開發(fā)問題。

探索——通常來講,運行已經(jīng)使用的模型并獲得高精度數(shù)字是一件很容易的事情,然后我們會將其作為新基準(zhǔn)報告給團(tuán)隊。但是如果你得到了一個更好的結(jié)果,記得返回檢查你的工作,并再次讓你的團(tuán)隊這樣做。因為你是一名工程師兼科學(xué)家,時刻需要嚴(yán)謹(jǐn)。

開發(fā)——20%的時間花費在開發(fā)上是有幫助的,但如果你是在核心產(chǎn)品上花費 70%,在這個產(chǎn)品的二次開發(fā)上再花費 20%,而在 moonshots(可能短期之間不會起作用的事情)上花費 10%,這樣 70/20/10 的時間分配可能會更好。盡管我從來沒有在工作中刻意這樣安排,但這是我努力的方向。

8.「玩具問題」非常有效

特別是在為了幫助理解一個新概念、建立一些小事、數(shù)據(jù)集中的相關(guān)或者不相關(guān)一部分等問題上,將這些問題縮小到一個更小的「玩具問題」,是一個很有效的處理方法。

在一個小團(tuán)隊中,處理問題的訣竅是先讓事情有效,然后再進(jìn)行快速迭代。

9. 橡皮鴨

如果遇到問題,你坐下來盯著代碼可能會解決問題,也有可能不會。相反,與同事探討一下,假裝他們是你的橡皮鴨,可能事情會很容易解決,比如:

「Ron,我正在嘗試遍歷這個數(shù)組并跟蹤它的狀態(tài),同時循環(huán)訪問另一個數(shù)組并跟蹤狀態(tài),然后我想將這些狀態(tài)組合成一個元組列表?!?/p>

「循環(huán)中的循環(huán)?你為什么不把它矢量化呢?」

「我能這樣做嗎?」

「讓我們來看看?!?/p>

10. 從頭開始構(gòu)建的模型數(shù)量正在下降(或者至少你不需要開始重新構(gòu)建)

這和機(jī)器學(xué)習(xí)工程與軟件工程的融合有關(guān)。除非你的數(shù)據(jù)問題非常具體,否則許多主要問題非常相似,比如:分類、回歸、時間序列預(yù)測、建議。

谷歌和微軟的 AutoML 等服務(wù)正在為每個可以上傳數(shù)據(jù)集并選擇目標(biāo)變量的人提供世界一流的機(jī)器學(xué)習(xí)。而在開發(fā)人員方面,你有像 fast.ai(https://github.com/fastai/fastai )這樣的庫,它們可以在幾行代碼中提供最先進(jìn)的模型,以及各種模型動畫(一組預(yù)先構(gòu)建的模型),如 PyTorch hub(https://pytorch.org/hub )和 TensorFlow hub(https://www.tensorflow.org/hub )提供相同的功能。

這意味著了解數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的基本原理仍然是我們所需要做的,但是知道如何將它們應(yīng)用到實際問題中則更有價值。

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

對于我所處理的客戶問題,我們都是代碼優(yōu)先。所有的機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)代碼都是 Python。有時我會通過閱讀論文并復(fù)現(xiàn)它來學(xué)習(xí)數(shù)學(xué),但 99.9%的情況下,現(xiàn)有的框架都包含了數(shù)學(xué)。

這并不是說數(shù)學(xué)是不必要的,畢竟機(jī)器學(xué)習(xí)和深度學(xué)習(xí)都是應(yīng)用數(shù)學(xué)的形式。掌握最小矩陣操作、一些線性代數(shù)和微積分,特別是鏈?zhǔn)椒▌t(https://www.khanacademy.org/math/ap-calculus-ab/ab-differentiation-2-new/ab-3-1a/v/chain-rule-introduction )足以成為一名工程開發(fā)者。

請一定要記住,我們的目標(biāo)不是發(fā)明一種新的機(jī)器學(xué)習(xí)算法,而是向客戶展示潛在的機(jī)器學(xué)習(xí)對他們的業(yè)務(wù)有(或沒有)幫助。

12. 你去年所做的工作明年可能會無效

這是一定的,因為軟件工程和機(jī)器學(xué)習(xí)工程的融合,這種情況正在變得越來越明顯。

但這正是你進(jìn)入這個行業(yè)的原因??蚣軐l(fā)生變化,圖書館將發(fā)生變化,什么會保持不變?基礎(chǔ)統(tǒng)計數(shù)據(jù)、概率、數(shù)學(xué),這些事情都沒有過期日期。所以,最大的挑戰(zhàn)仍然是:如何應(yīng)用它們。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    31294

    瀏覽量

    269651
  • 機(jī)器學(xué)習(xí)

    關(guān)注

    66

    文章

    8428

    瀏覽量

    132845

原文標(biāo)題:一位機(jī)器學(xué)習(xí)工程師的獨白:影響你未來職業(yè)生涯的 12 件小事

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    【面試題】人工智能工程師高頻面試題匯總:機(jī)器學(xué)習(xí)深化篇(題目+答案)

    隨著人工智能技術(shù)的突飛猛進(jìn),AI工程師成為了眾多求職者夢寐以求的職業(yè)。想要拿下這份工作,面試的時候得展示出不僅技術(shù)過硬,還得能解決問題。所以,提前準(zhǔn)備一些面試常問的問題,比如機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 12-16 13:42 ?2023次閱讀
    【面試題】人工智能<b class='flag-5'>工程師</b>高頻面試題匯總:<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>深化篇(題目+答案)

    人工智能工程師高頻面試題匯總——機(jī)器學(xué)習(xí)

    隨著人工智能技術(shù)的突飛猛進(jìn),AI工程師成為了眾多求職者夢寐以求的職業(yè)。想要拿下這份工作,面試的時候得展示出不僅技術(shù)過硬,還得能解決問題。所以,提前準(zhǔn)備一些面試常問的問題,比如機(jī)器學(xué)習(xí)
    的頭像 發(fā)表于 12-04 17:00 ?933次閱讀
    人工智能<b class='flag-5'>工程師</b>高頻面試題匯總——<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>篇

    零基礎(chǔ)入門PCB工程師

    各位前輩大家好,零基礎(chǔ)入門PCB工程師,有什么學(xué)習(xí)資料推薦嗎?
    發(fā)表于 11-27 16:54

    FPGA算法工程師、邏輯工程師、原型驗證工程師有什么區(qū)別?

    ,共同進(jìn)步。 歡迎加入FPGA技術(shù)微信交流群14群! 交流問題(一) Q:FPGA中的FPGA算法工程師、FPGA邏輯工程師、FPGA原型驗證工程師三者有什么區(qū)別? A:FPGA 算法工程師
    發(fā)表于 09-23 18:26

    正是拼的年紀(jì)|65歲電子工程師上班VLOG #65歲退休 #電子工程師 #搞笑 #上班vlog

    電子工程師
    安泰小課堂
    發(fā)布于 :2024年07月25日 11:31:02

    嵌入式軟件工程師如何提升自己?

    的基礎(chǔ) 嵌入式軟件工程師需要具備扎實的計算機(jī)科學(xué)和工程知識。因此,在職業(yè)生涯的起步階段,建議重點放在學(xué)習(xí)基礎(chǔ)知識上,包括數(shù)據(jù)結(jié)構(gòu)、算法、操作系統(tǒng)、編程語言等。通過深入
    發(fā)表于 06-12 11:20

    嵌入式軟件工程師和硬件工程師的區(qū)別?

    、機(jī)器人等。 定義和工作職責(zé) 嵌入式軟件工程師的主要職責(zé)包括但不限于:設(shè)計、開發(fā)、測試和調(diào)試嵌入式軟件應(yīng)用程序,以滿足特定硬件和軟件要求。他們需要理解并掌握嵌入式系統(tǒng)的基本原理,熟悉相關(guān)硬件接口
    發(fā)表于 05-16 11:00

    大廠電子工程師常見面試題#電子工程師 #硬件工程師 #電路知識 #面試題

    電子工程師電路
    安泰小課堂
    發(fā)布于 :2024年04月30日 17:33:15

    芯片封裝工程師必備知識和學(xué)習(xí)指南

    芯片封裝工程師是現(xiàn)代電子行業(yè)中不可或缺的專業(yè)人才,他們的工作涉及將設(shè)計好的芯片封裝到細(xì)小的封裝體中,以確保芯片能夠在各種環(huán)境下穩(wěn)定、可靠地工作。本文詳細(xì)介紹芯片封裝工程師必備的專業(yè)知識,以及成為優(yōu)秀芯片封裝
    的頭像 發(fā)表于 04-26 10:50 ?2313次閱讀
    芯片封裝<b class='flag-5'>工程師</b>必備知識和<b class='flag-5'>學(xué)習(xí)</b>指南

    如何入門硬件工程師

    想跨行業(yè)做硬件設(shè)計工程師,應(yīng)該如何學(xué)習(xí)規(guī)劃呢
    發(fā)表于 03-17 21:49

    一位硬件工程師的歷練之路:從入門學(xué)習(xí)理論到... #搞笑 #硬件工程師 #電子工程師 #揚(yáng)興科技

    硬件工程師揚(yáng)興科技
    揚(yáng)興科技
    發(fā)布于 :2024年03月13日 17:50:21