1. 程式人生 > >如何構建阿里小蜜演算法模型的迭代閉環?

如何構建阿里小蜜演算法模型的迭代閉環?

導讀:伴隨著AI的興起,越來越多的智慧產品誕生,演算法鏈路也會變得越來越複雜,在工程實踐中面臨著大量演算法模型的從0到1快速構建和不斷迭代優化的問題,本文將介紹如何打通資料分析-樣本標註-模型訓練-監控迴流的閉環,為複雜算法系統提供強有力的支援。

新技術/實用技術點:

  1. 實時、離線場景下資料加工的方案選型
  2. 高維資料的視覺化互動
  3. 面對不同演算法,不同部署場景如何對流程進行抽象
    01. 背景
  4. 技術背景及業務需求
    小蜜系列產品是阿里巴巴為消費者和商家提供的智慧服務解決方案,分別在使用者助理、電商客服、導購等方面做了很多工作,雙十一當天提供了上億輪次的對話服務。其中用到了問答、預測、推薦、決策等多種演算法模型,工程和演算法同學在日常運維中會面臨著如何從0到1快速演算法模型並不斷迭代優化,接下來將從工程角度介紹如何打通資料->樣本->模型->系統的閉環,加速智慧產品的迭代週期。
  5. 實現
    實現這一過程分為2個階段:
    0->1階段:
    模型冷啟動,這一階段更多關注模型的覆蓋率。
    實現步驟:
    A. 抽取對話日誌作為資料來源
    B. 做一次知識挖掘從日誌中挑出有價值的資料
    C. 運營人員進行標註
    D. 演算法對模型進行訓練
    E. 運營人員和演算法端統一對模型做評測
    F. 模型釋出

    1->100階段:
    badcase反饋和修復階段,主要目標是提升模型的準確率。
    實現步驟:
    A. 運營端根據業務反饋(頂踩按鈕)、使用者不滿意會話(如:轉人工)收集badcase資訊
    B. 進行資料分析,將分析結果給到不同的模型模組、規則模組
    C. 演算法端對以上模型分別進行訓練
    D. 最終釋出到線上生效
  6. 痛點
    在以上過程中,會遇到如下幾個痛點:
    A. 不同演算法需要不同的標註互動形式,如何快速支援
    B. 運營方的標註憑藉個人感覺,缺少指導,無法保障質量
    C. 線上badcase如何快速發現和修復
    D. 機器人中部署了上百個演算法模型,日常維護需要佔用工程師大量的精力
    E. 資料樣本在業務和演算法之間來回傳遞,有安全隱患
    02. 閉環迭代模型的產生
  7. 模型訓練閉環
    基於以上的痛點,阿里小蜜團隊構建了模型訓練閉環。該閉環系統主要包括對話系統層、資料層、樣本層和模型層這4個部分。

    彼此之間的關係、流程如下:

A. 對話系統層:使用者端會跟機器人系統進行對話

B. 對話產生的日誌經過數倉埋點進入到資料層

C. 資料層由運營人員做標註

D. 完成標註的資料作為樣本,藉助演算法團隊提供的訓練/評測服務,進入到模型層

E. 模型釋出到系統中,形成訓練閉環

  1. 系統 => 資料
    ① 多維資料查詢
    這一部分講述如何從系統層到達資料層,這裡會涉及到“多維資料查詢”這樣一個概念。前面提到,資料來源的渠道是多種多樣的;這些資料會具備多種多樣的屬性,例如:行業屬性、使用者型別屬性等。不同業務的對話日誌帶有各自的業務屬性。

    在應用多維資料查詢的過程中,難點是屬性相交等問題。平臺的第一項工作就是資料預處理,遍歷出所有的業務-屬性組合;運營人員取資料的時候,先選擇業務維度;接著從業務維度到資料維度進行一層對映,從而去掉其業務屬性(例如,時間、地點、行業等維度分別對映成A、B、C)

    ② OLAP與“資料立方體”
    這裡用到了聯機分析處理(OLAP ,On-Line Analytical Processing,一種資料動態分析模型)技術。首先會構造“資料立方體”這樣一種資料結構,將資料分成多種維度,包括:來源維度、路線維度、時間維度。

    對資料立方體由上卷和下鑽這兩種基本操作,生成新的立方體。下圖中,右半部分是將城市維度進行了上卷操作,左半部分是將季度維度進行了下鑽操作。

    資料立方體結構的不足:
    A. 維度型別。對於商家這種百萬數量級的維度,搜尋起來效率低下。針對這種缺點,選擇對於重點商家重點維度進行儲存。
    B. 多條件的or關係查詢,在這種立方體結構中無法實現。
    C. 列舉數量和效率的平衡。需要根據具體覆蓋業務定義屬性等。
  2. 資料 => 樣本
    ① 標註元件
    資料標註環節由“人工智慧訓練師”這個角色參與,標註形式會根據演算法的選擇而調整,包括:標籤、實體、屬性間關係等。
    如下圖所示:

    元件包括狀態列、搜尋框、表格(支援配置),可進行標註分類、文字型精選、排序型篩選、任務操作內容等多個模組(詳見下圖)。

    這樣的元件有如下的缺點:
    A. 1D表格無法有效利用演算法資料結構
    B. 操作繁瑣困難
    C. 浪費畫素空間
    D. 無盡的翻頁

    ② 高維資料視覺化
    基於元件存在的以上種種缺點,我們選擇了將資料降維。
    什麼是高維資料?
    高維資料包括:
    A. 機器人阿里小蜜的文字資料
    B. 圖片
    C. 語音資料
    視覺化後的高維資料長什麼樣子?

    視覺化前

    視覺化後
    上圖是對文字資料視覺化後的結果。實現步驟:
    A. 對文字資料進行聚類,根據相似度變成平面結構
    B. 用顏色區分類別
    這種方式可以直觀看出線上的語料分佈,包括分佈類別、分佈集中趨勢等。
    這裡用到的技術方案包括:
    A. 降維:主要用PCA和T-SNE兩種降維方式
    B. 向量化:資料拆分之後,將資料轉變為可比較的表示形式。對於文字,主要使用word2vec;而對於圖片,主要使用phash編碼。
    C. 聚類:聚類主要使用k-means。

    ③ 散點圖塌縮及其互動
    下圖中的左圖是聚類後的效果圖。聚類完成後,每一類圖片的每一類都會分佈到一起;再通過散點圖塌縮演算法,將每一個類壓縮成一個散點,通過顏色區分類別種類。
    利用這種方式,可以找出badcase中佔比最高的一類,從而進行修復。

    在對類的互動中,有一些特殊的操作,例如:框選。上圖右圖的散點圖中,可以通過框選的方式抽取每一類的關鍵詞。

    03. 實時佈防
  3. 語料關鍵詞的識別與新增

    上圖是某一天貓商家的海報圖:某商家正在搞一個促銷活動,找易烊千璽作為代言人。由於機器人預先不知道會有這樣一個活動發生,模型中自然不包含這樣的關鍵詞。商家發現當天的未識別語料全部都和“易烊千璽”相關,但是機器人不識別這個關鍵詞(未識別率達70%以上)。怎樣快速幫商家解決這類問題呢?
  4. 實時佈防

    這類的AI能力如何做實時佈防呢?將這類問答、意圖等AI能力在自己的伺服器上以日誌的形式做埋點,伺服器會將日誌收集起來通過flink平臺做實時流式聚類,商家工作臺通過標註元件的形式展現當前時段的高頻問題,並通過互動式選項選擇如何修復(以上圖中的藍色選定區域為例),從而讓機器人能夠識別該語料。
  5. 資料加工
    從業務日誌中提取模型需要的語料需要進行一些基本的演算法加工,這些步驟除了面臨大資料的壓力,研發工程師還要考慮對這種加工能力的封裝和複用。

    A. 首先,對日誌資料做脫敏:將日誌中的手機號、地址、人名等去掉,對單字型文字、語聊型文字的去除;
    B. 接下來對資料做去重和向量化;
    C. 下一步是對處理完成的資料做聚類;
    D. 聚類後的資料做摘要,進而做相似度計算。
    整個過程需要很多的演算法模組,每一個模組都會封裝成一個演算法元件,提供到不同的模型迭代中。上圖的下半部分就是語料經過了不同演算法模組的變化,從向量到聚類,進而抽取不同Topic。
    下圖是以上過程抽象成的模板。

    模板中包含了演算法元件、標註元件、訓練元件等不同的元件;運營人員在線上可以挑選不同元件配置模板來優化對應的模型。
    在模板執行的過程中,可使用mapreduce元件、UDF元件以及Spark元件。Spark元件是目前通用性較強的元件,既可本地排程,又可遠端排程。
  6. 構建資料處理引擎
    基於Spark構建資料處理引擎,分為客戶端和計算叢集兩個系統。客戶端包括元件庫、排程引擎,以及Spark Client Runner。

    這種架構的好處:演算法可以在本地開發spark元件,直接整合到模板中;同時支援遠端叢集模式和本機輕量級排程,大小資料量都適用;同時spark擁有 SQL和spark mllib兩個元件庫,研發通過封裝可以直接開放給業務使用。
    本次分享就到這裡,謝謝大家。
    歡迎加入DataFunTalk交流群,跟同行零距離交流。如想進群,請加逃課兒同學的微信(微訊號:DataFunTalker),回覆:交流,逃課兒會自動拉你進群。