超高薪的機器學習工程師和現在的前後端們有什麼不同?

csdn 發佈 2020-05-03T15:06:02+00:00

寫在最後本篇文章的靈感來自於Lex Friedman 與 Andrew Ng 的對話播客,他們討論「在線公開課」對整個社會的影響以及如何教授計算機科學以及大公司如何影響科技發展。

【CSDN 編者按】人工智慧這幾年如火如荼的發展,高薪的機器學習工程師招聘案例屢屢刷新大眾的視野。本文為作者從吳恩達的一個播客中得到靈感,對機器學習工程師與軟體工程師進行對比思考,希望各位觀望機器學習的讀者們,從中學習到作者的一些觀點。

作者 | Nathan Lambert,已獲作者翻譯授權

譯者 | 羅昭成,責編 | 唐小引

頭圖 | CSDN 下載自東方 IC

出品 | CSDN(ID:CSDNnews)

以下為譯文:

截至 2018 年,軟體工程師數量大幅增長,現在美國已經有超過 100 萬名開發工程師,並且開發者的數量在一直持續增長。近幾年,機器學習飛速發展,越來越多的自動化以及決策的問題,都在使用機器學習進行處理,機器學習工程師數量也將迎來快速的增長。

機器學習,在無法用規則描述的情況下,通過學習,做出決策:通過給定的數據集進行訓練,當遇到新的輸入時,它就知道如何去決策。

現如今,機器學習(尤其是深度學習)在整個行業中普遍使用,每天,都會有很多工程師將這些機器學習的工具部署在伺服器上去,用來解決他們所面臨的問題。非常多的深度學習模型可以為公司帶來巨大的利潤,比如以下場景:搜索推薦,語音識別,智能語音助手,人臉識別,廣告等。

實現這些機器學習模型與構建一個大型的分布式系統又有何差異?其實並沒有太大的差異,面對他們的心態相同,只是專業不同而已。

軟體工程師 —— 構建數據網絡

數據流的處理是所有大規模軟體項目的關鍵,軟體工程師需要選擇正確的算法,選擇正確的開發語言,正確的層級的軟體子系統或組件。

軟體工程師都會在語言、數據結構和算法的基礎上進行開發工作。

  • 語言:在開發中,語言是軟體工程師的基礎。當你對不同的語言進行研究學習,會了解到更多的語言特性。Python 的下游決策讓程序具有更大的動態性,所以他非常受歡迎。

  • 數據結構:不同的數據結構,在計算機中,運行效率都是不一樣的。—— 你需要更快的數據訪問速度嗎?使用學習工具進行快速後處理?或者是做一起其它事情?不同的語言有不同的特性可以用來處理特定的問題,一個好的軟體工程師會像外語一樣精通這些程式語言。

  • 算法:在技術面試中,排序、搜索等基礎算法非常常見,它們在程序中會有大規模的應用。「時間複雜度 O」 是很古老的算法評估工具,它在算法部署到系統的過程中非常的重要。

軟體工程師在面對自己複雜的系統,會顯得沾沾自喜。

很多軟體工程師對自己的系統都充滿自豪,複雜的系統可以支持創建更多的功能,並且這也是他們炫耀的資本。但其實,這種做法是非常不明智的。簡單為王,越是簡單的系統,在大規模的項目中,越容易擴展。

Python 開發環境

好的軟體工程師可以使用機器學習的任務變得更加容易。數據能夠更加方便的拿到,最後的產物也能更有價值,也更統一。

機器學習工程師 —— 構建學習網絡

機器學習工程師通過提取有用的數據來構建決策,這些決策通常都是非線性的結果,很難以解釋。但是他們通過數據,可以學習出來決策邊界。

機器學習工程師主要是在模型、部署和影響方面進行工作。

  • 模型:

對於機器學習工程師來說,他們需要知道什麼時候應該使用深度模型,什麼時候使用貝葉斯近似值?他們也需要知道哪些系統具有更好的通用性,可以在設備上進行微調。因此,這些能處理模型的專業人和擁有機器學習學位的人變成了眾多科技公司趨之若鶩的人才。

  • 部署:

現如今,許多公司在這方面也有自己的布局。像蘋果公司,有大量的終端設備,需要能夠將機器學習模型在終端進行部署,像 Google 和 Facebook,模型的運行效率嚴重的影響著他們的成本。特斯拉憑藉著它的汽車,在自動駕駛中占據著主導地位。

接下來,工程師將在不同的領域貢獻他們的技術 —— 針對特定任務的具體模型將會頻繁的出現在我們的日常生活中,而且高效的模型不僅加快網際網路的速度,也可以提高電池的壽命。

  • 影響:

從道德的角度思考一下,機器學習很大程度上會出現用機器代替人工,如果我們的模型需要犧牲一部分人的利益呢?不僅如此,機器學習的訓練數據會直接影響程序的運行結果,想像一下,你的訓練數據現在只有 100 個公測用戶的數據,你如何透明的收集更多的用戶數據呢?無法透明地收集數據,需要有人對收集數據負責。

機器學習工程師的不足在於:他們的貢獻多集中於網絡層的結構和工具中。

當遇到問題時,機器學習工程師在調研具體的解決方案時,他們都希望能夠以模塊化的方式提取出有用的代碼,用來快速啟動自己的項目。我曾經試圖將多個複雜的項目進行整合,採取一系列的措施,使它們在真實場景中能夠使用。這也是我之前所說簡單至上的原因。

大道至簡

不管是軟體開發工程師,還是機器學習工程師,他們都是使用便宜的機器,快速的疊代,生產出高價值的產品 —— 花費少量的代價,並為每一個長尾用戶提供高價值。這樣一來,越是簡單的方法,越具有優勢,他們普遍存在且很容易使用 —— 簡單的學習算法更具通用性,能夠更好的擴展。

與優秀的軟體工程師一樣,優秀的機器學習工程師更有創造力,效率更高。

最好的工程師不是在已有的框架中找尋優化的方案,而是從更多的方面找尋突破遊戲規則的方法。在軟體工程中,最簡單的方式就是使用新的工具或者新的數據結構。在機器學習中,就是調整機器學習模型以便更好的部署。我相信,隨著軟體工程自動化的提高,機器學習工程師能推動公司的高速發展。

寫在最後

本篇文章的靈感來自於 Lex Friedman 與 Andrew Ng 的對話播客,他們討論「在線公開課」對整個社會的影響以及如何教授計算機科學以及大公司如何影響科技發展。

英文:Machine Learning Engineer versus Software Engineer

連結:https://towardsdatascience.com/machine-learning-engineer-versus-software-engineer-fb59f8cba9dd

本文為 CSDN 翻譯,轉載請註明來源出處。

今日精彩

B 站看開源

今天,當我們已經很習慣於用 Google、百度搜索、用 Kindle 閱讀、用淘寶剁手、用 QQ、微信聊天時,很多人並不知道,支撐這些軟體和服務的是後台成千上萬的 Linux 伺服器。超級計算機、大數據、無線電、移動網際網路,離開了 Linux,一個能打的都沒有。

五一勞動節第三天,CSDN 就跟大家聊聊開源的歷史。

關鍵字: