看看阿里如何在**做推薦,實現「一人千物千面」的使用者多樣化興趣推薦,首先總結下din、dien、dsin:
傳統深度學習在推薦就是稀疏到embedding編碼,變成稠密向量,餵給nn
din引入attention機制,捕獲候選商品和使用者瀏覽過的商品之間的關係(興趣)
dien在din基礎上引入序列概念,將使用者歷史行為序列納入到網路內
dsin將行為序列劃分為session,更符合rnn概念
大多推薦場景下資料下都包含如下資訊,使用者內在屬性資訊、使用者行為資訊、商品資訊、上下文資訊,乙個明顯區別是不同使用者的行為資訊差異很大。
稀疏向量 -- embedding -- fixed-length稠密向量 --- mlp
這樣做有什麼問題?
乙個明顯的問題是不同使用者的行為序列長度是不同的,fixed-length資訊表達不全面根據上述問題,有兩個解決思路:使用者最終的行為只和歷史行為中的部分有關,因此對歷史序列中商品相關度應有區分
對不同使用者嘗試不同維度的向量,導致訓練困難din從第二個問題出發,引入區域性啟用單元,對特定的ad自適應學習使用者興趣表示向量。即同一使用者在獲選ad不同時,embedding向量不同。如何在有限的維度表示使用者的差異化興趣?
使用attention機制捕獲ad和使用者行為序列商品之間的關係看結果
和ad相似度搞得物品擁有更高的權重
不相關物品的相似度低
下面是兩個小tricks,對結果提公升有幫助:
mini-batch aware regularization
dice activation function
tricks的細節可以參考原**。
dien使用了gru來建模使用者行為序列,在din基礎上考慮序列資訊
使用gru建模序列資訊,即用gru最後時刻的隱狀態表示序列資訊修改gru為augru
看下augru部分:
\[a_=\frac_ w \mathbf_\right)}^ \exp \left(\mathbf_ w \mathbf_\right)}
\]\[\begin&\tilde}_^=a_ * \mathbf_^\\&\mathbf_^=\left(1-\tilde}_^\right) \circ \mathbf_^+\tilde}_^ \circ \tilde}_^\end
\]根據attention score控制更新門。
看模型,直觀的思考貌似很合理,但是有兩個問題:
序列資訊包含多長?即短期興趣還是長期興趣的問題1.dien使用過去14天資訊行為序列,從rnn角度來說可能短期內行為資訊更重要,但長期資訊是否引入了噪音?序列連續否?不同時期的興趣不一樣,序列間隔過大相關性可能很低
使用者是否一定服從嚴格的序列?先點那個和後點那個的區別大嗎
2.過去14天內使用者需求會變。比如第一天買了衣服、可能十天後買的是書
3.使用者點選順序不一定重要,自己想一想好像是
關於使用rnn是否合適,rnn只關心t-1(上一步)和t(當前步),而沒有涉及t-1和t之間的時間間隔。沒涉及不代表不重要,反而是因為其使用前提就是假定各步驟之間是等間距的,見維基百科。
atime seriesis a series of data points indexed (or listed or graphed) in time order. most commonly, a time series is a sequence taken at successiveequally spacedpoints in time"以上部分內容摘自[3].dsin進一步做出優化,在每個會話中的行為是相近的,而在不同會話之間差別是很大的,如下圖的例子:
模型架構
1.會話分割層
將使用者的點選行為按照時間排序,判斷每兩個行為之間的時間間隔,前後的時間間隔大於30min,就進行切分。
2.興趣提取層
用tansformer編碼使用者行為序列,簡單來說就是輸入乙個序列,輸出乙個對應的embedding序列。
引入了偏置編碼(bias encoding),實質上是對序列中位置資訊的編碼
原始做法:
\[\begin&p e_, 2 i)}=\sin \left(\text / 10000^}}\right)\\&p e_=\cos \left(p o s / 10000^}\right)\end
\]bias encoding:
\[\mathbf_=\mathbf_^+\mathbf_^+\mathbf_^
\]第一項表示處於第幾個session,第二項表示session的第幾個行為,第三項表示整體位置的embedding。關於這三項其實不是很明確,知道的同學麻煩幫忙解答下,貼上原圖
3.興趣互動層
捕獲序列的順序關係,文中使用bi-lstm
4.興趣啟用層
和din中一樣,使用attention捕捉商品相關性
模型思想大概就這麼多,細節部分可以參考原**。
具體應用充分了解領域資料特點,根據場景定製適合具體問題的網路結構
需要有豐富的特徵
[3]也評deep interest evolution network .
深度興趣網路 din dien
業務思考 兩篇 貢獻點 din 引入attention dice啟用函式 自適應正則化 dien 引入gru 設計augru融合attention 本文不考慮啟用函式和自適應正則化的分析,著重於模型結構。din dien attention中的 形式將embedding後的結果從sum poolin...
深度網路pre train對於深度網路的意義
1 pre train 帶來更好的優化還是更好的泛化?pre train是乙個尋網路權值初值的過程,將pre train的結果作為bp演算法的權值的初值,能夠解決深度網路在非凸目標函式上陷入區域性最優的問題。從這個角度理解更象是帶來更好的優化能力。在帶有pre train的深度網路的泛化表現上不僅僅...
深度學習 深度神經網路
神經網路是由乙個個神經元相互連線並按層次排列構成的,深度神經網路是有任意層的神經網路,這裡的深度是指層次的多,而不是神經元數量的多。有任意層,那麼就要有乙個迴圈來負責遍歷每一層進行計算。所以深度神經網路的計算形式,就必須要適應這個迴圈結構。我們先來說說神經元吧 對於多神經元神經網路,其實也是一樣的。...