機(jī)器學(xué)習(xí)工程師第一年的 12 點體會

      網(wǎng)友投稿 864 2022-05-30

      本文轉(zhuǎn)自 |?人工智能大數(shù)據(jù)與深度學(xué)習(xí)(ID:datayx)

      機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)都是廣義上的術(shù)語,它們涉及超級多的領(lǐng)域以及知識,一位數(shù)據(jù)科學(xué)家所做的事情可能與另一位有很大的不同,機(jī)器學(xué)習(xí)工程師也是如此。通常使用過去(數(shù)據(jù))來理解或預(yù)測(構(gòu)建模型)未來。

      為了將上面剛剛提到的要點融入上下文中,我必須要解釋我的角色是什么。曾經(jīng)我呆在一個小機(jī)器學(xué)習(xí)咨詢團(tuán)隊。我們做到了從數(shù)據(jù)收集到清洗、構(gòu)建模型再到你能想到的多個行業(yè)的服務(wù)部署。因為團(tuán)隊很小,所以每個人頭上都有很多頭銜。

      機(jī)器學(xué)習(xí)工程師的日常:

      早上9點,我走進(jìn)辦公室,向同事問好,把食物放在冰箱里,倒一杯咖啡,走到我的辦公桌前。然后我坐下來,看看前一天的筆記,打開Slack,閱讀未讀的消息并打開團(tuán)隊共享的論文或博客文章鏈接,因為這個領(lǐng)域發(fā)展很快,所以要多看一些前沿的東西。

      我通常都是在讀完未讀消息后,會花一點時間來瀏覽論文和博客文章,并仔細(xì)研究那些理解起來困難的內(nèi)容。不得不說這其中,有一些內(nèi)容對我正在做的工作有很大的幫助。一般來說,閱讀會花費(fèi)我大概一個小時甚至更久,這取決于文章本身。有些朋友會問我為什么這么久?

      在我看來,閱讀是一種終極元技能。因為一旦有更好的方式來完成我當(dāng)前在做的事情,我會立即通過學(xué)習(xí)使用它,從而節(jié)約更多的時間和精力。但也有特殊情況,如果有一個項目的截止日期臨近,那么我將把閱讀時間縮短來推進(jìn)該項目。

      完成閱讀之后,我會檢查前一天的工作,檢查我的記事本,看看我需要從什么地方開始工作,為什么我可以這樣做?因為我的記事本是流水賬式的日記。

      例如:「將數(shù)據(jù)處理為正確格式,現(xiàn)在需要在模型中訓(xùn)練這些數(shù)據(jù)?!谷绻以诠ぷ鬟^程中遇到了困難,則會寫下類似于:「發(fā)生了數(shù)據(jù)不匹配的情況,接下來我將嘗試修復(fù)混合匹配,并在嘗試新模型之前獲得基線?!?/p>

      大約在下午4點的時候我會整理一下我的代碼,大概涉及:讓混亂代碼變得清晰,添加注釋,組合。為什么要這樣做?因為這個問題我經(jīng)常會問自己:如果其他人看不懂這個怎么辦?如果是我要讀這段代碼,我最需要什么?有了這樣的思考后,我覺得花費(fèi)一段時間來整理代碼變的格外有意義。大約在下午5點,我的代碼應(yīng)該會被上傳到GitHub上。

      這是理想的一天,但并不是每一天都是如此。有時候你會在下午4點有一個極好的想法,然后跟隨它,然后就有可能是通宵。

      現(xiàn)在你應(yīng)該已經(jīng)大致了解了機(jī)器學(xué)習(xí)工程師一天的日常了吧,接下來我會將我在其中獲得的心得分享給你。

      1.睜眼閉眼全是數(shù)據(jù)

      很多時候,機(jī)器學(xué)習(xí)工程師都會專注于構(gòu)建更好的模型,而不是改進(jìn)構(gòu)建它的數(shù)據(jù)。盡管可以通過投入足夠的計算能力讓模型提供令人興奮的短期結(jié)果,但這始終不會是我們想要的目標(biāo)。

      首次接觸項目時,必須要花費(fèi)大量時間熟悉數(shù)據(jù)。因為從長遠(yuǎn)來看,熟悉這些數(shù)據(jù)在未來會將節(jié)省你更多的時間。

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

      探索性數(shù)據(jù)分析生命周期的示例(每次遇到新數(shù)據(jù)集時都會執(zhí)行的操作)。更多關(guān)于探索性數(shù)據(jù)分析的詳細(xì)介紹。

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

      我遇到的大多數(shù)障礙都不是技術(shù)性的,而是涉及到溝通問題。當(dāng)然,這其中也存在技術(shù)挑戰(zhàn),但作為工程師解決技術(shù)難題是我們的本職工作。

      但永遠(yuǎn)不要低估內(nèi)部和外部溝通的重要性。沒有什么比技術(shù)選型錯誤更糟的了,因為這是要解決錯誤的技術(shù)挑戰(zhàn)。到底什么情況會出現(xiàn)這樣的情況呢?

      機(jī)器學(xué)習(xí)工程師第一年的 12 點體會

      從外部來看,這是因為客戶所追求的與我們可以提供的東西之間的不匹配。而在內(nèi)部,因為很多人都身兼數(shù)職,所以很難確保每個人都可以全身貫注于一件事情。

      碰到這些問題時到底如何解決呢?

      對于外部問題,我們只能不斷的與客戶溝通。你的客戶是否了解你可以提供的服務(wù)?你了解你的客戶的需求嗎?他們是否了解機(jī)器學(xué)習(xí)可以提供什么以及它不能提供什么?怎么樣才能更有效的傳達(dá)你的想法?

      對于內(nèi)部問題,你可以根據(jù)我們使用解決問題的軟件工具的數(shù)量來判斷內(nèi)部通信有多難:Asana,Jira,Trello,Slack,Basecamp,Monday,Microsoft Teams。我找到的最有效的方法之一是在一天結(jié)束時在相關(guān)項目頻道中進(jìn)行簡單的消息更新。

      它完美嗎?不,但似乎有效。它給了我一個機(jī)會來反思我做了什么,并告訴大家我接下來的什么工作需要誰的支持,甚至可以從大家那里得到建議。

      無論你是多么優(yōu)秀的工程師,你維持和獲得新業(yè)務(wù)的能力都與你溝通的技能能力有關(guān)。

      3.穩(wěn)定性>最先進(jìn)的技術(shù)

      現(xiàn)在有一個自然語言問題:將文本分類到不同的類別,目標(biāo)是讓用戶將一段文本發(fā)送到服務(wù)并將其自動分類為兩個類別之一。如果模型對預(yù)測沒有信心,請將文本傳遞給人類分類器,每天的負(fù)載約為1000-3000個請求。

      BERT雖然在最近一年很火。但是,如果沒有谷歌那樣規(guī)模的計算,用BERT訓(xùn)練模型來解決我們想要解決的問題時還是很復(fù)雜的,因為在投入生產(chǎn)之前,我們需要修改很多內(nèi)容。相反,我們使用了另一種方法ULMFiT,盡管它不是最先進(jìn)的,但仍然可以得到令人滿意的結(jié)果,并且更容易使用。

      4.機(jī)器學(xué)習(xí)初學(xué)者最常見的兩個坑

      將機(jī)器學(xué)習(xí)運(yùn)用到實際生產(chǎn)中存在兩個坑:一是從課程工作到項目工作的差距,二是從筆記本中的模型到生產(chǎn)模型(模型部署)的差距。

      我在互聯(lián)網(wǎng)上學(xué)習(xí)機(jī)器學(xué)習(xí)課程,以此來完成自己的AI碩士學(xué)位。但即使在完成了許多最好的課程之后,當(dāng)我開始擔(dān)任機(jī)器學(xué)習(xí)工程師時,我發(fā)現(xiàn)我的技能是建立在課程的結(jié)構(gòu)化主干上,而項目并沒有課程那樣井井有條。

      我缺乏很多在課程中無法學(xué)到的具體的知識,例如:如何質(zhì)疑數(shù)據(jù),探索什么數(shù)據(jù)與利用什么數(shù)據(jù)。

      如何彌補(bǔ)這個缺陷呢?我很幸運(yùn)能夠成為澳大利亞最優(yōu)秀的人才,但我也愿意學(xué)習(xí)并愿意做錯。當(dāng)然,錯誤不是目標(biāo),但為了正確,你必須弄清楚什么是錯的。

      如果你正在通過一門課程學(xué)習(xí)機(jī)器學(xué)習(xí),那么繼續(xù)學(xué)習(xí)這門課程,不過你需要通過自己的項目來學(xué)習(xí)你正在學(xué)習(xí)的知識,從而彌補(bǔ)課程中的不足。

      至于如何進(jìn)行部署?在這點上我仍然做的不是很好。還好我注意到了一種趨勢:機(jī)器學(xué)習(xí)工程和軟件工程正在融合。通過像Seldon,Kubeflow和Kubernetes這樣的服務(wù),很快機(jī)器學(xué)習(xí)將成為堆棧的另一部分。在Jupyter中構(gòu)建模型是很簡單的,但是如何讓數(shù)千甚至數(shù)百萬人使用該模型?這才是機(jī)器學(xué)習(xí)工程師應(yīng)該思考的事情,這也是機(jī)器學(xué)習(xí)創(chuàng)造價值的前提。但是,根據(jù)最近在Cloud Native活動上的討論情況來看,大公司以外的人并不知道如何做到這一點。

      5. 20%的時間

      20%的時間,這意味著我們20%的時間都花在了學(xué)習(xí)上??陀^意義上,學(xué)習(xí)是一個松散的術(shù)語,只要是關(guān)于機(jī)器學(xué)習(xí)的都可以納入到學(xué)習(xí)范疇內(nèi),相關(guān)業(yè)務(wù)也要不斷的學(xué)習(xí),作為機(jī)器學(xué)習(xí)工程師,懂業(yè)務(wù)可以極大的提高你的工作效率。

      如果你的業(yè)務(wù)優(yōu)勢在于你現(xiàn)在所做的最好,那么未來的業(yè)務(wù)取決于你繼續(xù)做你最擅長的事情,這意味著需要不斷學(xué)習(xí)。

      6.十分之一的論文值得閱讀,但少用

      這是一個粗略的指標(biāo)。但是,探索任何數(shù)據(jù)集或者模型時,你很快就會發(fā)現(xiàn)這個規(guī)律是普遍存在的。換句話說,在每年數(shù)以千計的提交中,你可能會得到10篇開創(chuàng)性的論文。在這10篇開創(chuàng)性的論文中,有5篇可能來自于同一所研究所或者個人。

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

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

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

      探索與開發(fā)問題是嘗試新事物和已經(jīng)發(fā)揮作用事物之間的兩難選擇,你可以通過成為自己最大的懷疑者來處理這些問題。不斷的向自己提問,選擇這些取代舊的可以帶來哪些好處?

      開發(fā)

      一般來說,運(yùn)行你已經(jīng)使用過的模型并獲得高精度數(shù)字很容易,然后可以將其作為新基準(zhǔn)報告給團(tuán)隊。但是如果你得到了一個好的結(jié)果,記得檢查你的工作,并再次讓你的團(tuán)隊也這樣做。因為你是一名工程師,你應(yīng)該有這樣的意識。

      探索

      20%的時間花費(fèi)在探索上是一個不錯的決定,但是如果是70/20/10可能會更好。這意味著你需要在核心產(chǎn)品上花費(fèi)70%的時間,在核心產(chǎn)品的二次開發(fā)上花費(fèi)20%,在moonshots(未來要用的事情)上花費(fèi)10%,雖然這些東西可能不會立即起作用。說起來很慚愧,我從來沒有在我的角色中練習(xí)這個,但這是我正朝著這個方向發(fā)展的。

      8.“玩具問題”非常有用

      玩具問題可以幫你理解很多問題,特別是幫助解決一個復(fù)雜的問題。首先先建立一個簡單的問題,它可能是關(guān)于你的數(shù)據(jù)或不相關(guān)數(shù)據(jù)集的一小部分。找出這個問題的解決方法,然后把他擴(kuò)展到整個數(shù)據(jù)集中。在一個小團(tuán)隊中,處理問題的訣竅是抽象問題,然后理出頭緒解決。

      9.橡皮鴨

      如果你遇到問題,坐下來盯著代碼可能會解決問題,可能不會。這時,如果同你的同事探討一下,假裝他們是你的橡皮鴨,那么問題可能很容易就被解決了。

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

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

      “我能這樣做嗎?”

      “讓我們來嘗試下吧?!?/p>

      10.從0開始構(gòu)建的模型數(shù)量正在下降

      這與機(jī)器學(xué)習(xí)工程與軟件工程正在融合有關(guān)。

      除非你的數(shù)據(jù)問題非常具體,否則許多問題非常相似,分類、回歸、時間序列預(yù)測、建議。

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

      這意味著我們不需要了解數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的更深層次原理,只需要知道他們的基本原理即可,我們應(yīng)該更關(guān)心如何將它們應(yīng)用到實際問題中去創(chuàng)造價值。

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

      對于我所處理的客戶問題,我們都是代碼優(yōu)先,而且所有的機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)代碼都是Python。有時我會通過閱讀論文并復(fù)現(xiàn)它來涉足數(shù)學(xué),但是現(xiàn)有的框架大都包含了數(shù)學(xué)。這并不是說數(shù)學(xué)是不必要的,畢竟機(jī)器學(xué)習(xí)和深度學(xué)習(xí)都是應(yīng)用數(shù)學(xué)的形式。

      掌握最小矩陣的操作、一些線性代數(shù)和微積分,特別是鏈?zhǔn)椒▌t足以成為一個機(jī)器學(xué)習(xí)從業(yè)者。

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

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

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

      但這也是你進(jìn)入這個行業(yè)的原因,框架將發(fā)生變化,各種實用庫將發(fā)生變化,但基礎(chǔ)統(tǒng)計數(shù)據(jù)、概率學(xué)、數(shù)學(xué)、這些事情都是不變的。最大的挑戰(zhàn)仍然是:如何應(yīng)用它們創(chuàng)造價值。

      現(xiàn)在怎么辦?

      機(jī)器學(xué)習(xí)工程師的成長道路上應(yīng)該還有很多坑需要去探,如果你是一個新手,先掌握這12條就足夠了!

      人工智能

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Excel2007數(shù)據(jù)如何設(shè)置只讀和修改密碼
      下一篇:丁哥對如何做好軟件開發(fā)工作的思考(共識,復(fù)雜度,審查,重構(gòu),測試)
      相關(guān)文章
      国产精品亚洲综合一区在线观看| 亚洲AⅤ无码一区二区三区在线 | 中文字幕亚洲激情| 亚洲国产精品无码观看久久| 中文字幕在线观看亚洲视频| 亚洲国产精品成人综合久久久| 99人中文字幕亚洲区| 久久亚洲精品国产精品| 久久久久亚洲AV片无码下载蜜桃| 亚洲视频在线观看网站| 亚洲精品视频免费看| 亚洲综合久久久久久中文字幕| 亚洲综合激情视频| 亚洲伊人久久精品| 久久久久久亚洲精品影院| 亚洲色欲色欲www在线播放| 亚洲免费网站观看视频| 亚洲aⅴ天堂av天堂无码麻豆 | 亚洲av福利无码无一区二区| 久久精品国产96精品亚洲| 亚洲va在线va天堂va不卡下载| 亚洲国产精品久久久久| 久久亚洲AV成人无码软件| 亚洲精品91在线| 亚洲乱码在线观看| 亚洲乱人伦中文字幕无码| 亚洲AV无码一区二区三区鸳鸯影院| 国产成人高清亚洲一区久久| 亚洲高清视频一视频二视频三| 亚洲日韩在线第一页| 亚洲熟妇无码乱子AV电影| 久久亚洲精品成人777大小说| 久久国产亚洲高清观看| 亚洲人和日本人jizz| 在线观看亚洲AV每日更新无码| 久久精品国产亚洲av瑜伽| 久久精品亚洲福利| 久久精品国产亚洲av四虎| 亚洲天堂一区二区三区四区| 亚洲性无码一区二区三区| 亚洲成av人在片观看|