ScaNN 进行高效检索服务(TensorFlow 构建推荐系统)
深度与交叉网络(TensorFlow 构建推荐系统)
介绍
深度与交叉网络(DCN
)旨在有效地学习显式的、有边界的交叉特征,你已经知道大而稀疏的特征空间极难训练。通常我们执行特征工程,包括设计交叉特征,这是非常具有挑战性且效率低下的。虽然在这种情况下可以使用其它神经网络,但这并不是最有效的办法。深度与交叉网络是专门为应对这一挑战而设计的。在深入了解 DCN
之前,我们首先花一点时间回顾一下,什么是特征交叉?假设我们正在构建一个推荐系统来向客户销售搅拌机,那么我们客户过去的购买历史记录,例如购买的香蕉和购买的烹饪书籍或地理特征都是单一特征。如果一个人同时购买了香蕉和烹饪书籍,那么该客户将更有可能点击推荐的搅拌机。购买的香蕉和购买的烹饪书籍的组合被称为特征交叉,它提供了除单个特征之外附加交互信息。你可以添加更多交叉特征。在真实的推荐系统当中,我们通常拥有大而稀疏的特征空间,因此,在这种情况下识别有效的特征,通常需要执行特征工程或详尽的搜索,这是非常低效的。
上下文特征 & 多任务学习(TensorFlow 构建推荐系统)
上下文特征
为了提高模型的准确性,我们可以做的事情之一是利用上下文特征,有时称为 “辅助特征”。我们之前的例子并未包含上下文特征,而完全依赖于用户和项目 ID
。在推荐模型中,除 ID
之外的特征是否有用:
- 上下文的重要性:如果用户偏好在上下文和时间上相对平滑,则上下文特征可能不会提升模型的准确性。然而,如果用户偏好与上下文高度相关,则添加上下文将显着改进模型的准确性。例如,在决定是否推荐短片或电影时,星期几可能是一个重要特征:用户可能只有在一周内有时间观看短片内容,但可以在周末放松并欣赏完整的电影。类似地,查询时间戳可能在流行度动态建模中发挥重要作用:一部电影在发行时可能非常受欢迎,但之后很快就会衰退。相反,其他电影可能是常青树,让人重复地观看。
- 数据稀疏性:如果数据稀疏,使用非
ID
特征可能很关键。由于给定用户或项目的可用观察很少,模型可能难以估计每位用户或每个项目表示。为了构建准确的模型,必须使用项目类别、描述和图像等其他特征来帮助模型泛化到训练数据之外。这在冷启动情况下尤其重要,在冷启动情况下,某些项目或用户的可用数据相对较少。
排名模型(TensorFlow 构建推荐系统)
推荐系统通常由两个阶段组成:
- 检索阶段:负责从所有可能的候选者中选择数百个候选者的初始集合。检索模型的主要目标是有效地剔除用户不感兴趣的所有候选者。由于检索模型可能要处理数百万个候选者,因此它必须具有很高的计算效率。
- 排名阶段:获取检索模型的输出,并对它们进行微调以选择尽可能好的推荐。它的任务是将用户感兴趣的项目集缩小到可能的候选者的候选名单。
检索模型(TensorFlow 构建推荐系统)
TensorFlow Recommenders(TFRS)
是一个用于构建推荐(Recommender
)系统模型的库,在推荐(Recommender
)系统的整个构建流程 - 无论是数据准备、模型构建、训练、评估还是部署都可以起到很大的作用。TFRS
融合了多任务学习、特征交互建模和 TPU
训练的研究成果。推荐系统通常有多个组件来进行检索、排名和后期排名。
推荐系统通常由两个阶段组成:
- 检索阶段:负责从所有可能的候选者中选择数百个候选者的初始集合。检索模型的主要目标是有效地剔除用户不感兴趣的所有候选者。由于检索模型可能要处理数百万个候选者,因此它必须具有很高的计算效率。
- 排名阶段:获取检索模型的输出,并对它们进行微调以选择尽可能好的推荐。它的任务是将用户感兴趣的项目集缩小到可能的候选者的候选名单。
内容过滤 & 协同过滤(TensorFlow 构建推荐系统)
图像数据增强(KerasCV)
KerasCV
可以轻松组装最先进的工业级数据增强管道,用于图像分类和对象检测任务。KerasCV
提供了广泛的预处理层,可实现常见的数据增强技术。最有用的三个层是 keras_cv.layers.CutMix、keras_cv.layers.MixUp
和 keras_cv.layers.RandAugment
。这些层几乎用于所有图像分类流程。
图像分类(KerasCV)
图像分类是预测输入图像的分类标签的过程。虽然分类是一项相对简单的计算机视觉任务,但仍然由几个复杂的组件组成。幸运的是,KerasCV
提供了 API
来构建常用组件。本例中主要演示了 KerasCV
的模块化方法来解决三个复杂的图像分类问题:
- 使用预训练分类器进行推理。
- 微调预训练的骨干网络。
- 从头开始训练图像分类器。
文本生成(KerasNLP)
大语言模型非常流行。而这个大语言模型的核心是预测句子中的下一个单词或标记,这通常被称为 COCO-LM
预训练。大语言模型构建起来很复杂,而且从头开始训练的成本很高,幸运的是有经过预先训练的 LLM
可供使用。KerasNLP
提供了大量预训练检查点,从而可以实验 SOTA
模型,而无需自行训练。例如,你可以通过 from_preset
方法调用 GPT2CausalLM
加载 GPT-2
模型,除了 GPT-2
模型之外,还有许多其它预训练模型,例如 OPT、ALBERT、RoBeRTa
等。