You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Tensorflow Recommenders(TFRS)实现内容推荐系统?求资源与技术指导

基于TensorFlow Recommenders(TFRS)构建内容推荐系统的方案与资源

一、核心适配思路

TFRS的双塔模型并非只能用于协同过滤,完全可以改造为内容推荐模式——无需用户交互数据,仅依靠目标用户的偏好特征与物品属性特征构建匹配任务:

  • 物品塔:以物品的结构化/非结构化属性(如类别、标签、文本描述等)为输入,通过DNN或预训练模型(如处理文本的BERT)生成物品嵌入向量。
  • 用户塔:若仅针对单个目标用户,直接将其偏好特征(如喜欢的类别、兴趣标签)作为固定输入生成用户嵌入;若面向多用户(无交互数据),则以每个用户的属性特征作为输入。
  • 检索任务改造:不用交互数据做正负样本,而是定义用户偏好与物品属性的匹配目标——比如将用户明确喜欢的物品设为正样本,随机选取其他物品作为负样本;若无历史偏好,可先通过规则生成初始正样本再微调模型。

二、可落地实现步骤

  1. 数据预处理

    • 物品数据:提取所有特征,分类特征(如item_category)用StringLookup+Embedding处理,文本特征(如item_description)用TextVectorization转换为向量,数值特征直接归一化后输入。
    • 用户数据:提取目标用户的偏好特征,同样做编码处理,若只有单个用户,可将其特征固定为模型输入。
  2. 构建双塔模型示例

import tensorflow as tf
import tensorflow_recommenders as tfrs

# 物品特征处理与嵌入塔
class ItemTower(tf.keras.Model):
    def __init__(self, cat_feature_vocabs):
        super().__init__()
        # 分类特征处理器
        self.cat_processors = {
            feat: tf.keras.Sequential([
                tf.keras.layers.StringLookup(vocabulary=vocab, mask_token=None),
                tf.keras.layers.Embedding(len(vocab)+1, 16)
            ]) for feat, vocab in cat_feature_vocabs.items()
        }
        # 文本特征处理器(以物品描述为例)
        self.text_processor = tf.keras.Sequential([
            tf.keras.layers.TextVectorization(max_tokens=1000),
            tf.keras.layers.Embedding(1001, 32),
            tf.keras.layers.GlobalAveragePooling1D()
        ])
        # 特征融合层
        self.fusion = tf.keras.Sequential([
            tf.keras.layers.Dense(64, activation="relu"),
            tf.keras.layers.Dense(32)
        ])

    def call(self, inputs):
        embeddings = []
        # 拼接分类特征嵌入
        for feat, processor in self.cat_processors.items():
            embeddings.append(processor(inputs[feat]))
        # 添加文本特征嵌入
        text_emb = self.text_processor(inputs["item_desc"])
        embeddings.append(text_emb)
        # 融合生成最终物品嵌入
        concat_emb = tf.concat(embeddings, axis=1)
        return self.fusion(concat_emb)

# 用户特征处理与嵌入塔
class UserTower(tf.keras.Model):
    def __init__(self, user_cat_vocabs):
        super().__init__()
        self.cat_processors = {
            feat: tf.keras.Sequential([
                tf.keras.layers.StringLookup(vocabulary=vocab, mask_token=None),
                tf.keras.layers.Embedding(len(vocab)+1, 16)
            ]) for feat, vocab in user_cat_vocabs.items()
        }
        self.fusion = tf.keras.Sequential([
            tf.keras.layers.Dense(64, activation="relu"),
            tf.keras.layers.Dense(32)
        ])

    def call(self, inputs):
        embeddings = []
        for feat, processor in self.cat_processors.items():
            embeddings.append(processor(inputs[feat]))
        concat_emb = tf.concat(embeddings, axis=1)
        return self.fusion(concat_emb)

# 自定义内容推荐模型
class ContentRecommender(tfrs.models.Model):
    def __init__(self, user_tower, item_tower, item_dataset):
        super().__init__()
        self.user_tower = user_tower
        self.item_tower = item_tower
        # 定义检索任务,用物品数据集作为候选池
        self.retrieval_task = tfrs.tasks.Retrieval(
            metrics=tfrs.metrics.FactorizedTopK(
                candidates=item_dataset.batch(128).map(self.item_tower)
            )
        )

    def compute_loss(self, features, training=False):
        user_emb = self.user_tower(features["user_feats"])
        pos_item_emb = self.item_tower(features["pos_item_feats"])
        # 计算匹配损失
        return self.retrieval_task(user_emb, pos_item_emb)
  1. 训练与推理
    • 训练阶段:构造用户特征与正样本物品特征的配对数据,TFRS的Retrieval任务会自动采样负样本完成训练。
    • 推理阶段:将目标用户特征输入用户塔得到嵌入,与所有物品的嵌入计算余弦相似度,取TopN作为推荐结果。

三、必备前置知识

  • Keras基础:掌握tf.keras核心层(Embedding、Dense、TextVectorization等)的使用,理解模型构建与训练流程。
  • 特征工程:学会处理结构化(分类、数值)和非结构化(文本)特征的编码方法。
  • 推荐系统基础:理解基于内容推荐的核心逻辑——用户特征与物品特征的匹配,明确其与协同过滤的差异。
  • TFRS核心组件:熟悉tfrs.tasks.Retrieval、tfrs.metrics.FactorizedTopK的作用,理解双塔模型的匹配逻辑。

四、学习资源

  • TFRS官方文档:重点关注模型自定义、特征处理模块,虽然示例以协同过滤为主,但特征工程和模型构建逻辑可直接复用。
  • TensorFlow官方教程:深入学习tf.keras的特征预处理工具(如CategoryEncoding、TextVectorization),这是构建内容推荐的基础。
  • 经典书籍:《推荐系统实践》中基于内容推荐的章节,先理解核心逻辑,再结合TFRS完成落地。

内容的提问来源于stack exchange,提问作者Levan Gvalia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 05:54:10