Multi-Interest Network with Dynamic Routing for Recommendation at Tmall
多兴趣动态路由,出自一直在学术前沿的阿里:https://arxiv.org/pdf/1904.08030.pdf 。

推荐系统中默认用户的历史行为代表着用户的兴趣,而传统的Embedding方式会用DNN把用户特征固定成一个低维向量,不能很好的捕捉到用户动态的,多方面丰富的兴趣特征。所以DIN方法采用自注意力,使同一个用户与不同的item预测时用户产生的Embedding都不一样,即先会计算当前item和用户历史item之间的相似度,然后加权用户的历史记录得到用户的兴趣Embedding特征,最后通过sigmoid预测CTR,只是这种计算速度比较慢,只能在精排阶段使用较好。

而这篇论文MIND的主要任务则是从另一个角度来看问题:既然使用一个向量表达用户多样兴趣有困难,那么为什么不使用一组向量呢?

而能够表示一组的模型,胶囊网络(Capsule Network)就十分合适了。整个MIND的网络结构如上图,做左边是用户的其他特征如基础画像属性组成(id,age,gender等concat得到特征),中间的是用户的历史行为item(由id,类别,品牌做avg pooling得到特征),这两部分最后一起表示用户的特征,然后最右边的是label,即要预测的目标item。所有的部分都会先经过一个Embedding,然后用户历史行为数据的处理就是MIND的核心:Multi-Intereset Extractor layer。

Multi-Intereset Extractor layer
原先的Capsule Network是为了解决传统的CNN中只能编码全局的图像特征,而无法编码局部特征的orientation(如组件,方向,旋转等等),所以胶囊网络把原先输入NN的标量变成一组向量,然后对这组向量进行仿射变换、求加权和,非线性激活函数等等,博主以前整理过就不再赘述。对应着动态路由算法,MIND的伪代码如下:

首先输入是用户行为向量eie_iei(每个历史item都是用户的行为胶囊),迭代次数r和兴趣胶囊个数K。
最后的输出为Ku′K'_uKu个兴趣胶囊。

  • 用户兴趣胶囊数量不是固定的,每个用户的兴趣不一样,所以兴趣胶囊数量也不一致,所以首先计算用户的兴趣胶囊数目,至少有一个兴趣,且不要多于log_2(|I_u|)的数量:Ku′=max(1,min(K,log2(∣Iu∣)))K'_u=max(1,min(K,log_2(|I_u|)))Ku=max(1,min(K,log2(Iu)))
  • 然后对每个胶囊进行随机初始化。这里是因为整个MIND将原先胶囊网络的仿射矩阵变为一个共享的矩阵了,即从m*n个(以前低级胶囊和高级胶囊的每一个之间都会有连接)变为1个,原因1用户交互过的item数目是不同的,使用共享的变换矩阵可以做到以不变应万变,2减少了模型的参数。所以此时不能再为0而是需要随机初始化一下。
  • 然后进入一个迭代过程中。所有的低级行为胶囊升级为高级兴趣胶囊,这个变化和普通胶囊网络一致。
  • 最后便得到了有关用户的多个兴趣胶囊特征

Label-aware Attention
得到兴趣特征之后,兴趣特征会个原用户的画像特征做concat一起组成用户特征,这里还有一个问题是用户特征有了一组,而目前的label只有一个,无法直接内积算相似度。所以提出了Label-aware Attention,这个东西实际上跟DIN是一样的,先用目标的label item对用户的每一组兴趣求权重(所谓label-aware),然后得到用户的加权和了,最后仍然是一个Embedding(这样就算前面计算得到每个用户的兴趣胶囊数目不一样,也不影响后面的计算)。
vu=Vusoftmax(pow(VTei,p))v_u=V_u softmax(pow(V^Te_i,p))vu=Vusoftmax(pow(VTei,p))

稍稍有一点不同的是,如模型图的右上角,K,V是用户矩阵,Q是目标label向量,K、Q相乘可以得到不同的用户特征对label的响应程度,然后有一个pow求幂次的函数,对这个相应程度做控制,如果p趋近于0,那么所有兴趣胶囊的权重都一样,如果p大于1,p越大的话,那么点积越大,权重就越大。p越大的话,模型迭代收敛速度会更快。最后SoftMax对结果进行归一化,在分配权重分数求加权和。

最后的损失函数就是求topk的质量啦。



A Capsule Network for Recommendation and Explaining What You Like and Dislike
SIGIR2019,胶囊网络来解释推荐结果,paper:https://arxiv.org/pdf/1907.00687.pdf 。

用户评论包含了丰富的语义,特别是有利于理解用户对项目特征的偏好。以往的方法主要是采用注意力机制来识别对评级预测重要的单词或方面。但是仍然很难理解用户在多大程度上是喜欢还是不喜欢这个item,为此,这篇文章提出了一种基于胶囊网络的用户评论评级预测模型,称为CARP。 模型框架图如上,分为三个部分Viewpoint and Aspect Extraction,Sentiment Capsules和Rating Prediction。

Viewpoint and Aspect Extraction
首先分别从用户和项目评论中提取观点。模型会从评论的word embedding e中编码上下文,即使用一个滑动窗口并用带ReLU的卷积进行编码得到c。同时并不是每一个词都与观点有关,所以需要一个self-attention对c重新分配权重:su,x,j=cj⋅σ(Wx,1cj+Wx,2qu,x+bx)s_{u,x,j}=c_j \cdot \sigma(W_{x,1}c_j+W_{x,2}q_{u,x}+b_x)su,x,j=cjσ(Wx,1cj+Wx,2qu,x+bx)其中w是权重,qu,xq_{u,x}qu,x是所有用户共享的观点,也是自动学习的,如图上的黄色小框。然后经过视点转换得到v:pu,x,j=Wpsu,x,jp_{u,x,j}=W_p s_{u,x,j}pu,x,j=Wpsu,x,jvu,x=∑jattnu,x,jpu,x,jv_{u,x}=\sum_j attn_{u,x,j} p_{u,x,j}vu,x=jattnu,x,jpu,x,jW是视点转换矩阵,是共享的参数。

然后我们需要识别用户在对item进行评分时应用的规则,所以将用户视点和项方面打包在一起,形成一个逻辑单元。即导出所有可能的逻辑单元的表示:gx,y=[(vu,x−ai,y)⊕(vu,x⊙ai,y))]g_{x,y}=[(v_{u,x}-a_{i,y}) ⊕ (v_{u,x} ⊙ a_{i,y}))]gx,y=[(vu,xai,y)(vu,xai,y))]

Sentiment Capsules
将所有可能的逻辑单元的表示输入情感胶囊,以判断那些逻辑是合理的,此外,我们的目标是根据什么信息逻辑单元来推断用户是否喜欢和不喜欢一个项目,以及在多大程度上。

所以作者使用了两类胶囊,正胶囊(积极胶囊)和负胶囊(消极胶囊)。 同时设计了一种双协议路由机制来共同识别积极或者消极情绪。并由这两个情感胶囊产生的输出向量编码用户喜欢或不喜欢某item的程度(胶囊的长度直接就可以表明这一点了)。计算伪代码如下:

其实这个算法也没有特别大的改动,可以理解做了两次的胶囊网络,一个胶囊判断积极的情绪,一个胶囊判断消极的情绪。最后使用得到的向量预测评分就可以了。

总结这篇论文的创新点主要有:

  • 使用了用户观点、项目和情感三点来推理
  • 积极,消极双胶囊
  • 可解释性。可以由胶囊的长度判断情绪的程度,能更好的理解用户的评分。

胶囊网络用于推荐系统问题(MIND,CARP)相关推荐

  1. 胶囊网络与计算机视觉教程 @CVPR 2019

    点击我爱计算机视觉标星,更快获取CVML新技术 去年胶囊网络几度占据科技前沿的头条. 什么是胶囊网络? 胶囊网络是针对卷积神经网络模型性能不足的问题而提出的. 深度学习之父 Hinton 和 Sabo ...

  2. Siamese Capsule Networks 翻译 (孪生胶囊网络)

    摘要 胶囊网络在事实上的基准计算机视觉数据集(例如MNIST,CIFAR和smallNORB)上显示出令人鼓舞的结果. 虽然,它们尚未在以下任务上进行测试:(1)所检测到的实体固有地具有更复杂的内部表 ...

  3. NAACL 2019开源论文:基于胶囊网络的知识图谱完善和个性化搜索

    作者丨王文博 学校丨哈尔滨工程大学硕士生 研究方向丨知识图谱.表示学习 动机 尽管大规模的知识图谱已经包含了数十亿级别的三元组数据,但是仍然不是十分完备的.其中仍然存在未被发掘出的真实有效的三元组.因 ...

  4. 论文阅读_胶囊网络CapsNet

    介绍 英文题目:Dynamic Routing Between Capsules 中文题目:胶囊之间的动态路由 论文地址:https://papers.nips.cc/paper/2017/file/ ...

  5. 翻译:揭开胶囊网络CapsNet的神秘面纱

    近年来,深度学习风靡全球.从自动驾驶汽车到预测性广告,它不可避免地成为我们日常生活的重要组成部分. 杰弗里·辛顿 (Geoffrey Hinton) 被认为是将深度学习带回主流并在很大程度上负责今天的 ...

  6. 用于智能机械故障诊断的鲁棒权值共享胶囊网络(学习记录)

    一.摘要 在实际工业应用中,机械的工作条件随着长期运行而变化,健康状况随着关键部件的退化而下降.当工作条件发生变化时,先前的诊断模型不能从一种情况推广到另一种情况.为了解决这一挑战性问题,提出了一种鲁 ...

  7. 胶囊网络为何如此热门?与卷积神经网络相比谁能更胜一筹?

    编译 | AI科技大本营 参与 |  孙士洁 编辑 |  明 明 [AI科技大本营按]胶囊网络是什么?胶囊网络怎么能克服卷积神经网络的缺点和不足?机器学习顾问AurélienGéron发表了自己的看法 ...

  8. Hinton再挖新坑:改进胶囊网络,融合Transformer神经场等研究

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 你还记 ...

  9. 多任务上实现SOTA,UBC、谷歌联合Hinton等提出3D点云的无监督胶囊网络

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨杜伟.小舟 来源丨机器之心 这是一种为 3D 点云提出的无监督胶囊架构,并且在 3D 点云重构. ...

最新文章

  1. 当当的羊毛又该剪了!官方活动基础上的额外优惠券,速领!
  2. VC++获取屏幕大小第二篇 物理大小GetDeviceCaps 上
  3. JSON / 格式详解
  4. 移动互联网下一步:“深度学习”配合大数据
  5. 能跳过节假日的闹钟_苏宁小Biu智能闹钟体验:聪明好看,别具风格的“小物件”...
  6. 调试经验——Excel函数矩阵相乘函数(MMULT)的应用 (Use of MMULT function in Excel)
  7. 2022新版H5拼团抽奖拆盲盒模式源码+功能强大
  8. 如何批量将 Excel 文档转为 Json 格式
  9. RGB HSV CMYK LAB颜色空间
  10. 干涉光强公式怎么计算_光强的计算公式是什么啊?
  11. CE+OD外挂制作实战 [提高篇]
  12. 淘宝Refrash_token签名错误的解决办法
  13. C 和 Java 没那么香了,Serverless 时代 Rust 即将称王?
  14. 发送短信验证码时触发天级流控Premit:10
  15. LPC1768-GPIO
  16. kindle使用入门
  17. 文件查重FindDupFile
  18. java对服务器文件操作、获取,删除,下载
  19. 一套完整的logo设计流程是怎样的
  20. 天语W700 adb驱动解决

热门文章

  1. .NET MAUI 性能提升
  2. oracle dimension的探究(维度)
  3. 免费存储项目对比(5款免费视频存储服务)
  4. JAVA编程学习记录(内部类)
  5. 样本类别分布不均衡 imbalance 问题的处理
  6. java安卓字体_Android中添加外部字体库和竖直排列字体
  7. 云南计算机网络技术排名,2017年云南大学排名
  8. android svg图片使用
  9. BUAA-2021春-数据结构-综合作业-文本摘要生成(Hash实现 + SIMD优化 终测最速)
  10. vue 获取当前路由地址