前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快手在召回场景GPT范式的尝试

快手在召回场景GPT范式的尝试

作者头像
NewBeeNLP
发布2024-05-22 16:07:57
3181
发布2024-05-22 16:07:57
举报
文章被收录于专栏:NewBeeNLP

作者 | 丁炜杰 整理 | NewBeeNLP https://zhuanlan.zhihu.com/p/695506377

RecGPT: Generative Personalized Prompts for Sequential Recommendation via ChatGPT Training Paradigm

Highlights

  1. 快手2023年7月上线的工作,2024年4月投稿,序列推荐问题,在召回场景落地;
  2. 将序列推荐中的item_id视作token,仿照ChatGPT的预训练-微调范式得到模型;
  3. 相比传统的序列推荐,在自回归训练后,对序列做增广来微调,并结合这个增广方法,设计了二阶段的检索方法来融合两种检索结果;
  4. 在一个比较小、序列比较短的离线数据集上,相比基线在HR等离线指标有提升,在快手系统上线,有轻微的互动收益;
  5. 消融实验显示微调和两阶段检索方法都有收益;
  6. 实验数据集、实验指标、细节有较多未交代的,或者与基线论文没有严格对齐;

Problem

将ChatGPT类似的技术应用在序列推荐问题中。 形式化的说,是给定用户历史的交互序列,希望最大化序列下一个item的概率打分。

Related work

  1. 序列推荐:参考NLP,使用RNN/Transformer等结构,有GRU4Rec、SASRec、BERT4Rec等工作;
  2. LLM4Rec:近期新兴的范式,把推荐问题转换成一段自然语言描述,调用LLM来做推荐,有Chat-REC、GPT4Rec等工作,大部分是基于openAI的api的,没法基于item_id开展;

Approach

一共分为三个步骤/模块。

预训练:Pre-training auto-regressive generative model

  1. 朴素的自回归序列推荐,基于transfomer block,序列中的每个item与前文计算attention得到截止到该item为止的表示,要求能预测下一个item。
  2. 结合序列内的每个正样本,采样出对应的负样本集,binary交叉熵计算损失函数;

个性化微调:Personalized Prompt-tuning

作者认为,可以给每个人的序列,产生一些特殊的Prompt,来辅助训练;

  1. 基于预训练好的模型,在相邻两个item之间,做一轮item-id的插入,推理出最有可能成为下一个item的K个结果,得到一个新的扩展序列;
  2. 在新的序列下,要求能准确预测_实际的下一个item_,用negative log-likelihood计算损失函数;

两阶段召回:Inference-validating auto-regressive recall

  1. 把本来召回top K的问题,拆成了两个阶段,每个阶段得到一个user-emb,分别召回N+M=K个item作为最终结果;
  2. 一阶段召回N个:在扩展序列中,对最后一个item不扩展;
  3. 二阶段召回M个:N作为最后一个item的扩展项,拼接到序列尾部,再次召回M个;

Experiments

离线实验

  1. 用到了亚马逊Sports,Beauti,Toys三个数据集,以及Yelp数据集,用户规模3W,物品规模2w,序列长度10,30w条互动记录;
  2. 基线包括热门、SASRec、BERT4Rec等;
  3. 评估使用HR和NDCG,分别取5和10;
  4. 只使用预训练的方法,大约能跟SASRec打平,结合了个性化微调和两阶段召回后,相比SASRec方法大约有3~5%左右的提升;
  5. 消融实验显示
    • 个性化微调的辅助序列长度在1~3之间较好,太长了可能引入过多不相关序列,效果变差;
    • 两阶段检索的最佳超参,固定返回数量为10的情况下,N=9、8是最好的;
    • 如果在不加入个性化微调的情况下,强行打开两阶段检索,效果甚至更差;

在线实验

在快手场景,替换现有的ComiRec,跑了5天,评论+0.77%,转发+0.33%,视频播放+0.15%,关注和播放时长持平;

读后记

  1. 论文中没有交代的细节
    • 序列的具体特征,除了item-id还包括哪些side-info;
    • 第一步预训练时,具体的负样本采样方法;
    • 第一步预训练和第二步微调时,为何不使用相同的loss;
    • 微调阶段,是否冻结部分参数;
    • 两阶段检索的M和N,与第二步微调的辅助prompt长度K的关系;
    • 具体在快手的什么场景进行的线上实验;
    • 为何采用HR@5和HR@10这样偏短的召回序列评估,而不是对齐ComiRec的@20和@50;
    • 经典方法论文中提及的实验数据:SasRec,Dien,TWIN,ComicRec;
  2. 看知乎某专栏[1]的摘要,似乎是投在了DASFAA,The International Conference on Database Systems for Advanced Applications (DASFAA) is a leading international forum for discussing the latest research on database systems and advanced applications;
  3. 离线实验的数据集还是偏小的,召回典型数据集Amazon Books和Taobao没有用,最新发布的KuaiRec、KuaiRand等快手自身的数据集也没有用,序列平均长度10在当前的工业推荐系统里显然是不够看的;

References

  1. arxiv第一稿,2024.04.06第一次提交[2];

本文参考资料

[1]

知乎某专栏: https://zhuanlan.zhihu.com/p/694700684

[2]

arxiv第一稿,2024.04.06第一次提交: https://arxiv.org/pdf/2404.08675A

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NewBeeNLP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Highlights
  • Problem
  • Related work
  • Approach
    • 预训练:Pre-training auto-regressive generative model
      • 个性化微调:Personalized Prompt-tuning
        • 两阶段召回:Inference-validating auto-regressive recall
        • Experiments
          • 离线实验
            • 在线实验
            • 读后记
            • References
              • 本文参考资料
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档