天天看點

讓機器幫你做決策!強化學習在智能互動搜尋的應用分享

小叽導讀:在時間就是金錢的時代,降低搜尋時間成本,迅速找到目标産品具有重要意義。如今的電商平台已不僅僅是一個擺放商品的貨架,“智能推薦”成為電商的一個重要功能。今天,我們來看看強化學習是如何幫助使用者與平台實作互動,讓使用者在商品的海洋中迅速找到心儀的“它”。

互動搜尋簡介

智能互動搜尋是一種新型的購物搜尋方式,使用者可以在搜尋中同時與系統進行互動,我們希望可以在與使用者的互動中提供幫助使用者決策的資訊。大緻包含以下幾種次元:

細化需求:使用者購物需求比較确定的情況下,系統會推薦有助于細化決策的次元,比如“耳機”的Query下,系統會讓使用者選擇“佩戴方式”,幫助使用者更快成交。

探索發現:解決逛和發現的需求,在發現使用者不是購買意圖下,推薦一些發散的Query。

知識問答:解決使用者之前通過第三方網站了解購物知識,然後來淘寶直接搜尋商品的問題;提供一些知識解釋;最終希望引導使用者在淘寶能流暢完成購前找買什麼,購買和購後分享的整個鍊路;

某使用者Session資料如下:

初始Query為“無鞋帶 男鞋”,Agent給使用者推薦了“顔色分類:紅色、白色、黑色、灰色”,

使用者選擇了“銷量排序”

使用者選擇了“黑色”,Agent給使用者推薦了一些發散性Query“發現:皮鞋男、闆鞋男、鞋子男、小白鞋男、布鞋男、帆布鞋男、休閑鞋男、豆豆鞋男、t恤男”

使用者“翻頁”

使用者選擇“小白鞋男”,Agent同時給使用者推薦了“鞋頭款式:尖頭、扁頭、圓頭”

使用者點了“尖頭”

使用者點了“圓頭”

...

産品形态如下圖:

讓機器幫你做決策!強化學習在智能互動搜尋的應用分享

問題定義&相關工作&模組化

問題定義

在目前問題中,我們希望可以讓使用者盡可能多的和系統互動。更多的互動意味着更多的pv,增加使用者的停留時間和粘度,pv增加也會提高廣告的收入。在智能語音互動方面,微軟提出了一個統計名額——CPS,即人類與人工智能“聊天機器人”的對話輪數。據微軟統計顯示,目前小冰的CPS是23左右,而Siri、Google Now 等以智能助手為目的開發的人工智能引擎,CPS往往都不超過3。本文我們也采用這個Matrics作為優化目标。

當然我們也可以把這個問題看做一個Task Oriented Dialog System,讓使用者以最少的互動次數完成購物,目前我們把目标設定為前者。

強化學習在互動搜尋場景的意義

強化學習work的場景必須有明确的delay reward,典型的有棋類遊戲中的放棄目前子來擷取全局的優勢,競技類遊戲比如dota2中英雄放棄補刀的金錢收益去選擇gank、打肉山,強化學習擅長模組化在序列決策中存在delay reward的問題,即放棄目前局部最優的決策來擷取更長期的收益。

互動搜尋系統對使用者的回報是典型的序列決策過程,有時需要放棄目前最高收益,在這個問題中,如果我們的優化目标是整體的CTR,比如在耳機的搜尋場景中,有兩個次元(品牌),(佩戴方式)可以在context下用于決策,用有監督的方法我們學到的是目前context下的最優選擇,為下圖Greedy的思路,這時我們學到的是“首次展示品牌”更好,而實際上,如果我們調換品牌,佩戴方式的出現順序,雖然我們首次決策不是目前狀态下最優的,但序列決策下的期望卻是最優的。

讓機器幫你做決策!強化學習在智能互動搜尋的應用分享

相對RL應用較成功的遊戲、棋類、機器控制領域,對話互動系統對“終止”的定義比較模糊,在閑聊機器人中可以定義為使用者退出,在互動搜尋裡使用者的意圖切換是否定義為終止就與任務相關,如果是希望使用者增加PV,我們可以整體互動的退出作為終止,如果希望在細化類目做進一步導購直到成交,終止則定義為退出或切換意圖。

讓機器幫你做決策!強化學習在智能互動搜尋的應用分享

強化學習在任務型對話的一般思路

DM經典的做法是把問題看成一個槽填充問題,在2007-2013,基本做法是定義好一個任務,并拆分為一系列的槽(slot),在對話互動過程中進行填充。而這種方法的最大問題在于:錯誤傳遞,上遊錯誤會傳遞到下遊導緻下遊直接錯誤,比如NLU或DST的某步驟出錯,會直接導緻DM輸出錯誤的Action,而且幾乎無法修正。而端到端的方法可以做到一定程度的糾錯,基本思路為首先監督方法訓練,然後用深度強化學習調參(樣本為真實使用者)。比較代表性的工作有是Bing Liu在17年nips的文章,結構如下,優化同時考慮的slot filling和action。

讓機器幫你做決策!強化學習在智能互動搜尋的應用分享

互動搜尋基于強化學習架構的模組化

我們用強化學習的架構來對互動搜尋場景模組化。其中智能體(agent)是我們的服務程序。環境(env)是使用者和平台的其他因素。具體地,使用者首先送出query,例如“手機”。agent選擇該類目的某個屬性,例如“品牌”。頁面展示“品牌”的具體取值,例如“華為”,“小米”等。使用者可能會選擇/取消某個屬性值,也可能直接翻頁,這些操作都會跳轉到下一個PV。agent與env不斷互動直至使用者退出會話,構成一個episode。

我們記t時刻env給出狀态,agent做出動作,env根據内生的動态,回報給agent獎勵并跳轉到狀态。強化學習旨在為agent搜尋最大化期望累積獎勵的政策。

在互動搜尋場景中,我們将狀态,動作,和獎勵定義為:

1、狀态設計:State的設計要考慮兩點,目前State足夠學到合适的Action,以及使用者與環境互動的過程State要有明顯變化去學Q函數,這裡我們考慮了以下幾個方面:

User State:包括使用者的性别、年齡、購買力。

User History、Agent History:類目、頁碼(使用者翻頁)、使用者點過的tag、Agent推薦過的tag。

Query State:DST後Norm Query做Embedding(取語義粒度分詞後embedding的均值,當然這裡也可以考慮用self-attention的方式考慮語義貢獻,但目前的資料量下我們沒有這麼做)作為目前的query state。

Tag靜态分:Query-Tag Score,User-Tag Score等。:包括使用者資訊(性别、年齡、購買力等)和會話資訊(類目、頁碼、query、使用者操作記錄等)。

2、動作:某個類目屬性,例如“品牌”, “褲型”, “材質”等。動作空間是所有合法的類目屬性。

3、獎勵:如果使用者沒有離開,否則。這樣設計是因為最大化累積獎勵等價于目前的業務目标,即盡可能增加互動輪數。

此問題的難點在于,所有類目屬性的個數約有200K,即動作空間的大小為200K(類目*次元),這勢必導緻搜尋空間過于龐大,難以求解最優政策。另一方面,每個商品類目平均有約15種屬性。這個動作空間的規模雖然可以接受,但是我們共有約1500種類目,如果分别訓練1500個agent,因為頭部類目與尾部類目所擁有的流量嚴重失衡,是以用機器學習的方法很難為尾部類目訓練得到性能可觀的agent。

我們注意到不同類目所擁有的屬性集合是有大量交集的,例如“連衣裙”和“褲子”都有“材質”這一屬性。同一屬性對于不同類目來說,意義往往是無差别的。例如”品牌“是重視品質,在乎品牌賦予同質化的商品的附加意義的使用者會傾向于選擇的屬性。基于此,我們通過共享模型參數(User History、Agent History、Action的embedding),聯合訓練(多任務)各類目的agent。具體模型如下,另外一次輸出這麼高次元的打分向量顯然是過度計算了,是以這裡我們根據類目對Action Space集合做了一個Mask,隻對目前類目下考慮的Action打分,對最後的的計算我們采用了對Action做打分:

讓機器幫你做決策!強化學習在智能互動搜尋的應用分享

系統

我們基于PAI TF,使用Ali AI Agent(簡稱A3gent)強化學習元件實作的DQN算法來求解最優政策。

我們的神經網絡的輸入層包含多路輸入,且不同通道的狀态分别有sparse/dense,定長/變長,資料的類型包括int, float, string多種類型。A3gent支援多路狀态輸入,每個通道的資料類型及形狀均可配置。

除了需要處理多路輸入,我們的神經網絡結構也較為複雜,包括embedding layer,fully connected layer, concatenation layer。另外,考慮到其中一路狀态是agent在目前episode推薦過的屬性集合且我們的動作空間正是屬性集合,我們讓output layer與embedding layer共享參數。即對于屬性P,它的embedding向量會作為該P對應的output neuron的參數:,其中h表示output layer的輸入。

由于不同類目的agent共享模型參數,是以每個類目的agent的政策不能平凡地做一次forward。由于狀态包含一個通道為類目的ID,記為c,我們首先根據c查詢類目到屬性清單的詞典,找到c所對應的合法屬性集合。再根據Q值大小貪婪選取動作:

A3gent元件中已經将上述邏輯通過計算圖表達,對于使用者不存在于普通forward的差別。

由于強化學習需要agent與env互動的過程中線上更新,且基于QP的服務程序無法實作模型的訓練,是以我們采用基于PAI TF的準實時訓練政策:

讓機器幫你做決策!強化學習在智能互動搜尋的應用分享

訓練

資料:

讓機器幫你做決策!強化學習在智能互動搜尋的應用分享

我們首先用曆史資料做預訓練,預訓練的結果基本可以學到線上的政策,作為模型的初始參數。baseline(top5的次元random,是以random的結果也不差)對比,從Query級别點選率來看DRL離線可以帶來1.9%的提升(後面我們也分析了,目前的Reward設定其實并不能顯著提升CTR),而基于統計ensemble的版本有6.8%的提升。同時分析了不同政策下對全局名額的影響,人均pv/uv降低0.5%,一個大Session内的平均互動次數增長0.16%。具體如下:

讓機器幫你做決策!強化學習在智能互動搜尋的應用分享

針對這個結果,我們認為DRL隻是在統計+random生成的樣本上做了一輪訓練,而DRL需要與環境進行互動,用目前政策(on-policy)去産生訓練資料,目前基于統計ensemble的版本用到了大量主搜資料,是以效果會比較好。基于目前的分析,我們嘗試了準實時訓練,資料生成部分我們做到實時解析,在porsche産生實時資料(pvlog),目前拼一個完整的EPISODE給模型訓練,需要拿到使用者退出的操作,而我們的資料量較小,需要三小時才能産出足夠的樣本,是以為了快速驗證效果,這一步目前我們是通過小時級離線解析,然後用PAI去訓練模型。我們也開發了一個實時Matrics,實時監控小時級别的CTR和小時級别的平均CPS(平均互動次數)。

線上部署

DII(一個算法線上服務平台)在更新到0.33版本後内置了Tensorflow模型預測功能,我們測試性能是可以滿足需求的。在模型更新部分,DII服務會在掃到模型檔案切換index後重新加載模型,目前唯一的缺點是,沒法做到實時,實測1.4G的模型檔案從産出、build、切換索引到生效大約需要半小時。我們的場景中,目前流量下,Replay Buffer積累資料也需要小時級,是以這部分暫時是可接受的。

ps:目前想實時生效隻能通過寫DII增量,在DII的process裡自己實作Inference,考慮到我們的更新頻率、以及模型切換後的開發成本,我們暫時沒有這麼做。目前是采用定時排程的形式實作的。

讓機器幫你做決策!強化學習在智能互動搜尋的應用分享

結果

評價方式

RL在離線的評價一直是一個問題,因為傳統的AUC都是基于目前context下有監督的最優,一般評價的方式有:

模拟器:根據真實資料産生一個Env的模拟器,可以與訓練的Agent進行互動,用平均Reward評價。這對打遊戲十分有效,比如gym裡的各種環境。在淘寶中也有很多模拟器的項目,我們下一步也會考慮通過模拟器的方式快速疊代算法,比如對話系統模拟器。

人工測試:采用人工的方式與系統進行互動,統計平均Reward,這種方式人工回報的量是比較有限的。

線上測試:直接與真實環境進行互動,然後統計随時間變化的平均Reward,這種測試方式需要真實環境有大量互動行為,我們也采用了這種評價方式。

線上效果

訓練後的CPS相對ensamble的版本有明顯提升。在新的互動系統中,使用者平均互動次數提升了1.5次,提升30%+。

Tag的CTR并沒有明顯提升,這裡我們也分析了原因,目前的Reward設定其實不一定展示給使用者的是點選率最高的,比如我們可能會出一個不是目前context下點選率最高的Tag,但這個Tag點選後的商品對使用者滿意度最高,使用者會更多浏覽,這也會增加與系統的互動次數。

總結與展望

基于強化學習的Task-oriented Dialogue System已經在客服領域、醫療診斷等領域取得了巨大成功,前者可以節省大量人力成本,幫助使用者快速完成任務,後者則有望基于有經驗的醫療診斷資料,解決醫療資源不均的問題。

在商品導購領域,消費者完成一筆訂單,使用者通常會經過與銷售客服交流,自己查資料,到決定購物的決策過程,在淘寶海量購物資料中,我們希望可以挖掘出“購物老司機”的購物路徑,并且在合适的時機給使用者“有決策價值的解釋”,給消費者更好的導購體驗。本任務中,Action Space極大,相對于傳統的Task-Oriented Dialogue訂機票、訂餐、醫療的任務,我們的Action Space包括确定目前的系統動作,如:商品屬性的選擇、内容解釋等,确認了動作後還要對具體動作的值進行排序,如果候選空間有m個動作,有n個是需要排序展示的,那麼動作空間會是維。這個量級的Action空間,對于學術界和工業界都是巨大的挑戰,我們目前隻是做了其中的一層,動作空間有百萬維。

本問題是一個典型的多層決策問題,是否可以設計更好的HRL方式,更全局的考慮全局的收益?此外如何在有限的樣本中做資訊共享?如何在真實線上環境中做高效率的探索?如何夠早一個合理的“experience replay”使online learning更“穩定、快速、有效”都是接下來要研究的問題?

原文釋出時間為:2018-11-20

本文作者:肖非、王桢

本文來自雲栖社群合作夥伴“

阿裡技術

”,了解相關資訊可以關注“

”。

繼續閱讀