導讀:人工智能的快速發展,帶動了相關技術的繁榮。近些年,國内外的科技公司對機器學習人才都有大量需求。怎樣入行機器學習?本文帶你從0開始學起。
作者:星環科技人工智能平台團隊
來源:華章科技
01 機器學習的背景
當提及機器學習時,我們的腦海裡一般會浮現出這樣一幅畫面:
一個擁有類似人類智能的機器人正在像人類一樣嘗試理解一件事情。
這樣的畫面讓人覺得是遙不可及的科幻世界。但實際上,機器學習與人類的生産生活已經密不可分了。早在20世紀90年代,一個非常成功的機器學習案例已經使數億人受益:今天為人所熟知的垃圾信息過濾。該案例成功後,出現了諸多效仿者,并且在現代社會已經有十分廣泛的應用。
- 商家在推薦系統與廣告計算方面使用機器學習,前者會在海量的商品中恰如其分地選中你所喜歡的一款,讓你欣然完成交易,而後者因其精确的廣告點擊率計算,為企業創造了顯著的收益;
- 在金融領域,機器學習參與了反欺詐、反洗錢風控等常人難以勝任的工作,其在時間序列預測方面也有自己的一席之地;
- 智能問答機器人以及電話接線員已經大幅減少了企業用人成本;
- 在制造業中,如何精益化生産、如何輕而易舉地發現殘次品等,皆有其用武之地。我們已深處于一個無時無刻不接觸機器學習的時代。
02 機器學習的定義
如果從更精細的角度去描述機器學習,那麼首先要給出機器學習曆史上兩個著名的定義。機器學習(machine learning)一般被定義為一個系統自我改進的過程。從字面意義上說,機器指計算機,學習是這個自我改進的過程。最初機器學習這個名字由Arthur Samuel提出,他給了機器學習一個非正式的定義。
- Arthur Samuel的機器學習定義
機器學習是一個這樣的領域:計算機在程序員并不對其進行顯式編程的情況下進行自我學習的能力。
具體來講,機器學習是一門針對算法與統計模型的學科,主要是利用計算機系統高效地執行特殊任務,該任務沒有顯式的指令,而是依靠模型和推斷等。
機器學習算法會建立一個關于樣本數據的數學模型,這些樣本數據通常被稱為“訓練集”(training data)。這樣做的目的是在執行任務時不去進行顯式的預測或決策,這同時也表明了機器學習不是一個已确定好的規則和流程。
機器學習算法可以被用于郵件過濾、網絡入侵檢測以及計算機視覺等。機器學習與利用計算機進行預測的計算數學比較接近。
上面的定義稍有一些佶屈聱牙,但大體上是說:“機器是怎麼判斷的”這一點不是由人顯式定義的,而是計算機自己獲得的。這裡有一個更加工程化的定義,即Tom M.Mitchell為機器學習領域研究的算法特征提出的一個廣為引用且更加正式的定義。
- Tom M.Mitchell的機器學習定義
機器學習這門學科所關注的問題是:計算機程序如何随着經驗積累自動提高性能;如果針對某類任務T,一個計算機程序的用P衡量的性能可根據經驗E來自我完善,那麼我們稱這個計算機程序在從經驗E中學習,針對某類任務T,它的性能可用P來衡量。
《統計學習基礎》一書中寫道:許多領域都産生了大量的數據,統計學家的工作就是讓所有這些數據變得有意義——提取重要的模式和趨勢,理解“數據在說什麼”。我們稱之為從數據中學習。
綜上所述,機器學習模仿人類學習的過程,不能對機器置入顯式的判斷規則,而是由機器在某種任務場景(基于某種經驗)和某種評判标準下不斷提升自己表現的過程。
舉個例子,當你使用電子郵箱時,你的垃圾郵件過濾系統可以預先從帶有人為标記的垃圾郵件以及帶有人為标記的正常郵件中學習到垃圾郵件到底會有怎樣的特征表現。這些用以訓練系統的數據集被稱為訓練集,其中每一個樣本被稱作訓練樣本。
在這個案例中,任務T是對新來的郵件打上好或者不好的标簽;經驗E是上述訓練集;而性能P需要被定義,例如你可以用預測的正确比例去定義模型表現的好壞,該指标被稱作準确率(accuracy)且廣泛應用于機器學習的分類任務中。
03 機器學習的任務類型
如上所述,機器學習要應對很多應用場景,并包含面對各種數據的經驗,而機器學習系統也包含不同的類型,所以我們有必要在不同層面上對它們進行較為粗略的區分,這些“不同層面”可以是:
- 是否在人類的監督下進行學習;
- 是否增量學習或者在數據流上學習;
- 是否僅僅将新數據點與老數據點進行比較,抑或建立一個預測模型,類似于科學家通常所做的(基于數據或基于模型)。
這三個層面并不會互相排斥,相反,一個機器學習任務往往是這三種區分的組合。例如,一個先進的深度學習系統在一個實時數據流上學習如何區分垃圾郵件,這顯然是一個基于模型的在線監督學習系統。
根據是否在人類的監督下進行學習這個問題,機器學習任務區分如下:
- 監督學習:監督學習算法依賴具有标簽的訓練數據來建立數學模型。例如,如果任務是鑒定圖片是否包含某種實體,那麼訓練集的圖片中就應該同時存在包含與不包含該實體的圖片,同時,每張圖片需标注是否包含該實體的标簽。根據标簽的數值特征(連續、離散),監督學習又可以分為分類問題與回歸問題。
- 半監督學習:在某些情況下,并不是所有的輸入數據集都被有效标注了,即訓練集中包含已标注的樣本和未标注的樣本。實際上未标注樣本與已标注樣本擁有同樣的分布,在訓練時若能利用這一點,則會很有幫助。
- 無監督學習:無監督學習算法完全利用不帶标簽的訓練數據去訓練一個模型。無監督學習用于探索數據的分布,例如将點聚類等。無監督學習可用于發現數據的潛在模式,并将數據按組歸類,還可用于特征學習和數據降維等。
- 強化學習:在動态環境中以正或負強化的形式給出反饋,并用于自動駕駛車輛,或者學習與人類對手玩遊戲等。
- 主動學習:在預算訪問有限等情況下,算法通過交互式的形式來詢問用戶和其他信息源,以更新和預測新的數據點所期望的輸出。
- 元學習:元學習是要“學會如何學習”,即利用以往的知識經驗來指導新任務的學習。
相應地,根據是否在實時數據流上學習這個問題,機器學習任務區分如下:
- 離線學習:在離線學習中,系統不能在增量的數據上進行學習,隻能在更新的全部數據集上重新學習,這必然會增加更多的時間成本和計算資源。一旦模型完成學習便應立即部署到系統中運行,且不再繼續學習。如果用戶想對新來的數據進行學習,那麼必須将新數據和舊數據組合,重新訓練模型,停止舊系統并将其替換成新系統。
- 在線學習:在線學習中,用戶可以增量地訓練模型,将數據一次一次地喂入模型,每一次獨立的數據組被稱作mini-batch,每一次新的學習都快速而輕便。
在是否對比舊數據點上,機器學習任務區分如下:
- 基于樣本的學習
- 基于模型的學習
04 構建機器學習應用的步驟
機器學習有很多任務場景,為了簡要說明機器學習的大體應用方法與步驟,這裡以較為常見的手寫識别任務為例。
根據Tom M.Mitchell對機器學習的定義,手寫識别任務的T、P、E分别為:
- 任務T:訓練出高準确率的手寫識别模型;
- 性能P:分類的準确率、召回率等;
- 訓練經驗E:帶标簽的手寫圖片。
首先介紹一系列關鍵概念。
- 特征:特征是事物某些突出性質的表現,即區分事物的關鍵,當需要對事物進行分類或者識别時,我們會根據事物的特征去區分,并依次建立一個模型。對于單個事物而言,可能有多個特征存在。而對于一組事物,某個特征項會有不同取值分布。
- 标簽:對于特征而言,标簽表示這個事物是什麼,例如通過某個人的言行舉止、穿着打扮可以大體判定其具有某種性格或者某種社會地位。這種性格或者社會地位就是标簽。機器學習的任務就是針對新輸入的數據,根據其特征來确定其标簽。
- 數據切分:根據本章定義,機器學習有訓練的過程,在這個過程中應用了訓練經驗E,而訓練經驗E則來源于原始數據。一般來說,原始數據分為三個部分,即訓練集、驗證集和測試集,其分配比例分别為70%、20%和10%。訓練集用以訓練模型,驗證集用以調優模型參數,而在經過訓練集和驗證集的訓練之後,開發者獲得了一系列模型,此時測試集用以選擇模型。在數據切分時,一定要注意抽樣方法的選擇,務必保證三個數據集的數據分布大體一緻。
- 交叉驗證與網格調參:大多數時候,應考慮數據切分産生的數據分布不均的影響。在訓練模型時往往用交叉驗證的方式,同時會使用網格調參去尋找最優參數。交叉驗證指将數據分為K份,進行K次訓練,每次訓練抽取其中的K-1份數據作為訓練集,其餘一份作為驗證集,訓練時通常使用網格調參,于是便可以得到K個模型。在K個模型中,選擇在驗證集上表現最佳的一個模型即可。網格調參是指對于需要調整的參數,每個參數設置一組預設值。每組預設值根據不同的取值組合成繁多的取值組合。如同設置一個高維的網絡,每個組合都是其中的一個交叉點,在每個組合數據上驗證模型的性能,并獲得最佳的組合。
- 模型評價:簡而言之就是評價模型的性能,如前所述,需要通過模型評價選擇出最優秀的模型。對于分類和回歸問題來說,存在不同的模型評價指标。
那麼對于一個手寫識别任務來說,機器學習的應用步驟如下所述:
- 數據預處理:手寫數據的圖片就是其數據特征,0,…,9的數字為其标簽。首先需要将圖片轉換為數值特征,此步驟稱為數據預處理。手寫識别圖片為灰度圖且隻有一個通道,那麼每張圖片就可以抽選特征成為一個數組,例如将圖片轉換為180×180維的由[0,1]組成的一組數據,然後再讓模型去學習。
- 數據切分:将數據按照7/2/1的比例切分成訓練集、驗證集和測試集。此處需要注意的是,為了不讓數據的分布産生差别,三個數據集中的每一個都包含所有的标簽類别,需要采用分層抽樣技術。
- 選擇模型(一組泛函):對于分類來說,有很多模型類型可以使用。每種模型代表一組泛函,學習的目的就是搜索泛函中性能優異的函數。針對分類問題,可用的函數族有很多,例如邏輯回歸、決策樹、支持向量機以及神經網絡等。
- 選擇目标函數:根據所選模型的不同,應選擇相應的目标函數以及優化方法。合适的目标函數與優化方法搜索出的模型參數可以使模型達到最優的性能。例如,對于邏輯回歸,可用的目标函數為交叉熵;對于決策樹,在分裂時目标函數為熵或者基尼系數;而對于AdaBoost模型,則選取對數損失函數。
- 根據目标函數選擇相應的優化方法:最常用的優化方法是梯度下降法、牛頓法等。需要目标函數有較好的性質才能找到其最優解。
- 根據評價函數計算性能,并優化模型參數:通過選取合适的模型-目标函數-優化方法,模型在這個流程中學習到了參數。此時,模型已經可以執行預測工作。
- 了解模型性能:對于分類問題有很多模型評價指标,例如查準率、查全率、F1值、AUC值、PR曲線等。若計算得出的模型性能并非十分優秀,那麼就要重新進行參數搜索。
- 最終獲得模型。
這裡提供了一張Checklist(檢查表)。
- 宏觀審視問題,問題的轉化(有監督、無監督或者分類回歸);
- 獲取數據;
- 探索數據;
- 發現數據的潛在規律模式,為開始訓練模型做好準備;
- 訓練盡可能多的模型并列舉出性能最好的幾個;
- 調優模型并将模型融合;
- 預測并展示結果;
- 部署、監測并維護系統。
關于作者:星環科技人工智能平台團隊由五十多位優秀的研發工程師和算法工程師組成,逾八成具有國内外名校碩士及以上學曆。其中研發子團隊的工作重心為一站式人工智能建模平台Sophon;算法子團隊則負責基礎算法的研發及改進,并在數據挖掘、傳統機器學習、計算機視覺、自然語言處理、知識圖譜等領域進行前瞻性研究以及項目實施落地。
本文摘編自《機器學習實戰:基于Sophon平台的機器學習理論與實踐》,經出版方授權發布。
延伸閱讀《機器學習實戰》
推薦語:星環科技人工智能平台團隊實戰總結,機器學習的實戰書籍,既能了解人工智能相關的算法原理,也能結合可落地的具體應用場景進行實戰。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!