讓天下沒有難用的搜尋:阿里搜尋如何成長為貼心“暖男”?
阿里搜尋技術體系演進至今天,基本形成了由 offline 、 nearline 、 online 三層體系,分工協作,保證電商平臺上,既能適應日常平穩流量下穩定有效的個性化搜尋及推薦,也能夠去滿足電商平臺對促銷活動的技術支援,實現在短時高併發流量下的平臺收益最大化。
可以看到,十年雙 11 的考驗後,搜尋智慧化體系逐漸打造成型,已經成為電商平臺穩定健康發展的核動力,主要分為四個階段: 自主研發的流式計算引擎 Pora 初露鋒芒;雙鏈路實時體系大放異彩; “ 深度學習 + 強化學習 ” 初步探路;全面進入深度學習時代。 下面我們就來一起看一下。
四大演進階段:業務、演算法、系統同步發展
階段一:初露鋒芒 —— 自主研發的流式計算引擎 Pora
技術的演進是伴隨解決實際業務問題和痛點發展和進化的。 2014 年雙 11 ,通過 BI 團隊針對往年雙 11 的資料分析,發現即將售罄的商品仍然獲得了大量流量,剩餘庫存無法支撐短時間內的大使用者量。主售款(熱銷 sku )賣完的商品獲得了流量,使用者無法買到商品熱銷的 sku ,轉化率低;與之相對,一些在雙 11 當天才突然展露出來的熱銷商品卻因為歷史成交一般沒有得到足夠的流量。
針對以上問題,通過搜尋技術團隊自主研發的流式計算引擎 Pora ,收集預熱期和雙 11 當天全網使用者的所有點選、加購、成交行為日誌,按商品維度累計相關行為數量,並實時關聯查詢商品庫存資訊,提供給演算法外掛進行實時售罄率和實時轉化率的計算分析,並將計算結果實時更新同步給搜尋和推薦引擎,影響排序結果。第一次在雙 11 大促場景下實現了大規模的實時計算。演算法效果上,也第一次讓大家感受到了實時計算的威力, PC 端和移動端金額也得到顯著提升。
階段二:大放異彩 —— 雙鏈路實時體系
2014 年雙 11 ,實時技術在大促場景上,實現了商品和使用者的特徵實時,表現不俗。
2015 年搜尋技術和演算法團隊繼續推動線上計算的技術升級,基本確立了構築基於實時計算體系的【線上學習 + 決策】搜尋智慧化的演進路線。
早先的搜尋學習能力,是基於批處理的離線機器學習。在每次迭代計算過程中,需要把全部的訓練資料載入到記憶體中計算。雖然有分散式大規模的機器學習平臺,在某種程度上批處理方法對訓練樣本的數量還是有限制的。線上學習不需要快取所有資料,以流式的處理方式可以處理任意數量的樣本,做到資料的實時消費。
接下來,我們要明確兩個問題:為什麼需要線上學習呢?以及為什麼實現秒級的模型更新?
在批量學習中,一般會假設樣本獨立服從一個未知的分佈,但如果分佈變化,模型效果會明顯降低。而在實際業務中,很多情況下,一個模型生效後,樣本的分佈會發生大幅變化,因此學到的模型並不能很好地匹配線上資料。實時模型,能通過不斷地擬合最近的線上資料,解決這一問題,因此效果會較離線模型有較大提升。那麼為什麼實現秒級分鐘級的模型更新?在雙 11 這種成交爆發力強、變化劇烈的場景,秒級實時模型相比小時級實時模型時效性的優勢會更加明顯。 根據 2015 年雙 11 實時成交額情況,前面 1 小時已經完成了大概總成交的 1/3 ,小時模型就無法很好地捕獲這段時間裡面的變化。
基於此,搜尋技術團隊基於 Pora 開發了基於 parameter server 的線上學習框架,如下圖所示,實現了線上訓練,開發了基於 pointwise 的實時轉化率預估模型,以及基於 pairwise 的線上矩陣分解模型。並通過 swift 輸送模型到引擎,結合實時特徵,實現了特徵和模型雙實時的預測能力。
線上學習框架
但是,無論是離線訓練還是線上學習,核心能力是儘可能提高針對單一問題的演算法方案的準確度,卻忽視了人機互動的時間性和系統性,從而很難對變幻莫測的使用者行為以及瞬息萬變的外部環境進行完整的建模。典型問題是在個性化搜尋系統中容易出現反覆給消費者展現已經看過的商品。
如何避免系統過度個性化,通過高效的探索來增加結果的豐富性?我們開始探索機器智慧技術的另一方向 —— 強化學習,運用強化學習技術來實現決策引擎。我們可以把系統和使用者的互動過程當成是在時間維度上的【 state , action , reward 】序列,決策引擎的目標就是最優化這個過程。
線上決策方面,我們首次嘗試了運用 MAB 和 zero-order 優化技術實現多個排序因子的最優融合策略,取代以前依靠離線 Learningto rank 學到的排序融合引數。其結果是顯著的,在雙 11 當天我們也觀察到,通過實時策略尋優,一天中不同時間段的最優策略是不同的,這相比全天使用離線學習得到的一套固定排序權重是一個大的進步。
2015 年雙 11 雙鏈路實時計算體系如下圖所示:
2015 年雙 11 的實時計算體系
階段三:初步探路 ——“ 深度學習 + 強化學習 ”
2015 年雙 11 ,線上學習被證明效果顯著,然而回顧當天觀察到的實時效果,也暴露出一些問題。
● 問題一:線上學習模型方面,該模型過度依賴從 0 點開始的累積統計訊號,導致後場大部分熱銷商品都無法在累積統計訊號得到有效的差異化表示,模型缺少針對資料的自適應能力。
● 問題二:線上決策方面。 2015 年雙 11 ,巨集觀實時體系中的 MAB( Multi-ArmedBandit) 實時策略尋優發揮了重要作用,通過演算法工程師豐富經驗制定的離散排序策略集合, MAB 能在雙 11 當天實時選擇出最優策略進行投放;然而,同時暴露出 MAB 基於離散策略空間尋優的一些問題,離散策略空間仍然是拍腦袋的智慧。同時為了保證 MAB 策略尋優的統計穩定性,幾十分鐘的迭代週期仍然無法匹配雙 11 當天流量變化的脈搏。
針對第一個問題,我們在 2016 年雙 11 中也進行了優化和改進。對於從 0 點的累積統計訊號到後場飽和以及統計值離散化缺少合理的抓手的問題,我們參考 Facebook 在 AD-KDD 的工作,在此基礎上,結合線上學習,我們研發了 Streaming FTRL stacking on DeltaGBDT 模型,如下圖所示。
Streaming FTRL stacking on DeltaGBDT 模型
分時段 GBDT 模型會持續為實時樣本產出其在雙 11 當天不同時段的有效特徵,並由 onlineFTRL 去學習這些時效性特徵的相關性。
對於線上決策方面的問題,我們進行了策略空間的最優化探索,分別嘗試了引入 delay reward 的強化學習技術,即在搜尋中採用強化學習( ReinforcementLearning )方法對商品排序進行實時調控優化。我們把搜尋引擎看作智慧體( Agent )、把使用者看做環境( Environment ),則商品的搜尋問題可以被視為典型的順序決策問題( Sequential Decision-making Problem )。我們的目標就是要實現用平臺長期累積收益的最大化。
系統方面, 2016 年雙 11 我們的實時計算引擎從 istream 時代平穩升級到到 Blink/Flink 時代,實現 24 小時不間斷無延遲運轉,機器學習任務從幾個擴大到上百個 job 。為演算法實現大規模線上深度學習和強化學習等前沿技術打下了堅實的基礎。
階段四:全面進入 —— 深度學習時代
由於線上深度學習需要強大的計算資源來支援, 2017 年系統上我們重構了流式計算平臺、機器學習平臺和支援 CPU/GPU 的異構線上服務平臺,能夠支援更大規模的流式資料計算,超大規模深度模型線上學習和線上預估。
依託強大的計算能力,實現了深度學習在搜尋的全面落地,包括語義搜尋,深度使用者興趣感知,商品多模表示學習,線上深度機制模型,多場景協同智慧決等技術創新:
a) 深度使用者感知模型:搜尋或推薦中個性化的重點是使用者的理解與表達,基於淘寶的使用者畫像靜態特徵和使用者行為動態特徵,我們提出基於 multi-modals learning 、 multi-task representation learning 以及 LSTM 的相關技術,從海量使用者行為日誌中直接學習使用者的通用表達,該學習方法善於 “ 總結經驗 ” 、 “ 觸類旁通 ” ,使得到的使用者表達更基礎且更全面,能夠直接用於使用者行為識別、偏好預估、個性化召回、個性化排序等任務,在搜尋、推薦和廣告等個性化業務中有廣泛的應用場景。(相關成果的論文已被 KDD 2018 錄用)
b) 大規模商品多模表示學習:淘寶商品有文字、影象、標籤、 id 、品牌、類目、店鋪,統計特徵等多模態資訊,這些特徵彼此有一定程度的冗餘和互補,我們利用多模學習將多維度特徵融合在一起學習一個統一的商品向量,並通過 attention 機制實現不同特徵維度在不同場景下的差異,比如女裝下圖片特徵比較重要, 3C 下價格,銷量比較重要等。
c)線上深度機制模型:由於不同使用者和不同場景的優化目標不一樣,我們把使用者狀態,場景相關特徵加入到了機制模型中,實現了千人千面的排序機制模型。同時由於各種基礎實時日誌的qps和延遲都不太一樣,為了保證線上學習的穩定性,我們構建了實時樣本pool來維護一個穩定的樣本集合供線上學習使用。
d) 全域性排序:傳統的排序模型只對單個文件打分,然後按照分數從高到底排序。這樣方法無法考慮到商品之間相互的影響;傳統的針對單個商品 ctr 、 cvr 都基於這樣一個假設:商品的 ctr 、 cvr 不會受到同時展示出來的其他商品 ( 我們稱為展示 context) 的影響。而實際上一個商品的展示 context 可以影響到使用者的點選或者購買決策:假如同一個商品周邊的商品都和它比較類似,而且價格都比它便宜,那麼使用者買它的概率不會高;反之如果周邊差不多的商品都比它貴,那麼使用者買它的概率就會大增。而全域性排序就要解決這個問題,考慮商品之間的相互影響,實現整頁效率的最大化。(相關成果的論文已被 IJCAI2018 錄用)
e) 多場景協同智慧決策:搜尋多個不同的產品都是依託個性化來實現 GMV 最大化,導致的問題是不同產品的搜尋結果趨同。而導致這個問題的根本原因是不同場景的演算法各自為戰,缺乏合作和關聯。今年做的一個重要工作是利用多智慧體協同學習技術,實現了搜尋多個異構場景間的環境感知、場景通訊、單獨決策和聯合學習,實現聯合收益最大化,而不是此消彼長(相關成果的論文已被 www 2018 錄用)。
驅動搜尋智慧化體系的演進的三點
我們再回過頭來看,是什麼驅動了搜尋智慧化體系的演進?
目前,各大網際網路公司的主流技術路線主要是運用機器學習技術來提升搜尋 / 推薦平臺的流量投放效率,隨著計算力和資料的規模增長,大家都在持續地優化和深入。是什麼驅動我們推動搜尋的智慧化體系從離線建模、線上預測向線上學習和實時決策方向演進呢?概括來說,主要有以下三點。
首先,眾所周知,淘寶搜尋具有很強的動態性,寶貝的迴圈擱置,新賣家加入,賣家新商品的推出,價格的調整,標題的更新,舊商品的下架,換季商品的促銷,寶貝圖片的更新,銷量的變化,賣家等級的提升等等,都需要搜尋引擎在第一時間捕捉到這些變化,並在最終的排序環節,把這些變化及時地融入匹配和排序,帶來結果的動態調整。
其次,從 2013 年起,淘寶搜尋就進入千人千面的個性化時代,搜尋框背後的查詢邏輯,已經從基於原始 Query 演變為【 Query+ 使用者上下文 + 地域 + 時間】,搜尋不僅僅是一個簡單根據輸入而返回內容的不聰明的 “ 機器 ” ,而是一個能夠自動理解、甚至提前猜測使用者意圖(比如使用者瀏覽了一些女士牛仔褲商品,然後進入搜尋輸入查詢詞 “ 襯衫 ” ,系統分析使用者當前的意圖是找女性相關的商品,所以會展現更多的女士襯衫,而不是男生襯衫),並能將這種意圖準確地體現在返回結果中的聰明系統,這個系統在面對不同的使用者輸入相同的查詢詞時,能夠根據使用者的差異,展現使用者最希望看到的結果。變化是時刻發生的,商品在變化,使用者個體在變化,群體、環境在變化。在搜尋的個性化體系中合理地捕捉變化,正是實時個性化要去解決的課題。
最後,電商平臺也完成了從 PC 時代到移動時代的轉變,隨著移動時代的到來,人機互動的便捷、碎片化使用的普遍性、業務切換的序列化,要求我們的系統能夠對變化莫測的使用者行為以及瞬息萬變的外部環境進行完整的建模。基於監督學習時代的搜尋和推薦,缺少有效的探索能力,系統傾向於給消費者推送曾經發生過行為的商品或店鋪。
真正的智慧化搜尋和推薦,需要作為投放引擎的 agent 有決策能力,這個決策不是基於單一節點的直接收益來確定,而是當作一個人機互動的過程,消費者與平臺的互動看成是一個馬爾可夫決策過程,運用強化學習框架,建立一個消費者與系統互動的迴路系統,而系統的決策是建立在最大化過程收益基礎上。
未來展望 —— 讓淘寶搜尋擁有智慧化的體驗
經過這麼十年雙 11 大促的技術錘鍊後,圍繞線上 AI 技術的智慧框架初具規模,基本形成了線上學習加智慧決策的智慧搜尋系統,為電商平臺實現消費者、賣家、平臺三方利益最大化奠定了堅實的基礎。這套具備學習加決策能力的智慧系統也讓搜尋從一個簡單的找商品的機器,慢慢變成一個會學習會成長,懂使用者,體貼使用者的 “ 人 ” 。
但在這個過程中,搜尋排序學習到的知識更多都是通過已有的商品標籤資料和使用者行為資料來獲取的,還缺少對商品和使用者更深層次的認知,還無法完全理解使用者的多元意圖表達的真實需求。
比如,使用者搜尋了 “ 性感連衣裙 ” ,可能是想找 “ 去參加晚場 party 的低胸晚裝裙 ” ,也可能是想找 “ 去海邊度假的露肩沙灘裙 ” ;使用者收藏了 “ 登山鞋 ” 和 “ 柺杖 ” ,可能有 “ 登山裝備 ” 的需求,需要發現更多的和登山裝備相關的其它品類商品。一個有孩子的爸爸,在暑假剛開始時,挑選 “ 轉換接頭 ” ,檢視 “ 大英博物館門票 ” ,可能是想帶著家人一起 “ 暑期英國親子游 ” ,需要發現更多相關的其它品類商品。
究其原因,目前機器智慧技術特別是以深度學習為代表的模型,在現實應用中快速發展,最主要受益於海量大資料以及大規模計算能力,通過對物理世界的數字化抽象和程式化學習,使得機器智慧具備很強的限定知識的獲取能力,而很難獲得資料之外的知識,就更不用說知識的類比、遷移和推理了。
而機器的認知智慧,比如自主學習和發現,甚至創造能力才是人工智慧的更高境界。當然通用的機器智慧還有很多工作要做,在這個過程中,怎麼樣首先結合人類知識和機器智慧做到初步的認知智慧,讓淘寶搜尋擁有智慧化的體驗是未來值得探索的方向。
原文釋出時間為:2018-11-16
本文作者:元涵