AI時代的網站與手機App建置與開發Part2 - 認識ML.NET

 ·       認識機器學習(Machine Learning)

機器學習是一種資訊科技, 經由餵入訓練資料到電腦, 讓電腦經由學習得到智慧, 再利用學習得到的智慧解決許多不同類型的問題, 包括視覺辨識, 語音辨識, 人臉辨識, 車牌辨識, 自然語言處理, 健康照護, 偽造偵測, 投資組合等等. 在這篇文章中, 我們將會為大家介紹.NET工程師如何Microsoft推出的ML.NET(Machine Learning .NET程式庫), 開發具人工智慧的網站程式和手機App程式.

·       認識ML.NET程式庫

ML.NET程式庫支援.NET程式設計師使用C#F#程式語言開發跨平台的人工智慧與機器學習解決方案. ML.NET程式庫有五大特點, 詳述如下:

1.     開放原始碼
Microsoft ML.NET
程式庫是一套支援程式設計師自由使用, 轉散發, 甚至修改原始碼的內容, 遂行期望的目標, 不需要提供任何的原因

2.     跨平台
使用ML.NET程式庫開發的網站和應用程式能夠部署到Windows, Linux, macOS系統, 也能夠部署到Microsoft Azure或是其他廠商的雲端資料中心提供服務 

3.     Code first
支援以先建立描述資料模型的類別的方式設計使用ML.NET程式庫的應用程式 

4.     On-premises
ML.NET
程式庫支援機器學習(Machine Learning)與深度學習(Deep Learning)的眾多功能, 其中的機器學習不像深度學習需要用到大量的運算資源, 但是深度學習需要大量的運算資源, 如果將使用ML.NET程式庫的應用程式部署到雲端運算環境, 將會產生較多的運算費用支出. 為了減輕開發的費用, ML.NET程式庫支援使用ML.NET程式庫的應用程式部署到一般的電腦執行, 不需要部署到雲端資料中心才能夠執行.

5.     餵入測試資料到現成的深度學習模型, 獲取預測結果
ML.NET
程式庫支援程式開發者直妾餵給預訓練妥的深度學習模型, 例如分類圖片的的預訓練模型, 並獲取預測的答案, 節省程式設計師訓練深度學習模型的巨大代價.

 

1:支援在任意雲端平台, 或是企業機房中的Windows, Linux, macOS系統執行的ML.NET程式庫

·       機器學習和傳統程式開發的差別

2所示為傳統的程式, 傳統的程式是由程式設計師所製作的, 而所製作的程式負責執行資料處理, 將輸入到程式的資料依據程式設計師寫作的邏輯處理成結果, 再輸出給使用者檢視.

2:傳統程式運作的情形

3所示機器學習分成兩個階段, 第一個階段稱為訓練/評估階段, 這個階段會餵入訓練資料, 訓練機器學習模型(即機器人), 並評估學習的成果, 如果成果是OK的訓練就完成了, 如果訓練的結果不OK, 則要調整訓練技巧, 或是增加訓練資料, 重覆訓練到成果滿意為止.

第二個階段稱為推論(Inference)階段, 也就是上線階段. 這個階段會將訓練妥的機器學習模型(即機器人)上線供使用者餵入實際的資料進行測試, 也就是說機器學習模型(即機器人)並不是程式設計師開發的, 而是利用餵入訓練資料給機器學習套件(例如ML.NET)訓練出來的.

3:機器學習運作的情形

·       實作機器學習 / 深度學習的步驟

在訓練 / 評估階段我們必須先搜集訓練資料, 對搜集到的資料進行前處理, 將資料切分成訓練和測試資料, 選擇欲使用的演算法, 進行訓練並評估訓練結果, 如果成果OK, 則發佈給需要的使用者使用, 其詳細步驟如下:

1.     載入訓練資料

2.     處理資料(Pre-processing), 抽取特徵, 去除雜訊, …

3.     切割訓練 / 測試資料

4.     選擇演算法 / 建立訓練模型 / 使用訓練資料執行訓練

5.     使用測試資料驗証訓練結果(評估準確度)

6.     使用陌生的資料檢驗機器學習模型

7.     儲存模型 / 發佈模型(Model Serving)

機器學習發佈後的推論(上線)階段支援使用者餵入真實的資料, 並取後機器學習預測的結果

1.     用戶端 : 叫用發佈模型的功能

了解了實作機器學習的基本概念, 和實作的詳細步驟之後, 下一回我們就要使用Visual StudioVisual Studio Code, 搭配ML.NET程式庫, 為傳統的網站和手機App加入機器學習功能.

留言

這個網誌中的熱門文章

AI時代的網站與手機App建置與開發Part29 - 使用YOLO模型偵測影片中的物件

AI時代的網站與手機App建置與開發Part30 - ML 4.0新功能介紹

AI時代的網站與手機App建置與開發Part27 - ML.NET與物件偵測