一、序言
微軟的機器學習框架於2018年5月出了0.1版本,2019年5月發布1.0版本。期間各版本之間差異(包括命名空間、方法等)還是比較大的,隨着1.0版發布,應該是趨於穩定了。之前在園子里也看到不少相關介紹的文章,對我的學習提供了不少幫助。由於目前資料不是很豐富,所以學習過程中也走了不少彎路,本系列的文章主要記錄我學習過程中的一些心得體會,並對一些細節會做詳細的解釋,希望能為機器學習零基礎的同學提供一些幫助。(C#零基礎可不行)
二、基本概念
1、什么是機器學習?
定義:一個電腦程序要完成任務(T),如果電腦獲取的關於T的經驗(E)越多就表現(P)得越好,那么我們就可以說這個程序‘學習’了關於T的經驗。
簡單解釋什么叫“機器的學習”:如果輸入的經驗越多表現的越好,這就叫“學習”。舉個例子:傳統的程序邏輯是基於算法的,在算法不變的情況下,程序就是運行100年能力也不會有提升,但機器學習是基於數據(樣本)的,在算法不變的情況下,累計的有效數據越多,程序表現能力就越強。
2、通過機器學習解決問題和傳統算法解決問題的區別
需要解決的問題:會議室進來一位男生,請他站在攝像頭前面,通過一個程序評價一下這位男生身材是否很好。
(1)傳統解決方案
首先我們分析要判斷一個人身材是否很好,主要的判斷特征包括:身高、體重、三圍等等,然后通過一個衡量算法(比如BMI)進行計算,流程如下:
(2)機器學習算法
機器學習是依賴樣本數據的,所以解決這個問題的思路是這樣的:
①首先你得上街去收集數據,詢問你采訪對象的身高、體重、三圍數據,然后根據你的經驗給他一個評判,形成下表:
②對收集到的數據進行訓練,形成模型,然后通過模型對要判斷的對象進行評判。流程如下:
小結:通過這個問題的解決,感覺通過機器學習來解決問題比傳統方法麻煩多了,是的,對於身材判斷這樣的問題,人類可以很簡單找到一個邏輯分析的方法,所以通過邏輯算法解決就比較方便,但有時候很多事情我們人類是很容易處理的,但我們卻不知道其中的邏輯,比如:判斷一張圖片是否是18+圖片,判斷一片論文是否寫得很好,判斷一個人是否長得漂亮等等。這些問題人類很輕松就能處理,但無法總結出其中的規律並交給機器去執行,這時候機器學習算法就可以派上用場了。
三、機器學習的流程
機器學習的流程如下:
數據准備 -> 建模 -> 訓練 -> 評估 -> 應用
在實際應用時,由於訓練的過程可能時間比較長,所以我們會分兩個階段進行:
1、學習階段:數據准備 -> 建模 -> 訓練 -> 評估 -> 保存模型
2、消費階段:讀取模型 -> 應用
評估的過程就是對模型的檢驗,我們一般會把樣本數據隨機分成兩份,其中一部分用來學習,另一部分用來檢驗模型效果,判斷一下我們的模型能力。
以上是涉及到機器學習的有些最基礎的理論知識,下面幾篇文章會由淺入深介紹ML.NET的一些應用。
系列文章目錄:
機器學習框架ML.NET學習筆記【1】基本概念
機器學習框架ML.NET學習筆記【6】TensorFlow圖片分類
資源下載:
項目源碼:https://github.com/seabluescn/Study_ML.NET
資源文件:https://gitee.com/seabluescn/ML_Assets
(由於資源文件較大,所以放在碼雲平台提供下載)