機器學習是人工智能研究領域的一個重要分支,近十年由於以深度學習爲表明的研究方向在圖像識別,語音識別,文本翻譯及深度強化學習在圍棋等遊戲應用中的重大突破而又從新興起,變成新的技術浪潮。可是機器學習尚未達到實現人工智能的階段,沒法像人同樣快速學習新技能,掌握新領域,進行創造性活動。機器學習還僅僅是弱人工智能,即在特定領域,在給定的業務問題邊界,充分的數據支撐條件下,經過專家的特徵工程和麪向業務目標構建的反饋優化方法上來實現達到或者超過人類專家的行爲能力。所以機器學習應用的落地毫不是一蹴而就的,須要不斷的解決機器學習應用落地過程當中的各類問題,包括數據,特徵,目標,反饋優化以及機器學習應用系統的性能,維護和可擴展問題,這些問題自己有時又會交織在一塊兒,須要咱們系統性的思考,平衡和解決。html
咱們根據機器學習應用的使用者不一樣,能夠把應用形態劃分爲面向人的輔助支撐工具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等多種形態。不一樣形態下不一樣的技術實現路徑咱們將面臨不一樣的挑戰和問題。markdown
接下來,咱們從核心的架構質量屬性的角度看看各類應用形態的挑戰和問題。網絡
從最簡單的offline應用開始,如圖1,因offline條件下,訓練和預測對於性能通常狀況下均沒有嚴格強調響應時間,因此多數狀況下,你們僅須要考慮batch的批量執行模式。訓練和預測在接入原始數據後的數據準備,特徵工程等數據處理部分和基於模型的預測部分能夠徹底複用訓練階段的能力。架構
圖1. offline機器學習應用技術架構app
由於訓練和預測均爲離線,因此二者能夠複用相同的特徵處理過程,通常狀況下能夠複用統一的特徵存儲能力,例如HDFS。框架
那麼online predict形態會有什麼不一樣?dom
一、首先由於在線預測部分對於響應時間的要求,即須要在實際預測前準備好能夠提早處理的數據特徵;
二、由於在線預測部分多數按照事件方式請求,因此對預測對象如基站小區等的特徵訪問不是batch模式,而是按key 訪問,因此須要引入KV存儲;
三、同時在online predict形態下,能夠引入一些更具備時效性的特徵,這些特徵的處理在訓練時仍然可使用離線處理方法,可是在線部分就須要引入新的流處理能力;
四、由於引入online predict後,模型的更新就須要更多的系統流程來替代offline模式下人的許多手工動做,如模型的更新,模型的版本管理,模型的評估,模型的對比測試等。因此須要額外引入模型管理,如圖2。
圖2. Online Predict機器學習應用技術架構
上圖中紅色部分圈中的特徵庫-KV存儲,是典型的機器學習應用領域中,面向業務對象構建的可複用的基礎特徵庫,能夠在多個相同領域的機器學習中應用,在機器學習平臺類軟件中,是領域機器學習平臺的重要組成部分。模型管理部分用於持續評估和管理模型,能夠提供相對通用的機器學習框架來解決模型的閉環反饋更新問題。
常見的模型更新方式有多種:
一、簡單的使用滑動數據集方式,從新訓練模型;
二、採用模型Wrapper的方式持續疊加新的模型,相似RandomForrest,GBDT等算法;
三、採用機器學習函數求解的增量迭代方式;
四、針對反饋數據單獨使用分類模型,特別是針對訓練模型自己爲非監督模型的算法,採用GAN方式進行持續優化。
在線數據處理-Spark Streaming部分區別於離線數據準備,須要爲算法提供更具時效性的特徵,例如事件級別,分鐘級別的統計特徵,如15分鐘的基站視頻協議業務流量等。PredictServer部分主要提供在線的模型測試框架,支持同時存在的多個模型組進行對比測試,並提供詳細的對比測試記錄給訓練模型。以上兩種形態,Train和Predict部分都是能夠網絡隔離的,由於Train部分的數據都是能夠離線的,能夠採用人工、非自動化的方式從生產系統中以抽樣的方式離線導出來訓練的。
更具挑戰的則是online learning,在算法和系統會有更復雜的要求:
一、首先模型在線更新致使模型審覈通常再也不由人工來完成,須要系統自動完成;
二、由於在線更新,因此每次僅能基於增量的數據;
三、由於1,2的緣由,系統必須避免模型由於當前窗口數據致使的劇烈變化,可以在歷史模型參數和當前模型參數間進行平滑;
4,長期online的系統除了考慮特徵隨時間變化而產生分佈變化的弱泛華要求,也須要考慮系統環境變化如硬件、軟件版本升級致使的特徵(包括關鍵特徵)增長、刪除的劇烈變化;
五、工程上須要匹配算法,支持特徵的柔性變化,作到特徵更新無需版本更新。這些都須要引入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機器學習應用技術架構
一、Global data share, data share方式與online learning很是類似,全球多地部署的系統能夠僅理解爲數據採集,真正的學習則仍是部署在中心區域,各地的數據經過流的方式持續的發送到中心區域。Google和Netflix目前都是data share(視野所限,沒有發現公開的論文討論如何解決模型共享的問題),將全球各地的數據統一採集彙總到某一個數據中心統一進行模型訓練,將不一樣國家,語言,文化,種族相關的特徵引入統一的模型,在統一的模型基礎上再進行校訂和糾偏[1][2];
二、model share方式則解決data share方式的限制,即解決數據安全隱私致使的沒法共享問題。這樣須要在各個區域,國家部署本地學習能力,而後將模型與中心區域及其它各區域作交換。中心區域邏輯上充分利用領域知識、全球各區域的數據和模型來最大程度的優化模型,特別是針對部分區域數據缺少的問題。目前主要有學術研究,周志華老師2016年提出過learn ware及相關的一些基礎研究[3][4],主要就是解決在數據不共享的條件下,如何實現模型的可重用,可演進,可瞭解等重要問題。