談談基於機器學習的程式設計到底比傳統程式設計強在哪裡?
在本文開始之前,筆者要和大家分享兩個在網路上流行的公式:
傳統程式設計的公式:規則+資料=答案
機器學習的公式:答案+資料=規則
這兩個公式中的三個關鍵詞是一模一樣的,分別是資料、規則和答案,但是這三個關鍵詞在等號左右的排列位置卻不同。從中我們不難看出,機器學習正在改變著整個程式設計行業。
而這一觀點也得到了一些專家的佐證,以網路安全為例,Institute for Critical Infrastructure Technology高階研究員James Scott 曾表示,基於簽名的惡意軟體檢測已死,取而代之的是基於機器學習的人工智慧,它將成為防禦變異雜湊最好的方式。
那麼,基於機器學習的程式設計到底與傳統程式設計有哪些不同呢?顧名思義,機器學習大部分工作是由機器來完成的,而傳統程式設計需要程式設計師自己根據具體的問題建模解決。除此之外,基於機器學習的程式設計比傳統程式設計還強在哪裡呢?
輸入
首先,兩者輸入的都是資料,但是能夠接受的資料型別不同。基於機器學習的程式設計基本可以接受所有的資料型別,例如聲音、圖片、視訊、文字等等,而傳統程式設計接受的資料型別要看程式設計師的設定,一般來說只可以接受程式設計師定義好的資料型別。
基於機器學習的資料選擇還可以分為三部分,訓練用資料、驗證用資料和測試用資料。隨著資料的不斷累積,反覆讓之前的簡單邏輯與資料結果進行比對,不斷修正驗證,最終結果會愈趨向正確。而傳統程式設計是基於規則的演算法,如果發生錯誤,那麼在被發現之前,該錯誤會一直重複發生。
處理
基於機器學習的程式設計中,處理包括知識表示和模式匹配、搜尋、邏輯、問題解決和學習。而在傳統程式設計中,需要根據待解決的問題設計程式,並完成字元輸入。
機器學習比較常見的3個應用場景分別是:一次性模型,要解決的問題是由上級嚴格定義的,並且提供了一些小型資料;嵌入模型,裡面有許多變數,比如,模型是靜態的還是迭代的,是區域性的還是通過API遠端呼叫的等等;深度模型,建立用於特定某個領域預測的模型,並通過經驗和技巧來提升和證明其準確性。
預測
基於機器學習的程式設計是基於預測的,而傳統程式設計是基於解釋的。基於概率、基於反饋、基於總結,這是機器學習這種經驗主義最大的特點,也是與傳統程式設計這種基於因果關係的最大不同點。
結論
通過上文對比,基於機器學習的程式設計在很多方面都勝過傳統程式設計,傳統程式設計更適合於簡單的任務,而基於機器學習的程式設計更適合解決複雜的問題。針對基於機器學習的程式設計步驟,普華永道也給出了描述,筆者在此貼出來,希望能對大家有用。
普華永道資訊圖總結的機器學習的主要流程/步驟:
- 選擇資料:這一過程又分為三部分,分別是訓練用資料、驗證用資料、測試用資料
- 資料建模:使用訓練資料構建涉及相關特徵的模型
- 驗證模型:用驗證資料驗證建立的模型
- 除錯模型:為了提升模型的效能,使用更多的資料、不同的特徵,調整引數,這也是最耗時耗力的一步
- 使用模型:部署模型訓練好的模型,對新的資料進行預測
- 測試模型:使用測試用資料驗證模型,並評估模型的效能
相關文章
- 談談機器學習與傳統程式設計之間的區別機器學習程式設計
- 高階程式設計師到底強在哪裡?程式設計師
- 非科班程式設計師和科班程式設計師的差距到底在哪裡?程式設計師
- 談談對程式設計師的管理程式設計師
- 漫談哲學與程式設計程式設計
- 程式設計師的差距在哪裡?程式設計師的三個級別,你在哪裡?程式設計師
- 月入5000和20000的程式設計師,差距到底差在哪裡?程式設計師
- 聊聊阿里社招面試,談談“野生”Java程式設計師學習的道路阿里面試Java程式設計師
- 程式設計師談薪指北程式設計師
- 淺談非同步程式設計非同步程式設計
- 深入學習Netty(2)——傳統NIO程式設計Netty程式設計
- 深入學習Netty(3)——傳統AIO程式設計NettyAI程式設計
- java程式設計師程式設計筆試基礎學習Java程式設計師筆試
- SpringBoot 非同步程式設計淺談Spring Boot非同步程式設計
- 淺談程式設計正規化程式設計
- 關於程式設計師的996,我們談談歷史和邏輯程式設計師996
- 學習計算機程式設計需要什麼基礎?計算機程式設計
- 程式設計師談薪技巧公開,這樣談比預期高30%程式設計師
- 大齡程式設計師的前途在哪裡?程式設計師
- 併發程式設計 —— 談談執行緒中斷程式設計執行緒
- 自學程式設計難在哪裡?教你如何解決程式設計
- 談談優惠券系統的設計
- 淺談程式設計師的“內卷化”程式設計師
- 大佬視角:談談程式設計師的離職和跳槽程式設計師
- 談一談程式設計師的職業發展路線程式設計師
- 很認真的談一談程式設計師的自我修養程式設計師
- 淺談PHP物件導向程式設計PHP物件程式設計
- 程式設計雜談——Non-breaking space程式設計
- 函數語言程式設計雜談函數程式設計
- 程式設計漫談(二十):如何自學程式設計及Java、上手真實開發及轉行程式設計師的建議Java行程程式設計師
- 基於UDP程式設計UDP程式設計
- Python併發程式設計之談談執行緒中的“鎖機制”(三)Python程式設計執行緒
- 再談談這個沉重的話題--程式設計師的出路程式設計師
- 程式設計師的認知體現在哪裡?程式設計師
- 從 Redux 原始碼談談函數語言程式設計Redux原始碼函數程式設計
- Java程式設計師學習Rust程式設計 - infoworldJava程式設計師Rust
- Java程式設計師,你的簡歷到底問題在哪?Java程式設計師
- “談談MySQL的基數統計”MySql