DIEN演算法介紹

2021-10-02 23:50:08 字數 2840 閱讀 7996

參考文獻

deep interest evolution network for click-through rate prediction

前情提要

din

dien,全名deep interest evolution network,中文名為深度興趣進化網路,在din中加了個e,evolution,要知道,演化論也就是evolution啊,把演化論放到名字裡的演算法,從此可見一斑。雖然人家其實跟演化論沒啥關係,具體如何,下面分解。

上回且說到阿里向眾人解釋完din,意猶未盡,繼續開始解釋起dien來,只見他默默地甩出一張大圖

見到此圖,眾人只覺得腰膝痠軟,面如土色,只見阿里不緊不慢地開始解釋起來。

我們知道像rnn,gru這種東西都是專門為了處理序列資料而設計的,而序列資料的特點麼,就是乙個連著乙個,而有時候序列資料會特別長,像rnn這種網路我們都知道要用反向傳播計算梯度更新引數,但序列資料一長,反向傳播就不大容易,經常碰上梯度消失的情況(就是在傳導的過程中傳到某個序列中的item時對應的梯度等於0),梯度一消失,就相當於失去了學習能力,那麼像rnn就只有短時記憶的能力(在反向傳播時只有離其較近的item對應的梯度不為0),為了使網路具有長時記憶能力,在rnn的基礎上設計了lstm,gru,基本思路都是在網路中加入一些門控單元,控制資訊的流入流出,目的是去掉其中的冗餘資訊,使梯度傳導變得容易些,梯度能傳導得遠,網路就具有了長時記憶能力。gru的結構比lstm簡單,訓練更容易,效果卻差不多,所以眼下這個場景就使用gru。來看上面的公式,u是更新門,r是重置門,i代表輸入,這裡的輸入就是從第一層上來的embedding,h是輸出,代表著乙個隱藏狀態,h中隱含著某時刻以往所有序列的資訊,這裡就用來表示某使用者在當下的興趣,我們知道乙個人的興趣確實跟以往的經歷有關,上面每個符號的右下角都帶有乙個小t,代表著某個具體的時刻,對應著行為序列中的一項。前兩個公式就是更新門u和重置門r的計算,經過sigmoid函式,兩個門的值的範圍都是0~1,第三個公式是計算頭上帶著乙個波浪號的h,其包含有h t-1與新的輸入it的資訊, h t-1就表示著前一刻的隱藏狀態,表徵過去的資訊,其會保留多少將由重置門rt決定。最後乙個公式ht 就是當下這個時刻的隱藏狀態,包含了當下以及過去的資訊,但其中有包含多少當下的新資訊以及多少過去的資訊,就由更新門ut決定。這樣,每個時刻(對應行為序列中每個item)都會計算出乙個隱藏狀態,這樣我們就得到了h(1),h(2)…… h(t),可以用來表示每個時刻的興趣。這就是第二層interest extractor layer。為了更好地計算出每個時刻對應的ht,這裡引入auxiliary loss,

之所以引入auxiliary loss,是因為我們覺得某使用者當下的興趣(ht)與下一刻會採取的行動(eb[t+1])高度相關,其中我們還負取樣了一些e^b(並非下一刻真正會採取的行動,隨機抽取)幫助訓練。auxiliary loss最後會加入總的目標函式一起參加訓練。well,這只是一些細節問題,不必太在意,接下來來說第三層。

第三層是interest evolving layer。話說第二層我們計算出了使用者興趣序列h(1),h(2)…… h(t),表徵著使用者不同時刻的興趣,興趣的轉化總有個軌跡,第三層我們就是想要捕捉這個興趣的轉化過程。不過,身為乙個奸商,我們並不是對使用者所有的興趣都關心,我們只關心使用者興趣中跟最後我們要推薦給使用者的item相關聯的部分,針對這一點,我們同時使用gru和attention mechanism(din中的activation unit也是其中的一種)!gru負責捕捉使用者興趣的轉變,attention mechanism則負責只提取出使用者興趣中與最後我們要推薦的item相關聯的部分。最後我們設計出了乙個叫augru(gru with attentional update gate)的東西。

說到提取相關聯的部分,自然少不了計算權重。這裡我們用興趣序列中的item去跟target ad互動出乙個權重,

此即為計算權重的公式,ht即是對應興趣序列中的item,ea是target ad對應的embedding,w是待學習的引數。有了權重後,該怎麼結合到gru中以實現只捕捉與最後推薦的item相關聯的興趣的演變呢?

對照我們之前介紹gru時所列出的那4個公式,會發現,計算出的權重通過校正更新門u』t從而影響最後計算的h』t,這裡的公式符號右上角都帶了一撇是因為第三層interest evolving layer用的gru需要與第二層interest extractor layer用的gru作出區分。權重越小,說明那個時刻的興趣與最後我想要推薦給你的廣告間關聯性不大,就調低更新門u』t,那那個時刻的興趣所對應的頭上帶波浪號的h』t就會更少被計算入最後的h』t中。

這樣,經過第三層interest evolving layer,我們最終計算出乙個最後的h』t,其是考慮了使用者所有以前的行為序列,考慮了與target ad的相關性,如此得到的乙個使用者最終的乙個狀態,最後與其它平平無奇的特徵拼接送入全連線網路就完事了!

至此,dien網路介紹完畢!訓練就用萬能的sgd就可以了。

眾人聽得阿里講罷,只覺得嘴唇發白,頭腦恍惚,人生如夢幻泡影,如露亦如電,想要蹣跚而去。

「站住,我,還有,更好的!」眾人只見阿里的嘴角泛起一絲明媚的微笑,不禁讓人想起那些年夕陽下的奔跑。

敬請期待dsin!

dsin

A 演算法介紹

不得不嘆服,強大演算法背後,都是簡單得不能再簡單的邏輯。普林斯頓的演算法課程作業裡,要讓用a 演算法。什麼都沒接觸到過,看到後有種想哭的感覺!於是網上查閱資料,漸漸的明白了怎麼回事。通過對a 演算法的學習的個人感悟 計算乙個代價函式,評估每一步的代價,並找到代價最小的方向。最終得到的解可能不是最優,...

A 演算法介紹

參考 在最短路徑演算法中 dijkstra演算法 每次貪心選擇當前更新的點中距離最近的進行更新。貪心演算法 每次選擇離終點評估最近的點進行更新 a 演算法 綜合了dijkstra和貪心,相當於即考慮了起點到此點的距離,又評估了此點到終點的距離。a 演算法通過下面這個函式來計算每個節點的優先順序。其中...

深度學習推薦系統學習筆記5 DIEN

經過之前deep crossing deep cross din等演算法的實現。發現這些演算法都非常相似,都是由deep crossing演化而來,即deep部分和crossing部分。deep部分利用深度模型模型提取特徵,crossing計算一些特徵,然後特徵拼接進入乙個淺層神經網路,再進行sof...