【論文筆記】ANR: Aspect-based Neural Recommender 基於方面的神經網絡推薦系統

【大概記錄一下這篇論文和思考】

ANR: Aspect-based Neural Recommender 基於方面的神經網絡推薦系統

作者大大:Jin Yao ChinKaiqi ZhaoShafiq Joty,Gao Cong(Nanyang Technological University, Singapore.)

 

現狀:

  • 用戶評論是非常重要的數據,可以瞭解用戶的喜好和關注點。
  • 冷啓動問題。(新建用戶時,初始數據過少,無法推薦。)
  • CNN把用戶評論和物品信息一起卷積來獲取其特徵的方法,無法獲得用戶和物品的細粒度交互信息。(如:DeepCoNN, D-Attn, and TransNets)
  • 評論中的無關信息。(一句話中,不是所有的單詞都是有用的,存在很多噪聲。)
  • 同一個詞語在不同句子中有不同的情感。((1) "This laptop has a long battery life"【正面情緒】, and (2) "The laptop requires a long startup time"【負面情緒】.)
  • 不同用戶對於同一物品的關注點不同(手機——關注價格、性能等),同一用戶對不同物品的關注點不同(恐怖電影關注情節,動作電影關注演技),不可一概而論。

 

主要工作:

• We propose a novel aspect-based neural recommender system which performs aspect-based representation learning for
users and items by designing an attention mechanism to focus on the relevant parts of these reviews while learning the representation of aspects on the task. Furthermore, we estimate aspect-level user and item importance in a joint manner
using the idea of co-attention, which allows us to model the finer-grained interactions between users and items. To the best of our knowledge, this is the first paper to propose an end-to-end neural aspect-based recommender system which concurrently addresses the above-mentioned requirements.

提出了一個新的基於方面級別的(aspect-based)神經網絡推薦系統。(方面aspect即用戶從哪個角度評論,或者商品從哪個角度介紹,例如價格、性能、服務等。)爲了學習用戶和物品的基於方面的表達,設計一個注意力機制,在學習方面級別表達時,只關注評論的相關部分。(評論中不是所有文本都在描述一個方面。)在預測級別方面的重要程度時,使用了共同關注的方法(co-attention),可以同時關注用戶和物品之間的細粒度關係。(例如:一個人買生活用品更注重經濟實惠,買電子產品注意機器性能。)

• Extensive experiments have been conducted on 25 benchmark datasets from Amazon and Yelp to evaluate our proposed model against several state-of-the-art baselines such as DeepCoNN, D-Attn, and ALFM.

在亞馬遜和Yelp的25個基準數據集上進行了廣泛的實驗,以評估模型是否符合一些最先進的基準線,如DeepCoNN、D-Attn和ALFM。

• We investigate how the different components in our proposed model contribute to its effectiveness. In particular, we include an qualitative analysis of the aspects which are learned automatically by our model without any external supervision.

研究模型中的不同組成部分對其有效性的貢獻。特別是,對模型自動學習的方面進行了定性分析,而無需任何外部監督。

 

模型圖:

 

 

 

 

Embedding Layer:

將用戶文檔的矩陣D_{u}轉化乘矩陣M_{u}\in \mathbb{R}^{n \times d},通過查找變矩陣f:V\rightarrow \mathbb{R}^d,通過查找表,將每個詞彙表V中的詞彙變成一個d維向量。

這個embedding矩陣需要與訓練,比如word2vec或者GLoVe,因爲用這兩個方法可以記住句子中詞語的順序,而不像bag-of-words完全放棄單詞順序。

 

Aspect-based Representation Learning:

方面集合(set of aspects)A包括許多方面,比如價格、質量、位置等等。A集合中共有K個元素。在這裏,用戶和物品使用的集合A相同。

使用M_{u}得到方面級別的用戶表達P_{u}=\{p_{u,a}|a \in A\}

用戶文本D_{u}包括用戶u過去所有交互過的物品的評論,這些評論裏包含着方面A的觀點。物品文本D_{i}同理。

在這一層中學習方面集合A包括哪些,和方面級別(aspect-level,也就是類似“喜歡”、“一般”、“不喜歡”)

 

幾個基本客觀事實:(文中提到的):

1.不是文檔中的每一個詞都一樣重要,我們只需要注意一些特定部分。

2.同一個詞在不同句子中有不同含義。我們需要考慮一個詞在不同方面中的不同情感。((1) "This laptop has a long battery life"【正面情緒】, and (2) "The laptop requires a long startup time"【負面情緒】.)

3.方面相關的詞彙(如價格、口味),和評價該方面的詞離的很近(如貴、好喫)。

 

用戶u在方面a的方面級別的用戶表達(aspect-level user representation)p_{u,a}

方面級別特殊單詞投射矩陣(aspect-specific word projection matrix)W_{a}\in \mathbb{R}^{d \times h_{1}},表達在a方面時單詞的含義(由於事實2可知,同一詞彙在不同方面的句子中含義不同)

M_{u,a}[i]=M_{u}[i]W_{a}

M_{u}[i]是一個維爲向量,表達文本矩陣M_{u}中第i個單詞的embedding。M_{u,a}[i]爲這第i個單詞在這個方面下的表達。一篇文檔共有n個單詞,所以M_{u,a}\in \mathbb{R}^{n \times h_{1}}。如果考慮全部K個方面,總結果就是\mathbb{R}^{K \times n \times h_{1}}的矩陣。

 

每個方面a \in A 都有一個embedding v_{a}\in \mathbb{R}^{c\times h_{1}},其中c是一個超參數。(個人認爲v_{a}就類似爲方面a的一個卷積核,提取方面a特徵的矩陣)

c是一個窗口大小。根據事實3,如果這是方面相關的詞彙,只需要看其上下文的一段距離。

在看第i個詞在方面a的重要性時:

z_{u,a,i}=(M_{u,a}[i-c/2];...;M_{u,a}[i];...;M_{u,a}[i+c/2])    符號“;”表示串聯。

 

v_{a} \ z_{u,a,i}內積,使用softmax算注意力attention,這樣就得到了單詞i在方面a上有多重要。(其實就類似於v_{a}作爲卷積核在文本M_{u}上滑動求特徵)

attn_{u,a}[i]=softmax(v_{a}(z_{u,a,i})^T) (根據度娘,算完了應該是一個1*h1大小的矩陣)

 

最後加權求和,得到了用戶u在a方面的表達:

p_{u,a}= \sum_{i=1}^{n}(attn_{u,a}[i]M_{u,a}[i])

(ps。我覺得attn和M應該是對應位相乘,因爲好像不能做矩陣乘法,最後是一個1*h1大小的矩陣)

 

物品的q_{i,a}同理可得。

本層需要學習的參數\Theta_{ARL}=\{v_{a},W_{a}|a \in A\}

 

 

Aspect Importance Estimation:

不同用戶對物品的各個方面關注度不同。一個用戶在看不同物品時,關注點會改變。同一物品,不同用戶有着不同的關注點。

所以,在學習用戶注重方面的時候,將上面得到的物品的表達作爲文檔考慮進去。反之亦然。

 

用戶表達P_{u}\in \mathbb{R}^{K\times h_{1}}(這個包括所有K個方面)和物品表達Q_{i}\in \mathbb{R}^{K\times h_{1}},得到一個方面級別的關聯矩陣S(aspect-level
affinity matrix )。

\\S=\phi (P_{u}W_{s}Q_{i}^{T})\\ \phi=max(0,x) \\S \in \mathbb{R}^_{K\times K}

這體現了方面級別的用戶和物品表達的關聯。如下圖。

 

 

然後利用S作爲一個特徵去預測用戶和物品在各個方面的重要性

用Pu算Hu,Qi算Hi。所以用戶和物品,兩個不同的用戶,兩個不同的物品,他們之間的H是不同的。

 

本層要學習的參數 \Theta_{AIE}=\{W_{s},W_{x},W_{y},v_{x},v_{y}\}

 

Prediction 層

給出任意用戶-物品對,可以推斷打分:

b是各種bias。

 

總結:所有要學習的參數:\Theta=\{\Theta_{ARL},\Theta_{AIE},b_{u},b_{i},b_{0}\}

優化:預訓練ARL的參數。

防止過擬合:Pu,a,Qi,a有ρ的概率隨機dropout,算bias時使用L2正則化。

 

測試

實驗設置:

d=300,|Du|=|Di|=500,c=3,h1=10,h2=50,ρ=0.5

比較MSE(均方誤差)

結果如下圖,吊打別人就對了。

 

論文的一些分析:

1. aspects numbers:K設置爲4-6比較好。

 

2.h1<15,h2=50

 

3.模型簡化了之後,沒有原來效果好。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章