談談基於機器學習的程式設計到底比傳統程式設計強在哪裡?

weixin_33807284發表於2019-01-08

在本文開始之前,筆者要和大家分享兩個在網路上流行的公式:

傳統程式設計的公式:規則+資料=答案
機器學習的公式:答案+資料=規則

這兩個公式中的三個關鍵詞是一模一樣的,分別是資料、規則和答案,但是這三個關鍵詞在等號左右的排列位置卻不同。從中我們不難看出,機器學習正在改變著整個程式設計行業。

而這一觀點也得到了一些專家的佐證,以網路安全為例,Institute for Critical Infrastructure Technology高階研究員James Scott 曾表示,基於簽名的惡意軟體檢測已死,取而代之的是基於機器學習的人工智慧,它將成為防禦變異雜湊最好的方式。

那麼,基於機器學習的程式設計到底與傳統程式設計有哪些不同呢?顧名思義,機器學習大部分工作是由機器來完成的,而傳統程式設計需要程式設計師自己根據具體的問題建模解決。除此之外,基於機器學習的程式設計比傳統程式設計還強在哪裡呢?

輸入

首先,兩者輸入的都是資料,但是能夠接受的資料型別不同。基於機器學習的程式設計基本可以接受所有的資料型別,例如聲音、圖片、視訊、文字等等,而傳統程式設計接受的資料型別要看程式設計師的設定,一般來說只可以接受程式設計師定義好的資料型別。

基於機器學習的資料選擇還可以分為三部分,訓練用資料、驗證用資料和測試用資料。隨著資料的不斷累積,反覆讓之前的簡單邏輯與資料結果進行比對,不斷修正驗證,最終結果會愈趨向正確。而傳統程式設計是基於規則的演算法,如果發生錯誤,那麼在被發現之前,該錯誤會一直重複發生。

處理

基於機器學習的程式設計中,處理包括知識表示和模式匹配、搜尋、邏輯、問題解決和學習。而在傳統程式設計中,需要根據待解決的問題設計程式,並完成字元輸入。

機器學習比較常見的3個應用場景分別是:一次性模型,要解決的問題是由上級嚴格定義的,並且提供了一些小型資料;嵌入模型,裡面有許多變數,比如,模型是靜態的還是迭代的,是區域性的還是通過API遠端呼叫的等等;深度模型,建立用於特定某個領域預測的模型,並通過經驗和技巧來提升和證明其準確性。

預測

基於機器學習的程式設計是基於預測的,而傳統程式設計是基於解釋的。基於概率、基於反饋、基於總結,這是機器學習這種經驗主義最大的特點,也是與傳統程式設計這種基於因果關係的最大不同點。

結論

通過上文對比,基於機器學習的程式設計在很多方面都勝過傳統程式設計,傳統程式設計更適合於簡單的任務,而基於機器學習的程式設計更適合解決複雜的問題。針對基於機器學習的程式設計步驟,普華永道也給出了描述,筆者在此貼出來,希望能對大家有用。

普華永道資訊圖總結的機器學習的主要流程/步驟:

  • 選擇資料:這一過程又分為三部分,分別是訓練用資料、驗證用資料、測試用資料
  • 資料建模:使用訓練資料構建涉及相關特徵的模型
  • 驗證模型:用驗證資料驗證建立的模型
  • 除錯模型:為了提升模型的效能,使用更多的資料、不同的特徵,調整引數,這也是最耗時耗力的一步
  • 使用模型:部署模型訓練好的模型,對新的資料進行預測
  • 測試模型:使用測試用資料驗證模型,並評估模型的效能

參考連結:https://www.analyticsindiamag.com/heres-why-machine-learning-wins-hands-down-against-conventional-programming/

相關文章