-
1 # IT白大俠
-
2 # AI中國
有些人認為人工智慧(AI)和機器學習(ML)有些言過其實,它們只不過是if語句或者僅僅是程式設計之類的東西。但是事實真的是這樣嗎?本文向您提供了豐富的資訊,在這篇文章中,我們將對比這些術語,並展示涉及這兩個領域的專家(如軟體工程師、機器學習專家、資料科學家和程式設計師等)之間的差異,它們真的是一樣的嗎?如果是的話,機器學習和傳統程式設計。
什麼是機器學習?
有些人說人工智慧和機器學習只不過是if語句,更有甚至說它們只是簡單的統計資料。或者說機器學習只是一個描述數學+演算法的新詞, 這種簡化看起來很有道理,但很明顯,機器學習更加複雜一些。
簡單地說,人工智慧是一把傘,它涵蓋了影象處理、認知科學、神經網路等其他領域的知識,機器學習也屬於這一範疇。機器學習的核心思想是,計算機不僅使用預先編寫的演算法,而且學習如何解決問題本身。Arthur Samuel(他創造了ML這個詞)給出了一個很好的定義:
機器學習是一個使計算機無需明確程式設計即可學習的研究領域。
機器學習能解決各種複雜的、很難用演算法解決的任務。例如,它可以是手機上的人臉識別或語音識別、自動駕駛汽車(如谷歌自動駕駛汽車)、根據症狀診斷疾病(Watson)、書籍(亞馬遜),電影(Netflix)、音樂(Spotify)、個人助理(Siri)等等。
關於機器學習的另一件重要的事:任何可用的機器學習技術都可以歸因於三個可訪問性層次。第一個層次是它特別適用於像谷歌或IBM這樣的主要技術巨頭,第二個層次是有一定知識儲存的人(例如學生)可以使用它。機器學習可訪問性的第三個層次是,即使是老奶奶也能處理它。
我們目前所處的發展階段是機器學習處於第二層和第三層之間。在這項技術的幫助下,世界正在極速變化。
最後一件關於機器學習的事情是,大多數機器學習任務可以分為有老師的學習(監督學習)和沒有老師的學習(非監督學習)。
“老師”的意思是人類干預資料處理。當訓練時有老師干預,也就是監督學習,我們可以根據資料預測一些事情。反之就是無監督學習,透過這些資料,我們可以瞭解機器學習的性質。
機器學習和傳統程式設計有什麼不同?
在傳統程式設計中,開發人員要對程式進行硬編碼;在機器學習中,是機器從資料中學習。因此,這些術語是無法互換的,資料工程師不能替代傳統程式設計工作,反之亦然。儘管每個資料工程師都必須使用至少一種編碼語言,但傳統程式設計只是他們工作的一小部分。反過來,我們也不能說軟體開發人員正在使用機器學習演算法來建立一個網站。
與人工智慧一樣,機器學習不是一種替代,而是對傳統程式設計方法的補充。例如,機器學習可用於為線上交易平臺構建預測演算法,而該平臺的UI、資料視覺化和其他元素將使用主流程式語言(如Ruby或Java)執行。
因此,最重要的是,當機器學習用於傳統程式設計策略不足以完全實現某個任務的情況下,這在實踐中意味著什麼?
下面用兩種不同的方法解決經典的匯率預測問題。
不管哪種解決方案,第一個任務都是建立最合適的演算法並編寫程式碼。然後,必須設定輸入引數,如果演算法是正確的,它將產生預期的結果。
軟體開發人員如何建立解決方案
當預測某件事時,需要使用具有各種輸入引數的演算法。對於匯率的預測,必須有以往的匯率、發行貨幣的國家內部和外部的經濟變化等等作為參考。因此,我們設計了一個能夠接受一組引數並基於輸入資料預測新匯率的解決方案。
這很簡單,我們需要新增上千個引數,使它用有限的集合構建一個非常基本且不可擴充套件的模型。但是,人工處理如此龐大的資料是很麻煩的。
所以我們需要一個機器學習方法來完成這個任務。
為了使用機器學習方法解決這個問題,資料工程師使用了與傳統程式設計完全不同的過程。他們不需要自己開發演算法,而是需要收集一系列歷史資料用於半自動模型構建。在收集到一組令人滿意的資料之後,資料工程師將其載入到已經定製的機器學習演算法中。這樣得出的結果是一個可以預測新結果的模型,可以接收新資料作為輸入。
資料工程師如何使用機器學習開發解決方案
機器學習的一個顯著特徵是不需要構建模型,任務是由機器學習演算法執行的。而機器學習專家只需對此新增一個小的編輯。機器學習和程式設計之間的另一個顯著差異是由模型能夠處理的輸入引數量決定的。要想做出準確的預測,必須輸入大量引數,並且準確度要高,因為每一個引數都會影響最終的結果,人工計算目前達不到這樣的要求。
然而,機器學習是沒有這樣的限制的。只要有足夠的處理器能力和記憶體,機器學習就可以使用任意多的輸入引數。毫無疑問,這一事實使機器學習變得非常強大。
Wiki認為,資料科學是一個多學科領域,它一般使用科學方法、過程、演算法和系統從結構化和非結構化資料中提取知識和見解。
因此,資料科學就像計算機科學一樣,只是資料科學的目的是處理資料並從中提取有用的資訊。
那麼程式設計呢?如今的資料科學家不僅是程式設計師,而且通常還應該具有應用統計學或研究背景。有些公司還從事軟體工程,特別是在其產品中提供資料科學或機器學習服務的公司。
機器學習工程師的職位特點
機器學習工程師的職位更偏向“技術型”。換句話說,與資料科學家相比,機器學習工程師與經典軟體工程師有更多的共同點。機器學習工程師的標準通常類似於資料科學家,另外你還需要能夠處理資料,嘗試用不同的機器學習演算法來解決問題,包括建立原型和現成的解決方案。
這裡要強調的關鍵區別有:
精通一種或多種語言(通常是Python)程式設計技能;較少強調在資料分析環境中工作的能力,而更多地強調機器學習演算法;能夠在應用程式中為不同堆疊使用現成的庫,例如,用於Python的NumPy / SciPy;能夠使用Hadoop等建立分散式應用程式。程式設計師的職業特點
程式設計師實際上是像資料分析師或業務系統開發人員那樣的人。他們不必自己構建系統,只需針對現有系統編寫鬆散結構的程式碼。資料科學可以說是程式設計的新浪潮,但編碼只是其中的一小部分,注意不要混淆。
但是如果深入挖掘,我們會發現其他如軟體工程師和軟體開發人員也不相似。例如,軟體工程師必須設計產品,他們處理生產應用程式、分散式系統、併發性、構建系統和微服務。另外,軟體開發人員需要了解軟體開發的所有周期,而不僅僅是實現步驟(有時甚至不需要任何程式設計或編碼)。
你現在能感覺到程式設計和機器學習的不同了嗎?希望這篇文章能幫助您避免混淆這些術語。毫無疑問,他們有技術共同點 ,但他們之間的差異要大得多。因此,機器學習工程師、軟體工程師和軟體開發人員是完全不可互換的。
回覆列表
我覺得傳統程式設計首先是人學習的過程,瞭解邏輯和處理流程,但是機器學習就不一樣了,他只要確定演算法,然後提供樣本,而不需要告訴演算法怎麼做,就可以解決問題,這樣可以縮短程式設計時間,可以在很短時間就能獲取到可靠程式。