之前我們討論了阿里的Deep Interest Network,今天我們來討論它的進階版本,Deep Interest Evolution Network, 原文在這裡

https://

arxiv。org/pdf/1809。0367

2。pdf

。之前DIN的討論在這裡

這兩個paper的差別在原文裡面是這麼寫的:

[阿里]Deep Interest Evolution Network for CTR

那我們來一起看一開latent interest到底是如何capture的。

DIEN有兩個部分

extracting latent temporal interests

modeling interest evolving process

所以時間線上面的效果被強調了。

DIEN在extract interest的時候用的是GRU

aux loss用的是用下一個behavior來supervise the learning of current state

interest是會根據時間變化的。DIEN用了一個新的Attention update gate (AUGRU)來強化相關的interest對於下一個interest的prediction。

(這個避免了,如果多個型別的interest混在一起怎麼辦。另外一種做法是直接根據外部資訊把這些interest分類成不同的feature然後再做sequence modeling)

之前相關的模型

之前對這類model最接近的東西是RNN,但是RNN有幾個問題:

這類rnn沒有對這些hidden state做特殊的supervision

每一個sequence是同等且按順序的處理的,但是很多時候不同id之前的關係是沒有順序關係的

interest evolution方面,之前有QA系統用attention based GRU。

[阿里]Deep Interest Evolution Network for CTR

接下來的部分文章裡面討論base model,這些資訊在之前DIN的文章裡面有完整討論過,我就重新把這個連結再貼一下

Deep Interest Evolution Network

網路架構如下

[阿里]Deep Interest Evolution Network for CTR

我們接下來會把loss跟ARGRU的部分過一遍,attention的部分應該跟DIN裡面講的差不多。

DIEN裡面一個最大的特點是GRU的部分。GRU的表達如下

[阿里]Deep Interest Evolution Network for CTR

為了讓GRU的hidden state可以更好的模擬interest,我們可以增加一個auxiliary loss。

[阿里]Deep Interest Evolution Network for CTR

[阿里]Deep Interest Evolution Network for CTR

loss 的差別在於也用了negative sample來輔助loss。這裡的negative sample的來源是隻要不是下一個點選就可以。

(這裡沒有寫negative loss用多少和具體怎麼sample的!?從圖片裡面看起來就是隨便挑了一個)

[阿里]Deep Interest Evolution Network for CTR

Attention 的部分挺正常的

[阿里]Deep Interest Evolution Network for CTR

討論interest evolution的時候先討論一個失敗的問題

[阿里]Deep Interest Evolution Network for CTR

AIGRU的難點在於zero input都會改變hidden state,所以新的辦法是AGRU,效果好多了

[阿里]Deep Interest Evolution Network for CTR

最後進化為ARGRU,把AGRU裡面的scalar換成的vector

[阿里]Deep Interest Evolution Network for CTR

[阿里]Deep Interest Evolution Network for CTR

這個模型的計算量應該是爆炸的,後面會提到一點serving方面的問題。

效果

用阿里的資料來衡量這個模型的效果如下:

[阿里]Deep Interest Evolution Network for CTR

我們把各種GRU跟loss單獨拎出來的效果如下

[阿里]Deep Interest Evolution Network for CTR

可見效果還是不錯的。

serving所有相關的問題都在這裡提到了

[阿里]Deep Interest Evolution Network for CTR

應為這個模型serving那邊是爆炸的,所以他們

做個各種並行化跟fusion。

跨request做batching。這個paper裡面沒有細講,但是因為阿里在發文的時候用的還是GPU,所以如果不做batching的話硬體利用率會很低。所以這個不是為了latency而最佳化的,而是為了伺服器的預算。

模型壓縮。hidden state從108緯被壓縮到32緯。DIEN serving最後從38。2ms壓到了6。6ms。

我自己是做serving相關的最佳化的,這些東西說起來簡單做起來沒有那麼簡單,所以還是相當的亮眼的。

後記

我總算把DIN跟DIEN的paper給過完了。我從DIEN感受到了濃濃的土豪味,靠堆大量的算力直接把模型複雜度又推高了一個量級。接下來我們會討論阿里今年offline sequence modeling的paper,來換一個角度,除了堆算力還有什麼方向可以做好ctr的。