用户多兴趣建模MIND
Posted zhiyong_will
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户多兴趣建模MIND相关的知识,希望对你有一定的参考价值。
1. 概述
在工业界,一个完整的推荐系统中通常包括两个阶段,分别为召回阶段和排序阶段。在召回阶段,根据用户的兴趣从海量的商品中去检索出用户(User)可能感兴趣的候选商品( Item),满足推荐相关性和多样性需求。在排序阶段,根据不同的目标,如CTR,CVR,时长等对候选出的商品进行打分。目前,对于用户兴趣的建模,通常是从用户的历史行为中挖掘出用户兴趣,以当前的深度学习模型为例,通常是将User的历史行为数据embedding到一个固定长度的向量中,以此表示该用户的兴趣。然而在实际环境中,一个用户的兴趣通常是多样的,使用单一固定长度的embedding向量难以刻画用户兴趣的多样性。Multi-Interest Network with Dynamic routing[1](MIND)用户多兴趣建模网络取代了原先的单一固定长度embedding向量,取而代之的是用户的多兴趣向量。在MIND中,主要的创新点在于:
- 通过Mulit-Interest Extractor Layer获取User的多个兴趣向量表达,并采用动态路由(Dynamic Routing)的方法自适应地将User历史行为聚合到User兴趣表达向量中;
- 通过Label-Aware Attention机制,指导网络学习到用户的多兴趣Embedding向量;
2. 算法原理
2.1. MIND模型的网络结构
MIND模型的网络结构如下图所示:
MIND的网络结构与Youtube的召回网络结构[2]基本一致,Youtube的召回网络结构如下图所示:
不同点主要是在多兴趣抽取层Mulit-Interest Extractor Layer和Label-Aware Attention机制。
2.2. Mulit-Interest Extractor Layer
多兴趣抽取层的目的是对用户历史行为的item抽取出多个兴趣向量表达,通常采用聚类的过程将用户的历史行为聚类到多个簇中,一个簇中的item比较靠近,该簇代表了用户兴趣的一个方面。在MIND中,为了实现这样的聚类过程,使用到了胶囊网络(Capsule Network)。
2.2.1. 胶囊网络(Capsule Network)
什么是胶囊网络(Capsule Network)呢?参照参考[3],对胶囊网络做简单介绍。对于一个普通的神经网络是由神经元组成,每个神经元中是一个具体的值,如下图的左侧图所示;而在胶囊网络中是由被称为Capsule的基本单元组成,与神经元不同的是Capsule中存储的是向量,如下图的右侧图所示。
在上图的胶囊网络中,蓝色的Capsule的输入是黄色的Capsule和绿色的Capsule的输出,分别为向量 v 1 v^1 v1和向量 v 2 v^2 v2,蓝色的Capsule的输出是向量 v v v。
2.2.2. 动态路由(Dynamic Routing)
在神经网络中,网络的权重 w 1 , w 2 , ⋯ , w n w_1,w_2,\\cdots ,w_n w1,w2,⋯,wn是在网络的backpropagation过程中学习到的。对于胶囊网络,其过程与神经网络有点不一样,借鉴参考[3]中的图,结合参考[1]中的实例,有如下的图:
假设存在两层的胶囊,当前的第 h h h层的胶囊如上图中的蓝色部分,其输入为第 l l l层,且上层的输出向量为 c → i l ∈ R N l × 1 \\overrightarrowc_i^l\\in \\mathbbR^N_l\\times 1 cil∈RNl×1,且 i ∈ 1 , ⋯ , m i\\in \\left\\1,\\cdots ,m \\right\\ i∈1,⋯,m,对应到第 h h h层的输出向量为 c → j h ∈ R N h × 1 \\overrightarrowc_j^h\\in \\mathbbR^N_h\\times 1 cjh∈RNh×1,且 j ∈ 1 , ⋯ , n j\\in \\left\\1,\\cdots ,n \\right\\ j∈1,⋯,n,在上图中,我们选取其中一个第 h h h层的输出向量 c → j h \\overrightarrowc_j^h cjh。 z → j h \\overrightarrowz_j^h zjh的计算过程如下:
z → j h = ∑ i = 1 m w i j S i j c → i l \\overrightarrowz_j^h=\\sum_i=1^mw_ijS_ij\\overrightarrowc_i^l zjh=i=1∑mwijSijcil
其中,矩阵 S i j ∈ R N h × N l S_ij\\in \\mathbbR^N_h\\times N_l Sij∈RNh×Nl是需要学习的参数,可通过网络的backpropagation过程学习,连接权重 w i j w_ij wij在胶囊网络中被称为coupling coefficients,不是在网络中学习得到的。最终通过一个非线性的squash函数得到最终的胶囊的输出向量 c → j h \\overrightarrowc_j^h cjh:
c → j h = s q u a s h ( z → j h ) = ∥ z → j h ∥ 2 1 + ∥ z → j h ∥ 2 z → j h ∥ z → j h ∥ \\overrightarrowc_j^h=squash\\left ( \\overrightarrowz_j^h \\right )=\\frac\\left\\|\\overrightarrowz_j^h \\right\\|^21+\\left\\|\\overrightarrowz_j^h \\right\\|^2\\frac\\overrightarrowz_j^h\\left\\|\\overrightarrowz_j^h \\right\\| cjh=squash(zjh)=1+ zjh 2 zjh 2 zjh zjh
Squash函数的作用是相当于对向量 z → j h \\overrightarrowz_j^h 以上是关于用户多兴趣建模MIND的主要内容,如果未能解决你的问题,请参考以下文章