广告模型初探
2025-07-25 23:38:06 世界杯冠军最多
从上面的流程图也可以看出,竞价广告系统中会涉及到CTR模型预估,CVR模型预估。与合约式广告不同,竞价广告中每一个流量最终的归属权都是通过竞价的方式决定。即媒体方综合当前流量的信息、当前用户的信息、以及当前广告的信息,通过模型预估出当前用户对于这则广告的点击率或者转化率,然后按照一定的计算规则进行排序,最终决定这条流量的最终归属权。具体的计算规则之类的在后续部分会具体介绍的哈。
02
广告预估模型
主要介绍一下广告预估模型目前的几大派系,主要分为LR派系、FM派系、DNN派系。
(0)LR派系
a.大师兄:LR模型
废话不多说,先上公式,其中,这里我们定义一下:,那么整个公式可以写成:
优点:模型简单、可以处理离散化特征、容易实现分布式的计算
缺点:特征与特征之间在模型中是相对独立的,对于一些存在交叉可能性的特征(比如: 衣服类型与性别,这两个特征交叉很有意义),需要进行大量的人工特征工程进行交叉。虽然模型很简单,但是人工的工作却繁重了很多。而且LR需要将特征进行离散化,归一化,在离散化过程中也可能出现边界问题。
b.二师兄:GBDT模型
公式如下:
优点:能够处理连续值特征,比如用户历史点击率,用户历史浏览次数等连续值特征;而且由于树的分裂算法,它具有一定的组合特征的能力,模型的表达能力要比LR强。GBDT对特征的数值线性变化不敏感,它会按照目标函数,自动选择最优的分裂特征和该特征的最优分裂点,而且根据特征的分裂次数,还可以得到一个特征的重要性排序。所以,使用GBDT能够减少人工特征工程的工作量和进行特征筛选。
缺点:GBDT善于处理连续值特征,但是在广告场景中,出现的都是大规模离散化特征,如果我们需要使用GBDT的话,则需要将很多特征统计成连续值特征(或者embedding),这里可能需要耗费比较多的时间。同时,因为GBDT模型特点,它具有很强的记忆行为,不利于挖掘长尾特征,而且GBDT虽然具备一定的组合特征的能力,但是组合的能力十分有限,远不能与后续介绍的DNN相比
(1)FM派系
a.大师姐:FM模型
具体公式如下:
对照前面的LR模型的公式我们可以发现,FM模型主要多了一个二次交叉项,这刚好弥补了LR模型无法处理大量交叉特征的问题。从公式中我们可以发现FM需要一个二维权重矩阵wij,对于大规模离散特征来说,这个二维权重矩阵的维度会很大,为了解决这个问题,FM的作者利用矩阵分解将wij分解为了wij=
优点:可以处理二次交叉特征、可以实现线性的时间复杂度、模型训练速度快
缺点:对于不同的特征组合,采用的是同样的向量做内积,会带来一定的信息损失,因此也就引出了 “二师姐” FFM模型。
b.二师姐:FFM模型
FFM是在FM的基础上引入了“场”的概念而形成的新模型。在FM中计算特征xi与其他特征的交叉影响时,使用的都是同一个隐向量Vi。而FFM模型则事先将特征按照一定的规则分为多个场。特征xi属于某个特定的场f,每个特征将被映射为多个隐向量vi1...vif 。当两个特征xi,xj组合在一起时,用对方对应的场对应的隐向量做内积:
优点:FFM 由于引入了场,使得每两组特征交叉的隐向量都是独立的,可以取得更好的组合效果, FM 可以看做只有一个场的 FFM。
缺点:参数量巨大,在训练时极易过拟合。
03
DNN派系
咱们主要聊聊广告预估模型集大成者DNN派系。
0.DNN模型
DNN网络结构
模型结构较为简单,不再赘述。重点关注一下Embedding部分,和NLP里面的Embedding层类似,在广告模型中Embedding层会对不同类型的特征进行如下变换:
单值离散特征:直接Embedding
多值离散特征:在Embedding 之后接上Sum Pooling 从而将多值映射为单个Embedding(Average Pooling也未尝不可)
数值型特征:一般先进行离散化(如特征分桶之类)转化为类似单值离散特征来处理
1. DeepFM模型
DeepFM网络结构
DeepFM模型可以分为两个部分,一部分是上篇中提到的FM模型,另一部分就是本篇中提到的DNN模型。最终输出结果通过下面公式计算得到:
从上面网络结构图中可以看到,最底层是输入的稀疏的原始特征,接着进入了Embedding层,将特征限定到有限的向量空间中,接着分别进入FM和DNN层。FM部分主要考虑的是低阶特征(主要是二阶特征)而DNN部分主要获取的是高阶特征,FM和DNN层共享Embedding。
2. SDNN模型
SDNN网络结构
相比于前面两个模型,SDNN模型的结构更为复杂,当然相应的效果也是更优的。从图中可以看出,SDNN模型分为两个阶段,一个阶段是Join阶段、一个阶段是Update阶段。图中的slot1,slot2指的是不同的特征,fea1,fea2表示的不同特征的不同取值,举个例子:slot1表示用户的兴趣爱好,fea1表示足球,fea2表示篮球。不同的fea1和fea2我们会统计show和click的值,最终累加在一起,得到对应的slot1的特征的show和click值。当然show和click对应的值最终也是通过embedding化之后加入模型中训练的。
与之前不同的是,这里的embedding是一种动态的embedding,刚开始默认的维度可以设置为1,当show&click达到一定的阈值之后,会扩展为fix+dynamic的形式。需要注意的是在Join阶段主要更新的是NN参数,从图中也可以看出梯度只回传到normalization就停止了,而在Update阶段主要更新的是Embedding参数。
之所以采用两阶段的训练方式,主要是为了:
保持线上线下预估的一致性
线上预估embedding是pass内固定的,而Update NN学习的是动态变化的embedding的NN
今天的分享就到这里,后会有期。
在文末分享、点赞、在看,给个3连击呗~
社群推荐:
欢迎加入 DataFunTalk 计算广告
关于我们:
AI 启蒙者,致力于分享 AI 在业界的落地实践案例,了解 AI 在各个企业的不同发展阶段,推动 AI 在行业的落地。
🧐分享、点赞、在看,给个3连击呗!👇返回搜狐,查看更多