https://blog.tensorflowcn.cn/2020/09/introduction-to-tflite-on-device-recommendation.html
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5BMVPH54Ew1ruG_-Aj__N4daZwh8pPLmgtwBLPDyF8Fu0tBFDE4X7FT1In-nP_rEL3-vb6X7ZLYTcOf9pQK4rCGkuebq33Q0978WjA3NXAr76IldId7K_hXcKJoF7QzEiblcDSpNLY_A/s1600/model.png
作者:Ellie Zhou、Tian Lin、Cong Li、Shuangfeng Li 和 Sushant Prakash
引言和动机
我们很高兴能
开源 TFLite 设备端推荐任务的端到端解决方案。我们邀请开发者使用我们的解决方案构建设备端模型,该解决方案提供个性化、低延迟和高质量的推荐,同时保护用户的隐私。
生成个性化的高质量推荐对于许多现实世界中的应用程序至关重要,例如音乐、视频、商品、应用程序、新闻等。目前,典型的推荐系统完全在服务器端构建,包括收集用户活动日志,使用收集的日志训练推荐模型,以及提供推荐模型服务。
虽然纯服务器端的推荐系统已被证明是强大的,但我们探索并展示了一种更轻量级的方案,通过将推荐模型部署到设备上来提供推荐模型服务。我们证明了这种设备端推荐解决方案享有低延迟推理,比服务器端模型快几个数量级。它支持传统服务器端推荐系统无法实现的用户体验,例如更新排名和 UI 响应每个用户点击或交互。
此外,设备端模型推理尊重用户隐私,不会将用户数据发送到服务器进行预测,而是将所有必要的数据保存在设备上。可以通过公共数据或现有的代理数据集来训练模型,以避免为每个新的用例收集用户数据,这在我们的解决方案中得到了证明。对于设备端训练,我们会推荐有兴趣的读者使用
联邦学习 或
TFLite 模型个性化 作为替代方案。
请查看
我们的解决方案 包含以下组件
模型
推荐问题通常被表述为未来活动预测问题。因此,推荐模型经过训练,可以根据用户之前发生的活动预测用户的未来活动。我们发布的模型使用以下架构构建:
在上下文方面,每个用户活动(例如观看电影)都被嵌入到一个嵌入向量中。编码器将来自过去用户活动的嵌入向量聚合在一起,以生成上下文嵌入。我们支持三种不同类型的编码器
- 词袋:活动嵌入被简单地平均。
- CNN:将一维卷积应用于活动嵌入,然后进行最大池化。
- RNN:将 LSTM 应用于活动嵌入。
在标签方面,标签项(例如用户观看或感兴趣的下一部电影)被视为“正”,而所有其他项目(例如用户未观看的所有其他电影)通过负采样被视为“负”。正标签和负标签都被嵌入,点积将上下文嵌入结合起来生成 logits,并馈送到 softmax 交叉熵损失。将来将支持标签不是二元的其他建模情况。训练后,模型可以导出并部署到设备上以提供服务。我们采用 top-K 推荐,它只是上下文嵌入和所有标签嵌入之间 K 个最高 logits。
示例
为了演示设备端推荐模型的质量和用户体验,我们使用
MovieLens 数据集训练了一个电影推荐模型示例,并开发了一个演示应用程序。(模型和应用程序仅供演示目的。)MovieLens 1M 数据集包含 6039 个用户对 3951 部电影的评分,每个用户只对电影的一小部分评分。为了简化起见,我们忽略了评分分数,并训练了一个模型来预测给定 N 部先前电影的情况下,哪些电影将被评分,其中 N 被称为
历史长度。
模型在所有三种编码器上的表现,以及不同的历史长度,如下所示:
我们可以发现,所有模型都取得了很高的召回率,而 CNN 和 RNN 模型在较长的历史长度下通常表现更好。在实践中,开发人员可以进行不同的历史长度和编码器类型的实验,并找出最适合他们要解决的特定推荐问题的类型。
我们想强调的是,所有发布的设备端模型的推理延迟都非常低。例如,对于我们与演示应用程序集成的 N=10 的 CNN 模型,在 Pixel 4 手机上的推理延迟仅为
0.05 毫秒(根据我们的实验)。正如引言中所述,如此低的延迟允许开发对手机上每个用户交互的即时且流畅的响应,正如我们的应用程序所展示的那样。
未来工作
我们欢迎各种扩展和贡献。目前开源的模型不支持使用多个特征列来表示每个用户的活动。在
下一个版本 中,我们将支持多个特征作为活动表示。此外,我们正在计划更高级的用户编码器,例如基于 Transformer 的编码器(Vaswani,A. 等人,2017 年)。
参考资料
Vaswani,A. 等人。“注意力是你所需要的一切。arXiv 2017。”arXiv 预印本 arXiv:1706.03762 (2017),
https://arxiv.org/abs/1706.03762。