您的位置:首頁>正文

「AAAI oral」阿裡北大提出新attention建模框架

新智元專欄

作者:周暢, 白金澤, 宋軍帥, 劉效飛, 趙爭超, 陳修司, 高軍

【新智元導讀】本文提出一種基於注意力機制的用戶異構行為序列的建模框架,

並將其應用到推薦場景中。 作者提出用同一種模型同時預測多種類型的用戶行為, 由於沒有使用RNN,CNN等方法, 因此在提高效果的同時, 該方法能夠有更快的訓練速度。

本文提出一種基於注意力機制的用戶異構行為序列的建模框架,

並將其應用到推薦場景中。 我們將不同種類的使用者行為序列進行分組編碼, 並映射到不同子空間中。 我們利用self-attention對行為間的互相影響進行建模。 最終我們得到用戶的行為表徵, 下游任務就可以使用基本的注意力模型進行有更具指向性的決策。 我們嘗試用同一種模型同時預測多種類型的用戶行為, 使其達到多個單獨模型預測單類型行為的效果。 另外, 由於我們的方法中沒有使用RNN,CNN等方法, 因此在提高效果的同時, 該方法能夠有更快的訓練速度。

研究背景

一個人是由其所表現出的行為所定義。 而對用戶精准、深入的研究也往往是很多商業問題的核心。 從長期來看, 隨著人們可被記錄的行為種類越來越多,

平臺方需要有能力通過融合各類不同的用戶行為, 更好的去理解用戶, 從而提供更好的個性化服務。

對於阿裡巴巴來說, 以消費者運營為核心理念的全域行銷正是一個結合使用者全生態行為資料來説明品牌實現新行銷的資料&技術驅動的解決方案。 因此, 對用戶行為的研究就成為了一個非常核心的問題。 其中, 很大的挑戰來自於能否對使用者的異構行為資料進行更精細的處理。

在這樣的背景下, 本文提出一個通用的用戶表徵框架, 試圖融合不同類型的用戶行為序列, 並以此框架在推薦任務中進行了效果驗證。 另外, 我們還通過多工學習的方式, 期望能夠利用該用戶表徵實現不同的下游任務。

相關工作

異構行為建模:通常通過手動特徵工程來表示使用者特徵。 這些手工特徵以聚合類特徵或無時序的id特徵集合為主。

單行為序列建模:用戶序列的建模通常會用RNN(LSTM/GRU)或者CNN + Pooling的方式。 RNN難以並行, 訓練和預測時間較長, 且LSTM中的Internal Memory無法記住特定的行為記錄。 CNN也無法保留特定行為特徵, 且需要較深的層次來建立任意行為間的影響。

異構資料表征學習:參考知識圖譜和Multi-modal的表徵研究工作, 但通常都有非常明顯的映射監督。 而在我們的任務中, 異構的行為之間並沒有像image caption這種任務那樣明顯的映射關係。

本文的主要貢獻如下:

嘗試設計和實現了一種能夠融合使用者多種時序行為資料的方法, 較為創新的想法在於提出了一種同時考慮異構行為和時序的解決方案,

並給出較為簡潔的實現方式。

使用類似Google的self-attention機制去除CNN、LSTM的限制, 讓網路訓練和預測速度變快的同時, 效果還可以略有提升。

此框架便於擴展。 可以允許更多不同類型的行為資料接入, 同時提供多工學習的機會, 來彌補行為稀疏性。

ATRank方案介紹

整個用戶表徵的框架包括原始特徵層,語義映射層,Self-Attention層和目標網路。

語義映射層能讓不同的行為可以在不同的語義空間下進行比較和相互作用。Self-Attention層讓單個的行為本身變成考慮到其他行為影響的記錄。目標網路則通過Vanilla Attention可以準確的找到相關的用戶行為進行預測任務。通過Time Encoding + Self Attention的思路,我們的實驗表明其的確可以替代CNN/RNN來描述序列資訊,能使模型的訓練和預測速度更快。

1. 行為分組

某個用戶的行為序列可以用一個三元組來描述(動作類型,目標,時間)。我們先將使用者不同的行為按照目標實體進行分組,如圖中最下方不同顏色group。例如商品行為,優惠券行為,關鍵字行為等等。動作類型可以是點擊/收藏/加購、領取/使用等等。

每個實體都有自己不同的屬性,包括實值特徵和離散id類特徵。動作類型是id類,我們也將時間離散化。三部分相加得到下一層的向量組。

即,某行為的編碼 = 自訂目標編碼 + lookup(離散化時間) + lookup(動作類型)。

由於實體的信息量不同,因此每一組行為編碼的向量長度不一,其實也代表行為所含的信息量有所不同。另外,不同行為之間可能會共用一些參數,例如店鋪id,類目id這類特徵的lookup table,這樣做能減少一定的稀疏性,同時降低參數總量。

分組的主要目的除了說明起來比較方便,還與實現有關。因為變長、異構的處理很難高效的在不分組的情況下實現。並且在後面還可以看到我們的方法實際上並不強制依賴于行為按時間排序。

2. 語義空間映射

這一層通過將異構行為線性映射到多個語義空間,來實現異構行為之間的同語義交流。例如框架圖中想表達的空間是紅綠藍(RGB)構成的原子語義空間,下面的複合色彩(不同類型的用戶行為)會投影到各個原子語義空間。在相同語義空間下,這些異構行為的相同語義成分才有了可比性。

類似的思路其實也在knowledge graph representation裡也有出現。而在NLP領域,今年也有一些研究表明多語義空間的attention機制可以提升效果。個人認為的一點解釋是說,如果不分多語義空間,會發生所謂語義中和的問題。簡單的理解是,兩個不同種類的行為a,b可能只在某種領域上有相關性,然而當attention score是一個全域的標量時, a,b在不那麼相關的領域上會增大互相影響,而在高度相關的領域上這種影響則會減弱。

儘管從實現的角度上來說,這一層就是所有行為編碼向一個統一的空間進行映射,映射方法線性非線性都可以,但實際上,對於後面的網路層來說,我們可以看作是將一個大的空間劃分為多語義空間,並在每個子空間裡進行self-attention操作。因此從解釋上來說,我們簡單的把這個映射直接描述成對多個子語義空間進行投影。

3. Self Attention層

Self Attention層的目的實際上是想將使用者的每一個行為從一個客觀的表徵,做成一個用戶記憶中的表徵。客觀的表徵是指,比如A,B做了同樣一件事,這個行為本身的表徵可能是相同的。但這個行為在A,B的記憶中,可能強度、清晰度是完全不一樣的,這是因為A,B的其他行為不同。實際上,觀察softmax函數可知,某種相似行為做的越多,他們的表徵就越會被平均。而帶來不一樣體驗的行為則會更容易保留自己的資訊。因此self attention實際上模擬了一個行為被其他行為影響後的表徵。

另外,Self Attention可以有多層。可以看到,一層Self-Attention對應著一階的行為影響。多層則會考慮多階的行為影響。這個網路結構借鑒的是google的self-attention框架。

具體計算方式如下:

記S是整個語義層拼接後的輸出,Sk是第k個語義空間上的投影,則經過self-attention後第k個語義空間的表徵計算公式為:

這裡的attention function可以看做是一種bilinear的attention函數。最後的輸出則是這些空間向量拼接後再加入一個前饋網路。

4. 目標網路

目標網路會隨著下游任務的不同而定制。本文所涉及的任務是用戶行為預測及推薦場景的點擊預測的任務,採用的是point-wise的方式進行訓練和預測。

框架圖中灰色的bar代表待預測的任意種類的行為。我們將該行為也通過embedding、projection等轉換,然後和用戶表徵產出的行為向量做vanilla attention。最後Attention向量和目標向量將被送入一個Ranking Network。其他場景強相關的特徵可以放在這裡。這個網路可以是任意的,可以是wide & deep,deep FM,pnn都行。我們在論文的實驗中就是簡單的dnn。

離線實驗

訓練收斂結果如下圖:

用戶平均AUC如下圖:

實驗結論:在行為預測或推薦任務中,self-attention + time encoding也能較好的替代cnn+pooling或lstm的編碼方式。訓練時間上能較cnn/lstm快4倍。效果上也能比其他方法略好一些。

Case Study

為了深究Self-Attention在多空間內的意義,我們在amazon dataset上做了一個簡單的case study。如下圖:

從圖中我們可以看到,不同的空間所關注的重點很不一樣。例如空間I, II, III, VIII中每一行的attention分的趨勢類似。這可能是主要體現不同行為總體的影響。另一些空間,例如VII,高分attention趨向于形成稠密的正方形,我們可以看到這其實是因為這些商品屬於同樣的類目。

下圖則是vanilla attention在不同語義空間下的得分情況。

多工學習

我們分別構造了7種訓練模式進行對比。分別是單行為樣本預測同類行為(3種),全行為多模型預測單行為(3種),全行為單模型預測全行為(1種)。在最後一種實驗設置下,我們將三種預測任務各自切成mini-batch,然後統一進行shuffle並訓練。

實驗結果如下表:

all2one是三個模型分別預測三個任務,all2all是單模型預測三個任務,即三個任務共用所有參數,而沒有各自獨佔的部分。因此all2all與all2one相比稍低可以理解。我們訓練多工all2all時,將三種不同的預測任務各自batch後進行充分隨機的shuffle。文中的多工訓練方式還是有很多可以提升的地方,前沿也出現了一些很好的可借鑒的方法,是我們目前正在嘗試的方向之一。

實驗表明,我們的框架可以通過融入更多的行為資料來達到更好的推薦/行為預測的效果。

總結

本文提出一個通用的用戶表徵框架,來融合不同類型的用戶行為序列,並在推薦任務中得到驗證。

未來,我們希望能結合更多實際的商業場景和更豐富的資料沉澱出靈活、可擴展的用戶表徵體系,從而更好的理解用戶,提供更優質的個性化服務,輸出更全面的資料能力。

論文題目:《基於注意力機制的用戶行為建模框架及其在推薦領域的應用》

英文:《ATRank: An Attention-Based User Behavior Modeling Framework for Recommendation》

Paper URL: https://arxiv.org/abs/1711.06632

團隊:雲零售事業部-資料技術團隊, 北京大學

作者:周暢,白金澤,宋軍帥,劉效飛,趙爭超,陳修司,高軍

加入社群

新智元AI技術+產業社群招募中,歡迎對AI技術+產業落地感興趣的同學,加小助手微信號: aiera2015_1 入群;通過審核後我們將邀請進群,加入社群後務必修改群備註(姓名-公司-職位;專業群審核較嚴,敬請諒解)。

此外,新智元AI技術+產業領域社群(智慧汽車、機器學習、深度學習、神經網路等)正在面向正在從事相關領域的工程師及研究人員進行招募。

加入新智元技術社群 共用AI+開放平臺

整個用戶表徵的框架包括原始特徵層,語義映射層,Self-Attention層和目標網路。

語義映射層能讓不同的行為可以在不同的語義空間下進行比較和相互作用。Self-Attention層讓單個的行為本身變成考慮到其他行為影響的記錄。目標網路則通過Vanilla Attention可以準確的找到相關的用戶行為進行預測任務。通過Time Encoding + Self Attention的思路,我們的實驗表明其的確可以替代CNN/RNN來描述序列資訊,能使模型的訓練和預測速度更快。

1. 行為分組

某個用戶的行為序列可以用一個三元組來描述(動作類型,目標,時間)。我們先將使用者不同的行為按照目標實體進行分組,如圖中最下方不同顏色group。例如商品行為,優惠券行為,關鍵字行為等等。動作類型可以是點擊/收藏/加購、領取/使用等等。

每個實體都有自己不同的屬性,包括實值特徵和離散id類特徵。動作類型是id類,我們也將時間離散化。三部分相加得到下一層的向量組。

即,某行為的編碼 = 自訂目標編碼 + lookup(離散化時間) + lookup(動作類型)。

由於實體的信息量不同,因此每一組行為編碼的向量長度不一,其實也代表行為所含的信息量有所不同。另外,不同行為之間可能會共用一些參數,例如店鋪id,類目id這類特徵的lookup table,這樣做能減少一定的稀疏性,同時降低參數總量。

分組的主要目的除了說明起來比較方便,還與實現有關。因為變長、異構的處理很難高效的在不分組的情況下實現。並且在後面還可以看到我們的方法實際上並不強制依賴于行為按時間排序。

2. 語義空間映射

這一層通過將異構行為線性映射到多個語義空間,來實現異構行為之間的同語義交流。例如框架圖中想表達的空間是紅綠藍(RGB)構成的原子語義空間,下面的複合色彩(不同類型的用戶行為)會投影到各個原子語義空間。在相同語義空間下,這些異構行為的相同語義成分才有了可比性。

類似的思路其實也在knowledge graph representation裡也有出現。而在NLP領域,今年也有一些研究表明多語義空間的attention機制可以提升效果。個人認為的一點解釋是說,如果不分多語義空間,會發生所謂語義中和的問題。簡單的理解是,兩個不同種類的行為a,b可能只在某種領域上有相關性,然而當attention score是一個全域的標量時, a,b在不那麼相關的領域上會增大互相影響,而在高度相關的領域上這種影響則會減弱。

儘管從實現的角度上來說,這一層就是所有行為編碼向一個統一的空間進行映射,映射方法線性非線性都可以,但實際上,對於後面的網路層來說,我們可以看作是將一個大的空間劃分為多語義空間,並在每個子空間裡進行self-attention操作。因此從解釋上來說,我們簡單的把這個映射直接描述成對多個子語義空間進行投影。

3. Self Attention層

Self Attention層的目的實際上是想將使用者的每一個行為從一個客觀的表徵,做成一個用戶記憶中的表徵。客觀的表徵是指,比如A,B做了同樣一件事,這個行為本身的表徵可能是相同的。但這個行為在A,B的記憶中,可能強度、清晰度是完全不一樣的,這是因為A,B的其他行為不同。實際上,觀察softmax函數可知,某種相似行為做的越多,他們的表徵就越會被平均。而帶來不一樣體驗的行為則會更容易保留自己的資訊。因此self attention實際上模擬了一個行為被其他行為影響後的表徵。

另外,Self Attention可以有多層。可以看到,一層Self-Attention對應著一階的行為影響。多層則會考慮多階的行為影響。這個網路結構借鑒的是google的self-attention框架。

具體計算方式如下:

記S是整個語義層拼接後的輸出,Sk是第k個語義空間上的投影,則經過self-attention後第k個語義空間的表徵計算公式為:

這裡的attention function可以看做是一種bilinear的attention函數。最後的輸出則是這些空間向量拼接後再加入一個前饋網路。

4. 目標網路

目標網路會隨著下游任務的不同而定制。本文所涉及的任務是用戶行為預測及推薦場景的點擊預測的任務,採用的是point-wise的方式進行訓練和預測。

框架圖中灰色的bar代表待預測的任意種類的行為。我們將該行為也通過embedding、projection等轉換,然後和用戶表徵產出的行為向量做vanilla attention。最後Attention向量和目標向量將被送入一個Ranking Network。其他場景強相關的特徵可以放在這裡。這個網路可以是任意的,可以是wide & deep,deep FM,pnn都行。我們在論文的實驗中就是簡單的dnn。

離線實驗

訓練收斂結果如下圖:

用戶平均AUC如下圖:

實驗結論:在行為預測或推薦任務中,self-attention + time encoding也能較好的替代cnn+pooling或lstm的編碼方式。訓練時間上能較cnn/lstm快4倍。效果上也能比其他方法略好一些。

Case Study

為了深究Self-Attention在多空間內的意義,我們在amazon dataset上做了一個簡單的case study。如下圖:

從圖中我們可以看到,不同的空間所關注的重點很不一樣。例如空間I, II, III, VIII中每一行的attention分的趨勢類似。這可能是主要體現不同行為總體的影響。另一些空間,例如VII,高分attention趨向于形成稠密的正方形,我們可以看到這其實是因為這些商品屬於同樣的類目。

下圖則是vanilla attention在不同語義空間下的得分情況。

多工學習

我們分別構造了7種訓練模式進行對比。分別是單行為樣本預測同類行為(3種),全行為多模型預測單行為(3種),全行為單模型預測全行為(1種)。在最後一種實驗設置下,我們將三種預測任務各自切成mini-batch,然後統一進行shuffle並訓練。

實驗結果如下表:

all2one是三個模型分別預測三個任務,all2all是單模型預測三個任務,即三個任務共用所有參數,而沒有各自獨佔的部分。因此all2all與all2one相比稍低可以理解。我們訓練多工all2all時,將三種不同的預測任務各自batch後進行充分隨機的shuffle。文中的多工訓練方式還是有很多可以提升的地方,前沿也出現了一些很好的可借鑒的方法,是我們目前正在嘗試的方向之一。

實驗表明,我們的框架可以通過融入更多的行為資料來達到更好的推薦/行為預測的效果。

總結

本文提出一個通用的用戶表徵框架,來融合不同類型的用戶行為序列,並在推薦任務中得到驗證。

未來,我們希望能結合更多實際的商業場景和更豐富的資料沉澱出靈活、可擴展的用戶表徵體系,從而更好的理解用戶,提供更優質的個性化服務,輸出更全面的資料能力。

論文題目:《基於注意力機制的用戶行為建模框架及其在推薦領域的應用》

英文:《ATRank: An Attention-Based User Behavior Modeling Framework for Recommendation》

Paper URL: https://arxiv.org/abs/1711.06632

團隊:雲零售事業部-資料技術團隊, 北京大學

作者:周暢,白金澤,宋軍帥,劉效飛,趙爭超,陳修司,高軍

加入社群

新智元AI技術+產業社群招募中,歡迎對AI技術+產業落地感興趣的同學,加小助手微信號: aiera2015_1 入群;通過審核後我們將邀請進群,加入社群後務必修改群備註(姓名-公司-職位;專業群審核較嚴,敬請諒解)。

此外,新智元AI技術+產業領域社群(智慧汽車、機器學習、深度學習、神經網路等)正在面向正在從事相關領域的工程師及研究人員進行招募。

加入新智元技術社群 共用AI+開放平臺

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示