基于森林的端到端的隐式反馈推荐方法与流程

文档序号:31338064发布日期:2022-08-31 09:20阅读:54来源:国知局

1.本发明涉及信息检索及推荐系统领域,具体地,涉及一种基于森林的端到端的隐式反馈推荐方法。


背景技术:

2.推荐系统在解决信息过载问题中起到了非常重要的作用,它能够帮助用户快速找到感兴趣的物品。根据用户反馈形式的不同,推荐系统可以被分为显式反馈推荐系统和隐式反馈推荐系统。当用户的反馈是打分行为时,即为显式反馈;当用户的反馈是点击、购买等行为时,即为隐式反馈。在实际场景中,后者会更加普遍。当前的推荐系统多使用简单的度量函数,例如内积、余弦相似度等来度量用户对商品的打分。这些简单的度量函数表达能力有限,从而限制了推荐系统的效果。为此,需要设计更为复杂和表达能力更强得打分模型,例如神经网络等。商品的推荐可转化为了针对这些简单度量函数的最近邻居搜索,索引结构(例如乘机量化、树形结构、图结构等)在解决该问题时得到了广泛的应用。这些索引结构有助于高效地寻找最近邻居搜索问题的近似最优解。如何将复杂的打分模型和索引结构相结合,设计一个高效的端到端的推荐模型是值得研究的一个问题。
3.围绕该研究问题,研究者们提出了一种基于树的方法,即构造一个二叉树,其中,树的叶子节点与商品一一对应,任何复杂的打分模型都可以与此树形结构相匹配。用户对商品的打分等价于用于用户对树的叶子节点的打分,用户对树的非叶子节点的打分可以理解为用户对该节点对应的子树所包含的叶子这类商品的打分。与用户交互过的商品所对应的叶子节点极其祖先节点可当作正样本,树上其余的节点可当作负样本。这时对打分模型和和树的表征的学习可以当成一个二分类问题进行训练以及进行树的更新。当树的表征和打分模型都训练好后,使用beam search方法从根节点开始搜索,最终返回所需要的叶子节点。
4.然而,在二分类的训练模式中,树上同一层的节点缺少比较,这会使得训练和搜索之间存在不一致。相比于在一棵树上进行搜索,在多棵树上搜索显然可以产生更多优质的候选解。为此,需要设计更合适的训练模式和索引结构来构造高效的推荐系统。


技术实现要素:

5.本发明的目的是提供一种基于森林的端到端的隐式反馈推荐方法,该方法提供的系统借助树和森林的索引结构,能够适用于任何先进的用户对商品的打分模型,能根据隐式反馈的数据为用户高效地给出推荐结果。
6.为了实现上述目的,本发明提供了一种基于森林的端到端的隐式反馈推荐方法,该方法包括:
7.用u={u1,u2,

,um}表示用户集合,i={i1,i2,

,in}表示商品集合,s(u,i)表示打分模型给出的用户u对商品i的打分;其中,s(
·

·
)为任意复杂的打分模型;用t表示一棵树,商品与树t的叶子节点一一对应,即π(i)=leafi表示商品i与叶子节点leafi对应;用bj
(π(i))表示叶子节点π(i)在第j层的祖先节点,并且,叶子节点在最底层的祖先节点记为该叶子节点本身,打分模型进一步地表示用户对树上的节点的打分;
8.步骤1、假定π固定,学习打分模型和树的表征用到的参数θ;
9.步骤2、固定打分模型s(
·

·
)和树的表征的参数,学习商品和叶子节点的映射π;
10.步骤3、交替运行步骤1和步骤2,生成多棵树以及对应的打分模型,并且生成的树组成一个森林;在推荐时,用每棵树对应的打分模型在树上做beam search产生候选集,每个树上产生的候选集组成一个更大的候选集;用一个预先训练好的判别器来排序该候选集,选择靠前的top-k个商品为针对用户的推荐商品。
11.优选地,步骤1包括:
12.给定一个用户和商品的交互对(u,i)作为一个训练样本,此样本用于在树的每一层做一个多分类任务;在树的第j层,bj(π(i))为该层的正样本,其对应的标签为1,该层的其余节点为负样本,对应的标签为0,那么训练该层节点和打分模型的损失函数为多分类的交叉熵,即
[0013][0014]
其中,c(j)表示第j层节点的数目,表示第j层的第k个节点,表示树的第j层第k个节点的标签,且有
[0015][0016]
计算损失函数lj(u,i)时根据一个给定的分布q可重复采样m个负样本,即在计算时用到共m+1个样本,包括一个正样本和m个负样本,其中m是一个可调的超参数;此时,将这m+1个样本记作即第j层用到的训练节点;针对用户对这些训练节点的打分做出入下调整:
[0017][0018]
此时损失函数变为:
[0019][0020]
其中,这样在每层就只需要计算用户对m+1个节点的打分;
[0021]
如果每个负样本节点n被采样到的概率qn∝
exps(u,n),则有其中,θ是打分模型和树的表征所需要的参数,即此时变化后的损失函数的期望梯度等价于原始的损失函数的梯度;然而,要使得qn∝
exps(u,n)的计算量与原始损失函数的计算量相同,则需要计算用户对每层的所有节点的打分;按照如此
的训练方法,可以学习好打分模型以及树的表征需要用到的参数θ。
[0022]
优选地,步骤2包括:
[0023]
设定根节点所在的层为第0层,初始时根节点代表一个包含所有商品的集合;接着,把商品分配到第d层所在的节点,其每个节点所分的商品数目恰好是以该节点为根节点的子树所包含的叶子节点的数目,第d层每个节点分配到的商品不相交且并集恰好为根节点所表示商品集合,其中d是一个可调的超参数;由于第d层最多包含2d个节点,这样根节点所包含的商品最多可以分配给c≤2d个节点;定义商品i与第d层中的某个节点n的匹配程度如下:
[0024][0025]
其中,其中,表示所有与商品i有交互的用户商品对;对于商品i,可获得c个这样的匹配分数,那么将商品i分配给最大匹配分数所对应的节点,如果最大匹配分数所对应的节点分配得到的商品超过了限制,即该节点分配得到得的商品不能超过以该节点根节点的子树所包含的叶子节点的数目时,则将该商品分配给第二大匹配分数所对应的节点;如果此节点所分配得到的商品仍然超过限制,则将商品分配给第三大匹配分数所对应的节点,以次类推,直到将商品成功地分配给某个节点;这样,根节点所包含的全部商品分别分配给第d层上的节点,对于第d层上的每个节点,将其当作以此节点为根节点的子树,重复此步骤,直到恰好树的每个叶子节点分配到一个商品。
[0026]
根据上述技术方案,本发明首先将所有的商品类别排序,将属于同一类别的商品放在一起。如果一个商品不止属于一类,那么随机的给它一个它所属的类别。然后,将每个类别的商品循环的划分为规模相等的两部分,直到每部分只包含一个商品。如此,可以获得一个近似完全的二叉树,在此获得的树上微调,使得每个商品都在树的最底层。交替地训练打分模型s(
·

·
)和映射π(
·
),以此来提高推荐效果。
[0027]
本发明的其他特征和优点将在随后的具体实施方式部分予以详细说明。
具体实施方式
[0028]
以下对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
[0029]
本发明提供一种基于森林的端到端的隐式反馈推荐方法,该方法包括:
[0030]
用u={u1,u2,

,um}表示用户集合,i={i1,i2,

,in}表示商品集合,s(u,i)表示打分模型给出的用户u对商品i的打分;其中,s(
·

·
)为任意复杂的打分模型;用t表示一棵树,商品与树t的叶子节点一一对应,即π(i)=leafi表示商品i与叶子节点leafi对应;用bj(π(i))表示叶子节点π(i)在第j层的祖先节点,并且,叶子节点在最底层的祖先节点记为该叶子节点本身,打分模型进一步地表示用户对树上的节点的打分;
[0031]
同一类别的商品的更可能相似,在树中就更可能在相近的位置,所以按照如下方法生成初始的树和初始映射π:首先将所有的商品类别排序,将属于同一类别的商品放在一起。如果一个商品不止属于一类,那么随机的给它一个它所属的类别。然后将每个类别的商品循环的划分为规模相等的两部分,直到每部分只包含一个商品。如此,可以获得一个近似
完全的二叉树,在此获得的树上一些微调使得每个商品都在树的最底层。交替地训练打分模型s(
·
,
·
)和映射π(
·
),以此来提高推荐效果。
[0032]
具体的,上述训练过程包括:
[0033]
步骤1、假定π固定,学习打分模型和树的表征用到的参数θ;
[0034]
给定一个用户和商品的交互对(u,i)作为一个训练样本,此样本用于在树的每一层做一个多分类任务;在树的第j层,bj(π(i))为该层的正样本,其对应的标签为1,该层的其余节点为负样本,对应的标签为0,那么训练该层节点和打分模型的损失函数为多分类的交叉熵,即
[0035][0036]
其中,c(j)表示第j层节点的数目,表示第j层的第k个节点,表示树的第j层第k个节点的标签,且有
[0037][0038]
计算分母要求计算用户对该层的每个节点的打分,在大规模的推荐系统中这是十分耗时的。为了加快训练,计算损失函数lj(u,i)时不使用所有的负样本,而是根据一个给定的分布q可重复采样m个负样本。在计算损失函数时就用到共m+1个样本,即一个正样本和m个负样本,m是一个可调的超参数。此时,将这m+1个样本记作即第j层用到的训练节点;针对用户对这些训练节点的打分做出入下调整:
[0039][0040]
此时损失函数变为:
[0041][0042]
其中,这样在每层就只需要计算用户对m+1个节点的打分;
[0043]
理论上可以证明,如果每个负样本节点n被采样到的概率qn∝
exps(u,n),则有其中,θ是打分模型和树的表征所需要的参数,即此时变化后的损失函数的期望梯度等价于原始的损失函数的梯度;然而,要使得qn∝
exps(u,n)的计算量与原始损失函数的计算量相同,则需要计算用户对每层的所有节点的打分;所以在实际应用中,可以采样简单的分布q,例如每个负样本被采样到的概率是等价的,即均匀随机采样。已有的梯度下降算法例如sdg、adam等可以用来优化给定的损失函数。按照如此的训
练方法,可以学习好打分模型以及树的表征需要用到的参数θ。
[0044]
步骤2、固定打分模型s(
·
,
·
)和树的表征的参数,学习商品和叶子节点的映射π;
[0045]
设定根节点所在的层为第0层,初始时根节点代表一个包含所有商品的集合;接着,把商品分配到第d层所在的节点,其每个节点所分的商品数目恰好是以该节点为根节点的子树所包含的叶子节点的数目,第d层每个节点分配到的商品不相交且并集恰好为根节点所表示商品集合,其中d是一个可调的超参数;由于第d层最多包含2d个节点,这样根节点所包含的商品最多可以分配给c≤2d个节点;定义商品i与第d层中的某个节点n的匹配程度如下:
[0046][0047]
其中,其中,表示所有与商品i有交互的用户商品对;对于商品i,可获得c个这样的匹配分数,那么将商品i分配给最大匹配分数所对应的节点,如果最大匹配分数所对应的节点分配得到的商品超过了限制,即该节点分配得到得的商品不能超过以该节点根节点的子树所包含的叶子节点的数目时,则将该商品分配给第二大匹配分数所对应的节点;如果此节点所分配得到的商品仍然超过限制,则将商品分配给第三大匹配分数所对应的节点,以次类推,直到将商品成功地分配给某个节点;这样,根节点所包含的全部商品分别分配给第d层上的节点,对于第d层上的每个节点,将其当作以此节点为根节点的子树,重复此步骤,直到恰好树的每个叶子节点分配到一个商品。
[0048]
步骤3、交替地运行步骤1和步骤2,生成多棵树以及对应的打分模型,并且生成的树组成一个森林;在推荐时,用每棵树对应的打分模型在树上做beam search产生候选集,每个树上产生的候选集组成一个更大的候选集;用一个预先训练好的判别器来排序该候选集,选择靠前的top-k个商品为针对用户的推荐商品。
[0049]
由此可见,本发明提供的一种基于森林的端到端的隐式反馈推荐方法的同时也提出了一种针对隐式反馈的端到端的推荐系统。该推荐系统借助树和森林索引结构,能匹配任意复杂的打分模型。同时,推荐任务可以在商品规模的对数时间复杂度内给出推荐结果,推荐效率远高于对所有商品的直接排序推荐。还将打分模型和树的节点表征的学习当作一个多分类任务,从而使得树上同层节点之间能引入竞争,缩小了训练与搜索之间所存在的不一致。进一步的,该推荐系统用所有生成的树组成一个森林,使得该系统能够产生更多的优质的候选商品。
[0050]
综上所述,本发明提供的方法通过树形结构和森林建立商品的索引,融合任意复杂的打分模型,大大提高了推荐效率和推荐效果。
[0051]
以上详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
[0052]
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
[0053]
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本
发明的思想,其同样应当视为本发明所公开的内容。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1