新技術 / 實用技術點:
- 實時、離線場景下資料加工的方案選型
- 高維資料的可視化互動
-
面對不
同算法,不同部署場景如何對流程進行抽象
背景
1. 技術背景及業務需求
小蜜系列産品是阿裡巴巴為消費者和商家提供的智能服務解決方案,分别在使用者助理、電商客服、導購等方面做了很多工作,雙十一當天提供了上億輪次的對話服務。其中用到了問答、預測、推薦、決策等多種算法模型,工程和算法同學在日常運維中會面臨着如何從 0 到 1 快速算法模型并不斷疊代優化,接下來将從工程角度介紹如何打通資料 -> 樣本 -> 模型 -> 系統的閉環,加速智能産品的疊代周期。

2. 實作
實作這一過程分為 2 個階段
0->1 階段:
模型冷啟動,這一階段更多關注模型的覆寫率。
實作步驟:
- 抽取對話日志作為資料源
- 做一次知識挖掘從日志中挑出有價值的資料
- 營運人員進行标注
- 算法對模型進行訓練
- 營運人員和算法端統一對模型做評測
- 模型釋出
1->100 階段:
badcase 回報和修複階段,主要目标是提升模型的準确率。
- 營運端根據業務回報(頂踩按鈕)、使用者不滿意會話(如:轉人工)收集 badcase 資訊
- 進行資料分析,将分析結果給到不同的模型子產品、規則子產品
- 算法端對以上模型分别進行訓練
- 最終釋出到線上生效
3. 痛點
在以上過程中,會遇到如下幾個痛點:
- 不同算法需要不同的标注互動形式,如何快速支援
- 營運方的标注憑借個人感覺,缺少指導,無法保障品質
- 線上 badcase 如何快速發現和修複
- 機器人中部署了上百個算法模型,日常維護需要占用工程師大量的精力
- 資料樣本在業務和算法之間來回傳遞,有安全隐患
閉環疊代模型的産生
1. 模型訓練閉環
基于以上的痛點,阿裡小蜜團隊建構了模型訓練閉環。該閉環系統主要包括對話系統層、資料層、樣本層和模型層這 4 個部分。
彼此之間的關系、流程如下:
- 對話系統層:使用者端會跟機器人系統進行對話
- 對話産生的日志經過數倉埋點進入到資料層
- 資料層由營運人員做标注
- 完成标注的資料作為樣本,借助算法團隊提供的訓練 / 評測服務,進入到模型層
- 模型釋出到系統中,形成訓練閉環
2. 系統 => 資料
① 多元資料查詢這一部分講述如何從系統層到達資料層,這裡會涉及到“多元資料查詢”這樣一個概念。前面提到,資料來源的管道是多種多樣的;這些資料會具備多種多樣的屬性,例如:行業屬性、使用者類型屬性等。不同業務的對話日志帶有各自的業務屬性。
在應用多元資料查詢的過程中,難點是屬性相交等問題。平台的第一項工作就是資料預處理,周遊出所有的業務 - 屬性組合;營運人員取資料的時候,先選擇業務次元;接着從業務次元到資料次元進行一層映射,進而去掉其業務屬性(例如,時間、地點、行業等次元分别映射成 A、B、C)
② OLAP 與“資料立方體”
這裡用到了聯機分析處理(OLAP ,On-Line Analytical Processing,一種資料動态分析模型)技術。首先會構造“資料立方體”這樣一種資料結構,将資料分成多種次元,包括:來源次元、路線次元、時間次元。
對資料立方體由上卷和下鑽這兩種基本操作,生成新的立方體。下圖中,右半部分是将城市次元進行了上卷操作,左半部分是将季度次元進行了下鑽操作。
資料立方體結構的不足:
- 次元類型。對于商家這種百萬數量級的次元,搜尋起來效率低下。針對這種缺點,選擇對于重點商家重點次元進行存儲。
- 多條件的 or 關系查詢,在這種立方體結構中無法實作。
- 枚舉數量和效率的平衡。需要根據具體覆寫業務定義屬性等。
3. 資料 => 樣本
① 标注元件
資料标注環節由“人工智能訓練師”這個角色參與,标注形式會根據算法的選擇而調整,包括:标簽、實體、屬性間關系等。
如下圖所示:
元件包括狀态欄、搜尋框、表格(支援配置),可進行标注分類、文本型精選、排序型篩選、任務操作内容等多個子產品(詳見下圖)。
這樣的元件有如下的缺點:
- 1D 表格無法有效利用算法資料結構
- 操作繁瑣困難
- 浪費像素空間
- 無盡的翻頁
② 高維資料可視化
基于元件存在的以上種種缺點,我們選擇了将資料降維。
什麼是高維資料?
高維資料包括:
- 機器人阿裡小蜜的文本資料
- 圖檔
- 語音資料
可視化後的高維資料長什麼樣子?
可視化前
可視化後
上圖是對文本資料可視化後的結果。實作步驟:
- 對文本資料進行聚類,根據相似度變成平面結構
- 用顔色區分類别
這種方式可以直覺看出線上的語料分布,包括分布類别、分布集中趨勢等。
這裡用到的技術方案包括:
- 降維:主要用 PCA 和 T-SNE 兩種降維方式
- 向量化:資料拆分之後,将資料轉變為可比較的表示形式。對于文字,主要使用 word2vec;而對于圖檔,主要使用 phash 編碼。
- 聚類:聚類主要使用 k-means。
③ 散點圖塌縮及其互動
下圖中的左圖是聚類後的效果圖。聚類完成後,每一類圖檔的每一類都會分布到一起;再通過散點圖塌縮算法,将每一個類壓縮成一個散點,通過顔色區分類别種類。
利用這種方式,可以找出 badcase 中占比最高的一類,進而進行修複。
在對類的互動中,有一些特殊的操作,例如:框選。上圖右圖的散點圖中,可以通過框選的方式抽取每一類的關鍵詞。
實時布防
1. 語料關鍵詞的識别與添加
上圖是某一天貓商家的海報圖:某商家正在搞一個促銷活動,找易烊千玺作為代言人。由于機器人預先不知道會有這樣一個活動發生,模型中自然不包含這樣的關鍵詞。商家發現當天的未識别語料全部都和“易烊千玺”相關,但是機器人不識别這個關鍵詞(未識别率達 70% 以上)。怎樣快速幫商家解決這類問題呢?
2. 實時布防
這類的 AI 能力如何做實時布防呢?将這類問答、意圖等 AI 能力在自己的伺服器上以日志的形式做埋點,伺服器會将日志收集起來通過 flink 平台做實時流式聚類,商家工作台通過标注元件的形式展現目前時段的高頻問題,并通過互動式選項選擇如何修複(以上圖中的藍色標明區域為例),進而讓機器人能夠識别該語料。
-
資料加工
從業務日志中提取模型需要的語料需要進行一些基本的算法加工,這些步驟除了面臨大資料的壓力,研發工程師還要考慮對這種加工能力的封裝和複用。
- 首先,對日志資料做脫敏:将日志中的手機号、位址、人名等去掉,對單字型文本、語聊型文本的去除;
- 接下來對資料做去重和向量化;
- 下一步是對處理完成的資料做聚類;
- 聚類後的資料做摘要,進而做相似度計算。
整個過程需要很多的算法子產品,每一個子產品都會封裝成一個算法元件,提供到不同的模型疊代中。上圖的下半部分就是語料經過了不同算法子產品的變化,從向量到聚類,進而抽取不同 Topic。
下圖是以上過程抽象成的模闆。
模闆中包含了算法元件、标注元件、訓練元件等不同的元件;營運人員線上上可以挑選不同元件配置模闆來優化對應的模型。
在模闆執行的過程中,可使用 mapreduce 元件、UDF 元件以及 Spark 元件。Spark 元件是目前通用性較強的元件,既可本地排程,又可遠端排程。
4. 建構資料處理引擎
基于 Spark 建構資料處理引擎,分為用戶端和計算叢集兩個系統。用戶端包括元件庫、排程引擎,以及 Spark Client Runner。
這種架構的好處:算法可以在本地開發 spark 元件,直接內建到模闆中;同時支援遠端叢集模式和本機輕量級排程,大小資料量都适用;同時 spark 擁有 SQL 和 spark mllib 兩個元件庫,研發通過封裝可以直接開放給業務使用。
本次分享就到這裡,謝謝大家。
作者介紹:
許特,阿裡小蜜進階開發工程師。
原文連結:
https://www.infoq.cn/article/KPGoUVuFbaAhCsVK2vfH https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247497447&idx=1&sn=f47a84f48f4c08b4882b8aecd29c5b3c&chksm=fbd7448bcca0cd9db8d249bfd16a4268f6a6fcaadc6269baee674d87e11bade03a055bfc73c2&scene=27#wechat_redirect