推薦場景中——DIN排序模型講解和應用

2021-01-07 一個數據人的自留地

是新朋友嗎?記得先點藍字關注我哦~

作者介紹

知乎@王多魚

京東的一名推薦算法攻城獅。

主要負責商品推薦的召回和排序模型的優化工作。

前言

前文介紹了一種普適性比較強的DeepFM排序模型,易用且部署簡單。本文結合用戶的行為序列數據剖析一下由阿里媽媽算法團隊開發的深度興趣網絡模型(下稱DIN模型)。

以往的深度點擊預估模型都是對特徵進行Embedding映射,拼接組合後輸入到多層感知器網絡(下稱MLP)。在這種情況下,無論候選商品是什麼,用戶的特徵都被壓縮為固定長度的Embedding向量,該方式難以捕獲用戶的多樣性的興趣而無法有效地從豐富的歷史行為中表達label的信息。

為此阿里提出了一個新穎的模型:DIN模型通過引入注意力機制(下稱Attention)捕捉用戶的興趣點,用來表示用戶對某個商品的歷史行為的興趣,用戶的Embedding向量隨著候選商品的變化而變化,有效的提升了模型的表達能力。此外,文中還提出mini-batch aware正則方法和自適應激活函數來輔助模型進行訓練。

一、Attention機制介紹

1.1 Attention機制簡介

在正式介紹模型之前,先介紹一下Attention機制。Attention機制是模仿人類注意力而提出的一種解決問題的辦法,簡單地說就是從大量信息中快速篩選出高價值信息,即一種將內部經驗和外部感覺對齊從而增加部分區域的觀察精細度的機制。

例如人的視覺在處理一張圖片時,會通過快速掃描全局圖像,獲得需要重點關注的目標區域,也就是注意力焦點。然後對這一區域投入更多的注意力資源,以獲得更多所需要關注的目標的細節信息,並抑制其它無用信息。圖1中對Attention機制進行了圖示,其中亮白色區域表示更關注的區域。

圖1 注意力機制直觀展示圖

Attention機制的具體計算過程見圖2。對目前大多數Attention方法進行抽象,可以將其歸納為兩個過程,三個階段:

第一個過程是根據query和key計算權重係數;

(1)第一個階段根據query和key計算兩者的相似性或者相關性;

(2)第二個階段對第一階段的原始分值進行歸一化處理;

第二個過程根據權重係數對value進行加權求和。

圖2 三階段計算Attention過程

1.2 特徵數據簡介

工業CTR預測任務中的特徵數據主要是由畫像特徵、統計特徵、行為序列特徵、上下文特徵等組成,DIN模型中使用的特徵列表如下:

用戶端的特徵主要包含畫像特徵和多組行為序列特徵;商品端主要包含畫像特徵;上下文特徵包含時間、網絡、地點、終端等特徵。

處理類別特徵主要採用Embedding方式,連續特徵採用分桶、歸一化、或log等方式進行轉化。

1.3 基準模型簡介

基準模型就是比較常見的多層神經網絡,即:

(1)先對每個特徵進行Embedding操作,得到一系列Embedding向量;

(2)將不同Group的特徵拼接組合起來之後得到一個固定長度的用戶Embedding向量,和候選商品Embedding向量;

(3)然後將(2)中的向量輸入後續的全連接網絡,最後輸出pCTR值。具體網絡結構見圖3。

圖3 基準模型結構圖

從基準模型的結構圖中可以看出,無論候選商品是什麼,用戶的Embedding值均不會發生改變。用戶的歷史行為中的商品Embedding數據對用戶的Embedding的貢獻力度是一樣的,然而這與實際情況並不符合,因為每個用戶的興趣是多樣性的。

舉個例子:某用戶購買過「外套」、「手機」、「洗面奶」、「小說」等,當用戶計劃購買「耳機」的時候,歷史行為中的「手機」自然比其他商品對本次決策的貢獻更大一些;當計劃購買褲子的時候,歷史行為中的「外套」自然比其他商品對本次決策的貢獻更大一些。

在實際情況下,基準模型的效果存在待改進的空間,由此阿里提出了基於用戶興趣的深層網絡。圖4展示了一位女生的歷史行為數據,與候選商品之間的相關度權重情況,進度條越大,表示歷史的商品與候選的商品越相似。

圖4 歷史行為數據與候選商品之間的相關度權重情況

二、DIN模型詳解

2.1 模型結構

DIN模型在基準模型的基礎上,增加了注意力機制,就是模型在對候選商品預測的時候,對用戶不同行為的注意力是不一樣的。「相關」的行為歷史看重一些,「不相關」的歷史甚至可以忽略。圖5展示了DIN模型的網絡結構圖。

DIN的模型結構中增加了 Activation Unit模塊,該模塊主要提取當前候選商品與歷史行為中的商品的權重值。輸入包括兩個部分,一個是原始的用戶行為Embedding向量、商品Embedding向量;另外一個是兩者Embedding向量經過外積計算後得到的向量,和兩者Embedding向量差值得到的向量。文章指出這種方式有利於保留更豐富的信息。

圖5 DIN模型結構圖

輸入層:

(1)用戶的畫像特徵,例如性別、年齡、學歷等;

(2)用戶的行為序列數據,例如點擊商品的行為序列、購買商品的行為序列;

(3)候選商品的畫像特徵,例如品類、品牌等;

(4)上下文特徵,例如設備終端、時間、地點等;

Embedding層:

(1)將輸入層的特徵映射為固定長度的向量;

Concat層:

(1)將Embedding向量組合為一個向量;

Activation Unit層:

(1)計算候選商品與歷史行為商品之間的權重。該模塊可以認為是一個獨立的MLP;

Sum Pooling層:

(1)將用戶歷史行為的商品Embedding進行Sum操作;

Concat和Flatten層:

(1)將以上的Embedding合併,並展平;

全連接網絡層:

(1)經過兩層全連接,並使用自定義Dice激活函數激活神經元;

輸出層:

(1)對全連接網絡層的結果進行Softmax操作,返回最大值的索引作為預測結果;

2.2 模型細節

2.2.1 講解一下Activation Unit模塊

與基準模型相比,DIN模型引入了一種新穎設計的Attention單元,並保持其他結構相同。Attention單元應用於用戶特徵組中,通過「加權」方式自適應地計算用戶在候選商品中用戶向量的興趣表示值。Activation Unit的網絡結構如圖6所示。

圖6 Activation Unit的網絡結構圖

(1)輸入層:

user 產生行為(例如點擊、或購買)的 item embedding,作為key;

候選 item embedding,作為query;

(2)Out Product層:

計算矩陣之間的 element-wise 乘法;

(3)Concat層:

將 query, key, query-key, query*key(Out Product層,element-wise 乘法) 的結果進行拼接;

(4)Dense層:

全連接層,並以PRelu或Dice作為激活函數;

(5)Linear層(輸出層):

全連接層,輸出單元為1,即得到(query, key)相應的權重值;

Activation Unit的表達式如公式(1)所示。

(1)

其中:

{e1,e2,……,eH}是用戶U歷史行為商品的embedding,長度為H;

uA是候選商品的embedding;

a() 是前向網絡,矩陣以out product進行計算,輸出結果為權重值。

2.2.2 講解一下小批量aware正則化

mini-batch aware regularization主要解決的就是在大規模稀疏場景下,採用SGD對引入L2正則的loss進行更新時計算開銷過大的問題。該方法只對每一個mini-batch中不為0的參數進行梯度更新,經過一系列推到之後得到近似的梯度計算公式如公式(2)所示,對於第m個小批量,特徵j的梯度權重是:

(2)

2.2.3 自適應激活函數Dice

文章認為採用PRelu激活函數的校正點固定不變,在輸入分布發生變化時是不適用的。文章對該激活函數進行了改進,Dice激活函數會根據每層輸入數據的分布來自適應調整校正點的位置,具體形式如下:

(3)

其中:E[s]和Var[s]是每個小批量輸入數據的均值和方差,ε是一個常數,設定為10-8。

三、DIN模型實踐

下面使用一個簡單的數據集,實踐一下DIN排序模型。該模型的實現主要參考:python軟體的DeepCtr模塊。

3.1數據處理

(1.1)加載數據

samples.txt 數據可以從百度網盤下載:

提取碼: gap1

本示例中包含:7個特徵。

●user端特徵有5個,分別為["user_id", "gender", "age", "hist_movie_id", "hist_len"];

user_id 為 用戶ID特徵,離散特徵,從1-3表示;gender 為 用戶性別特徵,離散特徵,從1-2表示; age 為 用戶年齡特徵,離散特徵,從1-3表示; hist_movie_id 為 用戶觀看的movie序列特徵,根據觀看的時間倒排,即最新觀看的movieID排在前面; hist_len 為 用戶觀看的movie序列長度特徵,連續特徵;

●movie端特徵有2個,為 ["movie_id", "movie_type_id"];

movie_id 為 movieID特徵,離散特徵,從1-208表示;movie_type_id 為 movieID 類型特徵,離散特徵,從1-9表示;

(1.2)分割數據為訓練集和驗證集

(1.3)轉換數據存儲格式

3.2構建模型

(2.1)統計每個離散特徵的詞頻量,構造特徵參數

(2.2)構建模型及訓練模型

由於數據量較少等原因,本次實驗觸發了早停機制。

(2.3)列印看一下模型的結構

(2.4)繪製損失函數圖

一個數據人的自留地是一個助力數據人成長的大家庭,幫助對數據感興趣的夥伴們明確學習方向、精準提升技能。

相關焦點

  • 一文帶你了解推薦系統——常用召回和排序技術
    在工業推薦系統中,推薦系統包含兩個步驟:召回和排序。  (1)召迴環節:主要根據用戶部分特徵,從海量的物品庫裡,快速找回一小部分用戶潛在感興趣的物品。此環節要求速度快。  (2)排序環節:排序環節可以融入較多特徵,使用複雜的模型,精準地做個性化推薦。此環節要求精度高。  圖1展示了推薦系統的整體架構。
  • RS Meet DL(69)-youtube視頻推薦中的多任務排序模型
    除此之外,本文還介紹了如何消除推薦系統中常見的位置偏置因素以及在應用深度學習模型中的一些實踐經驗,一起來學習一下。1、背景視頻推薦的任務可以描述為根據用戶當前所觀看的視頻,來預測用戶下一個可能觀看的視頻。傳統的推薦系統往往是兩階段的設計模式,即召回和精排階段。本文主要介紹精排階段的模型。
  • 人民大學徐君:智能搜索中的排序-突破概率排序準則
    報告內容:文檔排序是搜索系統的核心功能之一,過去的研究集中在如何構造貼近實際場景的損失函數並設計相應的優化算法,提出了如pointwise、pairwise和listwise一系列排序學習算法。從排序模型的角度看,現有的文檔排序均構建於符合概率排序準則(probability ranking principle,PRP)的獨立打分函數之上,對其它類型的排序模型未給與更多關注。本次報告的主題是智能搜索中的排序:突破概率排序準則。徐君老師將介紹近年來排序學習的研究如逐步突破概率排序準則、構建適應性更廣的排序模型,包括基於馬爾科夫決策過程的序貫排序模型和基於注意力機制的集合到排列映射模型。
  • YouTube基於多任務學習的視頻排序推薦系統
    作者在《深度學習在推薦系統中的應用》這篇文章中對YouTube在2016年提出的一個兩階段的深度學習推薦模型進行了詳細介紹,該模型是深度學習在推薦系統中的應用最經典的模型之一
  • 多目標學習在推薦系統中的應用
    當然,融合的函數可以有很多,比如連乘或者指數相關的函數,這裡和業務場景和目標的含義強相關,可以根據自己的實際場景探索。這種做法優點:模型簡單;缺點是:(1)線上serving部分需要額外的時間開銷,通常我們採用並行的方式請求多個模型進行融合。(2)多個模型之間相互獨立,不能互相利用各自訓練的部分作為先驗,容易過擬合。
  • 深入理解推薦系統:DIN 深度興趣網絡
    作為【推薦系統】系列文章的第八篇,將以2017中的一篇論文「Deep Interest Network for Click-Through Rate Prediction」作為今天的主角,主要介紹如何對於不同的候選商品從用戶行為裡查找有效的信息建模用戶的特殊興趣。
  • 從算法講解到應用實戰,這是一份完整的聯邦學習入門教程
    3 月 26 日,機器之心聯合微眾銀行開設的公開課《聯邦學習 FATE 入門與應用實戰》第六講結課,微眾銀行人工智慧部高級研究員譚奔為大家介紹了聯邦推薦系統背景、聯邦推薦系統分類以及現有工作、聯邦推薦算法實現和聯邦推薦在新聞推薦的應用。
  • 百度NLP | Familia:開源的中文主題模型應用工具包
    雖然學術界的研究人員提出了多種多樣的主題模型來適應不同的場景,這些工作主要集中在「建模」層面,即設計合理的模型來適配各色各樣的數據,而指導主題模型在工業場景「落地」的資源和文獻卻非常稀少。為了推動主題模型技術在工業界的應用,我們開源了 Familia 工具 (https://github.com/baidu/Familia)。
  • 根植於工業級大規模深度學習應用場景的PaddlePaddle
    早在2012年,百度就成功將DNN模型應用於語音識別和光學字符識別(OCR)任務;而緊接著在2013年,鳳巢廣告和搜索排序也先後上線深度學習模型,這些都屬於業內首次,也奠定了百度在世界範圍內深度學習研究和應用的領先優勢。從此百度逐步全面進入深度學習時代,在深度學習框架研發、平臺建設和技術創新應用等方面都一直走在前沿。
  • 各種機器學習算法的應用場景分別是什麼(比如樸素貝葉斯、決策樹、K 近鄰、SVM、邏輯回歸最大熵模型)?
    金融、媒體、零售積累了大量C端用戶的數據;第二個是因為場景:這些領域的客戶有些大量可以使用機器學習建模的場景,也是國內工業界最早嘗試將機器學習引入到實際的建模場景中的。2. 國內工業界應用最多的機器學習算法說清楚主要應用領域和場景以後,分析算法就很清楚了。
  • Embedding在網易嚴選搜索推薦中的應用
    嚴選於18年下半年開始探索向量化在搜索推薦場景中的運用,從最開始基於商品召回用戶的任務到後續的搜索召回、搜索個性化排序、搜索底紋、搜索發現詞、搜索建議詞、跨類目推薦、推薦召回、多興趣召回、通用排序、端智能重排等等,我們不斷拓寬向量體系在嚴選的運用,在這過程中一點點迭代與沉澱。本文將從模型算法和落地運用等角度做簡要介紹,希望能給讀者一些啟發。
  • DIN論文總結
    在電商場景中,用戶的興趣往往是多峰的,即用戶可能同時在多個不同商品上都饒有興趣,而CTR的任務就是從用戶歷史行為來建模用戶興趣。但是目前常用的將高維稀疏向量壓縮成低維的長度固定向量的方式,限制了embedding&MLP  對用戶興趣表徵能力,對此有兩種解決方式大幅增加固定長度的向量的維度,但是這樣也會大幅增加模型需要學習的參數沒必要將用戶歷史特徵壓縮成 固定長度的向量,因為用戶當前的興趣只和歷史行為中某個或者某幾個記錄有關而已(典型的Attention思想)本論文提出了 一種新的模型:深度興趣網絡(DeepInterest
  • 深度學習技術在美圖個性化推薦的應用實踐
    在這樣長尾數據上進行預估要求我們的模型具備穩定的泛化能力。圖 3 美圖個性化推薦的挑戰美圖深度學習技術棧——召回端在上述的應用場景和技術挑戰下,美圖是如何將深度學習應用到個性化推薦中的召回端和排序端的呢?我將會在下面為大家一一介紹。
  • 推薦系統經典模型 Wide & Deep 論文剖析
    它發表於2016年,作者是Google App Store的推薦團隊。這年剛好是深度學習興起的時間。這篇文章討論的就是如何利用深度學習模型來進行推薦系統的CTR預測,可以說是在推薦系統領域一次深度學習的成功嘗試。著名的推薦模型Wide & deep就是出自這篇論文,這個模型因為實現簡單,效果不俗而在各大公司廣泛應用。因此它同樣也可以認為是推薦領域的必讀文章之一。
  • 潛水裝備小常識之din與yoke的區別
    前幾天的事情:有人慌張地問我,為什麼他的調節器(din的)明明連接好氣瓶的(同樣是din的),開瓶依然漏氣?後來我解開一級頭一看,沒有密封圈。然後他竟然不知道一級頭上應該有個黑色的密封膠圈。區別3 應用區域歐美地區大多採用din式的氣瓶跟調節器;而東南亞主要用yoke式的氣瓶跟調節器。休閒潛水主要用的還是yoke氣瓶;din氣瓶主要應用在技術潛水中,比如側掛。
  • 面試題:隱語義模型是在推薦系統中的應用的嗎?
    ,隱語義建模;隱語義模型的核心思想;隱語義模型在推薦系統中的應用;隱語義模型與推薦系統的關係;工程中常用的矩陣分解方法前言推薦系統中一個重要的分支,隱語義建模。隱語義模型LFM:Latent Factor Model,其核心思想就是通過隱含特徵聯繫用戶興趣和物品。過程分為三個部分,將物品映射到隱含分類,確定用戶對隱含分類的興趣,然後選擇用戶感興趣的分類中的物品推薦給用戶。它是基於用戶行為統計的自動聚類。隱語義模型在Top-N推薦中的應用十分廣泛。
  • 【推薦實踐】深度學習在阿里B2B電商推薦系統中的實踐
    推薦導購場景在電商中是重要的滿足用戶"逛"和"買"的場景,本次分享我們聚焦深度學習在阿里B2B電商 ( 1688 ) 推薦系統中的應用,其中包括商品推薦中召回 ( 多興趣Deep Match ),排序 ( 自研DMR ) 的相關工作,以及在新興的互動內容場景 ( 直播、短視頻 ) 中通過異構網絡來解決異構信息的精準匹配問題。
  • 【圖文並茂】408數據結構中的排序算法講解
    排序是數據結構中的重要知識點,也是考研中的必考內容,一般會在選擇題第11題考察,最常見的題目類型是給出一串記錄和經過若干趟排序之後的記錄,判斷可能屬於哪種排序算法
  • 深度學習推薦模型DeepFM技術剖析:助力華為應用市場APP推薦
    今年8月下旬,在澳大利亞墨爾本召開的IJCAI2017會議上,來自華為伏羲推薦團隊的專家發表了他們在深度學習推薦算法方面的最新成果。伏羲推薦引擎是華為應用市場聯合華為諾亞方舟實驗室開發的一款推薦系統。針對華為應用市場的業務特點和數據特徵,伏羲推薦算法團隊提出的端到端的深度學習推薦模型DeepFM,助力華為應用市場更加精準、個性化的推薦體驗。
  • Google最新論文,Youtube視頻推薦如何做多目標排序
    本文主要介紹下Google在RecSys 2019上的最新論文[1],提出了一套大規模多目標排序框架應用於Youtube視頻推薦,引入MMoE解決多目標學習,以及解決用戶隱式反饋中的selection Bias問題。歡迎轉載,轉載請註明出處以及連結,更多關於深度推薦系統優質內容請關注如下頻道。