首页 > 解决方案 > Tensorflow:如何查找和平均每个训练实例不同数量的嵌入向量,每个小批量有多个训练实例?

问题描述

在推荐系统设置中:假设我想学习使用受Youtube 推荐系统启发的方法根据用户过去的购买来预测未来的物品购买:

在此处输入图像描述

具体来说,假设我有一个可训练的基于内容的网络,它接收一个项目作为输入,并根据其内容返回该项目的嵌入。现在,假设每个用户过去购买了可变数量的商品(一些用户可能购买了 5 件商品,其他用户可能购买了 1 件,其他人可能购买了 10 件,一些异常值可能购买了 100 件,等等)。我想生成一个用户向量,一个候选项目向量,然后是一个用户项目匹配分数,如下所示:

  1. 我使用可训练的基于内容的网络将该用户购买的每个项目映射到其嵌入的项目向量
  2. 我计算所有嵌入项目向量的平均值(如图所示)
  3. 我在这个平均值之上应用了几个 ReLu 层,从而获得了一个用户向量
  4. 我使用与步骤 1 相同的可训练的基于内容的网络将候选项目(要推荐)映射到其嵌入的项目向量(这个网络的权重总是共享的,可以说是连体网络)
  5. 最后,我计算用户向量和候选项目向量之间的点积,在训练期间应用交叉熵损失等。

所以我的问题是关于如何使用 Tensorflow 实现嵌入查找和平均每个用户的可变数量的嵌入项目向量的技术细节。例如,考虑一个包含 100 个训练实例的小批量。mini-batch 中的每个训练实例可能由不同的用户组成,该用户过去购买的商品数量不同。虽然上下文不同,但我的问题与这个问题非常相似,但不幸的是,到目前为止还没有人回答这个问题。

标签: tensorflowembedding-lookup

解决方案


推荐阅读