阿里的CTR預測(二):Deep Interest Evolution Network
這篇文章釋出於2018年9月,是之前的DIN的改進版。我們在阿里的CTR預測(一):Deep Interest Network中提到過,他們嘗試使用LSTM來學習序列化資料的特徵,但是對DIN的結果沒有改善。DIEN在這一點上做了改善。
Deep Interest Evolution Network(DIEN)
我們略去背景介紹,尤其是Base Model的部分,如果大家想看的話,可以去前一篇文章中找。現在我們直接介紹DIEN的結構。DIEN最大的特點是不但要找到使用者的interest,還要抓住使用者interest的進化過程。作者們將GRU融合到網路中,從而抓出變化的sequence。關於GRU的介紹有興趣的話不妨看看這篇
可以看到,DIEN仍然存在Embedding Layer,並且Embedding的方法也和之前一致。其他User profile, target AD和context feature的處理方式兩者都是一致的,只是把user behavior組織成了序列資料的形式,並把簡單的使用外積完成的activation unit變成了一個attention-based GRU網路。
Interest Extractor Layer
現在我們具體來說Interest Extractor Layer,也就是GRU單元在的那個layer。顧名思義,這個Layer的主要目標是從embedding資料中提取出interest來。但一個使用者在某一時間的interest不僅與當前的behavior有關,也與之前的behavior相關,所以作者們使用GRU單元來提取interest。
這是一個GRU單元的表示式,其中代表一個t時刻behaviour的embedding,是sigmoid函式,代表element-by-element乘法。
他們在這一步還引入了一個,用來輔助進行Interest Extractor。因為普通的只能從embedding中提取資訊,提取的卻不一定是interest。最後的action只由final interest決定,要保留中間狀態的interest需要其他的激勵。通過引入如下
並將最終的模型目標設為,可以讓GRU在中間狀態提取出interest資訊。
Interest Evolution Layer
以使用者對衣服的interest為例,隨著季節和時尚風潮的不斷變化,使用者的interest也會不斷變化。
- 追蹤使用者的interest可以使我們學習final interest的表達時包含更多的歷史資訊
- 可以根據interest的變化趨勢更好地進行CTR預測 而interest在變化過程中遵循如下規律:
- interest drift:使用者在某一段時間的interest會有一定的集中性。比如使用者可能在一段時間內不斷買書,在另一段時間內不斷買衣服。
- interest individual:一種interest有自己的發展趨勢,不同種類的interest之間很少相互影響,例如買書和買衣服的interest基本互不相關。
為了利用這兩個時序特徵,我們需要再增加一層GRU的變種,並加上attention機制以找到與target AD相關的interest。其中,attention function可以表示為:
是target AD的embedding。
把Attention和GRU結合起來的機制有很多種,
- AIGRU:
- AGRU:
- AUGRU:
文章中嘗試了這三種機制。
Results
文章在公共資料和自己的資料集上都做了實驗,離線實驗的結果如下: