在本文開始之前,筆者要和大家分享兩個在網絡上流行的公式:
傳統編程的公式:規則+數據=答案
機器學習的公式:答案+數據=規則
這兩個公式中的三個關鍵詞是一模一樣的,分別是數據、規則和答案,但是這三個關鍵詞在等號左右的排列位置卻不同。從中我們不難看出,機器學習正在改變着整個編程行業。
而這一觀點也得到了一些專家的佐證,以網絡安全爲例,Institute for Critical Infrastructure Technology高級研究員James Scott 曾表示,基於簽名的惡意軟件檢測已死,取而代之的是基於機器學習的人工智能,它將成爲防禦變異哈希最好的方式。
那麼,基於機器學習的編程到底與傳統編程有哪些不同呢?顧名思義,機器學習大部分工作是由機器來完成的,而傳統編程需要程序員自己根據具體的問題建模解決。除此之外,基於機器學習的編程比傳統編程還強在哪裏呢?
輸入
首先,兩者輸入的都是數據,但是能夠接受的數據類型不同。基於機器學習的編程基本可以接受所有的數據類型,例如聲音、圖片、視頻、文本等等,而傳統編程接受的數據類型要看程序員的設置,一般來說只可以接受程序員定義好的數據類型。
基於機器學習的數據選擇還可以分爲三部分,訓練用數據、驗證用數據和測試用數據。隨着數據的不斷累積,反覆讓之前的簡單邏輯與數據結果進行比對,不斷修正驗證,最終結果會愈趨向正確。而傳統編程是基於規則的算法,如果發生錯誤,那麼在被發現之前,該錯誤會一直重複發生。
處理
基於機器學習的編程中,處理包括知識表示和模式匹配、搜索、邏輯、問題解決和學習。而在傳統編程中,需要根據待解決的問題設計程序,並完成字符輸入。
機器學習比較常見的3個應用場景分別是:一次性模型,要解決的問題是由上級嚴格定義的,並且提供了一些小型數據;嵌入模型,裏面有許多變量,比如,模型是靜態的還是迭代的,是局部的還是通過API遠程調用的等等;深度模型,建立用於特定某個領域預測的模型,並通過經驗和技巧來提升和證明其準確性。
預測
基於機器學習的編程是基於預測的,而傳統編程是基於解釋的。基於概率、基於反饋、基於總結,這是機器學習這種經驗主義最大的特點,也是與傳統程序設計這種基於因果關係的最大不同點。
結論
通過上文對比,基於機器學習的編程在很多方面都勝過傳統編程,傳統編程更適合於簡單的任務,而基於機器學習的編程更適合解決複雜的問題。針對基於機器學習的編程步驟,普華永道也給出了描述,筆者在此貼出來,希望能對大家有用。
普華永道信息圖總結的機器學習的主要流程/步驟:
- 選擇數據:這一過程又分爲三部分,分別是訓練用數據、驗證用數據、測試用數據
- 數據建模:使用訓練數據構建涉及相關特徵的模型
- 驗證模型:用驗證數據驗證建立的模型
- 調試模型:爲了提升模型的性能,使用更多的數據、不同的特徵,調整參數,這也是最耗時耗力的一步
- 使用模型:部署模型訓練好的模型,對新的數據進行預測
- 測試模型:使用測試用數據驗證模型,並評估模型的性能