序列特徵的處理方法之一:基於注意力機制方法

前言

之前兩篇講過稠密特徵多值類別特徵加入CTR預估模型的常用處理方法,這篇介紹一下針對序列特徵採用的最基本的注意力機制方法。

我們都知道用戶在使用APP或網站的時候,用戶會產生一些針對物品的行爲,比如點擊感興趣的物品,收藏或購買物品等,而這些行爲往往代表着用戶對這些物品是感興趣的,而將這些交互過的物品放在時間軸來看,就形成了用戶感興趣的物品序列,如下圖所示:

                           

那麼如何利用這些用戶感興趣的物品序列來提取到用戶的興趣特徵呢?從另一個層面上講也就是怎樣在這些用戶感興趣的物品序列當中提煉出一些共有的屬性,而這些屬性就能反映出用戶當時的興趣。

方法

(1)分析數據對象

我們要處理的數據對象是用戶感興趣的物品序列,而在用戶感興趣的物品序列中有兩方面的信息可以提取,一方面是物品本身的特徵信息,另一方面是物品的序列特徵信息。可以理解爲比如有同樣的三個物品,不同的順序排列代表着他們的序列特徵信息不同,但是物品本身的特徵信息相同。

(2)模型方法

如圖 1 所示,舉一個最基本的採用MLP模型的方法來實現的在推薦系統中的排序模型,在這個具體任務中模型的輸入是用戶的最近 N-1 次行爲的數據,包括物品序列和物品本身的特徵,模型的輸出是一個固定長度的特徵向量,用來表示用戶的興趣。因此可以通過計算用戶的興趣特徵與候選物品特徵的相似性來得到對每個候選物品的打分,從而進行對物品的排序。同樣的,在訓練階段如果知道用戶下一個交互的物品,可以採用二分類問題進行損失計算從而對網絡進行訓練。

                                       

                                                        ▲ 圖1. 採用attention pooling的MLP排序模型

從圖中可以看出,在對物品序列和物品特徵序列處理的時候,不是直接採用sum/max/mean pooling進行融合,而是對每個物品和每個物品特徵分別進行了加權融合。因爲考慮到這樣一種情況,比如當前用戶要書,那麼在用戶的歷史購買行爲中,我們應該去多關注該用戶之前都買什麼樣的書,而該用戶在其他方面的購買記錄就相對顯得沒有那麼重要。因此基於此想法,權重的計算就是根據當前物品和歷史物品序列中每個物品的相似度得到。具體做法是對當前物品的embedding和歷史物品序列中每個物品embedding進行點乘,然後再對這些得到的結果進行softmax歸一化,得到的結果即爲對應每個物品的權重,同理物品特徵的權重計算也一樣。

上面的介紹中提到了兩次相似度計算,一次是計算用戶興趣特徵與物品特徵的相似度,一次是計算當前物品和歷史物品序列中每個物品的相似度,因此在這對相似性的計算方式總結一下,拿第一次爲例,其中用戶興趣特徵表示爲 U ,物品特徵表示爲 I

  • inner product :U\odot I
  • bi-linear product : \left( UW \right)\odot I
  • consine similarity :U \odot I / \left( \left| U \right| \left| I \right| \right)
  • fully-connected layer : \left[ U,I \right]W+b

總結

在對序列特徵處理的時候,最簡單最便捷的方法是直接對序列進行sum/max/mean pooling操作,而相對複雜有效一些的就是採用注意力機制,對序列進行加權融合,除此之外,還有一些其他有效的方法,比如採用TextCNN,還有RNN以及transformer等,後面有時間一一進行介紹,感興趣的可以關注一下公衆號~

參考文獻

[1] Deep learning sequential recommendation systems

                                                        

                                      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章