一、概述

名称:Neural News Recommendation with Attentive Multi-View Learning
作者:Chuhan Wu, Fangzhao Wu, Mingxiao An, Jianqiang Huang, Yongfeng Huang, Xing Xie
文献类型:IJCAI19
年份:2019
源码网站:https://github.com/wuch15/IJCAI2019-NAML 作者主页:https://wuch15.github.io/
整理日期:2020年5月13日

二、主要解决问题

现有的新闻推荐系统通常只根据一种信息如标题来进行推荐。
=>使用多种信息来进行推荐。
=>新闻编码器+用户解码器。
=>新闻编码器是一个基于attention的multi-view学习模型,可以学习多种新闻表示形式(如标题、正文、主题分类等)。用户解码器是利用attention机制根据用户的浏览记录学习用户的表示。

三、解决思路

推荐系统论文笔记---Neural News Recommendation with Attentive Multi-View Learning

1、News Encoder

这一部分的功能是利用各种信息来学习新闻的表示,采用attention机制将各种信息看作是新闻的一个不同视角学习其共同表示。news encoder共有四个组成部分:

(1)title encoder:用于从新闻标题中学习到新闻的表示。

  • 第一层:word embedding:通过WeRV×D\mathbf{W}_e \in R^{V \times D},将新闻标题从单词序列[w1t,w2t,...,wMt][w^t_1, w^t_2, ..., w^t_M]转换为一个低维语义向量序列[e1t,e2t,...,eMt][\mathbf{e}^t_1,\mathbf{e}^t_2, ..., \mathbf{e}^t_M],其中M是新闻单词的个数,V是词汇量个数,D是embedding维度。
  • 第二层:CNN:通过CNN来学习单词间上下文的表示,第i个单词的上下文表示为:
    cit=ReLU(Ft×e(iK):(i+K)t+bt)\mathbf{c}^t_i = ReLU(\mathbf{F}_t \times \mathbf{e}^t_{(i-K):(i+K)} + \mathbf{b}_t)
    其中, e(iK):(i+K)t\mathbf{e}^t_{(i-K):(i+K)}是(i-K)到(i+K)的单词embedding的拼接,FtRNf×(2K+1)D\mathbf{F}_t \in R^{N_f \times (2K + 1)D}btRNf\mathbf{b}_t \in R^{N_f}是CNN的核函数和偏移量,NfN_f是CNN的个数,2K+1是他们的窗口大小。
    这一层的输出是单词上下文表示的序列:[c1t,c2t,...,cMt][\mathbf{c}^t_1, \mathbf{c}^t_2, ..., \mathbf{c}^t_M]
  • 第三层:word-level attention network:目的是选择出标题中重要的单词。第i个单词的attention权重αit\alpha^t_i计算如下:
    ait=qtTtanh(Vt×cit+vt)αit=exp(ait)j=1Mexp(ajt) a^t_i = \mathbf{q}^T_t tanh(\mathbf{V}_t \times \mathbf{c}^t_i + \mathbf{v}_t) \\ \alpha^t_i = \frac{exp(a^t_i)}{\sum^M_{j=1} exp(a^t_j)}
    其中,Vt\mathbf{V}_tvt\mathbf{v}_t是投影参数,qt\mathbf{q}_t是attention中的query向量。
  • 最终,新闻标题的表示形式为加权上下文表示:rt=j=1Mαjtcjt\mathbf{r}_t = \sum^M_{j=1}\alpha^t_j \mathbf{c}^t_j

(2)body encoder:用于从新闻正文中学习到新闻的表示。同title encoder类似。

  • 第一层:word embedding:同title encoder的word embedding层一致。通过WeRV×D\mathbf{W}_e \in R^{V \times D},正文的单词序列[w1b,w2b,...,wPb][w^b_1, w^b_2, ..., w^b_P]转换为一个低维向量序列[e1b,e2b,...,ePb][\mathbf{e}^b_1, \mathbf{e}^b_2, ..., \mathbf{e}^b_P],其中,P是正文的长度。
  • 第二层:CNN:从[e1b,e2b,...,ePb][\mathbf{e}^b_1, \mathbf{e}^b_2, ..., \mathbf{e}^b_P]中学习到上下文表示[c1b,c2b,...,cPb][\mathbf{c}^b_1, \mathbf{c}^b_2, ..., \mathbf{c}^b_P]
  • 第三层:attention network:目的是选择出正文中重要的单词。第i个单词的attention权重αib\alpha^b_i计算如下:
    aib=qbTtanh(Vb×cib+vb)αib=exp(aib)j=1Pexp(ajb) a^b_i = \mathbf{q}^T_b tanh(\mathbf{V}_b \times \mathbf{c}^b_i + \mathbf{v}_b) \\ \alpha^b_i = \frac{exp(a^b_i)}{\sum^P_{j=1} exp(a^b_j)}
    其中,Vb\mathbf{V}_bvb\mathbf{v}_b是投影参数,qb\mathbf{q}_b是attention中的query向量。
  • 最终,新闻正文的表示形式为加权上下文表示:rb=j=1Pαjbcjb\mathbf{r}_b = \sum^P_{j=1}\alpha^b_j \mathbf{c}^b_j

(3)category encoder:用于从新闻类别中学习到新闻的表示。
catogory encoder的输入是一级分类vcv_c的ID和二级分类vscv_{sc}的ID。category encoder有两层。

  • 第一层:分类ID embedding层。将离散的一级分类和二级分类ID转换到低维空间ec\mathbf{e}^cesc\mathbf{e}^{sc}
  • 第二层:dense层,获得一级分类和二级分类的表示:
    rc=ReLU(Vv×ec+vc)rsc=ReLU(Vs×esc+vs) \mathbf{r}^c = ReLU(\mathbf{V}_v \times \mathbf{e}^c + \mathbf{v}_c) \\ \mathbf{r}^{sc} = ReLU(\mathbf{V}_s \times \mathbf{e}^{sc} + \mathbf{v}_s)
    其中,Vc,vc,Vs,vs\mathbf{V}_c, \mathbf{v}_c, \mathbf{V}_s, \mathbf{v}_s是dense层的参数。

(4)attention pooling:利用attention机制来学习不同信息的权重。标题、正文、一级分类和二级分类的attention权重分别为αt,αb,αc,αsc\alpha_t, \alpha_b, \alpha_c, \alpha_{sc}αt\alpha_t计算如下(其余同理):
αt=qvTtanh(Uv×rt+uv)αt=exp(at)exp(at)+exp(ab)+exp(ac)+exp(asc) \alpha_t = \mathbf{q}^T_v tanh(\mathbf{U}_v \times \mathbf{r}^t + \mathbf{u}_v) \\ \alpha_t = \frac{exp(a_t)}{exp(a_t) + exp(a_b) + exp(a_c) + exp(a_{sc})}
其中,Uv\mathbf{U}_vuv\mathbf{u}_v是投影参数,qv\mathbf{q}_v是attention中的query向量。

  • news encoder最终的输出是加权的新闻表示形式:r=αcrc+αscrsc+αtrt+αbrb\mathbf{r} = \alpha_c \mathbf{r}^c + \alpha_{sc} \mathbf{r}^{sc} + \alpha_t \mathbf{r}^t + \alpha_b \mathbf{r}^b

2、User Encoder

这一部分的目的是从用户历史浏览记录中学习用户的表示。user encoder模块采用attention机制来学习各个浏览记录的权重。
用户浏览过的第i个新闻的attention权重是αin\alpha^n_i,计算如下:
ain=qnTtanh(Wn×ri+bn)αin=exp(ain)j=1Nexp(ajn) a^n_i = \mathbf{q}^T_n tanh(\mathbf{W}_n \times \mathbf{r}_i + \mathbf{b}_n) \\ \alpha^n_i = \frac{exp(a^n_i)}{\sum^N_{j=1}exp(a^n_j)}
其中,qn,Wn,bn\mathbf{q}_n, \mathbf{W}_n, \mathbf{b}_n是attention机制的参数。
最终,用户的表示为加权和:u=i=1Nαinri\mathbf{u} = \sum^N_{i=1} \alpha^n_i \mathbf{r}_i,N是浏览过的新闻总数。

3、Click Predictor

候选新闻DcD^c的表示为rc\mathbf{r}_c,用户u的表示为u。点击概率y^\hat{y}通过候选新闻和用户表示的内积得到:y^=uTrc\hat{y} = \mathbf{u}^T\mathbf{r}_c

4、Model Training

采用negative samlping技术来进行模型训练。用户浏览过的新闻作为正样本,在同一个session中随机选择K条用户没有点击过的新闻作为负样本,我们可以获得正样本的概率y^+\hat{y}^+和K个负样本的概率[y^1,y^2,...,y^K][\hat{y}^-_1,\hat{y}^-_2,...,\hat{y}^-_K]。推荐问题可以转变为K+1-分类问题,使用softmax对这些概率进行正则化得到正样本的后验点击概率:
pi=exp(y^i+)exp(y^i+)+j=1Kexp(y^i,j) p_i = \frac{exp(\hat{y}^+_i)}{exp(\hat{y}^+_i) + \sum^K_{j=1}exp(\hat{y}^-_{i,j})}
其中,y^+\hat{y}^+是第i个正样本的点击概率分数,y^i,j\hat{y}^-_{i,j}是同第i个正样本处于相同session的第j个负样本的点击概率分数。
最终得到损失函数为:
L=iSlog(pi)L = - \sum_{i \in S} log(p_i)
其中,S是正训练样本的集合。

四、实验结果

推荐系统论文笔记---Neural News Recommendation with Attentive Multi-View Learning

相关文章:

  • 2021-12-11
  • 2021-05-09
  • 2021-05-20
  • 2021-12-09
  • 2021-06-08
  • 2021-11-19
  • 2021-04-30
  • 2021-04-10
猜你喜欢
  • 2021-11-13
  • 2021-07-15
  • 2021-10-07
  • 2021-12-02
  • 2021-06-09
  • 2021-05-11
  • 2021-04-20
相关资源
相似解决方案