一個資深架構師眼中的人工智慧
成方式需要一系列的集成基礎設施支持,屬於一種中心化的集成方式,我們可以稱之為 MiddleBox 的方式,在微服務架構提出後,我們會採用把集成邏輯與業務功能部署在一起的去中心化集成方式,可以稱之為 MiddlePipe 的模式。
集成方式一路演進下來,主要是集成的手段上不斷翻新,多種框架和基礎設施越來越多的解決了非功能需求,例如 ESB 可以解決路由、安全、流控等問題,一定程度上減少了集成的工作量。但集成的業務複雜度還存在很多,這裡我列舉幾個常見的問題。
數據的查找問題
針對業務需求,需要使用已存在的數據和服務,但在企業環境中,系統、服務、數據眾多(想像一下具有 10 多萬服務、10 多萬數據標準的情況),想找到試用的服務和數據,不是一件容易的事情,一般我們都要依賴專家在這方面的知識,通過總體設計指定了數據的流向,這依賴於專家的能力,專家的能力也是慢慢積累起來的。我們需要幫助業務更快速的找到數據和服務,幫助專家快速實現積累,減少重複勞動。
數據的適配問題
通過服務方式進行集成,原子服務往往需要大量的輸入參數。舉個例子,調用一個發簡訊的介面,不僅僅是收信人電話號碼和簡訊內容,還要包括很多業務含義的參數,例如發信人的姓名、組織、發信的系統、發信的原因、發信時和客戶接觸的渠道(客服渠道、網點渠道、網銀渠道、自助終端等等)、發信時關聯的產品,這些信息是可以用來計算成本、控制次數、避免重複騷擾客戶;用戶名、密碼、驗證碼、發送時間等這是用作安全驗證的;優先順序、發送渠道等是用來做流量控制的;流水號、全局業務 ID、請求 ID、請求時間等等是用來做監控的。上述信息來自與每次發簡訊的上下文,在實際開發期間就要做很多的賦值、轉換工作,將上下文的信息傳遞給服務,這種轉換就像下圖那樣,典型的面多了加水,水多了加面。我們需要根據當前上下文和服務的特徵,自動的進行一些適配,避免人工的重複性勞動。
系統的聯動問題
當一個業務事件產生時,有很多相關聯的系統都會需要作出關聯性反映,例如一個航班延誤,就會涉及機票的改簽、酒店的改期、接車服務的改期、會議安排的變更、日程計劃的變更。一般我們會設計一個事件中心,為各個系統開發出監聽的程序,當事件到來時判斷上下文信息,決定產生的動作。如果事先沒有設定的規則,就無法產生聯動,我們期待更加自動化的建立這種聯動關係,讓計算機智能的產生動作而不僅僅通過人為設置。
類似問題還有很多,我們期待能夠更加智能的集成。
分而治之的軟體需要通過集成方式整體交付,軟體的生產過程也是一個多人、多組織協作的過程,也需要集成。把軟體看成是一個產品,產品就有策劃、研發、運營和退出各個階段,每個階段可能由不同的人或組織完成。軟體的研發階段就是一個一個項目的實施過程,包括立項、執行和完工。
這樣的過程組織起來,就是一條軟體生產的流水線。從早期瀑布式的軟體研發,到後來敏捷研發過程、CMM,到目前風頭正勁的 DevOps,都是在解決軟體生產流水線不同階段的協作問題,敏捷針對軟體定義、設計、構建(開發)階段的協作,持續集成是構建(開發)與測試階段的協作,持續交付是從定義階段到部署(交付)階段的協作。
協作中面臨的問題,就是集成的問題,我們可以想到很多,這裡也舉幾個例子:
需求、設計與構建(開發)的溝通問題:我們需要把需求 / 設計的知識圖譜化、條目化,自動與開發工作做一定程度的適配,減少需求 / 設計到代碼的轉換工作;
構建(開發)與測試的溝通問題:我們需要根據服務和數據特性以及積累的歷史數據,自動產生測試用例和測試方法;
運營的溝通問題:我們需要通過應用畫像、資源畫像等方式,服務與物理資源之間建立連接,快速定位問題,進行容量預測,實現更智能的運維。
軟體架構與 AI 結合的目標
應對複雜集成的挑戰,我們可以引入人工智慧的思路,將人與軟體之間、物體與軟體之間、軟體與軟體之間、軟體生產線各環節之間通過知識使能的方式集成起來,在傳統完全依賴規則進行集成的方式基礎上,採用新的集成方法:以上下文信息為輸入,利用專家已有的知識,通過數據訓練和強化學習的方式,讓計算機能夠理解集成的意圖,成為我們的智能助手,幫助我們實現智能的連接,進而可以讓計算機探索新的連接知識。這裡,我把連接也分為三個層面:機械連接、基於知識連接、創造知識連接。
從何處入手,探索人工智慧在軟體中的應用,是大家最關注的話題,這裡我把普元在探索人工智慧初期經歷的幾個案例,給大家做一個介紹。普元董事長劉亞東博士早年就從事神經網路的研究,他指出在目前並行計算等技術充分發展的今天,演算法已經不是人工智慧的瓶頸,應用人工智慧需要有兩個突破:
找到人工智慧應用的切入點
團隊具備人工智慧應用的思維
所以我們在應用人工智慧的時候,不是成立一個專門的小組做研究,而是百花齊放的方式。了解普元的朋友會知道,普元的研發分為雲計算 &SOA、大數據、移動、工程效率與技術平台、產品支持中心幾個團隊,我們讓每個團隊從數據 + 連接方向上入手,各自探索人工智慧在領域上的應用場景,通過找到切入點和初步實踐,逐步建立團隊的人工智慧思維。
其中雲計算 &SOA 團隊的方向是通過服務畫像方式解決微服務的智能運維與智能匹配,大數據團隊的方向是通過知識圖譜實現數據自服務,移動團隊的方向是 UI 的智能化開發,工程效率與技術平台團隊的方向是深度學習在流程與智能製造的應用。由於篇幅有限,這裡我只把普元大數據團隊和移動團隊所做的工作做一個介紹。
案例一:基於知識圖譜,實現數據的自服務能力
先簡單介紹一下背景:大家經常會聽到有人問我們有哪些數據,這些數據在哪裡,如何獲取數據的問題,能否建立一個平台,讓我們象百度搜索一樣,根據我們的知識(業務術語)找到相關的數據,提交申請,得到數據,這就是一個獲取數據的自助服務。
以往數據在哪裡往往通過人工梳理完成,我們希望能夠自動化一些,為專家提供一個智能的助手,這裡的工作分為三部分:
1. 建立知識圖譜
人進行數據搜索是通過業務術語(知識)來搜索的,而知識之間是有相互聯繫的,例如水果和西紅柿是上下位關係(後者是前者的具體體現),搜索是除了要列出直接結果,還需要顯示一些關聯的知識,這就要建立知識圖譜。簡單說知識圖譜就是概念、屬性以及概念之間的關聯關係, 這個關係可以手工建立,我們通過對政策、法規、需求、資料庫 comments、界面等多種來源,採用自然語言處理等方法,可以建立起部分的知識圖譜,輔助專家的工作。
2. 梳理技術元數據
整理各個系統內部數據,以及數據之間的關係,形成數據地圖。這裡的難度是數據之間的關係,例如數據的血緣關係、影響度關係、關聯關係、主數據關係等,這裡我們採用欄位特徵的相關性、數據處理邏輯的詞法 / 語法分析等手段,配合強化學習來完成,前面列舉的查找外鍵示例,就是一部分。
3. 建立知識圖譜與技術元數據之間的關係
這裡就要通過分析界面 / 服務與代碼之間的關聯,建立起映射關係。最終效果就是,使用數據搜索,錄入希望查找的業務術語,得到相關結果,查看樣例數據,如果是需要的數據,提交使用申請,如果不是,繼續根據相關知識進行數據探索。提供數據自服務能力,就是在應用的設計師、數據科學家或者業務分析師與數據之間建立起連接,我們的團隊就是從連接的思路出發,找到了人工智慧的切入點。
實際上,數據自服務包含有找、獲、用等眾多環節,我這裡說的是找的環節如何實現,這種找的方法,也不可能 100% 準確,還需要專家進行調整,以及通過強化學習等手段不斷修正,可以看出,應用人工智慧也是一個漸進完善的過程。
案例二:通過深度學習,實現移動 UI 的智能化開發
移動 UI 的智能化開發,是我們移動團隊應用人工智慧的第一個嘗試,現在看來,就是在 UI 設計師與開發工程師之間建立連接。大家會發現,設計師的設計在變成代碼實現時總會有偏差,即使一個像素的差異,也會影響界面的效果,以往我們採取不同業務模板的方式,建立一些規範對設計和開發做約束,後來移動團隊覺得,可以用深度學習的方式做一些嘗試,尋找不同的界面設計效果,首先通過數據標籤方式確定頁面的風格,再通過圖像片段的方式學習和識別設計稿中的組件,最終經過多次的處理,變成一個樹狀的結構,把這個樹狀結構與代碼進行映射,就產生了和設計圖一致的代碼。
這個案例中,基於圖片的神經網路學習是一個關鍵技術,但是如果單純使用這個技術,計算量會無法承受,所以我們將處理過程分成了幾個階段,每個階段進行分類,每個階段都可以配合強化學習的方式,由人工指定策略,指導計算機的學習,提高了工程化的能力(類似做法在深藍對陣卡斯帕羅夫的時候就有應用,有一位特級大師會指導深藍當前的策略,例如進攻還是防守,具體招數由深藍決定)。
上述兩個案例中,我們首先在各個領域中找到可能的切入點,針對不同場景使用了不同的方案,並不是都採用了深度學習 / 神經網路的方法。我們沒有首先從 Tensorflow 等框架學起,而是在結構化、半結構化優先使用統計方法,非結構化數據再使用深度學習,而是用業務驅動的方式逐步推進,有效的避免了「深度泛濫」。
總結與思考
未來的軟體必將是人工智慧的軟體,但人工智慧是通過技術手段實現智能增強,幫助普通人迅速具備部分專家的技能,幫助專家減少重複性的勞動,探索新的知識,而不是取代人。應用人工智慧,應該在數據 + 連接的模式下,從智能集成入手,探索人工智慧在軟體中的應用。而這種探索,既包括傳統利用規則實現的機械智能,也包括利用統計學和深度學習方法支撐的實現意圖智能,還有創造意圖 / 尋找新知識的探索,而統計學方法往往用在結構化數據和半結構化的數據中,深度學習往往要利用非結構化數據。
總之,人工智慧是計算機科學、統計學、知識工程、領域知識的一個交叉學科,不能僅僅站在某個角度去理解和嘗試,正所謂「君子不器」。
作者介紹
焦烈焱,現任普元 CTO,全面負責普元信息技術與產品的運營工作,公司技術發展戰略的重要決策人。焦烈焱在企業技術架構方面有二十餘年的經驗,長期致力於分布式環境的企業計算、SOA 與雲計算技術研究與實踐。加入普元信息後組織完成一系列核心產品的研發工作,包括 SOA 應用平台、以 BPM &/ESB 為核心的業務集成平台、以複雜事件處理 / 數據治理 / 作業調度為核心的大數據平台,期間主持了中國工商銀行、中國建設銀行等多家大型企業技術平台的規劃與研發。著有《SOA 中國路線圖—實施版》一書。
轉自:聊聊架構
※阿里雲—數據化運營實踐分享7月8日 上海站
※如何零基礎打造高效的數據團隊?
※中國親子游消費者大數據報告
TAG:軟體定義世界(SDX) |
※資深架構師親述自己從一名碼農進階架構師的程序人生
※神侃世界盃:資深偽球迷眼中綠茵場上的投資智慧
※資深媒體人:人工智慧讓傳統媒體遇到前所未有的變局和挑戰
※手工編織比想像的簡單 資深達人分享DIY涼拖鞋的四個
※一個資深養狗師的6大忠告:家中養狗的人須謹記!
※一場令人大開眼界的婚禮,資深女藝人薛家燕豪氣!
※為什麼中國的投資人不投資晶元產業呢?資深人士一句話道破真相!
※一位「資深玩家」的獨白
※資深心理諮詢師眼中的神經症和精神分裂的世界
※單位中的女強人,生活中壓力重重!資深命理師為你指明人生的方向
※SCEU資深化妝品工程師群相聚仙婷創新之家
※女人的魅力全靠自信!從四個好萊塢資深女星身上學到的事
※什麼樣的人才在中國最搶手?我們採訪了四位資深人士
※據說一個資深的玩玉人都有這些毛病
※一位資深工控工作者自傳——工控人的前半生(三)
※資深塔羅師占卜—他是與你最契合的人嗎?
※一位資深工程師離職,他設計了特斯拉汽車最重要的電池模塊
※一個資深時尚策劃人的美妝之道
※哪個血型的人最心機,TA絕對是資深玩家
※TVB資深老戲骨,香港首位玉女掌門人,幾千萬物業在手的隱形富婆