TDM阅读笔记,在推荐系统的应用

《Learning Tree-based Deep Model for Recommender Systems》

问题

TDM阅读笔记,在推荐系统的应用_第1张图片
每个商品的 向量表示/embedding 随机初始化。

每个用户的历史信息的 向量表示/embedding 随机初始化。

我们输入深度模型这两个embedding,输出他们关联程度的得分。

也就是如果我们要得到 一个用户对所有商品 的每个得分,然后排序,取出得分最高几个。要遍历所有的商品算一遍,可能数百万个。

思路

TDM阅读笔记,在推荐系统的应用_第2张图片
将所有商品放到一颗树结构里。

树结构的举例:比如父节点是手机,则子节点就是苹果,华为,小米等。

检索阶段,从树根开始打分,以完全二叉树为例,如果取top1的商品的话,先计算根节点的左右节点,左边得分大则走左边,然后计算这个左子节点的两个子节点。

树的构建

以原始的商品关系为初始化。

有了每个商品的embedding之后,以完全二叉树为例,用kmeans聚类算法,将商品(embedding)先分成两堆,然后再把这两堆分成四堆。

深度模型训练

输入一个用户信息的embedding和一个 节点/商品 的embedding,输出是0或1对应负例和正例,对树的每个节点训练。

0代表该用户对这个 商品/节点 不感兴趣,1代表该用户对这个 商品/节点 感兴趣。也就是,0代表用户的历史信息和该商品关联程度低,1代表用户的历史信息和该商品关联程度高。

训练一个epoch感觉应该是个双重循环,即遍历一遍用户,每个用户遍历一遍树上的所有 节点/商品和虚拟非叶子节点

细节

leaf node即真实商品,非lead node是虚拟节点。

只用leaf node做kmeans成树,非lead node全部抛弃。

非leaf node在成树之后和lead node一起deep model训练,非leaf node的deep model训练纯为了检索用。(beam search,从上部往下检索,还是需要用中间节点的emb来计算当前层的topk的)

因为deep model训练非leaf node的时候会影响leaf node的embedding,所以需要迭代多次直至树结构不变。

你可能感兴趣的:(推荐系统,Information,Retrieval)