AI Boot Camp 分享之 ML.NET 机器学习指南
今天在中國七城聯(lián)動,全球134場的AI BootCamp勝利落幕,廣州由盧建暉老師組織,我參與分享了一個主題《ML.NET 機器學(xué)習(xí)指南和Azure Kinect .NET SDK概要》,活動雖然只有短短的2天時間的宣傳,報名70人,到場40多人。
下面我和你分享一下我對ML.NET 機器學(xué)習(xí)的一些內(nèi)容。
作為一個.NET開發(fā)者的你,可能很難立即進入機器學(xué)習(xí)。主要原因之一就是我們無法啟動Visual Studio 使用我們所精通的.NET技術(shù)嘗試這個新事物,這個領(lǐng)域被認為更適合該工作的編程語言,例如Python和R所占據(jù),這個更準確的來說是機器學(xué)習(xí)的前期數(shù)據(jù)分析階段。一年多以前,微軟為我們的.NET技術(shù)帶來一個新功能ML.NET, 現(xiàn)在已經(jīng)是1.4,最新發(fā)布的.NET Core 3.1之上七龍珠已經(jīng)聚齊。
首先我們?yōu)槭裁次覀儜?yīng)該使用ML.NET 技術(shù)而不是Python和TensorFlow?通常來說 除技術(shù)棧外,沒有其他特殊原因。如果您將ASP.NET應(yīng)用程序與機器學(xué)習(xí)模塊一起使用,無疑是將ML.NET集成起來要容易得多。此外,現(xiàn)在您可以將使用TensorFlow構(gòu)建的模塊加載到ML.NET中。不知道各位有沒有思考一下為什么 Microsoft 現(xiàn)在要在.NET 平臺上引入機器學(xué)習(xí)以及我們?yōu)槭裁匆P(guān)心機器學(xué)習(xí)。
首先是機器學(xué)習(xí)這項技術(shù)正在跨越鴻溝。事實上這個鴻溝是非常難以跨越的,之所以那么多的高科技產(chǎn)品只是在小眾范圍內(nèi)流傳,而并沒有被主流市場接受,原因就是這些公司沒有能夠跨越這個鴻溝。成功跨越鴻溝的典型是小米手機,而被鴻溝擋住的典型當屬錘子手機,大家可以想想這兩家的區(qū)別,小米早期定義「為發(fā)燒而生」,而錘子手機則是「情懷」,都是針對某個特定群體,但是你看現(xiàn)在小米已經(jīng)不再說發(fā)燒這類的詞了,因為它早已經(jīng)進入主流市場。
最早的機器學(xué)習(xí)算法可以追溯到20世紀初,到今天為止,已經(jīng)過去了100多年。從1980年機器學(xué)習(xí)稱為一個獨立的方向開始算起,到現(xiàn)在也已經(jīng)過去了近40年。在這100多年中,經(jīng)過一代又一代人的努力,最近這幾年終于跨越了鴻溝。跨越鴻溝意味著機器學(xué)習(xí)正在從僅有少數(shù)人掌握的時代過渡到民主化、平民化。微軟的CEO 薩提亞·納德拉在他的書《刷新:重新發(fā)現(xiàn)商業(yè)與未來》 之中就有提出“民主化”的人工智能,ML.NET正是要完成這項使命的載體之一。如何實現(xiàn)人工智能全民化,讓它惠及每個人?如何讓每個人打造自己的人工智能和AI?在醫(yī)療、教育和零售機構(gòu)當中,如何打造一個相適應(yīng)的AI是至關(guān)重要的。當我們談AI的時候,不能空談任何一個AI公司,而是要“民主化”AI,讓AI真正落地應(yīng)用到個人。為了達到這樣的一個目的,我們有一系列的解決方案。Azure 云上在AI領(lǐng)域的GPU和FPGA等等一些基礎(chǔ)架構(gòu)方面的合作都已準備就緒了,可以提供更多的可能性,確保業(yè)務(wù)的運行和效率。除此之外,我們的架構(gòu)提供對TensorFlow的支持,這樣一來我們就有了一個非常開放的環(huán)境來支持所有的開發(fā)框架。
您應(yīng)該開始探索這個機器學(xué)習(xí)領(lǐng)域的另一個原因是,作為一個人類,我們會產(chǎn)生大量數(shù)據(jù)。單獨地,我們無法處理那么多的數(shù)據(jù),甚至無法處理全部數(shù)據(jù)。從技術(shù)上講,我們面臨著無法從數(shù)據(jù)中提取信息的問題。但是,機器學(xué)習(xí)模型卻可以幫助我們處理海量的數(shù)據(jù)。
機器學(xué)習(xí)是計算機科學(xué)的一個分支,它使用統(tǒng)計技術(shù)使計算機能夠?qū)W習(xí)如何解決某些問題而無需對其進行顯式編程。如上所述,所有重要的機器學(xué)習(xí)概念都可以追溯到1950年代。但是,主要思想是開發(fā)一個數(shù)學(xué)模型,該模型將能夠做出一些預(yù)測。通常會事先對一些數(shù)據(jù)進行訓(xùn)練。簡而言之,數(shù)學(xué)模型使用對舊數(shù)據(jù)的見解對新數(shù)據(jù)進行預(yù)測。這整個過程稱為預(yù)測建模。如果從數(shù)學(xué)上講,我們正在嘗試近似一個映射函數(shù)? –??f? 從輸入變量??X? 到輸出變量??y。?我們正在嘗試使用這種方法解決兩大類問題:回歸和分類。回歸問題需要預(yù)測數(shù)量。這意味著我們的輸出是連續(xù)的實值,通常是整數(shù)或浮點值。例如,我們要根據(jù)過去幾個月的數(shù)據(jù)預(yù)測公司股票的價格。分類問題有點不同。他們正在嘗試將輸入劃分為某些類別。這意味著此任務(wù)的輸出是離散的。
ML.NET 是什么?給我們介紹了 ML.NET在幾乎每種情況下都遵循相同的基本步驟。它結(jié)合了數(shù)據(jù)加載,轉(zhuǎn)換和模型訓(xùn)練,使您輕松創(chuàng)建機器學(xué)習(xí)模型。
機器學(xué)習(xí)使用已知數(shù)據(jù)(例如訓(xùn)練數(shù)據(jù))來找到模式,以便對新的未知數(shù)據(jù)進行預(yù)測。機器學(xué)習(xí)的輸入稱為?特征,這是用于進行預(yù)測的屬性。機器學(xué)習(xí)的輸出稱為Label,它是實際的預(yù)測。ML.NET中的數(shù)據(jù)表示為IDataView,這是一種描述表格數(shù)據(jù)(例如行和列)的靈活,高效的方法。IDataView對象可以包含數(shù)字,文本,布爾值,向量等。您可以將數(shù)據(jù)從文件或?qū)崟r流源加載到IDataView。具體參考?從文件和其他源加載數(shù)據(jù)
在大多數(shù)情況下,您可用的數(shù)據(jù)不適合直接用于訓(xùn)練機器學(xué)習(xí)模型。原始數(shù)據(jù)需要使用數(shù)據(jù)轉(zhuǎn)換進行預(yù)處理。Transformers 獲取數(shù)據(jù),對其進行一些處理,然后返回經(jīng)過轉(zhuǎn)換的新數(shù)據(jù)。ML.NET內(nèi)置了一組數(shù)據(jù)轉(zhuǎn)換,用于替換缺失值,數(shù)據(jù)轉(zhuǎn)換,使文本特征化等等。參考準備建模的數(shù)據(jù)
Estimator從數(shù)據(jù)中學(xué)習(xí)以創(chuàng)建Transformer 。現(xiàn)在,將輸入要素轉(zhuǎn)換為輸出預(yù)測的模型是Transformer
總結(jié)
以上是生活随笔為你收集整理的AI Boot Camp 分享之 ML.NET 机器学习指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2019 AI Bootcamp·Gua
- 下一篇: 【.NET Core 3.1】 策略授权