摘要:機器學習也是這個大筐中的一個組成部分。我們目前的發展階段是機器學習正處在第二級和第三級交界處。機器學習工程師的職位是怎樣的機器學習工程師的位置更具有技術性。換句話說,機器學習工程師與傳統的軟件工程有著比數據科學更多的相同點。
翻譯:瘋狂的技術宅
https://towardsdatascience.co...
有些人認為 AI 和 ML 被過分夸大了,認為它們只不過是寫一些 if 語句,或者僅僅是和編程有關的玩意兒,但我建議你對這些觀點進行仔細的思考和分辨。在本文中,我將對它們涉及到的術語進行比較,并展示這兩個領域的專家之間的區別:他們究竟是做什么的?軟件工程師、軟件開發人員、機器學習專家、數據科學家......有些人甚至用程序員或碼農稱呼他們,有些人甚至可以成為大佬、大師或明星!但是他們真的一樣嗎?如果是這樣的話,那機器學習和傳統編程之間究竟有什么區別?
首先,什么是機器學習?盡管說起來很容易,AI 和 ML 只不過是 if 編程,或者更深入一點,它只是簡單的統計數據。我們還能知道些什么呢? ML 只是一個描述數學 + 算法的新詞嗎?盡管有時這種簡化似乎很有趣,但很明顯,ML更復雜。
但是讓我們來看一個更合適的解釋。
因此,簡單來說,人工智能是一個包含其他領域的大筐,如圖像處理、認知科學、神經網絡等等。機器學習也是這個大筐中的一個組成部分。它的核心思想是:計算機不只是使用了預先編寫的算法,還學習如何解決問題本身。或者,換句話說,Arthur Samuel 給出了一個很好的定義(他實際上創造了ML的術語):
機器學習是一個研究領域,使計算機無需明確編程即可學習。
是的,ML 教一臺機器來解決難以通過算法解決的各種復雜任務。那些任務是什么?好吧,你可能已經在實踐中偶然發現了它們。例如它可以是你的手機上的面部識別或語音識別,駕駛汽車(Google自動駕駛汽車),按癥狀診斷疾病(Watson),推薦商品(如:書籍(亞馬遜),電影(Netflix),音樂(Spotify) ),個人助理(Siri,Cortana)的功能......這個列表可以列的很長很長。
我希望說得已經足夠清楚了,接下來繼續談論關于 ML 的另一個重要的問題。
任何有效的 ML 技術都可以有條件地歸于三個級別的可訪問性。這是什么意思?嗯,第一個層面是 Google 或 IBM 等這種科技巨頭的特殊用例。第二個層次是,比方說,具有一定知識的學生可以使用它。而最后一個也就是 ML 可訪問性的第三個層次是甚至一個老奶奶能夠應對它。
我們目前的發展階段是機器學習正處在第二級和第三級交界處。因此借助這項技術,世界的變化將會日新月異。
關于 ML 最后還有一點點說明:大多數 ML 任務可以分為跟著老師學(監督學習)和沒有老師去教(無監督學習)。如果你想象一個程序員一只手拿鞭子,另一只手拿著糖,那就有點誤會了。
“老師”這個名字意味著人為干預數據處理的想法。在有老師參與培訓時,這是監督學習,我們有數據,需要在其基礎上預測一些事情。另一方面,當沒有老師進行教學時,這是無監督學習時,我們仍然有數據,但需要自己去找到它的屬性。
好的,那么它與編程有什么不同?在傳統編程中,你需要對程序的行為進行硬編碼。在機器學習中,你將大量內容留給機器去學習數據。
所以這些工作內容無法互換:數據工程師無法取代傳統編程的工作,反之亦然。盡管每個數據工程師都必須使用至少一種編程語言,但傳統編程只是他所做的一小部分。另一方面,我們不能說軟件開發人員正在用 ML 算法來啟動網站。
ML 不是替代品,而是傳統編程方法的補充。例如,ML 可用于為在線交易平臺構建預測算法,而平臺的 UI、數據可視化和其他元素仍然用主流編程語言(如Ruby或Java)編寫。
所以最主要的是:ML 被用在傳統編程策略無法滿足的場景,而且它不足以獨立完全完成某項任務。
那么這在實施中意味著什么呢?我們用一個匯率預測的經典 ML 問題的需求來進行解釋:
傳統的編程方法
對于任何解決方案,第一個任務是創建最合適的算法并編寫代碼。之后必須設置輸入參數,如果實現的算法沒問題,將會產生預期的結果。
軟件開發人員如何制定解決方案
但是當我們要對某些東西進行預測時,需要用到有各種輸入參數的算法。若要預測匯率,必須添加昨天的匯率的詳細信息,以及發行貨幣的國家的外部和內部經濟變化等數據。
因此,我們需要設計一個能夠接受一組參數的解決方案,并能夠根據輸入的數據預測新的匯率。
我們需要添加成百上千個參數,用它們的有限集去構建一個非常基本同時不可擴展的模型。是的,任何人都很難處理如此龐大的數據陣列。
對于這個任務,我們可以用機器學習方法,那么它是怎么做的呢?
為了用 ML 方法解決相同的問題,數據工程師使用完全不同的過程。他們需要收集一系列歷史數據用于半自動模型的構建,而不是自己去開發算法。
在得到一組令人滿意的數據之后,數據工程師將其加載到已定制的 ML 算法中。結果會得到一個模型,這個模型可以接收新數據作為輸入并預測新結果。
數據工程師如何用機器學習設計解決方案
ML 的一個顯著的特點是不需要建立模型。這種復雜但有意義的事由 ML 算法完成。 ML 專家只會對其做一個小小的編輯。
ML 與編程的另一個明顯差異取決于模型能夠處理的輸入參數的數量。為了能夠準確預測,你必須添加數千個參數并以高精度執行,因為每個參數都會影響最終結果。人類很難以合理的方式使用所有這些細節去構建一種算法。
但是對于 ML 沒有這樣的限制。只要你有足夠的處理能力和內存,就可以根據需要使用盡可能多的輸入參數。毫無疑問,這一事實使得 ML 現在變得如此強大和廣泛。
總結一下:ML專家,數據科學家,程序員和軟件工程師......究竟誰是誰?根據 Wiki 上的定義,Data Science 是一個多學科領域,它使用科學方法、流程、算法和系統從結構化和非結構化數據中提取知識和見解。
看上去并不是那么酷。
但接下來還有一些有趣的東西:
使用最強大的硬件,最強大的編程系統,以及解決問題的最有效算法。
后面還有更有趣的部分:
2012年,“哈佛商業評論”稱其為“21世紀最性感的工作”。
因此數據科學是另一個筐,就像計算機科學一樣,數據科學旨在處理數據并從中提取有用的信息。
那么編程呢?現在的數據科學家為了研究的目的而而需要掌握這種技能。他們不僅是程序員,也應該具有應用統計或研究背景。有些人還從事軟件工程,特別是在他們的產品中提供數據科學或機器學習技術的公司。最有趣的是,數據科學可以不必編程,但是會被限定在 Matlab、SPSS、SAS等工具上。
機器學習工程師的職位是怎樣的?
機器學習工程師的位置更具有“技術性”。換句話說,機器學習工程師與傳統的軟件工程有著比數據科學更多的相同點。
ML 工程師的標準任務通常和數據科學家類似,但是你還需要處理數據,嘗試用不同的機器學習算法來解決問題、創建原型和現成的解決方案。
我要強調一下關鍵的區別:
一種或多種語言(通常是Python)的強大編程技能;
不太重視在數據分析過程中工作的能力,而是更加重視機器學習算法;
能夠基于現成的庫使用不同的技術,例如,NumPy 或 SciPy;
使用 Hadoop 創建分布式應用的能力等。
現在讓我們回到編程并仔細研究分配給程序員的任務。
程序員實際上就像數據分析師或業務系統開發人員。他們不必自己構建系統,只需針對現有系統編寫松散結構的代碼。是的,我們可以將數據科學稱為新的編程浪潮,但編碼只是其中的一小部分。所以不要誤會。
但如果深入挖掘,我們會發現還有其他術語,如 Software Engineer 和 Software Developer,兩者并不相同。例如軟件工程師必須設計工程。它們涉及生產應用程序、分布式系統、并發、構建系統、微服務等。而軟件開發人員需要了解軟件開發的所有周期,而不僅僅是實現(有時甚至不需要任何編程或編碼)。
那么,你現在感受到編程和機器學習的不同了嗎?我希望本文可以幫你避免對這些術語產生混淆。毫無疑問,這些人都有一些共同點,那就是技術,但之間的差異要大得多。因此機器學習工程師、軟件工程師和軟件開發人員完全不可互換。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/20026.html
摘要:密碼學家,智能合約之父。本文正是在第三屆區塊鏈全球峰會年月日上的演講內容,從智能合約的發展著手,用通俗易懂的語言為我們解釋了智能合約與傳統合約的區別及其用途。我們制定智能合約,其實理由和傳統合約是一樣的,希望創建雙贏的交易。 Nick Szabo:密碼學家,智能合約之父。 智能合約理念可追溯至1993年,為密碼學家Nick Szabo所發明。自從以太坊引入智能合約之后,其在區塊鏈領域被...
摘要:眾多面向對象的編程思想雖不盡一致,但是無論哪種面向對象編程語言都具有以下的共通功能。原型編程以類為中心的傳統面向對象編程,是以類為基礎生成新對象。而原型模式的面向對象編程語言沒有類這樣一個概念。 什么是面向對象?這個問題往往會問到剛畢業的新手or實習生上,也是往往作為一個技術面試的開頭題。在這里我們不去談如何答(fu)好(yan)問(guo)題(qu),僅談談我所理解的面向對象。 從歷...
閱讀 1287·2021-11-24 09:39
閱讀 2631·2021-09-30 09:47
閱讀 1324·2021-09-22 15:15
閱讀 2410·2021-09-10 10:51
閱讀 1953·2019-08-30 15:55
閱讀 2976·2019-08-30 11:06
閱讀 895·2019-08-30 10:53
閱讀 829·2019-08-29 17:26