有些人認為人工智能和aclass=機器學習的本質不過是大肆運用if語句,或者說編程知識罷了,建議說這話的人最好能拿出詳細證據證明。本文將對比兩個概念,并解釋從事這兩個領域的專業(yè)人員的區(qū)別:他們的身份是什么?
有些人認為人工智能和《aclass=“》機器學習的本質不過是大肆運用if語句,或者說編程知識罷了,建議說這話的人最好能拿出詳細證據證明。本文將對比兩個概念,并解釋從事這兩個領域的專業(yè)人員的區(qū)別:他們的身份是什么?軟件工程師、軟件開發(fā)人員、機器學習專家、數據科學家、程序員或碼農……有些人甚至更夸張,稱他們?yōu)槿陶摺⒋髱熁驌u滾明星!他們實際上都是一類人嗎?即便真的如此,機器學習和傳統(tǒng)編程之間又是否存在界限呢?
機器學習vs編程:首先,什么是機器學習?
人們常說人工智能和機器學習不過是if語句,或者簡單來說就是統(tǒng)計學知識。那除此之外呢?難道機器學習就只是數學和算法的結合嗎?這種簡單化的概括有時候聽起來似乎很有趣,但機器學習的涵義顯然要比這更復雜。
不過,讓我們先來看一個更加恰當的解釋。
簡單來說,人工智能就像是一把傘,下面涵蓋圖像處理、認知科學、神經網絡以及其他各個領域內容。機器學習也是傘下的一個組成部分,它的核心思想是計算機不僅能執(zhí)行預先寫好的算法,同時還會自主學習如何解決問題。換句話說,可以用亞瑟·塞繆爾(ArthurSamuel,“機器學習”術語的提出者)曾給出的一個絕佳定義來解釋:
機器學習是賦予計算機無明確編程即可學習的研究領域。
所以說,機器學習能夠教機器完成算法難以解決的各種復雜任務。具體到哪些任務呢?它們很可能已經以各種形式出現在了生活中。例如:手機上的面部識別或語音識別、汽車駕駛(谷歌自動駕駛汽車)、智能診療(Watson)、產品推薦、購書(亞馬遜)、觀影(Netfix)、音樂(Spotify)、個人助手(Siri,Cortana)……還有列舉不完的其他例子。
這樣應該已經解釋清楚了,接下來要談的是有關機器學習十分重要的一點。
所有有效的機器學習技術都可以追溯到權限不同的三種訪問級別。什么意思呢?首先,第一級別的機器學習技術只有谷歌和IBM這些主要行業(yè)巨頭才有權訪問。第二級別學生等具備一定知識的人可使用。第三級別則代表即便是老人也能夠輕松應對。
目前機器學習的發(fā)展階段正出于第二級別和第三級別的交界處。因此,借助這一技術,世界變化的進程也在飛速加快。
關于機器學習的最后一個要點:大多數機器學習任務可以被劃分為有教師學習(監(jiān)督學習)和自主學習(無監(jiān)督學習)。不過,如果把機器學習的場景想象成程序員在旁邊打個巴掌給個棗兒,就有點跑偏了。
“教師”在這里表示數據處理過程中的人為干預。在機器進行監(jiān)督學習訓練時,要先獲得數據再根據數據進行預測。而另一方面,在機器自學,即進行無監(jiān)督學習時,仍先需要數據,但這時要找到數據的屬性。
機器學習vs編程:機器學習和編程有何差別?
“在傳統(tǒng)編程中,程序的一切表現都取決于程序員的硬編碼。在機器學習中,機器有大量空間自己學習數據并給予反饋?!?/p>
因此,上文提到的各種專業(yè)人員不能相互調換身份:數據工程師取代不了傳統(tǒng)程序員的工作,反之亦然。盡管根據要求每位數據工程師都能夠使用至少一種編碼語言,但傳統(tǒng)的編程僅占工程師工作內容的一小部分。而另一方面,軟件開發(fā)人員也絕不能使用機器學習的算法來發(fā)布網站。
人工智能等機器學習技術不是傳統(tǒng)編程的替代品,而是一個補充。例如,可以借助機器學習為一個網上貿易平臺建立預測算法,但同時平臺的用戶界面、數據可視化以及其他元素則需要使用Ruby或Java等主流編程語言來實現。
因此,關鍵在于:機器學習可在傳統(tǒng)編程無法解決問題時用來輔助,但僅機器學習自身無法完全勝任某項特定任務。
這對于實踐有何借鑒意義?本文將通過對比預測匯率的兩種不同方法來列舉一個基于機器學習的典型案例。
傳統(tǒng)編程法
解決任何問題的首要任務都是創(chuàng)建最佳算法并編寫代碼。然后,必須設置輸入參數,一般來說只要實現的算法沒問題,實際上就可以得到預期的結果。
軟件開發(fā)師如何解決問題
?、匍_發(fā)一個算法;②編寫算法代碼;③執(zhí)行該算法輸入參數-執(zhí)行算法-得出結果。
但是,要進行預測任務需要使用一個包含不同輸入參數的算法。具體到預測匯率,必須參照諸如前一天匯率、影響貨幣的國內外經濟變化以及其他各種因素。
之后,就能大致得出一個參照一系列參數的解決方案,這個方案能根據輸入數據預測未來匯率。
但是,關于這個方案,還有至關重要的一點需要考慮進去,或者說要解釋清楚。究竟是什么呢?
答案其實很簡單,我們需要添加數以萬計的參數,而它們的有限集構建了一個非常基礎且不可擴展的模型。所以,處理如此龐大的數據數組對任何人而言都十分困難。
機器學習法解決這一任務的方式又有何不同呢?
為使用機器學習解決問題,數據工程師要采取另一套完全不同的流程。工程師們無需開發(fā)一個單獨的算法,只需收集一系列歷史數據以供半自動建模處理。
在處理了足夠多的數據之后,數據工程師將半自動模型運用到自定義好的機器學習算法。最終便得出一個能根據輸入新數據來預測結果的模型。
數據工程師如何借助機器學習開發(fā)解決方案?
機器學習的顯著特點是無需建立模型。這一復雜且重要的任務將由機器學習算法來執(zhí)行。機器學習專家在此基礎上簡單編輯即可。
機器學習和編程的另一顯著差異在于模型能夠處理的輸入參數數量。為保證預測準確性,必須添加數千個參數并且高精度執(zhí)行這些參數,因為每一比特的運算都會影響最終結果。人類自身尚且無法創(chuàng)建能妥善處理全部參數細節(jié)的算法。
然而機器學習的處理能力沒有限制。只要處理器和內存足夠大,就能輸入盡可能多的所需參數。毫無疑問,正因如此,如今機器學習才如此強大且應用如此廣泛。
機器學習專家、數據科學家、
程序員和軟件工程師……究竟誰是誰?
根據維基百科,數據科學是“通過科學方法、程序、算法和系統(tǒng)從結構化和非結構化數據中獲取知識和見解的多學科領域”。
這一定義聽起來似乎沒什么大不了的。
關鍵是接下來的解釋:
“使用最強硬件、最佳程序系統(tǒng)和最高效的算法來解決問題”。
更有意思的是:
2012年,《哈佛商業(yè)評論》將數據科學家稱為“21世紀最性感的工作”。
其實,數據科學就像計算機科學一樣,是另一把覆蓋面廣泛的大傘,只不過數據科學旨在處理數據并從中提取有用信息。
那編程是什么呢?如今的數據科學家們?yōu)榱诉M行研究都會做一些額外的編程工作。他們不僅僅是程序員,通常情況下還都有應用統(tǒng)計學或科研學習背景。有些科學家,特別那些需要把數據科學或機器學習應用到公司產品的專家們還會負責軟件工程。最關鍵的是,數據科學家不一定必須要擅長編程,但一定要會使用Matlab、SPSS、SAS等統(tǒng)計學軟件。
機器學習工程師又是什么樣的角色?
機器學習工程師更偏技術化。換句話說,相比數據科學家,機器學習工程師跟傳統(tǒng)軟件工程師在工作中的相同之處更多。
機器學習工程師的工作內容和數據科學家大體相似。機器學習工程師也需要處理數據,實踐各種機器學習算法,借助這些算法解決問題,創(chuàng)建原型和現成的解決方案。
關于對他們的能力要求,需要著重強調:
·使用一種或多種計算機語言(通常為Python語言)編程的扎實能力。
·相比數據分析,更加看重處理機器學習算法的能力。
·在現成程序庫使用如NumPy/SciPy等Python包以組成不同模式堆棧的能力。
·使用Hadoop等創(chuàng)建分布式程序的能力。
現在重新回到編程這一話題并仔細研究一下:程序員都有哪些工作任務?
程序員實際上就像是數據分析師或者是業(yè)務系統(tǒng)開發(fā)人員。他們不必親自構建系統(tǒng),只需針對現有系統(tǒng)編寫結構松散的代碼。因此,可以把數據科學稱為新的編程浪潮,但是寫代碼只是其中的一小部分。別理解錯了哦!
繼續(xù)深究就會發(fā)現,還有一些其他術語,如軟件工程師和軟件開發(fā)人員,二者的概念也不一樣。例如:軟件工程師必須要完成整項工程,工作內容涉及產品應用程序,分布式系統(tǒng),并發(fā)、構建系統(tǒng)、微服務等各個方面。而軟件開發(fā)人員為準確起見則需要對軟件開發(fā)的各個周期都十分清楚,而不僅限于了解軟件的應用(有時候這些工作不涉及任何編碼或代碼知識)。
所以,是編程還是機器學習,現在你體會到二者差異了嗎?希望本文有助于理解這兩個容易混淆的概念。毫無疑問,編程和機器學習有共同之處,即都屬于技術,但相比之下二者的區(qū)別大于共同點。因此,機器學習工程師、軟件工程師和軟件開發(fā)人員完全不能相互替代。
評論
查看更多