背景
現狀與解決方案
手淘上以列表推薦形式為主的業務場景有不少,以手淘資訊流為例,進入猜你喜歡場景的使用者,興趣點常常是不明確的,使用者瀏覽時往往沒有明確的商品需求,而是在逛的過程中逐漸去發現想買的商品。而推薦系統在使用者逛到買的過程中,往往會下發並呈現不同型別商品讓使用者從中挑選,推薦系統這個過程中會去捕捉使用者的興趣變化,從而推薦出更符合使用者興趣的商品。然而推薦系統能不能做到使用者興趣變化時立刻給出響應呢?
推薦系統以往的做法都是透過客戶端請求後觸發雲端商品排序,然後將排序好的商品下發給使用者,端側再依次做商品呈現。這樣存在下面兩個問題:
雲端推薦系統對終端使用者推薦內容調整機會少,往往都在分頁請求時,而簡單請求並不能靈活做內容的增刪改
雲端推薦系統不能及時獲取到使用者當前時刻的偏好意圖,快速給出反饋
我們總結發現,目前推薦系統的弊端是,使用者偏好的變化與推薦系統對使用者感知和對內容的調整時機並不能匹配,會出現推薦的內容並非使用者當前時刻想要的,使用者瀏覽和點選意願都會下降。那麼怎樣能夠讓推薦系統及時感知到使用者偏好並及時的給出使用者想要的內容呢?
我們先透過現象看本質,以上問題的本質在於推薦系統和使用者互動過程中的實時性差,以及決策系統可調整性差。實時性差體現在兩個方面,推薦系統對終端使用者的感知實時性差以及對使用者的干預實時性差。而決策系統可調整性差,體現在決策系統對使用者內容的調整時機依賴端側的固定規則請求,可調整的內容侷限於當前次下發的內容。如果我們能夠解決實時性問題,推薦系統能夠實時感知使用者偏好,並在任何時機實時調整使用者所見內容,推薦的內容可以更符合使用者當前的偏好;如果我們能夠解決決策系統可調整性差問題,推薦系統可以決定合適的時機去調整使用者內容,可以決定用更優的方式去調整具體的內容。那麼解決的方案是什麼呢?
我們在手淘資訊流中引入機器學習和深度神經網路模型,結合端側使用者特徵,在端側持續感知使用者意圖,實時決策並實時反饋結果給使用者,這樣解決了實時性差以及決策系統可調整性差的問題。我們把這個解決方案稱之為端智慧。
端智慧帶來的改變
端智慧的本質是“端”+“智慧”。首先“智慧”不是一個新鮮的東西,“智慧”不管是在雲端或終端,解決的問題是透過機器學習資料的內在機制並推理出最終結論;“端”解決的問題是將”智慧“工程化並落地到具體的應用場景,“端”有機的整合端側資料以及雲端下發內容,決定何時觸發“智慧”做決策,最終決定怎樣給使用者以反饋。
端智慧帶來的改變,則是讓端上具備了“獨立思考”的能力,這讓部分決策和計算不再依賴於雲端,端側可以更實時、更有策略的給出結果。說到實時性,5G時代的到來,其低時延特性極大的降低了端和雲的互動時間,但這並不影響我們利用端智慧實現更低成本的決策和快速響應,反而對於端智慧來說,好處是能和雲端結合的更緊密。另外由於在端側能夠秒級感知使用者意圖做出決策,產品和使用者貼的更近了,這催生了更多實時性的玩法,產品將不再侷限於要到固定的時機如分頁請求讓雲端去給到新的內容反饋,而是思考,當使用者表達出來特定的使用者意圖時,產品應該如何提供與意圖相匹配的內容。
端智慧與傳統差異比較
儘管端智慧帶來了很多好的改變,但這裡依然需要強調一點,並不是說有了端智慧就不再需要雲智慧,怎樣做到雲&端協同智慧才是未來。
端智慧的優勢在於:
端側有著豐富的使用者特徵和觸點,有著更多的機會和條件去做決策
實時性高,在端側處理可節省資料的網路傳輸時間,節省的時間可用於更快的反饋結果
節省資源,在端側處理,利用端側算力和儲存空間,可以節省大量的雲端計算和儲存資源
隱私性好,從產生資料到消費資料都在端側完成,避免傳輸到雲端引起隱私洩露風險
端智慧的不足在於:
裝置資源有限,端側的算力、電力、儲存是有限的,不能做大規模高強度的持續計算。
演算法規模小,端側算力小,而且單使用者的資料,在演算法上並不能做到最優
使用者資料有限,端側資料並不適合長期大量儲存,端側可用資料有限
雲智慧的優勢在於:
大資料,雲端可以透過長期大量的來自不同人群的資料進行計算
裝置資源充足,雲端計算的算力、電力、儲存都可以根據需求進行配置
演算法規模大,可以透過足夠的大規模模型,計算出最優解
雲智慧不足在於:
響應速度慢,受傳輸頻寬影響,不能穩定提供較高的響應速度
使用者感知弱,端側產生的資料同步到雲端,資料量限制和傳輸時間的約束都會削弱雲端對使用者的感知
從以上雲智慧和端智慧的對比可以看出,端智慧適合於依賴端側使用者觸點的小規模低時延的計算,而云智慧更適合中長期資料大規模計算。同時,端智慧往往需要雲端提供的長期特徵及內容,而云智慧也往往需要端上的特徵和豐富的觸發點,兩者優勢互補,才能發揮出更好的效果。
端智慧基礎設施建設
高樓起於平地,打造端智慧這幢摩天大樓需要很多基礎設施,剝除各種各樣邊角料和錦上添花的東西后,我們認為構成支撐起端智慧體系的骨架組成部分主要有資料、端計算、端計算引擎、端智慧決策框架、演算法研發平臺。其中,端側資料 、端計算、端計算引擎這三塊的作用是實時感知使用者,計算出貼合使用者的結果;端智慧決策框架是觸達使用者的通道,透過端上實時智慧決策銜接使用者意圖和端計算,最後透過一定的干預手段展現到使用者眼前;演算法研發平臺是開發過程主要接觸的平臺,能有效提升研發效率。透過一個簡單的示意圖也許能更好的理解這五大塊:
資料-BehaviX
無論計算是發生在雲端還是終端,資料始終是執行所有計算的基本要素之一,端計算的本質也是計算,資料當然也是他的要素之一。在淘寶或者其他阿里系App裡我們已經有很多資料沉澱,這些資料包括但不限於商品、商品特徵、使用者特徵等。這些資料同樣可以作為端計算的輸入來源,但如果只有這些,端計算和雲端計算相比在資料上似乎沒有什麼明顯優勢了,所以我們需要回過頭看下端計算作為端智慧的重要部分,他的在資料上的核心優勢是什麼?端計算執行在端上,天然能獲取端上的資料,而且是實時獲取。我們希望這部分資料是和已有資料是互補的、對端計算是有價值的,端計算的目的之一是千人千面,端上豐富的使用者特徵,能體現當前使用者的實時意圖。所以我們在構建了端側使用者特徵資料中心BehaviX。
BehaviX作為整個端智慧的資料基礎,提供給演算法特徵資料作為模型資料輸入源,支援了特徵實時同步雲端,讓雲端能夠秒級感知到端側使用者特徵,提供了演算法基於端側使用者特徵資料做意圖分析的能力。
端智慧決策框架-BehaviR
從使用者角度來看,使用者感知到的不是一堆資料和計算而是能夠被感知到的結果,因此,即使計算出來的結果無比貼合使用者意圖,如果無法及時觸達使用者也是無用功。觸達使用者方式多種多樣,我們需要基於實際場景放開手大膽探索,合理的產品設計會讓使用者覺得是在和一個“智慧”的App交流,反之,不合理的產品設計會打擾使用者、對使用者造成困擾。從技術角度來說,我們要設計和做的其實是一條觸達通道,透過感知使用者觸點,我們能根據運營規則配置或者本地模型決策出此時要給使用者什麼型別的反饋,然後透過下面要講述的端計算能力計算出貼合使用者的結果並展示給使用者,以此將端計算和使用者連線在一起。
端智慧決策框架能簡化業務方接入端智慧流程,幫助業務方真正做到實時感知、及時干預,更多詳細內容。
端計算-EdgeRec
端計算簡單理解起來可以認為是跑在端上的一段邏輯,這段邏輯可以是一個預置的Native任務,也可以是一個指令碼,當然,在最終我們希望他是一個演算法模型。演算法模型是目前做到千人千面的有效手段之一,其他優勢不再累述了,詳見下面的友情連結。
回到這裡的主角EdgeRec-邊緣計算演算法,他在在端上實時建模了使用者的異構特徵序列,為端上決策提供通用的使用者狀態表達。透過多工學習,共享通用的使用者狀態表達,在端上建模多種決策模型。另外,邊緣計算演算法SDK也提供端上深度學習演算法開發的通用解決方案,如:端上深度學習模型庫、端上模型拆分部署、端上模型版本控制、端上樣本生成等。
端計算引擎-Walle&MNN
端計算引擎是端智慧體系中重要的一環,是演算法模型的基礎環境。無論是iOS還是Android目前都提供了一套環境,但兩端差異性比較大,限制也比較多。構建一套端計算引擎的成本是非常高的,但長遠來看統一兩端引擎、抹平差異是有非常有必要的。Walle和MNN作為當前我們端計算引擎很好地做到了這一點。
Walle是端上整體的Runtime,他為演算法的Python指令碼、深度模型以及Jarvis的EFC、ESC等特徵樣本計算庫提供執行環境,另外也為BehaviX管理的基礎資料提供儲存服務。
MNN 是一個輕量級的深度學習端側推理引擎,核心解決深度神經網路模型在端側推理執行問題,涵蓋深度神經網路模型的最佳化、轉換和推理,其前身為 AliNN。
演算法研發平臺-Jarvis
演算法模型的研發並不是簡單地在本地IDE寫一份程式碼那麼簡單,我們通常需要理論調研、演算法開發、模型訓練、引數調優、線上驗證等等步驟,本地環境是遠遠不夠的,所以演算法研發平臺的存在能幫助演算法同學更高效、更專注地進行研發工作。另外,端智慧要出結果,一定是多團隊通力合作的結果,多團隊合作僅靠口頭溝通是遠遠不夠的,我們需要一套合理的流程去簡化和規範各項工作,因此,在演算法研發平臺的基礎之上我們仍舊需要一個一站式平臺。
Jarvis提供一站式的開發、除錯、驗證、AB測試、釋出、監控平臺,與演算法同學共建一起打造了端上的特徵計算、樣本計算等基礎庫。
整體流程圖
我們構建了端智慧的五個基礎設施,透過端上排程系統,將整個端智慧技術體系串聯起來,總體來說分為使用者觸達和使用者感知部分。使用者觸達部分包括端上排程和端上決策,端上排程提供和業務的直接對接,端上決策由端上排程系統在合適的時候拉起本地演算法計算;使用者感知部分則對使用者特徵進行標準化端上使用者特徵,提供端側計算的資料輸入。
資料效果
從年初資訊流端智慧立項以來,我們經過最開始的小流量實驗,效果逐漸最佳化,大半年的不斷探索試錯,資訊流端智慧於9月中旬在首頁猜你喜歡場景全量。雙十一當天也取得了不錯的業務效果,對商品推薦的準確度提升,資訊流GMV和點選量都大幅提升。其實這只是資訊流在端智慧的開始,相信後面更深入的最佳化探索,我們將會取到更好的效果。
總結
從我們以往的經驗來看,端側做的更多的是將雲端內容以具體的形式呈現給使用者。當端側也具備了感知使用者意圖並智慧做出決策時,端側的能力就不再侷限於“呈現”,端側也可以”思考“。業務可以利用端側”思考“能力,將以往在雲端解決起來比較困難的問題放到端上去解決,如雲端決策實時性問題、大資料量上報雲端分析的資源消耗問題;可以結合端側本身的特性,如感測器、相機、UI呈現等,去思考如何去整合使用者特徵、資料、端側演算法去大膽嘗試找到新的突破口。