天天看點

如何建構阿裡小蜜算法模型的疊代閉環?

新技術 / 實用技術點:

  • 實時、離線場景下資料加工的方案選型
  • 高維資料的可視化互動
  • 面對不

    同算法,不同部署場景如何對流程進行抽象

背景

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 平台做實時流式聚類,商家工作台通過标注元件的形式展現目前時段的高頻問題,并通過互動式選項選擇如何修複(以上圖中的藍色標明區域為例),進而讓機器人能夠識别該語料。

如何建構阿裡小蜜算法模型的疊代閉環?
  1. 資料加工

    從業務日志中提取模型需要的語料需要進行一些基本的算法加工,這些步驟除了面臨大資料的壓力,研發工程師還要考慮對這種加工能力的封裝和複用。

如何建構阿裡小蜜算法模型的疊代閉環?
  • 首先,對日志資料做脫敏:将日志中的手機号、位址、人名等去掉,對單字型文本、語聊型文本的去除;
  • 接下來對資料做去重和向量化;
  • 下一步是對處理完成的資料做聚類;
  • 聚類後的資料做摘要,進而做相似度計算。

整個過程需要很多的算法子產品,每一個子產品都會封裝成一個算法元件,提供到不同的模型疊代中。上圖的下半部分就是語料經過了不同算法子產品的變化,從向量到聚類,進而抽取不同 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

繼續閱讀