一、推薦業務簡介
首先介紹一下阿里健康的業務背景和對現狀的分析。
1、推薦場景展示
可解釋性推薦,舉例而言,如下圖中當當網“根據您瀏覽的商品推薦”(告訴用戶推薦的理由)及淘寶網“1000+居家控收藏”、“2000+數碼達人加購”均屬于可解釋性推薦,通過提供用戶信息來說明推薦商品的原因。
?左圖中的可解釋推薦,有一種較為簡單的實現思路:推薦主要包含召回和排序兩大主要模塊,且召回往往涉及到多路召回,用戶行為召回也是常見的一種召回方式。可對經過排序模塊后的商品進行判定,若商品來源于用戶行為召回池,則可在推薦的商品后添加相應的推薦注釋。但該方法往往準確率精度不高,并未給用戶提供較多有效信息。
相比而言,右圖示例中可由對應的解釋性文字提供給用戶更多的信息,如產品類別信息等,但該方法往往需要較多的人工干預,在特征到文本輸出環節進行人工處理。
而對于阿里健康,由于行業的特殊性,相比于其它場景,可能存在更多的限制。相關條例規定“三品一械”(藥品、保健食品、特殊醫藥用途配方食品和醫療器械)廣告中不允許出現“熱銷、排序、推薦”等文本信息。因此阿里健康需在遵從上述條例的前提下,結合阿里健康的業務對產品進行推薦。?
2、阿里健康的業務情況
阿里健康現有阿里健康自營店鋪和阿里健康行業店鋪兩類店鋪。其中自營店鋪主要含有大藥房、海外店和醫藥旗艦店,而阿里健康行業店鋪主要涉及到各品類旗艦店及私營店鋪。
就產品而言,阿里健康主要涵蓋常規商品、OTC 商品、處方藥三大類產品。常規商品,即定義為不是藥品的商品,對于常規商品的推薦,可展示較多信息,如品類銷量 top,超過 n+人收藏/購買等信息。而對于 OTC 及處方藥這類藥品商品的推薦,則受到相應條例的約束,需更加結合用戶關注點進行推薦,如功能主治、用藥周期、使用禁忌等信息。
上述提到的可用于藥品推薦文字的信息主要有以下幾大來源:
- 商品評論(不含處方藥)。
- 商品詳情頁。
- 說明書等信息。
二、基礎數據準備
第二部分主要介紹商品的特征是如何提取及編碼的。
1、商品的特征抽取
下面以藿香正氣水為例,展示如何從上述數據源進行關鍵特征的提取:
- 標題
商家為增大產品的召回,往往會在標題中加入較多的關鍵詞,因此可通過商家自帶的標題描述進行關鍵詞的抽取。
- 產品詳情圖
?可借用 OCR 技術基于商品的詳情圖中提取到商品的功能主治、核心賣點等更為全面的商品信息。
- 用戶評論數據
通過用戶基于某功能情感的得分,可對商品的對應關鍵詞進行加權減權操作。如對于“防中暑”的藿香正氣水而言,可通過用戶評論中“防中暑”情感的打分,對其相應的標簽進行對應的權重處理。
- 藥品說明書
通過上述多種數據來源,可抽取出信息中的關鍵詞并構建關鍵詞庫。由于抽取出來的關鍵詞存在較多重復、同義的情況,需對同義詞進行合并,并結合人工校驗,生成標準詞庫。最終可形成單個商品-標簽列表的關系,可用于后續編碼及在模型中的使用。
2、特征編碼
下面介紹如何對特征進行編碼。特征編碼主要基于 word2vec 的方式進行 word embedding。
真實的歷史購買商品對數據可分為下述三大類:
(1)共同瀏覽商品對:用戶在一段時間(30 min)內依次點擊的用戶定義為共同瀏覽數據。
(2)共同購買商品對:共同購買廣義而言,可定義為同一主訂單下子訂單間互夠為共同購買商品對;但考慮到實際用戶下單習慣,定義一定時間(10 min)內同一用戶的下單產品數據。
(3)瀏覽后購買商品對:同一用戶在點擊 A 后又購買了 B 產品,A 與 B 互為瀏覽后購買數據。
通過對歷史數據進行分析,發現瀏覽后購買數據對商品間相似度較高:往往藥品核心功能相似,僅存在輕微不同,可將其定義為相似產品對,即為正樣本。
?特征編碼模型仍基于 word2vec 的思想:主要是希望具有相似的產品/標簽間 embedding 更加接近。因此 word embedding 中正樣本定義為上述提到的瀏覽后購買商品對;負樣本則為共同瀏覽商品對和共同購買商品對的并集減去瀏覽后購買的商品對數據。
基于上述正負樣本對的定義,利用 hinge loss,可以學習每個商品的 embedding 用于 i2i 召回階段,也可同本場景中學習出標簽/關鍵詞的 embedding,用作后續模型的輸入。?
上述方法有兩個優點:
?(1)特征僅用到產品特性,能在一定程度上解決冷啟動問題:對于新上架的商品,仍可通過其標題、商品詳情圖等信息獲取相應標簽。
(2)正、負樣本的定義可用于不同的推薦場景:如若將正樣本定義為共同購買產品對,則訓練出來的商品 embedding 可用于“搭配購買推薦”場景。?
三、可解釋推薦模型
1、可解釋模型背景介紹
?業界現有較為成熟的可解釋類型主要包含內置可解釋性( model-intrinsic )和模型無關可解釋性( model-agnostic )兩大類。
其中內置可解釋性模型,如常見的 XGBoost 等,但 XGBoost 雖為端到端模型,但其特征重要度是基于整體數據集而言,不符合“千人千面”的個性化推薦要求。
而模型無關可解釋性主要是指重建邏輯模擬模型,并對模型進行解釋,如 SHAP,其可對單個 case 進行分析,可判定出預測值與實際值不同的原因。但 SHAP 復雜度較高,較為耗時,經過性能改造后無法滿足線上性能需求。
因此需構建一個端到端,且能對每個樣本進行特征重要度輸出的模型。?
而高斯混合分布是多個高斯分布的組合,可輸出某個分布的結果值及每個樣本結果屬于某個分布的概率。因此可進行類比,將歸類后的特征理解為具有不同的分布的數據,分別對對應特征的預測結果 及該預測在實際結果中的重要程度 進行建模。
2、模型結構圖
下圖為整體的模型結構圖,左圖為選擇模型,可用作特征重要度的展示,右圖為特征對應的預測模型。
具體而言,預測模型用于預測對應特征預測/點擊的概率,而選擇模型則用于說明哪些特征分布是比較重要、可用于作為解釋性文字的展示。
3、預測模型
下圖為預測模型的結果圖,預測模型主要借鑒了 DeepFM 的思想,包含一個深度模型和交叉模型。深度模型主要用于學習特征的深層表達,而交叉模型則用于學習交叉特征。
?深度模型中,先提前對特征進行分組(假設共有 N 組),如對價格、類別等相關的特征合并為價格、類別大類(圖中 field 字段),并對每一組特征進行單獨的模型訓練,并得到基于該組特征的模型結果。
對模型提前進行合并分組,具有下述兩個優點:
(1)通過 N 個模型的獨立訓練,可通過輸入特征的增減改變模型的復雜度,從而影響線上性能。
(2)對特征的合并分組可明顯減少特征量級,從而使人工將特征域轉化為文字時更加方便。
值得一提的是,attention 層理論上也可用于特征重要度的分析,但在本模型中未引入attention 的原因主要如下:
(1)若將 attention layer 放在太靠前位置則無法體現出特征深層表達的結果;
(2)若將 attention layer 放在較為靠后的位置,則無法回溯、無法找出核心特征。
而對于預測模型:?
?其交叉層并未沿用 FM 模型而是采用 CNN 代替 DeepFM 中 FM 結構。FM 模型學習特征兩兩交叉結果,并通過數學公式直接計算兩兩交叉結果,避免計算時的維度爆炸,但其導致無法回溯特征重要度,因此在交叉模型中引入 CNN 替代原有結構:采用 N 個特征進行相乘以實現特征交叉,再進行 CNN 的相應操作。這樣使得特征值在輸入后經過 pooling,concat 等操作后,仍可回溯。
除上述優點外,該方法還有一個優點:雖然現有版本僅是單個特征到單個描述文字的轉化,但仍希望未來能實現多特征交互的轉化。舉例而言,如果某用戶習慣購買100元低價產品,但若有原價50,000元商品打折至500出售,而用戶購買了該商品,模型可能因此將其定義為高消費用戶。但實際中,可能是因為高端品牌+高折扣雙重因素導致的用戶下單,因此需考慮組合邏輯。而對于 CNN-FM 模型而言,后期可直接利用 feature map 進行特征組合的輸出。?
4、選擇模型
?選擇模型由 MLP 和 sparseMax 組成。值得一提的是,選擇模型中激活函數采用的是 sparsemax 而不是更為常見的的 softmax。圖像右邊依次是 sparsemax 的函數定義及 softmax 與 sparsemax 的函數對比圖。
從右下的圖中可看出,softmax 對重要度較低的輸出節點仍會賦予較小值,在該場景下會導致特征維度爆炸,且容易造成重要特征與不重要特征間的輸出沒有區分度。而 sparseMax 可以將輸出離散化,最終僅輸出較為重要的特征。?
四、實驗效果展示
1、實驗數據說明
線上效果數據主要來自于大藥房首頁曝光-點擊數據,為避免過擬合,也引入了部分其他場景曝光-點擊數據,數據比例為 4:1。
2、離線指標
在離線場景下,該模型 AUC 為0.74。
3、線上指標
由于線上場景已有 CTR 模型,考慮新版算法除更換模型外,還會展示對應的解釋性文字,未控制變量,因此本次實驗并未直接采用 AB test。而是當且僅當線上 CTR 模型及新版算法預測值均高于特定閾值時,才會展示推薦理由的文本。上線后,新版算法 PCTR 提升 9.13%,UCTR 提升 3.4%。
五、問答環節
Q1:生成標準詞庫、同義詞合并采用什么模型?效果如何?還需要多少人工校準工作?
A1:同義詞合并時會利用模型學習文本標準,并提供出基礎詞庫。但實際上人工校驗的比重較大。因為健康/藥品的業務場景,對算法準確度的要求較高,可能個別字的偏差會造成實際意義的較大偏離。整體而言人工校驗的比重會比算法大。
Q2:LIME 模型可以用作推薦模型的解釋嗎?
A2:可以。還有很多其他模型可以做可解釋推薦。因為分享者對 GMM 整體熟悉度高,所以選擇上述模型。
Q3:選擇模型和預測模型怎么聯動的?
A3:假設有 N 組特征組,預測模型、選擇模型均會會生成 1*N 維的向量,最終將預測模型和選擇模型的結果進行相乘(multiple),實現聯動。
Q4:可解釋文本如何生成?
A4:目前還沒有合適的機器學習模型進行文本生成,主要還是采用基于人工的方式。如價格是用戶關心的核心特征,則會選擇對歷史數據進行分析,推薦出性價比較高的產品。但目前而言,主要還是人工操作。希望未來能有合適的模型進行文本生成,但考慮到業務場景的特殊性,模型生成的文本仍需要人工進行校驗。
Q5:模型的篩選邏輯?
A5:對于 GMM 中子分布的選擇,主要通過 GMM 中 Mk 對分布進行學習,并基于 Mk 的高低值進行篩選。
Q6:詞庫的標注有屬性類型嗎?
A6:對加屬性詞,如對產品描述中的疾病、功能、使用禁忌等進行達標。
Q7:可解釋文本可否使用槽位填充的思想?即準備不同模板,根據詞語的權重選擇不同模板?
A7:可以,現在的實際用法即為槽位填充。
今天的分享就到這里,謝謝大家。