召回:Mind

把与用户兴趣各种相关的信息都压缩成为一个表达向量。

使用类似聚类的方式来对用户的兴趣多峰分布进行表征. 那么如何高效地在神经网络内嵌入聚类过程, 将无监督的聚类过程结合到有监督的分类模型, 就是我们需要解决的关键问题. 在这里, 我们选择了使用动态路由(Dynamic Routing) 算法解决了这个问题.

Capsule 让人眼前一亮的地方是它提出了一种新的 "vector in, vector out" 的传递方案, 并且向量的输出可以看成是输入的某种聚类结果. 在胶囊网络中, 只要把一个向量当作一个整体来看,它就是一个"胶囊". 可以这样理解: 神经元就是标量, 胶囊就是向量. 每一个胶囊表示一个属性, 而胶囊的向量则表示这个属性的“标架”. 也就是说,我们以前只是用一个标量表示有没有这个特征 (比如有没有羽毛), 现在我们用一个向量来表示, 不仅仅表示有没有, 还表示“有什么样的” (比如有什么颜色、什么纹理的羽毛). 向量化表达特征, 可以说在对单个特征的表达上更丰富了.

胶囊网络中是怎么实现这样一种 "vector in, vector out" 的机制的呢? 答案就是通过动态路由算法. 

其中, S_ij∈R^(N_h×N_l)是需要学习的双线性映射矩阵, 它的作用可以理解成为每个上层胶囊生成不同的映射空间, 达到表征不同属性的目的.

由于上层胶囊向量的长度用于代表该胶囊的激活程度, 可使用非线性的激活函数 squash 将上层胶囊的输入向量进行压缩得到上层胶囊的输出 →c^h_j:

这里有个有趣的地方, 即路由系数 b_ij的计算需要使用到上层胶囊的输出  →c^h_j:, 而  →c^h_j: 的计算反过来又需要用到 b_ij,虽然无法直接得到解析解, 但是通过迭代法, 从一个初始的估计出发逐步得到一系列近似解, 我们可以逼近这个最优数值. 动态路由就是从一个初始给定的全0 b^0_ij 开始, 一步步地迭代得到 b^k_ij, 最终得到上层胶囊的输出 →c^h_j.

B2I Dynamic Routing

在 MIND 中, 我们使用了 Dynamic Routing 实现了Multi-Interest Extractor Layer, 达到对用户行为进行聚合, 抽取用户兴趣点的目的. 但在原始的算法上, 我们做了几处适配.

  • 使用共享的双线性映射矩阵 SS. 对所有行为向量以及所有生成的兴趣向量使用共享的映射矩阵, 保证生成的兴趣向量处于相同的空间.

  • 随机初始化 b^0_ij∼N(0,σ^2) 类似 K-Means 聚类的初始化方法, 保证生成不同的初始聚类中心.

  • 根据用户行为的数目动态调整兴趣个数. 当用户行为丰富时, 生成较多的兴趣中心, 当用户行为较少时, 生成较少的兴趣中心.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值