社會正處于一個由信息化向自動化由自動化向智能化轉(zhuǎn)型的時代,人工智能正滲透到各行各業(yè),然而在面對個性化的場景、分散的系統(tǒng)和散落的數(shù)據(jù)時,如何通過人工智能為社會帶來價值?構(gòu)建數(shù)據(jù)中臺或者paas平臺也許是好的選擇,但這些舉措往往成本高企,過程漫長,前期企業(yè)很難為此買單,相比之下,rpa(機器人流程自動化)作為一個成熟卻受限的應(yīng)用一直被低估,它有著成本低,落地快的優(yōu)勢,可以成為當(dāng)下人工智能的接盤俠。
基于這個目標(biāo),我們提出了“章魚數(shù)字員工”的概念,rpa相當(dāng)于章魚的多條觸手,執(zhí)行多項復(fù)雜操作,ai相當(dāng)于章魚的大腦,做出合理的智能決策,組合而成就是一個無實體形態(tài)的“章魚·數(shù)字員工”。設(shè)想一下,未來一個人帶領(lǐng)一群機器人工作的場景,這將成為我們看到的未來。相比于喚作機器人,我們更愿意稱之它為“數(shù)字員工”。
「實在智能」的產(chǎn)品以ai+rpa為主打,由ai云腦(z-brain)、機器人工廠(z-factory)、中樞控制臺(z-commander)、終端機器人(z-robot)四部分組成,其中終端機器人(z-robot)可單獨使用,也可結(jié)合企業(yè)所需嵌入某流程中使用。
一、z-factory機器人工廠
rpa的核心部分,又叫流程編輯器。基于前期對企業(yè)客戶及rpa的研究調(diào)查,我們配置的流程編輯器擁有強大的穩(wěn)定性和兼容性,同時內(nèi)部組件庫深度汲取了人工智能“sota”技術(shù),能充分適應(yīng)企業(yè)級復(fù)雜流程的創(chuàng)建與運行。
1、可視化低代碼,小白也能輕松上手
當(dāng)用戶登錄factory系統(tǒng)的時候,可以快速的開啟原歷史打開或創(chuàng)建的應(yīng)用。我們可視化的、流程塊的節(jié)點編輯,通過簡單的拖拉拽,就可以搭建符合當(dāng)前用戶場景的業(yè)務(wù)邏輯。如果對業(yè)務(wù)流程一知半解也沒關(guān)系,我們內(nèi)置了豐富的典型案例,用戶可以在這案例的基礎(chǔ)之上去構(gòu)建適合它的場景的應(yīng)用,做相應(yīng)的簡單的改造。當(dāng)然也可以直接運行典型案例的流程,享受流程自動化帶來的快感。
2、精準(zhǔn)處理復(fù)雜流程,企業(yè)級管理就是小case
我們自研的rpa流程引擎相較于傳統(tǒng)的開源的work flow的流程引擎,它能支持復(fù)雜場景的流程設(shè)計,并支持多任務(wù)進行以及支持流程節(jié)點的異常處理。以下面兩個真實的案例客戶為案例:
從這個流程圖當(dāng)中可以看到,在繁雜的業(yè)務(wù)流程中,factory能完成多任務(wù)并行,同時處理各種異常情況的扭轉(zhuǎn),我們也在這個流程節(jié)點中加了一些try-catch的機制,方便我們用戶處理各種異常情況。
3、智能檢索+超豐富組件庫,花式打造各種流程
我們的ai能力通過組件化低門檻的方式,方便用戶進行簡單的調(diào)用,同時我們也支持私有化的部署。我們自研的基于計算機視覺的cv的組件,當(dāng)前已支持了flash、sliverlight以及pdf相應(yīng)的一些圖片上面的元素 的拾取和操作。當(dāng)然在其他類型,如ocr類型,我們已支持常見場景的圖片類識別,比如說身份證、銀行卡、對賬單、保險單、工業(yè)巡檢等;在nlp這個類型中支持了具有通用性原則化的一些分詞,包括關(guān)鍵詞提取、語義分析、語義相似度分析等。,我們可以根據(jù)客戶的場景去研發(fā)符合業(yè)務(wù)需求的能力。
4、公共參數(shù)可視化,既是擁抱變化也是維持穩(wěn)定
大家都知道在互聯(lián)網(wǎng)行業(yè)里,我們聽得多的一句話就是擁抱變化。rpa數(shù)字員工,在安 裝部署的過程當(dāng)中對環(huán)境的要求是非常的高,如果任何一個環(huán)節(jié)出現(xiàn)了變化,它的可用性就基本上降為0。有了公共參數(shù)可視化的配置組件,就完全可以解決以上這個問題,讓我們數(shù)字員工具有能夠擁抱變化的能力。它的實現(xiàn)的原理跟機制是把我們流程當(dāng)中具有可變的因素 、條件設(shè)為全局變量,支持可視化的配置輸入,然后就可以提升我們整個流程應(yīng)用的一個可維護性、可適配性。
二、z-commander中樞控制臺
充當(dāng)流程的指揮官。顧名思義,統(tǒng)籌多臺設(shè)備上客戶端機器人的管理和監(jiān)督、進行智能運籌調(diào)度、任務(wù)計劃制定。它具備一高一低兩個特性:一、產(chǎn)品的穩(wěn)定性高,二、維護成本低。
三、z-bot終端機器人
任務(wù)的執(zhí)行者,其中bot包含三種模態(tài):任務(wù)式,流程式,交互式。它們可以靈活部署在客戶端設(shè)備上,并通過時間軸和數(shù)據(jù)看板的方式展現(xiàn)bot各個時間節(jié)點上,每個任務(wù)執(zhí)行情況以及執(zhí)行結(jié)果,讓效率進一步得到提升。同時bot也具備了z-commander的一些基礎(chǔ)的能力,它可以脫離z-commander的進行靈活的一個控制,靈活的任務(wù)管理,靈活的定時任務(wù)設(shè)定。
四、ai云腦
實在智能在傳統(tǒng)“三件套“架構(gòu)的基礎(chǔ)上,了自研ai能力平臺“智能云腦”z-brain。其中,在自然語言處理領(lǐng)域,z-brain覆蓋了包括bert、albert、roberta等算法;在計算機視覺領(lǐng)域,z-brain覆蓋了db、pmtd、rare等算法。具備迭代、自動調(diào)參、多場景融合技術(shù),可以輸出ai組件,完成大規(guī)模復(fù)雜場景的智能決策。
首先是云腦部分的起點——data hub多元異構(gòu)數(shù)據(jù)平臺,由它接觸我們客戶的業(yè)務(wù)系統(tǒng),進行數(shù)據(jù)的采集以及進行簡單的處理,并將處理過后的數(shù)據(jù)傳輸?shù)轿覀兊臉?biāo)注平臺,我們的業(yè)務(wù)專家,在標(biāo)注平臺進行業(yè)務(wù)能力的一個標(biāo)注,然后實現(xiàn)人工智能的人工部分,通過標(biāo)注過后的數(shù)據(jù),再以在線的方式傳輸?shù)轿覀兊乃惴ㄆ脚_,相當(dāng)我們?nèi)斯ぶ悄苡辛藬?shù)據(jù)的石油,算法平臺里面可以進行數(shù)據(jù)的提煉(預(yù)處理),包括模型的構(gòu)建、參數(shù)的設(shè)置、模型的訓(xùn)練以及的打包發(fā)布,可以將模型直接發(fā)布到我們的決策平臺,由決策平臺來進行業(yè)務(wù)的對接以及模型的一個計算,決策平臺會將后續(xù)從data hub過來的業(yè)務(wù)環(huán)境的數(shù)據(jù)進行一個模型的計算,輸出計算結(jié)果或者是決策方案,然后由這個方案發(fā)布送到我們的commander,commander來調(diào)度具體的bot來進行根據(jù)決策進行相應(yīng)的一個執(zhí)行。
這就是我們智能決策機器人的全鏈路,它實現(xiàn)了一個從數(shù)據(jù)到?jīng)Q策的閉環(huán)。我們相信ai+rpa有著無限的可能,在未來機器人的協(xié)作里,rpa的發(fā)展肯定是機器人之間的協(xié)同工作能夠產(chǎn)生無限的自動化和智能化提效的解決方案,我們首先需具備ai加rpa的產(chǎn)品矩陣,并以此形成適用于各行各業(yè)的rpa解決方案庫。
相關(guān)新聞:實在智能rpa學(xué)院|lime應(yīng)用及其時間復(fù)雜度初探
問題背景:
機器學(xué)習(xí)或深度學(xué)習(xí)模型在賦能2b的實際業(yè)務(wù)場景時,模型的可解釋性一直是影響模型快速落地的瓶頸。為非ai相關(guān)背景的客戶或合作伙伴解釋模型(尤其是黑盒模型)的訓(xùn)練和預(yù)測過程,以及某個預(yù)測結(jié)果背后蘊含的推理,往往是一件很有必要但很棘手的事情。對于我們目前從事的智能司法場景尤其如此:案件的判決往往在一定的司法框架內(nèi)進行推理,每一個步驟都必須有法可依;那么智能司法產(chǎn)品的結(jié)果同樣需要基于對應(yīng)的法律法規(guī)給出令人信服的解釋,否則模型盡管在驗證集上效果很好,也并不能得到用戶的信任。
為此,我們希望我們構(gòu)建的模型創(chuàng)建一個相對通用的解釋器(explainer)模塊。該模塊能夠給出模型預(yù)測行為的一種相對直觀的表征形式,以便我們清晰地知道這個“ai律師”是否足夠有經(jīng)驗;同時也希望該解釋器具有一定的模型無關(guān)性(model-agnostic),這樣我們可以擴展更多得模型。lime(local interpretable model-agnostic explanations)的出現(xiàn)為我們提供了一種解決的思路。目前司法場景下的數(shù)據(jù)大致可以分為文本形式(text)和結(jié)構(gòu)化形式(tabular),本次我們的探索主要集中在對結(jié)構(gòu)化特征的應(yīng)用上。
lime簡介:
lime在2016年的kdd上提出,其論文《“why should i trust you?” explaining the predictions of any classifier》提出了一種用預(yù)測值附近的局部線性模型來解釋整體復(fù)雜模型的思想,其中包括的主要技術(shù)有:
◎ 預(yù)測值附近的樣本點選擇
◎ 評估模型整體需要的預(yù)測值集合篩選
◎ 解釋器好壞評估的實驗
后兩點在實際場景中應(yīng)用的不多,因此我們只關(guān)注如何選擇預(yù)測值附近的樣本點及構(gòu)建對應(yīng)的線性模型,以及如何用該線性模型來解釋模型。
樣本點選擇:對結(jié)構(gòu)化特征的分類模型,lime樣本點選擇主要在lime_tabular.py中l(wèi)imetabularexplainer類的__data_inverse函數(shù)實現(xiàn)。正如注釋所提到,對于非categorical類型的特征,lime在預(yù)測點附近用一個正態(tài)分布norm(0,1)來產(chǎn)生指定個數(shù)(num_samples)的樣本:
1. data = self.random_state.normal(
2. 0, 1, num_samples * data_row.shape[0]).reshape(
3. num_samples, data_row.shape[0])
并根據(jù)指定的尺度做變換:
1. if self.sample_around_instance:
2. data = data * self.scaler.scale_ + data_row
3. else:
4. data = data * self.scaler.scale_ + self.scaler.mean_
而對于categorical類型的特征,則根據(jù)訓(xùn)練集的分布進行頻率采樣,并且當(dāng)某一樣本的categorical特征和預(yù)測值對應(yīng)特征相等時置1。采樣過程將生成一個num_sample * k的矩陣,其中k表示待解釋的特征維度,后續(xù)的線性模型則在此基礎(chǔ)上建模:
1. nverse_column = self.random_state.choice(values, size=num_samples, replace=true, p=freqs)
2. binary_column = np.array([1 if x == first_row[column]
3. else 0 for x in inverse_column])
線性模型構(gòu)建:局部線性擬合的實現(xiàn)在lime_base.py的explain_instance_with_data中,回歸方法的選擇上應(yīng)用了有偏的嶺回歸模型,這種回歸方法通過對回歸系數(shù)增加懲罰項來控制模型的復(fù)雜度,和ml/dl模型中在損失函數(shù)中加正則項是同樣的道理
通過懲罰項的引入,就使得模型的特征存在一定的共線性情況時,也能得到相比于一般的線性回歸更加魯棒的回歸結(jié)果,同時用線性回歸簇也充分考慮了回歸函數(shù)的復(fù)雜度問題。另外,在用sklearn的嶺回歸模型擬合樣本點過程中,對樣本點也進行了加權(quán),具體的權(quán)重是和樣本點到預(yù)測點的距離有關(guān),這種做法的出發(fā)點在于給和預(yù)測點更相似的樣本賦予更大的權(quán)重,進一步規(guī)避隨機采樣過程中帶來的解釋偏差問題
1、def kernel(d):
2、 np.sqrt(np.exp(-(d ** 2) / kernel_width ** 2))
通過嶺回歸擬合得到的各特征及其權(quán)重即可作為模型在該預(yù)測點的解釋。不過,在模型的特征比較多的時候,lime也提供了對特征重要性的評估和篩選過程,包括三種模式的篩選:forward_selection、highest_weights、lasso_path,具體內(nèi)容感興趣的同學(xué)可以對其進行深入探索。
lime的實際應(yīng)用
就我們的智能司法場景來說,每個預(yù)測點代表了一次案例的結(jié)果推理,其中結(jié)構(gòu)化的特征是從對應(yīng)的訴求表述、法規(guī)法條和證據(jù)文本中加工得到,因此lime在利用局部線性擬合獲得預(yù)測點附近的特征權(quán)重后,就可以反向映射到原始的文本數(shù)據(jù)中,進而可視化的展示出模型在該預(yù)測點的原理表征:考慮了哪些特征,不同特征在不同分類上的權(quán)重分配是怎么樣。
lime在結(jié)構(gòu)化特征上的應(yīng)用實際主要就是調(diào)用以下兩個方法的過程:
3.1 explainer = lime.lime_tabular.limetabularexplaine()
傳入的參數(shù)包括:
x:訓(xùn)練樣本,從原始的文本數(shù)據(jù)通過分詞、關(guān)鍵詞提取、向量化等方式獲得,例如可以根據(jù)在訴求文本中是否出現(xiàn)了關(guān)鍵證據(jù)模式(1.出現(xiàn),0.未出現(xiàn))來將文本特征轉(zhuǎn)化為結(jié)構(gòu)化特征,這里我們通過一個.npy文件導(dǎo)入訓(xùn)練樣本;
feature_names: 特征名稱list,是各個特征具象化的表征;
class_names:分類名稱list,如果是兩類,可設(shè)置為[“0”,“1”],代表支持或不支持訴求;
sample_around_instance:true,表示在預(yù)測點附近采樣,選擇false則會在訓(xùn)練樣本的質(zhì)心點附近生成樣本集進行擬合。
limetabularexplaine構(gòu)造了一個解釋器的類,并完成一些初始化的工作,真正的解釋器實現(xiàn),包括局部線性模型的擬合都會調(diào)用到其中的explain_instance方法。
3.2 exp = explainer.explain_instance()
傳入的參數(shù)包括:
np.array(feature_list):是實際預(yù)測數(shù)據(jù)的結(jié)構(gòu)化特征表示,例如我們的預(yù)測數(shù)據(jù)假設(shè)為一段訴求文本,則根據(jù)生成訓(xùn)練樣本x的方法轉(zhuǎn)化為一個k維的向量,k表示特征維度;
clf.predict_proba:clf是通過sklearn的joblib導(dǎo)入的已訓(xùn)練好的模型文件,對于分類問題來說,需要以概率的形式給出屬于各個類的可能性;
num_features:希望在解釋器中展示的特征的個數(shù);
top_labels:對于多分類問題來說,選取預(yù)測概率的若干個類;
num_samples:采樣點的個數(shù),預(yù)測值附近采樣點的個數(shù)。
根據(jù)司法場景的實際情況處理好相應(yīng)的參數(shù),并將參數(shù)輸入到lime的解釋器模塊,得到了一個explainer對象,該對象可以通過as_list或as_map方法轉(zhuǎn)換為<特征,權(quán)重>對,并經(jīng)過一定的特征映射和可視化,作為模型的局部解釋進行輸出。
lime的性能問題
實際應(yīng)用以及對lime的原理探索的過程中,我們發(fā)現(xiàn)應(yīng)用lime對某個預(yù)測點進行解釋的時間復(fù)雜度,和以下這些參數(shù)有比較強的關(guān)系:feature_selection(特征選擇方式)、discretize_continuous(是否針對連續(xù)數(shù)據(jù)做離散化)、num_samples(預(yù)測值附近的采樣個數(shù))等。而對于一個交付線上應(yīng)用的智能司法產(chǎn)品來說,解釋模塊如果時間復(fù)雜度太高,對于用戶而言體驗會很差,同樣也是不可用的,反而會給用戶對ai模型的信任度有副作用。一個實際使用的解釋器需要充分考慮解釋準(zhǔn)確性和時間復(fù)雜度的trade off,為此我們基于上述參數(shù)對lime的時間復(fù)雜度進行了簡單對比:
從上述對比結(jié)果來看:特征的選擇方式對lime的時間復(fù)雜度的影響,如果采用forward_selection的方式選擇特征,固然能獲得更好的擬合效果(r2-score),但是整體的時間消耗是線上應(yīng)用不能接受的;是否對非categorical特征進行離散化也是影響時間復(fù)雜度的重要因素 ,基于訓(xùn)練樣本的離散化過程同樣需要消耗比較多的時間;采樣點的個數(shù)和時間基本是正向相關(guān)的關(guān)系,同樣地,更細致的采樣雖然使得局部的擬合效果更好,但也是以更多的時間消耗為代價。
針對lime的性能和效果的折衷問題,理論上可以通過以下兩種方案解決:
1、基于已知的訓(xùn)練數(shù)據(jù)集,把lime的特征選擇過程、特征離散化過程等放到線下作為預(yù)處理的一部分,在線上直接使用預(yù)處理的結(jié)果;以特征的離散化為例,不論是按照四分位數(shù)還是按照十分位數(shù)進行離散化,都可以把x預(yù)處理后,再以.npy的方式加載到模型中;
2、更一般性的,在線下訓(xùn)練一個訓(xùn)練集中樣本點到各特征權(quán)重向量的映射,再根據(jù)實際預(yù)測點和訓(xùn)練樣本點的距離度量求得預(yù)測點處的特征權(quán)重向量。
其他的model explainer:
其實,對于ml/dl模型解釋性的探索并非在lime提出后才開始:
簡單的線性模型,包括更廣義的lr其解釋性都是非常直觀的,每個特征的權(quán)重對于結(jié)果的影響蘊含在模型本身之中,lime其實也是通過局部的線性擬合來做局部點的解釋;
更復(fù)雜的如隨機森林模型的解釋,在2014年7月由gilles louppe給出了一種衡量特征重要性的工具,目前該工具已集成在scikit-learn的隨機森林estimator中。但是和lime相比,這個工具更關(guān)注的是整個模型特征重要性的評估,并未給出某個具體預(yù)測點的預(yù)測過程解釋,同時也只是支持了樹型的分類器。
于是在2015年8月,一個可對具體預(yù)測點進行解釋的treeinterpreter出現(xiàn),該工具能夠?qū)⒕唧w預(yù)測點的預(yù)測概率,轉(zhuǎn)換為各個特征貢獻程度的求和,因此在單個點上進行了模型的解釋;但是同樣的,目前只支持決策樹及其衍生相關(guān)算法。
2015年10月,airbnb的研究團隊同樣展示了在隨機森林上對決策閾值分布的研究。
直到2016年lime提出,其意義不僅在于給出了一種相對來說模型無關(guān)的explainer解決方案,同時還對模型解釋的好壞給出了一系列的衡量指標(biāo)并通過實驗進行了驗證。
當(dāng)然,在lime之后的2016年6月,論文《the mythos of model interpretability》相對系統(tǒng)性地闡述了machine learning model transparency這件事。
在模型解釋性領(lǐng)域,目前state-of-the-art的結(jié)果來源于一個稱為shap的項目。shap(shapley additive explanations)也能對各種類型的機器學(xué)習(xí)模型給出一個相對統(tǒng)一的解釋結(jié)果,shap重要的是整合了包括lime在內(nèi)的一系列model-explain方法,進而給出了基于預(yù)測的特征貢獻值的衡量和可視化。
從model transparency的發(fā)展來看,對于單個預(yù)測點的解釋無論從理論還是可視化結(jié)構(gòu)上看都有了比較好的探索和結(jié)果,包括lime和shap等工具;然而對于一個模型整體“解釋度”等指標(biāo)的定義,雖然lime等也做過一定程度的定義和研究,但目前業(yè)界仍然沒有一個統(tǒng)一的標(biāo)準(zhǔn),不同的應(yīng)用場景對于模型的解釋性要求也不一樣,因此確實很難統(tǒng)一。我們在智能司法場景上目前雖然基于lime做了一些嘗試,后續(xù)也會持續(xù)follow包括shap在內(nèi)的model explainer的進展,但是更多的也是基于當(dāng)前業(yè)務(wù)場景的應(yīng)用,對于科學(xué)性地研究模型可解釋性,還是期待學(xué)術(shù)界有更多結(jié)果輸出。