用户多兴趣建模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中,主要的创新点在于:

  1. 通过Mulit-Interest Extractor Layer获取User的多个兴趣向量表达,并采用动态路由(Dynamic Routing)的方法自适应地将User历史行为聚合到User兴趣表达向量中;
  2. 通过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 c ilRNl×1,且 i ∈ 1 , ⋯   , m i\\in \\left\\1,\\cdots ,m \\right\\ i1,,m,对应到第 h h h层的输出向量为 c → j h ∈ R N h × 1 \\overrightarrowc_j^h\\in \\mathbbR^N_h\\times 1 c jhRNh×1,且 j ∈ 1 , ⋯   , n j\\in \\left\\1,\\cdots ,n \\right\\ j1,,n,在上图中,我们选取其中一个第 h h h层的输出向量 c → j h \\overrightarrowc_j^h c jh z → j h \\overrightarrowz_j^h z jh的计算过程如下:

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 z jh=i=1mwijSijc il

其中,矩阵 S i j ∈ R N h × N l S_ij\\in \\mathbbR^N_h\\times N_l SijRNh×Nl是需要学习的参数,可通过网络的backpropagation过程学习,连接权重 w i j w_ij wij在胶囊网络中被称为coupling coefficients,不是在网络中学习得到的。最终通过一个非线性的squash函数得到最终的胶囊的输出向量 c → j h \\overrightarrowc_j^h c jh

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\\| c jh=squash(z jh)=1+ z jh 2 z jh 2 z jh z jh

Squash函数的作用是相当于对向量 z → j h \\overrightarrowz_j^h 以上是关于用户多兴趣建模MIND的主要内容,如果未能解决你的问题,请参考以下文章

推荐系统论文阅读(二十二)-基于多兴趣向量召回的Mind

11.深度神经网络及其应用: 卷积神经网络, 胶囊网络, 生成对抗网络

RecallMIND:阿里多兴趣网络模型

胶囊图神经网络

胶囊网络(Capsule)学习笔记

胶囊网络(Capsule)学习笔记