面向B站商业化场景的广告标题智能推荐

01.背景

大模型的发展也在不断改变广告主/代理商广告创编的过程,为了提高广告主的创作效率,提升广告主投放标题的质量,我们利用大语言模型技术以及B站商业数据,能够让广告主仅需要输入特定的关键词,即可以生成理论上无穷多的创意标题,并且这些标题能够贴合b站的画风,既提升效率也提升效果。本文将展开介绍我们在B站商业化场景下智能广告标题推荐的技术实践及产品化方案。

02.技术实践

2.1. 评估指标的确定

2.1.1. 出发点

为了量化模型迭代的方向和达成质量,我们需要一套完整的评估体系来评判模型产出的标题质量,从而帮助我们判断模型是否可行以及模型和数据后续的迭代方向。起初想用一个端到端的模型仅对标题是否好坏进行评判,但是好坏本身的指标制定会有偏差且较难定义,但是如果把这个目标进行解构,通过多且精细的指标来评估结果是较为合理的方式。

我们认为,适合在b站进行投放广告标题应该语义通顺、符合b站风格,同时满足具有普适意义的好标题的条件(包含精准表达关键词内容,可以吸引用户点击等),因此我们将评估指标分为流畅度、风格分和质量分(此处指是否符合好标题的定义)三个角度。

2.1.2. 评估指标的含义和训练细节

评估方法上我们用群体二分类分数代替了奖励评分,因为奖励模型的构建比较困难,我们没有足够的标注数据,而用二分类就会简化很多,评测多条标题做群体估计也是比较合理的。具体实施是每个指标各训练了一个二分类模型来进行打分。

流畅度

  • 出发点:作为用户体验最基础的属性,我们希望模型产出的结果不要出现不流畅的语句,所以该部分作为我们后续更新模型的准入条件,也是重要的评估指标之一。
  • 含义:评估生成标题的流畅程度,分数越高流畅度越高。
  • 训练方案:
  • 参考bert训练的思想,对通顺语句进行破坏操作构造负样本,同时收集模型产出的不流畅样本作为负样本。
  • 二分类模型训练数据:使用b站真实标题数据。正负样本对共5w,比例1:1。
  • 正样本采用b站真实标题数据;
  • 负样本生成逻辑:选取标题中任意两个非首尾的汉字,50%替换成常用汉字表中的其他汉字,25%丢弃,25%交换二者的位置。
  • 训练结果:随机抽取2000个样本作为测试集,准确率 auc均在0.98以上。

风格分

  • 出发点:我们在数据集整理时发现qwen zero-shot生成的标题和真实b站广告标题之间存在明显但是无法通过词频统计等显式说明的风格化差异。为验证以上观点,我们对b站原生标题与对应关键词使用qwen zero-shot生成的标题组合进行了kappa一致性检验(两人在不互通信息的情况下共同标注同一份数据,最后汇总标注结果),结果表明,原生标题能够很好的和qwen生成的标题进行区分,结论符合我们的假设,所以我们把是否与b站标题画风相近作为了标题评估指标之一。
  • 含义:评估生成的标题是否符合b站标题的画风,分数越高风格越像。
  • 训练方案:
  • 二分类模型训练数据:
  • 正样本采用b站真实投放的标题数据25k条;
  • 负样本采用qwen-72b生成的标题数据25k条;
  • 训练结果:随机抽取2000个样本作为测试集,准确率 auc均在0.95以上。

质量分

  • 出发点:最开始的设定是使用一个打分模型能够区分出好的标题和坏的标题,但面临的问题和其他主观分类问题类似,我们需要假设一个先验分布来符合我们对于好标题的后验分布,但是这个后验好坏(ctr高低or其他指标)其实都没有办法定义。参考nlp中关于qa任务中问题难度的定义方式,我们决定采用两个大模型联合标注的方式来进行对应的数据标注。为了明确标注标准,我们采用了如下方法进行质量分正负样本的构造:
  • 逆向工程:将人工筛选后的若干条高点击率标题(我们假定满足高点击率的标题是较好的标题)输入进GPT4,询问这则标题为什么能够收获高点击率。将GPT4的回答收集并进行主题分析并统计出现次数最高的特征,得到四个主要的特征:激发好奇心、情感共鸣、简洁有力、直击需求,以及若干个次要特征:紧迫感、挑战性、承诺。

  • 使用这些特征构造出大模型打标的prompt:

  • 对于同一个标题,使用两个大模型进行评估(GPT4和qwen-72b),当两个大模型对这个标题的打标都是优秀,则任务这个标题是优秀的,反之两者都觉得不优秀则标为负例,两者意见不一致时暂时不考虑这部分标题。
  • 含义:是否符合一个高质量标题的标准
  • 训练:
  • 二分类模型训练数据:上述方法构造的正负样本(均约1w对)。

  • 训练结果:随机抽取2000个样本作为测试集,准确率 auc均在0.88以上。

2.2. 数据集的构建与清洗

2.2.1. 数据构成

对于专有任务的SFT,为了防止灾难遗忘和模型坍塌,训练数据的配比通常为「专有任务数据: 商业领域数据: 开放域数据 = 1:1:N(5<=N<=10)」

  • 开放域数据集:开放域数据维持模型在各种非商业场景下的zero-shot能力,提供了基础的任务泛化能力。我们参考业界实践经验选择较高质量的中文开放域数据(若无中文版本则使用gpt4翻译成中文)。

样例:

  • B站商业域数据集:商业化域的数据可以加强模型在商业化相关任务上的泛化能力。我们基于稿件标题、视频ASR文本、搜索query及对应广告标题等构建B站商业域相关指令任务数据集。

    样例:

  • 标题生成专有任务数据集:专有任务数据集,进一步加强对于某个专有任务的遵从能力,不必再使In-Context Learning (ICL) 来引导。我们拉取高消耗创意的高点击率标题,通过LLM提取关键词并清洗,构造了『关键词 vs 生成标题 』与『关键词 vs 原标题 』 两种专有任务数据,在关键词提取时为了模仿用户行为,限制产出至多2个关键词、至多3个关键词和不限量关键词的数据。

    样例:

2.2.2. 数据清洗

业界反复强调在进行专有任务SFT时,最重要的就是高质量的训练数据,在精不在多。我们针对不同域的数据也分别进行了精细化的清洗。

对开放域 + 商业域数据利用下图所示的MoDS框架进行清洗,目前保留了开源预训练打分模型的高分样本:MoDS主要分为质量筛选(通过打分模型huggingface.co/OpenAssista... QA对进行质量打分,挑选高分)、多样性筛选(贪心选择语义差距最大的QA对)、必要性筛选三部分(贪心选择能对大模型造成最大loss的QA对)。

  • 由于专有数据集的数据较为珍贵和稀有,且我们挑选了高消耗的标题,构建数据的流程本质上规避了上述框架所要过滤的低质量问题,但为了更好地让模型学到更加泛化的任务,我们还是对专有数据进行了如下的清洗:
    • 量化数字替换:因需替换数字包含语义信息,无法使用正则处理。使用 Qwen-72B 进行量化数字替换,替换为数字通用符号X。
    • 后处理:由于上一步大模型输出有几率产生badcase,但是该部分数据需要极为细致的清洗,所以我们手工校验了存在数字替换的所有数据并保证数据的流畅性和通顺度,对输出数据进行规范后处理,避免模型训练数据出现较为严重的错误导致模型训练效果降低。

2.3. 对齐算法的探索及优化

2.3.1. SFT

我们首先通过SFT来完成模型对于业务逻辑和相关指令的学习,在最开始的训练阶段,我们通过不停的迭代训练数据取得了较大的效果提升,主要是由于前期的数据噪声较大,干扰较多,通过对整个数据清洗流程的完善,模型效果也反应了对应的迭代效果。当数据问题解决后,我们又通过增加sft阶段prompt指令的丰富程度和多样性(多组prompt表达同一任务) ,让模型学到更加泛化的任务表达来提升模型生成的能力,我们通过调整sft阶段的prompt组合提升了模型整体的鲁棒性和泛化性。

表1 SFT迭代结果

SFT结束之后,我们发现虽然在流畅度和风格化上都取得了较为好的效果,但是在质量分上,模型依旧有提升空间,且这部分刚好时与人类的偏好相关,这部分的业务和技术角度都把解决问题的办法指向了RLHF。但是由于常规基于强化学习的对齐工作周期较长成本较高且效果未必稳定,所以我们将研究中心放在了直接偏好对齐DPO及其相关方法。

2.3.2. DPO算法

直接偏好优化算法DPO (Direct Preference Optimization) 出自2023年5月的斯坦福大学研究院的论文《Direct Preference Optimization: Your Language Model is Secretly a Reward Model》,大概是2023-2024年最广为人知的RLHF的替代对齐方法了,通过一种巧妙的设计思路将强化学习的最大化奖励和转化为损失函数,使得可以直接基于监督学习进行训练。

DPO将偏好分数表示为LLM的概率分布,从而在训练阶段省略掉了用于估计偏好分数的reward model,直接通过最大似然估计对LLM本身进行优化,是当前实现最为简单的对齐方法之一。它将问题表述为使用人类偏好对数据集的分类任务,其中每一对都包含一个提示和两个可能的完成 (一个首选,一个不首选),DPO 最大化生成首选完成的概率并最小化生成非首选完成的概率。它不涉及多轮训练,也不需要训练Reward模型,将奖励函数表示为LLM的概率表达形式,在一个模型中完成梯度回传。

直接用人工标注的偏好数据对LLM进行pair-wise的偏好学习:

相关符号的解释:

2.3.3. 我们在DPO及其变种算法的探索及优化

DPO的变种算法近两年发展也非常迅速,我们一方面尝试了这些变种算法,另一方面也结合我们实际的业务情况进行了算法的改进。我们整个尝试路径如下,对齐算法迭代结果如表2所示。

表2 对齐算法迭代结果

  • 提升prompt信息密度优化DPO :在DPO对齐尝试的初期,我们遇到了所有业界学界使用DPO来完成单一任务学习所遇到的标准问题即模型收敛过快 ,且在短暂的学习过程中模型生成的内容面目全非,其中大部分人选择跳过DPO阶段,或者使用其它方式来绕过此类的问题。但是在我们的不断尝试中发现,该类问题仅出现在单一任务的场景中,在多指令场景下DPO则表现出正向的性能,所以我们通过解构分析多任务场景下的DPO指令与观察我们的DPO指令得到了非常重要的结论:由于我们SFT阶段与DPO阶段的prompt相对较长,且不同指令之间变化的仅有用户输入的行业信息与关键词,导致我们的指令构成虽然看起来很复杂但是在分布上却极其相近 ,所以DPO过程中极小的变动都会为结果带来极大的震荡,所以我们精简了我们DPO的输入,增加了prompt的信息密度,虽然收敛速度依旧较快,但是可以在有限的收敛中得到非常直观的指标提升,证明了我们方法的有效性,也为我们后续的对齐工作做了很重要的基础。
  • 引入IPO加入正则化进行优化:尽管DPO通过RTL-free的方法超越了RLHF,但它面临着过度拟合和需要大量正则化等约束,这可能会阻碍策略模型的有效性。为了解决这些限制,研究学者引入了IPO算法,该算法定义了一个MSE形式的loss,将偏好概率拟合成一个定值,本质上等效在DPO基础上增加了一个L2正则。表2中IPO的指标结果相比DPO有所提升。
  • 引入 KTO进行正负样本解耦:DPO在数据集构成上有一个非常大的弊端,导致无法进一步提升。就是它需要成对的正负样本,过于依赖人工标注。而且产品只是明确标出了badcase,将非负样本当作正样本不一定正确,模型一直正向学习自己产出的标题可能也会陷入质量和多样性的局限。所以我们使用了KTO这种进阶方法,虽然KTO和DPO最终形式有非常多相似的地方,但基于两种偏好的对齐方法有不同的复杂性。KTO是直接从KT前景理论更换参考点和价值函数得出的公式。KTO只需要单一偏好策略就能提高DPO方法的有效性,无需pair对数据,而且可以参照经验值调大负样本权重,保证模型下限。表2中的结果显示,KTO的质量分相比IPO进一步提升。
  • 创新地提出KTON,对KTO进行改进,严格优化负样本约束:虽然对齐阶段取得了很好的成绩,但我们在各阶段仍然发现了负样本收束异常的现象,最直观的结果就是导致模型在流畅度上虽然还是达到了准入标准但是有所下降(如表2所示,KTO的流畅度下降比较明显)。

这里用DPO Loss公式进行说明。

将加粗的第三项去掉就是DPO公式,第一项是模型出好答案的概率,第二项是模型出坏答案的概率,中间是个减号。理想情况下我们希望出好答案概率上升,出坏答案概率下降,loss稳步减小。但实际上还有一种情况就是模型出好答案和坏答案的概率都上升了,只不过第一项上升的幅度更大,导致loss仍然在正常减小,但在我们这个场景下负样本是最置信的准入标准,我们不希望负样本出任何问题。所以我们在Loss里面加了第三项作为惩罚项,坏答案的log ratio和第二项是颠倒过来的,正常优化时不会起作用,但是如果负样本异常收束了就会进行惩罚。最终模型也是在更严格的约束下取得了效果。如表2所示,质量分进一步提高,流畅度也提升到了准入门限0.96以上。

03. 产品入口

3.1. 基于关键词输入的标题生成

在创意创编流程中,用户为创意编写标题时会跳出如下弹窗,可以通过输入多个关键词生成标题,不满意时可以重复生成多次。

3.2. 引入标题联想提升消耗覆盖

在我们产品的迭代过程中,发现可能在标题生成的前置入口加入更为便捷的联想标题功能,会对用户的输入效率提升更为明显,并且在扩充标题库的时候也可以快速融入更新的内容以及更有讨论度的话题内容或者标题,这相比于迭代模型更加可控效果更加明显。产品设计形态如下。

我们通过已经有的模型以及b站历史标题信息衍生出千万级别的标题,并且根据用户的输入来进行智能的推荐,同时我们在联想标题的功能搭建上采用了ANN + ES双重召回逻辑的思路,在短词query输入时联想用户更想补全的信息,在长文本query输入时召回与输入内容语义更相近的内容,系统结构如下。

04.业务场景迭代

产品上线后,我们也与广告主/代理商持续交流他们的使用体验,根据他们的反馈和需求我们也进行了一些有效的产品逻辑以及生成效果的优化。

4.1. 无关键词输入的首屏效果优化

在最初的产品设计中,进入到标题推荐的弹窗界面时,默认是没有任何关键词输入的,如下图所示,此时首屏的生成内容由于没有任何信息输入导致生成效果欠佳,首屏采纳率仅为20.4%左右。

  • 优化一:我们进一步尝试从用户账号关联的商品信息中抽取商品实体词来优化模型,首屏采纳率提升到21.9%

  • 优化二:引入标题联想后,我们进一步去思考用户的使用习惯,更多的使用方式是在输入一些信息后在联想框中没有找到合适的标题,那么进入到标题生成的弹窗时,我们将用户输入的query信息带过来,基于这个query信息生成标题展示在首屏上。如下图所示,用户输入「新网球王子」但是在标题联想环节没有找到喜欢的标题,进入到推荐标题的弹窗后系统会默认先基于「新网球王子」这个关键词进行标题的生成,目前的首屏采纳率已经提升到45%

4.2. 如何提升标题新颖性

为了提升新颖性,我们主要有三方面优化:

  • 优化一:引入社区稿件标题,社区的稿件相比广告更容易紧跟最新热点,且更原生化

  • 优化二:每周基于当周新建的标题进行衍生生成,更新标题联想库

  • 优化三:引入梗词RAG,我们基于b站社区弹幕、评论、标题等数据,利用算法挖掘其中的高频热梗及热门标题,利用向量数据库对热梗词进行相似检索,同时利用训练后大模型的few-shot能力,对召回后的标题进行prompt填充,让生成的标题能够更精确的使用与之主题贴合的社区热点内容,从而生成更新颖、更具有卖点的标题

05.上线效果

经过我们两个Q的开发和持续优化,目前标题智能推荐日均消耗可达到XX万元,整体广告平台每日新建的标题数的10%由AIGC参与创建,在业界已经处于领先水平。

06.后续规划

6.1. 离线评估指标尽可能贴近线上投放指标

尽快我们花费了大量精力确定了一套离线评估的标准,可以用来衡量我们模型的迭代程度,但是离线评估指标与线上真实的投放指标还是存在一定gap。我们也在持续探索更为合理和鲁棒的离线评估指标,例如考虑引入离线CTR预估模型也作为离线评估的一个维度,在引导模型进行离线优化时也能对线上指标的提升有正向的帮助。

6.2. 提升生成多样性,探索如何适配广告系统 做"千人千面"的标题生成

多样性也是广告主/代理商所关注的一个方面,后续我们也会考虑纳入到我们的离线评估体系中。我们可以通过修改LLM模型的温度系数提升回答的多样性,也可以在推理时使用多prompt提升多样性。

此外,我们还可以结合广告推荐系统为广告主/代理商提供"千人千面"的标题生成暗投能力。生成模块可以针对不同的用户群体、不同的兴趣、不同的标题风格生成多样化的标题,再结合广告模型将其推送给最匹配的用户,实现匹配效率的最大化。

6.3.探索基于RAG/CoT的业务效果优化,缓解LLM模型时效性差和幻觉的问题

尽管经过Alignment后,LLM能够生成符合审核原则和用户偏好的内容,但由于输入侧信息的匮乏以及可能存在的歧义,使得其输出结果容易产生幻觉,往往包含与事实不符的信息。除此之外,一些非标准化的知识,比如时效性强、营销活动、特有信息等并不适合通过模型训练来让模型掌握,我们需要通过外部知识检索增强 (Retrieval Augmented Generation) 来输出这类知识的能力。

对于标题/文案生成,我们可以考虑利用商品信息等外部知识增强商品及广告的输入,还可以结合一些当下热梗爆梗生成更吸引用户的内容。

此外,针对线索类场景,我们还可以探索基于多轮对话的表单场景线索收集,结合RAG与客户进行多轮对话,解答客户问题,把客户信息结构化储存下来,促进客户填报信息。

此外,OpenAI最新发布的O1大模型体现了CoT的能力,虽然CoT本身对于我们的任务提升程度还是未知的,我们的SFT模型能否适应CoT的模式也是未知的,但是CoT本身代表了一种方式,可以在最小程度上取得一定的效果提升,如果结合RAG可能带来的收益更大,因为要处理的信息变多了,所以可能会一定程度上减少badcase出现的概率,提高模型的下限,也可以减少模型的幻觉。

6.4. 构建基于商业化数据的继续预训练能力 benchmark, 建设鲁棒的商业基座模型和评价准则

继续预训练

目前开源大模型对于商业业务理解非常有限,具体表现在对于常见商品、行业基础知识的Faithfulness和Factualness两个方面表现都不尽如人意,可能的原因是目前开源大模型使用的预训练数据中对于商业化数据的覆盖非常有限,这是由于预训练数据中最主要的数据集Common Crawl需要遵从爬虫协议,电商网站通常会禁止网络爬虫的访问,同时大量的商品、产品信息是以图上文案的形式展现的,这部分数据没有被公开数据集所覆盖。具体到B站商业域,数据又具有更多自身的特点,比如吸引二次元用户、宅男用户等的特定商业话术。因此,我们有必要基于B站商业域数据 + 外站商业域数据构建商业领域的继续预训练能力和基座模型,作为后续适配各种应用场景的起点。

B站商业benchmark

考虑到现有的一些评测标准不能很好的反应模型在商业域知识程度,构建一个B站商业域专用Benchmark是有必要的,可以有效评估预训练的效果。通用领域的Benchmark通常是事实类的问答,考虑到商业化的特殊场景,我们可以构建包含商业事实类---商业内容知识、商业事实类---商业内容理解、商业事实类---推理事实文案、商业营销类---商业意图理解、商业营销类---营销语言能力,商业营销类---商业知识体系方面的评估数据集。

6.5. 探索如何基于Agent高效适配新业务场景

即使我们有了商业化的基座模型,针对不同的业务场景还是需要进行大量的适配操作,尤其是专有任务数据集的构建和清洗上。业界已有基于智能体Agent进行数据工程的实践,我们可以探索如何通过Agent高效适配新业务,尽可能将任务适配流程自动化、平台化。

参考文献

  1. arxiv.org/pdf/2311.15... MoDS: Model-oriented Data Selection for Instruction Tuning.

  2. arxiv.org/pdf/2305.18... Direct Preference Optimization: Your Language Model is Secretly a Reward Model. 1. argilla.io/blog/mantis... RLHF and alternatives: IPO

  3. arxiv.org/pdf/2402.01... KTO: Model Alignment as Prospect Theoretic Optimization

  4. arxiv.org/pdf/2405.19... Preference Optimization: A Unified Approach to Online and Offline RLHF.

  5. GitHub - netease-youdao/QAnything: Question and Answer based on Anything.

-End-

作者丨争气尾流;Nevis;聆风;小爱;奕辰;牧川;李民;保保;星汉;雷七刀;​二师弟

相关推荐
m0_7431064621 分钟前
【论文笔记】多个大规模数据集上的SOTA绝对位姿回归方法:Reloc3r
论文阅读·深度学习·计算机视觉·3d·几何学
HyperAI超神经2 小时前
微软与腾讯技术交锋,TRELLIS引领3D生成领域多格式支持新方向
人工智能·深度学习·机器学习·计算机视觉·3d·大模型·数据集
goomind5 小时前
DeepFM模型介绍
深度学习·dnn·推荐系统·deepfm
shichaog5 小时前
第四章 神经网络声码器
人工智能·深度学习·神经网络·语音合成·声码器
KeyPan5 小时前
【Ubuntu与Linux操作系统:一、Ubuntu安装与基本使用】
linux·运维·服务器·人工智能·深度学习·ubuntu·机器学习
m0_678693337 小时前
深度学习笔记11-优化器对比实验(Tensorflow)
笔记·深度学习·tensorflow
亲持红叶7 小时前
Chapter5.1 Evaluating generative text models
人工智能·python·gpt·深度学习·自然语言处理
雾隐隐o7 小时前
基于深度学习的滑块验证破解方法及模型训练过程
人工智能·深度学习
羊小猪~~8 小时前
EDA数据分析结合深度学习---基于EDA数据分析和MLP模型的天气预测(tensorflow实现)
pytorch·python·深度学习·机器学习·数据挖掘·数据分析·tensorflow
YANQ6629 小时前
9.4 visualStudio 2022 配置 cuda 和 torch (c++)
ide·深度学习·visual studio