前言
機器學習是人工智慧研究領域的一個重要分支,近十年因為以深度學習為代表的研究方向在影像識別,語音識別,文字翻譯及深度強化學習在圍棋等遊戲應用中的重大突破而又重新興起,變成新的技術浪潮。但是機器學習還沒有達到實現人工智慧的階段,無法像人一樣快速學習新技能,掌握新領域,進行創造性活動。機器學習還僅僅是弱人工智慧,即在特定領域,在給定的業務問題邊界,充分的資料支撐條件下,通過專家的特徵工程和麵向業務目標構建的反饋優化方法上來實現達到或者超過人類專家的行為能力。因此機器學習應用的落地絕不是一蹴而就的,需要不斷的解決機器學習應用落地過程中的各種問題,包括資料,特徵,目標,反饋優化以及機器學習應用系統的效能,維護和可擴充套件問題,這些問題本身有時又會交織在一起,需要我們系統性的思考,平衡和解決。
機器學習應用形態劃分
我們根據機器學習應用的使用者不同,可以把應用形態劃分為面向人的輔助支撐工具offline形態和麵向裝置,系統的持續執行分析的online形態,當然online形態中因為一些系統效能等方面的需要,通常都會結合offline形態的能力,因此也可以把offline,online看作機器學習應用的第一階段和第二階段。典型的工業offline應用有基站裝置擴容預測(非雲化裝置場景),儲存和光器件裝置老化預測等,這些應用支撐業務人員完成具體的決策和物理活動;典型的online應用則包括了故障型別識別,UE主頻智慧切換等。
在online形態中,我們根據應用場景要求的機器學習模型時效性不同,即機器學習模型的更新週期不同,又可以將應用形態劃分為online predict和online learning兩種形態,前者的機器學習模型主要為離線建模,模型按天/周/月更新,線上僅僅是應用模型進行預測;後者則需要進行線上建模,線上預測,模型更新的週期需要達到小時/分鐘。Online learning的典型應用則例如根據預測分鐘級別的業務流量進行基站節能,根據頻寬流量預測進行資料中心間的頻寬利用率提升和邊緣視訊位元速率的選擇。
根據應用場景的地域部署特性要求,即對機器學習模型的泛化能力要求不同,可以劃分為local Learning和Global learning。Local learning只需要模型在一個地域適應一組資料來源的樣本,雖然隨著時間的變化,部分資料及關聯特徵的分佈也會出現變化,但總體來說是緩慢的,對模型來講,僅需要具備弱泛化能力;Global learning則需要模型進行全球部署,需要模型能夠適應在不同地域資料和特徵的劇烈變化,如大部分特徵的消失或增加。Global Learning的典型應用即上述應用形態在全球部署的延伸,可見的成功案例主要有Google的廣告推薦,Netflix的視訊推薦。
小結一下,根據機器學習應用的使用角色,時效性以及地域性要求,我們可以將機器學習應用劃分為offline,online predict,online learning,local learning和Global learning等多種形態。不同形態下不同的技術實現路徑我們將面臨不同的挑戰和問題。
應用形態和技術架構
接下來,我們從核心的架構質量屬性的角度看看各種應用形態的挑戰和問題。
Offline
從最簡單的offline應用開始,如圖1,因offline條件下,訓練和預測對於效能一般情況下均沒有嚴格強調響應時間,所以多數情況下,大家僅需要考慮batch的批量執行模式。訓練和預測在接入原始資料後的資料準備,特徵工程等資料處理部分和基於模型的預測部分可以完全複用訓練階段的能力。
圖1. offline機器學習應用技術架構
因為訓練和預測均為離線,所以兩者可以複用相同的特徵處理過程,一般情況下可以複用統一的特徵儲存能力,例如HDFS。
Online Predict
那麼online predict形態會有什麼不同?
1、首先因為線上預測部分對於響應時間的要求,即需要在實際預測前準備好可以提前處理的資料特徵;
2、因為線上預測部分多數按照事件方式請求,所以對預測物件如基站小區等的特徵訪問不是batch模式,而是按key 訪問,所以需要引入KV儲存;
3、同時在online predict形態下,可以引入一些更具有時效性的特徵,這些特徵的處理在訓練時仍然可以使用離線處理方法,但是線上部分就需要引入新的流處理能力;
4、因為引入online predict後,模型的更新就需要更多的系統流程來替代offline模式下人的許多手工動作,如模型的更新,模型的版本管理,模型的評估,模型的對比測試等。所以需要額外引入模型管理,如圖2。
圖2. Online Predict機器學習應用技術架構
上圖中紅色部分圈中的特徵庫-KV儲存,是典型的機器學習應用領域中,面向業務物件構建的可複用的基礎特徵庫,可以在多個相同領域的機器學習中應用,在機器學習平臺類軟體中,是領域機器學習平臺的重要組成部分。模型管理部分用於持續評估和管理模型,可以提供相對通用的機器學習框架來解決模型的閉環反饋更新問題。
常見的模型更新方式有多種:
1、簡單的使用滑動資料集方式,重新訓練模型;
2、採用模型Wrapper的方式持續疊加新的模型,類似RandomForrest,GBDT等演算法;
3、採用機器學習函式求解的增量迭代方式;
4、針對反饋資料單獨使用分類模型,特別是針對訓練模型本身為非監督模型的演算法,採用GAN方式進行持續優化。
線上資料處理-Spark Streaming部分割槽別於離線資料準備,需要為演算法提供更具時效性的特徵,例如事件級別,分鐘級別的統計特徵,如15分鐘的基站視訊協議業務流量等。PredictServer部分主要提供線上的模型測試框架,支援同時存在的多個模型組進行對比測試,並提供詳細的對比測試記錄給訓練模型。以上兩種形態,Train和Predict部分都是可以網路隔離的,因為Train部分的資料都是可以離線的,可以採用人工、非自動化的方式從生產系統中以抽樣的方式離線匯出來訓練的。
Online learning
更具挑戰的則是online learning,在演算法和系統會有更復雜的要求:
1、首先模型線上更新導致模型稽核一般不再由人工來完成,需要系統自動完成;
2、因為線上更新,所以每次僅能基於增量的資料;
3、因為1,2的原因,系統必須避免模型因為當前視窗資料導致的劇烈變化,能夠在歷史模型引數和當前模型引數間進行平滑;
4,長期online的系統除了考慮特徵隨時間變化而產生分佈變化的弱泛華要求,也需要考慮系統環境變化如硬體、軟體版本升級導致的特徵(包括關鍵特徵)增加、刪除的劇烈變化;
5、工程上需要匹配演算法,支援特徵的柔性變化,做到特徵更新無需版本更新。這些都需要引入online training的處理能力,線上處理元件從kafka等訊息或流系統中實時增量獲取資料,本地訓練後講演算法中間狀態儲存在狀態資料庫中,狀態的資料主要也是KV結構的資料,需要引入KV儲存。需要注意的是,如果offline Training還可以使用一些傳統的資料探勘類演算法如Decision Tree,Bayesian等方法,那麼online Training就要求基於目標損失函式,採用增量、迭代的方式進行函式優化,持續更新優化。參考技術架構如圖3。
圖3. Online Learning機器學習應用技術架構
線上學習部分的輸入資料包括kafka輸出的線上演算法特徵和特徵庫—KV儲存中儲存的已預計算的歷史特徵。線上學習過程中的模型迭代引數需要持續更新到狀態庫-KV儲存中(個別非模型的增量迭代計算可能需要儲存中間計算結果)。線上學習部分還有一個重要分支就是強化學習,強化學習方向無論是早期的q-learning,saras,還是近期的DQN,DDPG等演算法,典型的結構如圖4。
圖4. ReinforcementLearning機器學習互動結構
上述架構中
Agent表示智慧體,即執行強化學習演算法的**服務,根據外部輸入的狀態引數選擇最優的執行動作,並根據動作執行後的環境狀態和報酬優化動作選擇演算法。此處未展開多智慧體學習結構,原則上可以認為是Agent內部的層次結構。Environment表示執行環境,持續輸出環境引數給Agent,並從Agent接收並執行Action。State Store表示狀態儲存,在面向傳統的離散狀態和Action時,State Store中儲存State、Action、Reward的對映表,在面向新興的連續Action和State時,儲存DQN等神經網路的回放樣本資料,也是表示為(St,at,St+1,rt+1)將強化學習合入已有架構後參考如下圖5,其中演算法執行框架部分可以利用已有的Tensorflow框架,狀態儲存可以複用已有的KV儲存,外部環境代理EnvironmentProxy部分則將Agent的演算法邏輯與具體的業務網元互動邏輯解耦出來,特別當外部網元互動模式、協議、部署複雜時。
圖5. Online Learning(含RL)機器學習應用技術架構
Local learning and Global Learning最後再看看Global Learning和Local Learning,Local Learning可以理解為上述offline,online的應用形態。Global learning有多種實現方式:簡單實現可以是多個**的Local learning,Netflix初期在十幾個國家推廣運營時,實際上就是類似運作方式,好處就是系統簡單,易複製;複雜實現由兩種方式,如圖6
圖6. Online Predict機器學習應用技術架構
1、Global data share, data share方式與online learning非常相似,全球多地部署的系統可以僅理解為資料採集,真正的學習則還是部署在中心區域,各地的資料通過流的方式持續的傳送到中心區域。Google和Netflix目前都是data share(視野所限,沒有發現公開的論文討論如何解決模型共享的問題),將全球各地的資料統一採集彙總到某一個資料中心統一進行模型訓練,將不同國家,語言,文化,種族相關的特徵引入統一的模型,在統一的模型基礎上再進行校正和糾偏[1][2];
2、model share方式則解決data share方式的限制,即解決資料安全隱私導致的無法共享問題。這樣需要在各個區域,國家部署本地學習能力,然後將模型與中心區域及其它各區域做交換。中心區域邏輯上充分利用領域知識、全球各區域的資料和模型來最大程度的優化模型,特別是針對部分割槽域資料缺乏的問題。目前主要有學術研究,周志華老師2016年提出過learn ware及相關的一些基礎研究[3][4],主要就是解決在資料不共享的條件下,如何實現模型的可重用,可演進,可瞭解等重要問題。