这个模型架构相当灵活。query 塔的输入可以是:用户 ID、搜索关键词或时间戳;对于 candidate 侧则有:电影片名、描述、梗概、主演名单。
在此示例中,我们在 query 塔仅使用用户 ID,在 candidate 塔仅使用电影片名。
我们先来准备数据。数据可从 TensorFlow Datasets 获取。
在数据集的所有可用特征中,最实用的是用户 ID 和电影片名。虽然 TFRS 有多种可选特征,但为简单起见,我们只使用这两项。
只使用用户 ID 和电影片名时,我们简单的双塔模型与典型的矩阵分解模型非常相似。我们需要使用以下内容进行构建:
-
一个用户塔,将用户 ID 转换为用户 embedding 向量(高维向量表示)。
-
一个电影塔,将电影片名转换为电影 embedding 向量。
-
一个损失函数,对于观看行为,最大化预测用户与电影的匹配度,而未观看的行为进行最小化。
TFRS 和 Keras 为实现这一目标提供了大量基本模块。我们可以从创建模型类开始。在方法中,我们设置一些超参数以及模型的主要组件。
第一个主要组件是用户模型:一组描述如何将原始用户特征转换为数字化用户表征的层。我们在这里使用 Keras 预处理层将用户 ID 转换为整数索引,然后将其映射到学习的 embedding 向量:
电影模型看起来很相似,能够将电影片名转换为 embedding 向量:
得到用户和电影模型后,就需要定义我们的目标和它的评估指标了。在 TFRS 中,可以通过 任务完成这一点(使用 in-batch softmax loss):
我们使用 方法查看模型的训练过程:
我们可以调用 Keras 的 fit 拟合此模型:
要对模型的推荐进行 Sanity-Check(合理性检验),我们可以使用 TFRS BruteForce 层。BruteForce 层以预先计算好的 candidate 的表征进行排序,允许我们对所有可能的 candidate 计算其所在 query-candidate 对的得分,并返回排名最靠前的电影 (query):
当然,BruteForce 层只适用于非常小的数据集。有关将 TFRS 与近似最邻近库 Annoy 结合使用的示例,请参阅我们的完整教程。
-
完整教程
https://tensorflow.google.cn/recommenders/examples/basic_retrieval#building_a_candidate_ann_index
我们希望这能让您对 TensorFlow Recommenders 的功能有所了解。要了解更多信息,请查看我们的教程或 API 参考。如果您想参与,一同推动 TensorFlow 推荐系统发展,请考虑贡献您的一份力量!我们还将在近期宣布成立 TensorFlow Recommendations 特殊兴趣小组 (SIG),欢迎大家就嵌入向量学习和分布式训练与应用等主题开展合作和做出贡献。敬请期待!
-
教程
https://tensorflow.google.cn/recommenders/examples/quickstart -
API 参考
https://tensorflow.google.cn/recommenders/api_docs/python/tfrs/all_symbols -
贡献您的一份力量
https://github.com/tensorflow/recommenders/
致谢
TensorFlow Recommenders 是 Google 以及其他组织的人员共同努力的成果。我们要感谢 Tiansheng Yao、Xinyang Yi、Ji Yang 对库的核心贡献,感谢 Lichan Hong 和 Ed Chi 的领导与指导。我们也要感谢 Zhe Zhao、Derek Cheng、Sagar Jain、Alexandre Passos、Francois Chollet、Sandeep Gupta、Eric Ni 等人对项目的建议和支持。
-
强化学习
https://research.google/pubs/pub47647/ -
更好的用户表征
https://research.google/pubs/pub47954/ -
公平性指标
https://research.google/pubs/pub48107/ -
Candidate Nomination Model
https://research.google/pubs/pub48840/ -
信息
https://tensorflow.google.cn/recommenders/examples/featurization -
多任务模型
https://tensorflow.google.cn/recommenders/examples/multitask -
TensorFlow Serving
https://tensorflow.google.cn/tfx/guide/serving -
MovieLens 数据集
https://grouplens.org/datasets/movielens/ -
双塔模型
https://research.google/pubs/pub48840/ -
TensorFlow Datasets
https://tensorflow.google.cn/datasets/catalog/movielens -
Keras 预处理层
https://keras.io/guides/preprocessing_layers/ -
in-batch softmax loss
https://research.google/pubs/pub48840/
了解更多请点击 “阅读原文” 访问 GitHub。

文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树OpenCV中的深度学习图像分类11584 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!