天天看點

基于強化學習的品質AI在淘系互動業務的實踐之路

背景&挑戰

網際網路電商中,疊代速度在競争中能決定業務的生死。疊代速度和慢工出細活打磨使用者體驗看上去非常沖突,在互動這種強使用者體驗的産品線沖突更加突出。使用者的遊戲化體驗是由一條條的使用者行為路徑的順暢度和産品提供給使用者的獲得感來決定的,那我們就找到一個很好的切入點,如何用AI将使用者行為路徑全面模拟出來?

在解決這個問題之前,我們先來看看互動的業務場景。第一類是手淘上現有的三個典型互動産品,金币莊園,淘寶人生和芭芭農場。第二類是大促互動的産品,也就是大家都接觸過的蓋樓/養貓這樣的大促互動。

基于強化學習的品質AI在淘系互動業務的實踐之路

這些互動産品的共同特點是極度追求使用者的體驗效果,不斷在玩法上求新求變,沒有那次大促大家會玩到不變的互動。同時電商場景下對疊代速度的要求也不斷趨向極緻,2個月需要完成一款其他遊戲公司需要半年才能完成的作品。

基于強化學習的品質AI在淘系互動業務的實踐之路

在這種情況下,互動需要解決如下三個問題:

  • 環境:互動的測試環境資料構造除了基礎的部署環境意外,還有大量的使用者狀态資料、規則配置資料和權益資料,可能構造一個拉100人在蓋樓獲勝的場景用例需要一整天而測試執行隻需要1分鐘。如何構造一個高頻易用的環境?
  • 用例生成:互動的特色決定了大部分的功能都是新功能,是沒有線上流量可以參考的,這種情況下大資料測試方案會陷入沒有資料輸入的困境。如何解決新功能的更全面的用例生成?
  • 資損:互動有大量的權益發放,基于現有基于對賬的事後資損防控方案,在互動這樣的巨量場景下隻能說是亡羊補牢。如何提供事前更全面的資損風險識别方案?

建構基于強化學習的品質AI

這個時候再回過頭來看互動産品的特色,無論是做任務更新領紅包,還是拉人蓋樓pk領紅包,都是由一條條使用者的行為節點構成的行為路徑來構成,如果我們能把互動的産品按照一個個的行為節點解構成一個有向圖,那互動的用例生成也就抽象成了如何建構一個有向圖和求解有向圖中的路徑集的問題?環境問題是AI執行的前置條件,而風險包括資損風險和架構風險的探測則是AI的用武之地。

基于強化學習的品質AI在淘系互動業務的實踐之路

有了思路,我們再來一步步看如何讓AI真正在業務中落地。

▐  高頻易用的環境

現有測試環境的解決方案更多基于如何降低系統部署對于分布式系統的影響來解決,包括監控應用的部署/構造隔離的分布式系統的鏡像環境/從變更管控角度管控部署的時間段等等,主要解決不同代碼部署情況下的環境問題。對于互動這樣疊代速度極緻求快的業務,這些方案都還是成本太高。

互動的解決思路是不改變部署結構的情況下,通過資料隔離的方式來解決。

基于強化學習的品質AI在淘系互動業務的實踐之路
基于強化學習的品質AI在淘系互動業務的實踐之路

互動環境的的目标是隔離穩定和高頻易用。

  • 隔離穩定:通過測試賬号和影子資料庫來實作流量隔離;通過系統架構改造,将互動所有的配置資料讀取的方式進行收口,實作配置隔離,隻有指定的賬号能讀取指定的配置。這樣可以實作一套部署結構,同時允許正常的業務邏輯運作和測試流量執行,且互不影響
  • 高頻易用:由于沒有代碼和部署解構的變化,環境的準備變成了測試資料包括配置資料的準備,理論上可以做到随備随用。

有了這樣的穩定的環境,AI的落地才有了前提條件。

▐  基于強化學習AI的用例生成

既然互動的業務場景抽象成了基于行為節點的有向圖建構,已經有了很多針對有向圖的算法解決方案。這個時候深入業務的特點和訴求看看要解決的核心問題,再來選取合适的解決方案。

  • 新功能無輸入或者少輸入:互動的玩法大部分是新功能,能提供的沒有大規模可以調用的線上請求資料或者日志資料,隻有代碼和代碼相關的一些接口定義。
  • 要全面:蓋樓這樣的玩法的使用者量級決定了遺漏的風險真的會摧毀整個産品的體驗。生成的用例需要更全面,能否發現人難以發現的問題是一個很重要的衡量标準。
  • 自動化:智能化的前提一定是充分的自動化。從給定的輸入到訓練,從訓練到用例生成,從用例生成到用例執行需要完成全自動化。
基于強化學習的品質AI在淘系互動業務的實踐之路
基于強化學習的品質AI在淘系互動業務的實踐之路

我們的解法是基于強化學習來建構用例生成的AI。

  • 新功能少輸入:使用者的行為節點分為兩種,一種是無系統資料傳輸的比如頁面的滑動等純前端互動事件,另一種是有系統資料傳輸的如按鈕點選,這一種我們定義為使用者的有效行為。在系統實作上有效行為最後會變成對後端接口的調用。是以基于接口定義而不是基于請求資料來建立有向圖模型能極大減少需要的輸入。在互動的實踐中,隻需要配置好需要的接口和對應的入參類型即可。
  • 全面的用例生成:互動的接口調用我們認為是有先後順序的,這是從接口的參數來展現的。是以有向圖的路徑建構問題,我們選用了強化學習來建構。這其中最關鍵的路徑覆寫全面問題是一個十分複雜的問題,邏輯調用路徑是代碼接口調用路徑和資料邏輯路徑等衆多因素的組合體。在互動的實踐中,我們針對最急迫的冒煙用例覆寫問題,對探索政策也結合pagerank和dfs做了一些改進,同時對激勵函數做了接口參數狀态覆寫優先的優化。從最終的實踐效果來看,發現了很多人容易遺漏的狀态遺漏和動态機率計算問題。
  • 全面自動化:這裡最重要要解決的工程問題是将算法跑出來的接口調用路徑,轉化成可以有最終使用者使用的可重複執行的用例,這裡不做贅述。

▐  體驗還原

自動化生成出來的用例要最終在業務線産生世紀作用,提高易用性是關鍵。而提高易用性的關鍵是打通端到端,讓生成出來的用例不隻是資料,更要成為具像化的可互動的端上的效果。

基于強化學習的品質AI在淘系互動業務的實踐之路

受益于近幾年前端的資料驅動架構演進的紅利,我們可以友善地在工程上實作給定接口資料,即可在端上複現出對應的互動行為。結合圖像斷言等技術可以打通用例自動驗證這個測試智能化的最後一公裡。

品質AI解決業務問題

當我們在互動場景中解決了環境的問題和用例的自動化生成問題,在工程上也打通了端到端的體驗還原,建構了基于強化學習的品質AI,需要真正解決業務中的問題才能業務真正帶來價值。

▐  權益鍊路預跑

資損問題最近兩年成為了業界的一個棘手問題,也出現了很多基于對賬的資損問題發現的思路和産品。但是如前所述對于互動特别是蓋樓這樣量級和短周期的産品,事後的亡羊補牢雖然能減少損失但是損失的量級依然很大,互動需要能事前探測資損風險的方案。這樣的方案難點主要有二:

  • 什麼樣的場景會發生資損難定位:資損場景雖然是業務邏輯場景的其中一個子集,如果業務邏輯場景本身都有遺漏,資損場景遺漏更加難以避免。現在的大資料測試方案對于回歸類型可以解決,對于新功能新變更還是存在輸入資料不夠的問題。
  • 資損發生的方式難模拟:資損發生的方式花樣繁多,代碼邏輯錯誤/異常處理/并發處理/資料污染/配置錯誤等等情況層出不窮。
基于強化學習的品質AI在淘系互動業務的實踐之路
基于強化學習的品質AI在淘系互動業務的實踐之路

對于品質AI來說,問題1可以歸納用例如何生成更全,問題2可以歸納為環境準備問題。在實作了冒煙用例的AI化之後,互動通過對AI的疊代加入更多如代碼路徑覆寫/資料血緣分析/異常的執行環境注入等方式逐漸演進風險探測的準确率。目前互動已經實作了核心權益發放場景完全基于智能AI的權益鍊路預跑。

▐  容錯探測

在分布式系統中,單點的故障不僅僅影響自身功能。是以每個系統在做好自身功能驗證的事後,還需要考慮對關聯系統和關聯功能的容錯能力,保障極端情況下的自身功能可用性和使用者體驗。

基于強化學習的品質AI在淘系互動業務的實踐之路

目前互動核心的功能故障點的容錯探測都以實作AI化。

總體展望

品質保障整體上在整個研發體系中處于守門員的角色,在整個世界都在全力擁抱數字化的大背景下,系統的複雜度提升越來越快,業務對疊代效率的訴求也越來越強,傳統的解決方案越來越難以滿足時代的要求。

智能化給出了品質行業的另一個産品化的解決,未來的品質保障一定是通過研發更好的品質産品來保障業務的快速疊代,而根據各個業務定義的品質AI會是下一代品質産品的最佳選擇。雖有曲折,必有改變。

繼續閱讀