查看原文
其他

从 Bert 到 LLM:360 广告推荐业务中语言模型的应用探索

唐燕琳 DataFunSummit
2024-09-11

导读 今天分享 360 广告推荐业务中从 BERT 到 LLM 的语言模型应用探索,主要侧重工业界实际业务场景使用的角度,讨论语言模型在推荐系统的发展和应用。本次分享分为四部分:第一部分介绍 360 广告推荐业务的背景及为何使用语言模型的需求。第二部分分析语言模型在推荐系统中各算法的适用场景。第三部分介绍我们在广告业务场景中从 2021 年起的一系列语言模型应用实践。第四部分为总结和展望。

主要内容包括以下几个部分:

1. 广告推荐业务的需求

2. 语言模型如何助力推荐系统

3. 广告业务的应用探索

4. 总结与展望

分享嘉宾|唐燕琳 奇虎360 资深算法专家 

编辑整理|王甲君

内容校对|李瑶

出品社区|DataFun


01

广告推荐业务的需求

我们先来看广告推荐业务的需求。在 360 广告推荐中,广告会被投放到各个用户产品中,如搜索页和屏保、信息流等。用户在不同产品中表现出不同的兴趣,还有很多兴趣可能发生在外部世界。因此,我们的广告系统非常依赖用户兴趣,从而实现精准投放和最大化广告效益的目标。

在广告推荐系统中,广告主通过召回和排序(包括粗排、精排和重排)进行投放设置。排序模块不仅对广告进行 ECPM 排序,还根据模型预估的转化率进行广告出价和扣费,最终返回胜出广告进行展示。

这种架构和业务背景对推荐模型提出了以下要求。①数据方面需要基于用户行为兴趣和上下文对广告进行跨域推荐。②模型指标不仅限于排序指标,regression 指标也很重要,因为它影响广告出价和扣费,从而影响整体收益和效果。③系统方面,由于广告进行实时 RTB 竞价,用户注意力对广告至关重要,整体延时要求在 50 毫秒以内,留给模型的时间非常有限。

个性化精准投放依赖于用户兴趣建模,召回和排序环节都涉及用户特征建模。目前的用户信息标签难以满足建模需求,标签粒度与投放需求难对齐,且人工维护成本高。虽然可以利用用户浏览行为数据,但缺乏有效标签,用户意图隐式。直接将行为 ID 作为特征进行序列建模行为 id 过于稀疏,模型难以学习。此外,线上服务性能要求使得兴趣建模不能太复杂,而简单建模会导致信息损失。

为解决这些问题,我们将用户表征和业务指标预估解耦,构建一个全局通用的用户表征预训练模型。各下游任务通过微调等迁移方式使用该模型,从而在低延时的背景下实现复杂的用户兴趣建模。

我们的问题在于如何使用用户自然行为数据进行用户通用表征的建模。图嵌入和语言模型是两种较合适的方式,但由于用户关系隐式,边构建困难,新用户难以通过增量训练获取,因此图嵌入不适用。语言模型更适合,它使用 Transformer 建模用户兴趣,更适合大规模的时序数据。

02

语言模型如何助力推荐系统

接下来是语言模型在推荐系统中的应用演化,各个算法的适用场景,以及有哪些算法可以应用到广告推荐业务的场景。整体的发展脉络以 2017 年 transformer 问世为起点,分为 Pre-trained Language Model (PLM) 和 Large Language Model (LLM) 两个阶段。PLM 采用预训练加微调的范式,更擅长文本理解和表示,模型结构包括 encode only、decode only、以及 encode 和 decode。LLM 多采用 decode only 方式,使用更多数据和算力,擅长生成任务,并具备知识推理能力。

这两个阶段在推荐系统中的应用分为三个方向:特征提取编码、推荐预测和行为序列建模(还有一些未涉及的方向如 agent,不在讨论范围内)。第一个方向是用于文本内容的特征提取和编码,利用语言模型引入外部知识,解决冷启动问题。第二个方向是直接或协助进行推荐预测,借助语言理解和推理能力提升推荐效果,主要挑战包括推理成本和语义空间与协同空间的对齐。第三个方向是通过训练范式直接建模用户行为,在行为维度挖掘 scaling law。由于行为空间远大于语言单词,面临更大挑战。

特征提取编码和推荐预测在两个阶段有相似之处,但行为序列建模差异较大。接下来我们将重点介绍红框中的业界工作,并在广告推荐业务中根据这个发展历程进行应用和探索。

首先介绍 PLM 阶段,借鉴了 BERT 模型对用户行为建模。阿里在 2019 年提出 BERT4Rec,将 item 看作 token,通过 transformer encoder 预测被 mask 的 item 以学习用户兴趣。在推理时,通过 mask 最后一个 item 来做预测。由于用户行为较文本单词更随机,采用双向 attention 结构捕捉上下文信息。实验数据表明,在行为维度上,双向结构优于单向结构,NDCG 能提升两个点以上。

在我们的场景中,这种方式有明显局限性。第一,item 字典动态变化,可能出现 OOD(Out-Of-Distribution,即分布外问题)。第二,行为数据长尾现象明显,行为数据更稀疏,模型难以收敛。为解决这些问题,有人提出了 ID 和 text 同时建模的 S^3-Rec 方法,及只使用文本的 Recformer 方法。Recformer 通过预测 masked token 学习语义信息,同时建模 item 位置信息,利用 item 对比学习来学习协同信息,将语言理解和商品推荐联合训练。

这类方法在推理计算量上比 LLM 少很多,因此在部分场景下可直接用于推荐。在低延时场景中,可以通过构建用户和 item 表征用于召回和排序。

接下来介绍 LLM 用于特征提取和编码。华为的 KAR 方法前面已经介绍过,我做个简单总结。首先利用多模态构造内容关键因素,将这些因素加入生成用户信息编号和物品事实知识的提示中,输入大语言模型,得到用户和物品的画像信息,再输入到 knowledge encoder 中。这里使用了相对较小的语言模型,比如 BERT 来做 encoder,得到用户和物品的语义表示。然后通过 MOE 模块进行知识适配,将其作为额外特征加入推荐模型。这种方式适用于文本表示特征提取,对线上延时几乎没有影响,工业界易于应用。

在这种方式中,LLM 和 BERT 被用来分两步进行特征编码,可能导致信息损失。那么,能否直接用 LLM 进行特征编码呢?

小红书的 NoteLLM 在这个方向做了一些创新。首先,它使用 Prompt 中的 [EMB] token 提取笔记 embedding,避免增加一些 fusion layer 使得语义空间因为压缩而发生变化。然后,通过笔记对比学习,基于共现笔记数据,将协同信息加入 LLM。此外,笔记的主题标签和类目生成与笔记 embedding 生成相似,都是总结和压缩笔记信息,因此将这两类任务联合训练,帮助学习更好的 embedding。这种方法简单有效,适用于提取 item 的 embedding 和内容标签提取。

如果仅将 LLM 用于特征提取和编码,实际上并未充分利用 LLM 在推荐系统中的潜力。那么,如果要用 LLM 帮助进行推荐预测,该如何操作呢?

LLM 刚出现时,很多使用没有微调或进行 instruction 微调的 LLM 通过提示词进行推荐,这需要大量优化提示词工作来提升推荐效果。常见的方式有两种:第一种,通过召回或其他推荐算法给定候选集,然后 LLM 对每个 item 打分排序。第二种,生成推荐物品,为了更好的效果,任务通常被拆解成多步进行。这种方法在工业界有明显局限性。①语义空间难以表示用户复杂的偏好关系,无法准确预估用户偏好的概率。②生成的物品不一定是真实存在的,需要映射回真实物品空间,通常采用物品语义相似度计算。③LLM 输入长度限制、高延时、幻觉问题等都是工业应用的阻碍。然而,这些探索对大模型在推荐中的应用非常有意义。既然直接用于推荐预测较困难,那么是否可以将语义空间信息注入协同推荐空间呢?

华为的 CTRL 工作在第一个阶段通过构造不同的提示词,将协同数据转化为文本数据,然后分别输入推荐模型和语义模型,得到语义向量和协同向量,并进行细粒度的对比学习,旨在将语义信息传递到推荐 embedding 中。在第二阶段,使用推荐模型进行监督学习,因为推荐模型的 embedding 已经包含语义信息,再加上推荐信号,可以得到较好的结果。

但在我们的业务场景中,这种方法有一些局限性。首先,语义空间难以表达 ID 特征,而广告推荐中有许多纯 ID 特征,如推广计划、推广组和广告 ID。其次,一般的转化率模型采用增量训练方式,如果是分阶段的增量训练,交替进行两个阶段可能会影响最终预估效果。然而,这个方法适用于某些低延时场景,不会增加线上计算复杂度。

Meta 提出的生成式推荐不同于 Bert4Rec,它融合了多种异质特征,建立了推荐系统的统一特征表示,并用 HSTU 框架进行生成式推荐,用于召回和排序。特征表示方面,它将 sparse 特征统一成时间序列,以用户行为为主时间线,将静态属性在最早出现的时间点插入主时间线,同时将 item 和 action 插入时间序列,实现行为和 target 的充分交叉,并对 item 进行多任务预测。

HSTU 框架的创新在于引入了新的attention 机制,抛弃了 Softmax Normalization 的操作,能更好地保留用户兴趣强度并能预估准值,解决了 ID 动态更新的流式训练问题。相比传统 transformer,HSTU 增加了 U(X) 单元,用于压缩用户长期历史行为,表示底层用户特征,并与 attention 生成的特征交叉,实现推荐系统中的特征交叉。

总之,HSTU 吸取了推荐系统中的 DIN 和 MOE 等思路,进行了适配,并进行了许多工程优化,使其性能比最新的 transformer 模型高出 15.2 倍,线上推理效率提升了 900 倍,成功应用于真实线上环境。最终的生成式推荐展示了大规模推荐系统同样适用 scaling law。图中蓝色表示 GRS 随算力增加的性能表现,红色的是传统推荐模型的性能,因此,我个人还是比较看好这个方向。

03

广告业务的应用推荐

在广告推荐业务中,我们在三个红框标注的方向上进行了探索和应用。基于广告推荐业务的背景介绍,我们希望利用用户行为,借鉴语言模型的训练范式,构建全局的用户通用表征。

对于建模来说,数据非常重要。我们分析行为和语言在天然属性上的差异,这会给建模带来新的挑战和难度。①行为更稀疏。上图中的行为分布统计图显示,行为的长尾现象非常严重,相比语言单词,模型学习难度更高。②相比有语法规范的文本,行为的随机性更强。用户浏览个性化页面时,点击内容的随机性较高,例如图中 BCD 三个口红的浏览顺序并无太多约束。③用户行为顺序也很重要。除了相对位置,时间也是关键维度。短时间内浏览财经新闻与每天连续浏览财经新闻,对用户画像的刻画差异很大。

我们整合了信息流、搜索等产品的用户浏览行为,构建了全局视角的用户行为序列。训练数据质量至关重要,因此我们从四个角度进行了数据清洗和分析。①数据冗余问题,根据来源和时间对 session 内的重复行为进行了去重合并,并赋予行为全局唯一 ID。②清理了低质量数据,包括导流 query 和爬虫用户数据,以及信息含量低的高熵行为。③针对长尾数据难学问题,进行了降维处理,并清除了长尾数据,因为这类数据不仅增加训练成本,还会对模型效果产生负面影响。④清理了头部数据中覆盖率超过 50% 的行为。最终,构建了一个包含 300 万个行为的词典和 120 亿个行为的训练数据集,确保模型能够较好地收敛。

在 2021 年初,我们借鉴了 BERT4Rec 的思想,目标是对用户表征进行建模。双向 attention 捕捉上下文信息,对我们来说更优。与 BERT4Rec 的主要差异有两点。第一,在 Embedding 层增加了时间信息,包括小时和星期两个维度。第二,除了预测 mask 行为的任务,还增加了用户兴趣标签分类任务进行联合训练,可以将广告场景中的业务经验融合到用户表征中。我们使用 30 天的用户行为构建用户表征,如何评估其效果呢?仅看预测下一个行为的 NDCG 指标不一定真实反映表征效果。在广告场景中,用户转换率是反映客户兴趣的关键指标,因此利用下游 CVR 预估模型的 GAUC 提升来评估表征质量。

如何表示用户?我们比较了 transformer 顶层隐层 pooling、顶部加底部隐层 pooling,以及顶层 [CLS] 的三种方式,发现顶层 [CLS] 效果最佳。这也说明 [CLS] 方式是对用户行为序列的学习,相比有信息折损的一些 pooling 方式,它的效果是更好的。最后,我们发现行为的稀疏性和随机性会导致模型泛化性较差。

行为的 sideinfo 信息能帮助模型更好地泛化。例如,两个 query“节假日出游”和“假期旅行”在模型中是不同的 ID,但通过语义信息可知它们是相似行为。因此,加入用户行为的 sideinfo 信息应能帮助模型泛化。

行为的 sideinfo 信息主要包括搜索 query 和信息流文章标题等。提取 sideinfo 的语义信息时,考虑到短文本和噪声问题,我们尝试了关键词提取,但效果不佳。于是引入先验知识,通过团队内的行业知识图谱进行关键词提取,再用 BERT 表示语义向量。将语义向量加入模型时,一种简单方法是用语义向量替换 ID 的 Embedding。我们将 BERT embedding 经过 fc 降维后替换 ID embedding。但这会在 sampled softmax 计算时遇到问题,因为每次 BP 后语义 embedding 都会变化,重新计算 embedding 矩阵不可行。因此,我们采用新的 sampled softmax 计算方式,只利用 batch 内的 embedding 进行负例采样,减少训练时间且不影响模型效果。最终发现将行为 ID 与语义信息 concat 效果更佳。

有了用户表征后,为方便下游业务使用,我们构建了一个基于版本管理的用户表征系统,实现全量和增量、离线和线上同步更新,每天更新千万用户表征。在下游业务应用中,我们发现一个问题,行为 ID 是动态变化的,模型每月更新版本,对于全量使用的 lookalike 应用不受影响,但 CVR 预估模型需增量训练,语义空间变化会导致需要重新训练,难以跟上。如果不更新用户表征,效果会因 OOD 问题下降。

我们可以只使用行为的描述文本,而不使用 ID。这不仅解决了 OOD 问题,还解决了行为词典扩大的性能训练问题,并改进了行为稀疏难学的问题。

借鉴 Recformer 的做法,我们在 embedding 层将关键词 token、token 位置、行为 segment 和时间 segment 四种 embedding 相加。为加快模型收敛,我们用 BERT embedding 作为初始化参数,通过 FC 映射到新空间。训练过程中,通过预测被 mask 的 token 和最后一个物品的对比学习,联合训练语言理解和序列推荐空间。这样,我们的词典从百万降到几十万,模型更稳定,更新周期更长且业务效果不下降。推荐系统一直保留 ID 信息,因为数据充分的 item 通过 ID 学到更多细粒度的信息。但这个案例显示,在某些场景下,去掉 ID 信息也能取得较好的效果。

我们的用户表征模型在四个线上场景应用中取得了显著效果,主要应用于各产品的转化率模型和人群召回等方向。到目前为止,我们的工作主要围绕构建用户行为数据,利用 transformer 学习语义和协同信息。那么,我们是否也可以利用现有的大语言模型来提升 CTR 和 CVR 的效果呢?

接下来的第二个工作从简单方向入手。LLM 利用丰富的知识推理得到更好的文本信息表征。在广告推荐中,最重要的文本信息是用户行为和广告本身的信息,特别是广告落地页的数据。由于落地页数据包含 OCR 等不规范数据,不适合直接用 LLM 编码,需要提取有价值的业务词。用户行为数据也有噪声,相比 ID 直接编码效果不佳。因此,我们利用 LLM 进行内容特征提取,通过业务标注数据微调 LLM,并用 Prompt 提取落地页业务关键词作为广告内容特征。这里展示一个业务词提示词的例子。另一个方面,我们曾用知识图谱提取用户行为关键实体,现在可以使用 LLM 提取关键词。在这两个场景中,我们有相似经验。

首先,LLM 微调的训练数据质量非常重要,我们用业务积累数据和人工标注数据。其次,微调后的 LLM 效果更好,未微调模型容易出现非高商词。第三对 LLM 给出的结果,我们根据业务逻辑进行相关性过滤,若大模型未给出答案,使用原方法生成结果。最后由于 LLM 性能延时高,和用户表征模型结果一样进行近实时提取并存入 KV 存储,线上直接读取 KV 缓存使用。这种方法在转化率预估模型上线后效果显著提升,特别是冷启动广告创意。

我们最后一个工作是升级用户表征模型为用户理解大模型。因为下游业务需要的不仅是 user embedding,还需要直接生成兴趣标签,适用于一些可解释的场景。使用用户行为文本生成兴趣标签的提示词,通过 LLM 生成兴趣标签。同时,用户表征模型包含语义和协同信息,可以生成 user embedding,但没有生成标签的能力。因此,我们希望将 user embedding 和用户兴趣标签生成空间对齐。

借鉴互信息最大化的方法,我们利用 infoNCE,通过最大化正样本对的相似性和最小化负样本对的相似性预估互信息。将用户表征模型的 CLS 向量输出和 LLM 隐层输出经过 MLP 层映射到相同维度进行对比学习,同时微调兴趣标签生成任务,使 LLM 能生成 user embedding 和兴趣标签,满足下游业务需求。希望这个用户理解大模型能更好地帮助商业化,实现个性化广告,让用户看到真正感兴趣的内容。

04

总结和展望

总结和展望。我们主要关注大语言模型在推荐系统中的工业应用方向。①推荐模型使用语言模型的训练范式,即使模型不大也会有收益。②利用微调过的 LLM 提取内容特征,增加业务有效性过滤,是一种简单有效的方法。③将 LLM 模型和推荐模型对齐,生成中间结果用于线上推荐模型。

展望未来方向:①我们看好 Meta 提出的生成式推荐,尽管需要强大的工程团队支持和优化,但可以用简单结构网络随算力增加而提升效果,类似 2016 年深度学习的爆发。②多模态推荐利用多模态数据互补性,提高推荐准确性和多样性。③通过交互式界面描述需求,改善交互体验,实现更精准的推荐。
以上就是本次分享的内容,谢谢大家。


分享嘉宾

INTRODUCTION


唐燕琳

奇虎360

资深算法专家

毕业于浙江大学,在奇虎 360 负责广告算法相关工作,专注于智能创意、商品推荐和 oCPX 效果广告等算法方向。

活动推荐


往期推荐


字节跳动系统智能运维实践 | DataFun大会分享回顾

实时智能全托管-云器Lakehouse重新定义多维数据分析

Blaze:SparkSQL Native算子优化在快手的深度优化及大规模应用实践

数据赋能实战:企业产品与业务的升级之道!

Spark 内核的设计原理

LLM+Data:大模型在大数据领域应用新范式

信贷场景广告投放优化实践

模型赋能下的数据安全合规管理

TCHouse-C 实时数据更新的技术选型与工程实践

LLM+RAG:大模型真实落地应用范式探索

点个在看你最好看

SPRING HAS ARRIVED

继续滑动看下一个
DataFunSummit
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存