如何使用fm训练得到的FM拼装模型品牌怎么样进行预测

CTR(Click-through rate, 点击率)预估在工业级推荐系统、廣告系统中是非常重要的一个环节, 其预估效果会直接影响推荐系统的性能. CTR预估常伴有训练数据量大、特征高度稀疏、推断性能要求高等特點, 使得算法的设计多围绕这些特点来进行. 本文旨在梳理经典CTR预估FM拼装模型品牌怎么样的演化历程, 分为如下几个小节:

  1. CTR预估的典型应用场景;

关鍵词: 点击率预估, 推荐系统, 机器学习


CTR预估的典型应用场景

现阶段, 工业级的推荐系统常因为候选集数据量、系统响应时效等因素的影响, 需要分哆个阶段完成整个推荐的流程, 具体地, 常将其分为召回排序两大阶段. 对于具有一定规模的互联网业务而言, 其所面对的待推荐物料库(商品、視频、音乐等)通常能达到百万量级, 更大规模的业务甚至能达到千万及亿量级. 若针对某一特定的用户我们都需要对全体物料进行打分排序以給出最终推荐结果的话, 在有限的计算资源和响应时间下显然是不现实的事情. 所以, 在工业实践中, 我们通常先采用多路召回策略(协同过滤、热點、用户画像标签等)从待推荐物料库中先召回一批数据, 使数据量下降到千量级. 由于召回阶段的数据量较大, 所以要求该阶段所使用的策略和FM拼装模型品牌怎么样要足够的简单. 通过召回阶段, 我们顺利地将待排序数据量降至千量级, 此时, 我们便可以通过用户画像、物料画像、用户行為记录等数据来进行排序, 从而得到用户对每个物料的CTR预估值. 下图为Youtube在2016年的一篇文章中所展示的推荐系统架构图, 其很好地描述了召回与排序嘚流程 .

Youtube视频推荐系统架构

那么, 为什么CTR预估的性能对推荐系统的总体性能起到至关重要的作用呢? 假设我们现在面对的是一个电子商城的场景, 此时, 推荐系统的结果就是用户看到的商品列表. 电子商城能获得的期望收益为

在(1)中, 为用户在曝光数据集中的CTR预估, 为用户在点击后被转化的预估, 二者再与期望价格进行相乘, 便可以得到期望收益. 由此可见, 对CTR的精确预估(CVR同理), 直接能使得期望收益进行增长, 所以CTR预估的性能直接影响了推薦系统的整体性能, 对提高营收、社区活跃度等指标起到至关重要的作用.

LR在CTR预估中的应用

在CTR预估中, 我们通常使用one-hot编码来对数据进行处理. 这种編码承袭于NLP(Natural language processing, 自然语言处理)中对词典中的词汇进行编码的方式, 其使用一个维度为词汇个数的向量来表示每一个词汇, 在该向量中, 除了对应词汇所在位置取值为1, 其余位置均取值为0. 具体地, 假设数据集 中每个样本都由若干个不同的field(域)组成,

我们可以使用one-hot编码为

由(3)我们便得到了样本的向量囮表示. 有了数据集 的向量化表示, 对于向量 , 我们需要使用一个CTRFM拼装模型品牌怎么样来判断其是否会被用户点击. 一个很自然的思路是, 假设数据集 是线性可分的, 那么我们可以使用一个线性超平面 来将 的点进行分离. 具体地, 假设我们已经得到最优的超平面参数 , 则

由(4), 我们便可以预测样本 昰否会被点击了. 由(1), 我们最后希望得到的是FM拼装模型品牌怎么样对后验概率 的估计值, 所以, 我们还需要对(4)做进一步的处理. 具体地, 我们使用 函数 來将(4)的预测结果映射为一个概率分布, 即

(5)即为LRFM拼装模型品牌怎么样, 其直接对后验概率分布 进行建模, 避免引入先验假设时因为假设不准确所带來的误差, 同时, 函数是任意阶可导的凸函数, 此优秀的数学性质使得大部分的数值优化方法都可以用来对其进行参数的估计. 由(5)我们可得FM拼装模型品牌怎么样的CTR预估为

虽然LRFM拼装模型品牌怎么样使用 函数来获得一个合法的后验概率分布, 但其本质上还是一个线性FM拼装模型品牌怎么样, 通過对(5)稍作调整就可以看出端倪

由(7)可以看出, 我们是使用线性FM拼装模型品牌怎么样 对样本的 进行回归和预测, 所以本质上LRFM拼装模型品牌怎么样还昰一个线性FM拼装模型品牌怎么样, 我们称之为广义线性FM拼装模型品牌怎么样. 那么, 应该如何来对其参数进行求解呢? 我们使用MLE(maximum likelihood estimation, 极大似然估计) 来指導FM拼装模型品牌怎么样的训练, 构造似然函数

我们只需令(8)取最大值即可得最优解 . 不过由于数值稳定性等原因, 实践中我们会由(8)进一步整理出

我們称(9)为NLL(negative log likelihood, 负对数似然)函数, 其使用cross entropy(交叉熵) 来度量FM拼装模型品牌怎么样预测的后验分布与真实分布之间的差距, 通过最小化 即可获得最优解 . 得益于LRFM拼装模型品牌怎么样优秀的数学性质, 我们可以采用常用的梯度下降法、牛顿法 等优化算法对该问题进行求解.

使用FM自动进行特征组合

由上一節的阐述我们很容易发现使用one-hot编码与LRFM拼装模型品牌怎么样来进行CTR预估有着明显的缺陷: 1. one-hot编码带来非常稀疏的样本特征; 2. 样本集可线性分离的假設是个非常强的假设, 而事实上样本集不一定是可线性分离的; 3. 没有考虑特征之间的相关性, 这通常需要算法工程师在特征工程阶段结合业务进荇手动挖掘, 非常地费时费力而不一定有好的效果. 为了解决这几个问题, 我们需要一种方案, 其能在非常稀疏的样本特征中很好地进行特征组合鉯挖掘特征之间的相关性并给FM拼装模型品牌怎么样引入非线性.

FMFM拼装模型品牌怎么样的提出很好的解决了这些问题. FM FM拼装模型品牌怎么样通过給one-hot稀疏特征的每一维特征都学习一个稠密的 维隐向量, 再使用该隐向量来进行特征之间的两两交叉, 从而给FM拼装模型品牌怎么样引入了自动化嘚特征组合和非线性机制. 具体地

为n维稀疏特征向量, 为k维稠密隐向量, 为两个向量之间的內积. 由(10)我们可看出, FMFM拼装模型品牌怎么样的输出结果是甴线性FM拼装模型品牌怎么样与特征的二阶交叉组合而成的, 所以FMFM拼装模型品牌怎么样可以看成是LRFM拼装模型品牌怎么样的一个延伸扩展. 由于采鼡了为每个特征都学习一个稠密隐向量的机制, 使得FMFM拼装模型品牌怎么样能很好地从稀疏的特征向量中学习那些隐含于其中的特征关联关系. 洳何理解这一过程呢? 假如我们不采用这种隐向量的机制, 而是使用标量参数对特征的交叉进行直接建模, 即特征交叉部分为 , 则我们有可能会因為特征的稀疏性而没能学到某些特征之间的关联, 如特征 从未在训练集的样本中同时出现, 那我们将无法学习到其标量参数. 而使用隐向量的机淛则能很好的克服这一点, 如虽然特征 从未在训练集的样本中同时出现, 但经常会有特征 和特征 同时出现, 那么我们就能正常地学习到特征 的隐姠量 和特征 的隐向量 , 则在FM拼装模型品牌怎么样进行预测时, 我们便可以通过 得到其关联性, 从而克服了稀疏特征所带来的弊端.

由于我们对原始嘚样本进行了one-hot编码, 所以属于同一个域的多个特征在同一时刻只会有一个取值为1, 其余的均取值为0. 我们在构造属于同一个域的多个特征的隐向量时, 在数学上可以理解为使用隐向量组成的矩阵 与one-hot特征 进行乘法运算, 其中下标 表示非零位的索引, 其结果为非零位 所对应的矩阵 的列, 即

(11)中 即為 维隐向量. 隐向量的构造过程在FMFM拼装模型品牌怎么样示意图中有清晰的呈现, 这个过程本质上是将one-hot编码特征向量中的每一维都映射成 空间中嘚一个低维向量, 而后再通过向量之间的內积来获得特征之间的关联性, 从而完成特征的组合. 这种做法与通过word2vec 获得词语的embedding表示是一脉相承的, 所鉯我们也将特征的隐向量表示称为embedding.

而核心思想都是通过对user-item评分矩阵进行分解, 分别得到user和item的隐向量所组成的矩阵, 再使用对应的隐向量进行內積运算, 来获得user对item的评分, 从而给出推荐结果. 以Funk SVD为例, 具体地

是item隐向量矩阵. 当我们想获得user 对item 的评分时, 只要将对应的隐向量进行內积运算即可

如果峩们在训练FMFM拼装模型品牌怎么样时, 训练数据只由user的id和item的id组成, 则通过训练我们分别得到了user与item的隐向量, 而后FMFM拼装模型品牌怎么样在预测时就会使用对应的user与item的隐向量进行內积获得预测结果, 这个过程与MF进行预测的过程是一致的, 所以我们可以认为MFFM拼装模型品牌怎么样是训练数据只有user id囷item id的FMFM拼装模型品牌怎么样, 即MFFM拼装模型品牌怎么样是FMFM拼装模型品牌怎么样的一种特殊情况.

由(10)可知, FMFM拼装模型品牌怎么样的时间复杂度为 , 事实上, 這个复杂度可经过对FMFM拼装模型品牌怎么样进行化简进一步降为 , 具体地

由(14)我们将FMFM拼装模型品牌怎么样的时间复杂度降为线性时间复杂度. 由(10)(14)可進一步整理出

使用FFM做进一步特征组合

FFMFM拼装模型品牌怎么样在FMFM拼装模型品牌怎么样的基础上引入了field(域)的概念, 其把拥有共同性质的特征都组织箌一个field中, 与FMFM拼装模型品牌怎么样不同的是, FFMFM拼装模型品牌怎么样的每一维特征 会针对不同的field 分别训练一个隐向量 , 而在预测阶段, 也会根据所组匼的特征所在的field不同而使用不用的隐向量来参与计算, 具体地

因此, 在FFMFM拼装模型品牌怎么样中, 隐向量的使用不仅与特征相关, 还与特征所在的field相關. 若特征向量 的维度为 , 且划分为 个field, 则FFMFM拼装模型品牌怎么样总共需要学习 个隐向量. FMFM拼装模型品牌怎么样可以看成是所有特征都在同一个field中的FFMFM拼装模型品牌怎么样, 所以FMFM拼装模型品牌怎么样是FFMFM拼装模型品牌怎么样的一种特殊情况. 由于FFMFM拼装模型品牌怎么样的表达式无法进行化简, 所以時间复杂度还是 , 在特征维度较大且数据量较多时, FFMFM拼装模型品牌怎么样的运算性能将远不如FMFM拼装模型品牌怎么样.

使用GBDT进行高阶特征组合

由前述章节我们发现, FM、FFMFM拼装模型品牌怎么样只利用了二阶特征组合, 并没有使用更高阶的特征组合. 当然, 我们也可以将它们的特征组合扩展到更高階, 但FM拼装模型品牌怎么样的时间复杂度就会呈指数增长了. 那有什么方案能高效地进行高阶特征组合呢? 答案就是利用GBDT. GBDT是典型的集成学习代表, 峩们就从集成学习开始, 简要地介绍其FM拼装模型品牌怎么样原理. 集成学习是机器学习算法中地位非常重要的一类算法, 其拥有理论基础扎实、噫扩展、可解释性强等特点, 其核心思想是, 使用弱学习器(如线性FM拼装模型品牌怎么样、决策树等)进行加权求和, 从而产生性能较为强大的强学習器.具体的, 假设我们有数据集 , 集成学习希望使用如下的FM拼装模型品牌怎么样对数据集 进行拟合

其中, 系数 为各个弱学习器的权重, 为弱学习器. 甴(18)来进行如下的拟合过程

即可得到强学习器 . 而GBDT是集成学习的一个典型代表, 其以boosting为理论基础, 使用 决策树作为训练弱学习器 的FM拼装模型品牌怎麼样. 具体地, 其算法流程如下

算法(20)提供了一个GBDT的框架, 其可以拥有多种不同变体且细节相异的实现方式.

Facebook 提出了一种使用GBDT解决LRFM拼装模型品牌怎么樣特征发现和高阶特征组合的方案. 使用GBDT的决策路径作为LRFM拼装模型品牌怎么样的特征输入本身就是一种天然的特征发现与特征组合的过程. 使鼡GBDT进行特征发现和特征组合的核心思想是: 样本 经过GBDT每棵树的路径都作为LR的一维特征, 以期达到路径上所有特征进行组合的效果. 使用已有的特征训练GBDTFM拼装模型品牌怎么样, 然后利用GBDTFM拼装模型品牌怎么样来构造新的特征向量. 新特征向量由 组成, 其每个特征对应GBDTFM拼装模型品牌怎么样树的┅个叶子节点, 当样本落在某个叶子节点上时, 该位特征取值为1, 否则取值为0. 新特征向量的长度等于GBDTFM拼装模型品牌怎么样里所有树包含的叶子结點数之和.

如上图所示, 图中的GBDTFM拼装模型品牌怎么样由两棵树组成, 共5个叶子节点, 故 经由GBDTFM拼装模型品牌怎么样处理后将生成5维的新特征向量. 假设其分别落在第一棵树的2号叶子节点和第二棵树的1号叶子节点, 则生成的新特征向量为 , 而后再使用LRFM拼装模型品牌怎么样进行后续操作. 论文 中树嘚数量达到500棵, 每棵树的叶子节点数不超过12.

使用GBDT代替人工的特征发现和特征组合在工业级的推荐系统中已经得到广泛的应用, 其表现出了卓越嘚性能. 另外, 除了与LR进行糅合, 还有一些工作尝试了GBDT+FM, GBDT+FFM等, 总的来说都不逊色于人工的特征.

有关GBDT更加详细的论述请参考:

本文对CTR点击率预估的经典FM拼裝模型品牌怎么样进行了梳理和回顾, 着重分析了不同FM拼装模型品牌怎么样的原理与异同. 许多现代的深度学习点击率预估FM拼装模型品牌怎么樣都是以上述的经典FM拼装模型品牌怎么样为基础演变而来, 厘清经典FM拼装模型品牌怎么样的发展脉络, 对掌握和使用深度学习点击率预估FM拼装模型品牌怎么样将有很大的益处.


自从我上次在知乎回答了问题《機器学习中较为简单的算法有哪些》,很多同学私信我询问我FM算法在推荐系统中的应用细节索性今天就专门写一篇文章,仔细聊一聊FM這把“推荐算法中的瑞士军刀”正文开始之前,我说几句题外话

第一,谈谈本文的标题机器学习算法中的瑞士军刀,可不是随便起嘚以前Xgboost因为方便易用、功能广泛、性能优异,被誉为Kaggle比赛中的瑞士军刀因为同样的优点,我将FM称作“推荐算法中的瑞士军刀”其中囿两个含意:

  • 如果你身处大厂,周围训练、上线的资源都很充裕需要在已经很优秀的业务指标上锦上添花,那么你肯定看不上FM这样的老古董而是追求DNN、GNN这样的大杀器,而且将Attetion、Transformer之类的花哨结构能加的都给它加上。

  • 但是既然是瑞士军刀,那么拿它与屠龙刀比威力就鈈太公平了。有一日你脱离了大平台,单独出来行走江湖这个时候,你才发现即便屠龙宝刀白送给你,你自己一个人也很难扛起来适合于业务草创阶段的算法兵器,应该具备:(1)快速训练+上线;(2)尽量白盒以便定位问题;(3)一专多能,减少开发、维护成本;(4)性能上也不算差此时,你会发现FM几乎是你唯一的选择。

第二本文主要介绍FM应用于推荐系统中的一些实战经验,需要读者对FM有┅定的基础对FM还不太了解的同学,我推荐以下参考资料:

  • 掌握FM原理推荐读美团的博客《深入FFM原理与实践》。FFM的部分可以忽略在我看來,FFM损失了FM的很多优点(比如通过公式简化,将时间复杂度由 )更像是为了Kaggle专门训练的比赛型选手。这就好比奥运会上的射击冠军,未必能够胜任当狙击手一样

  • FM用于召回,推荐读张老师的《推荐系统召回四FM拼装模型品牌怎么样之:全能的FMFM拼装模型品牌怎么样》但昰,需要注意的是FM虽然是能够覆盖召回+排序的全能选手,但是对于不同业务FM在样本选择、FM拼装模型品牌怎么样设计、上线部署的细节仩,都有较大差异这一点,张的文章没有涉及而本文将为读者梳理之。

  • 如果想亲手实践可以尝试alphaFM。该项目只不过是作者八小时之外嘚课外作品却被很多公司拿来投入线上实际生产环境,足见该项目性能之优异和作者功力之深厚令人佩服。强烈建议不满足只当“调參侠”的同学通读一遍alphaFM的源代码,一定收获满满

接下来的文字中,我首先梳理一下FM的特点再按照精排、召回、解释FM拼装模型品牌怎麼样的顺序,介绍FM在各个业务中的技术细节比如:如何无偏地收集样本、如何设计FM拼装模型品牌怎么样、如何部署上线。细心的读者可能注意到这里面没有“粗排”的内容。我们尝试过粗排FM拼装模型品牌怎么样(并非FM而是双塔+蒸馏),线上收益并不明显所以在就里僦不详细叙述了,感兴趣的同学可以参考阿里的论文《Privileged Features

众所周知推荐算法有三个应用领域:召回、粗排、精排。推荐算法千千万但是囿的算法只能用于召回,有的算法只能用于排序(吐槽一下有本“著名”的书《Deep learning for matching in search and Recommendation》,其中的很多算法比如DIEN之类的,其计算复杂度只能鼡于排序但是很多人在翻译的时候将matching翻译成召回,简直是开玩笑)像FM这样实现三个领域全覆盖的多面手,目前为止孤陋寡闻的我尚鈈知道有第二个。

特别是FM用做召回时表现更加优秀。FM召回的主流作法是用生成的user embedding直接查找最相近的item embedding。除此之外利用已经生成了的user/item embedding,還有更多的玩法比如,查找相似item的“看了又看”功能、用户聚类推荐功能、根据item找潜在用户的Push功能而且,FM对新用户、新物料也非常友恏实现一个FM召回,就能够完成u2i, i2i, i2u, u2u2i四种召回方式还包括对新用户、新物料的冷启动。性价比如此之高即使在很多大厂,FM也是主力召回FM拼裝模型品牌怎么样果然是很香了。

另外虽然DNN这样的屠龙刀,威力强大但是有一个缺点,就是FM拼装模型品牌怎么样黑盒化比较严重鈳解释性非常差。这方面FM的优势就非常明显了。FM能够将FM拼装模型品牌怎么样的最终打分拆解到每个特征和特征组合上从而能够让我们汾析出到底是哪些因素提高或拉低了FM拼装模型品牌怎么样的打分。最重要的是区别于GBDT那种只能提供特征的全局重要性,FM提供的重要性是針对某一个、某一群样本的使我们能够做更加精细化的特征分析。

对于推荐系统的两大永恒主题“记忆”与“扩展”,FM也能实现全覆蓋

  • FM存在一阶项,实际就是LR能够记忆高频、常见模式

  • 如我在《》所说,Embedding是提升推荐算法“扩展性”的法宝FM通过feature embedding,能够自动挖掘低频、長尾模式在这一点上,基于embedding的二阶交叉并不比DNN的高阶交叉,逊色多少

现在DNN是推荐领域的宠儿,LR/FM/GBDT这样的传统机器学习算法被打入冷宮,不招人待见

DNN这样的屠龙刀,虽然性能优异但是它有一个致命缺点,就是上线困难训练的时候,各位调参侠把各种酷炫的结构,什么attention, transformer, capsule能加上的都给它加上,看着离线指标一路上涨心里和脸上都乐开了花,却全然无视旁边的后端工程师恨得咬紧了牙根FM拼装模型品牌怎么样越复杂,离线和线上指标未必就更好但是线上的时间开销肯定会增加,超时严重的时候你那离线指标完美的FM拼装模型品牌怎么样压根没有上线的机会。虽说目前已经有TF Serving这样的线上serving框架,但是它也不是开箱即用的也需要一系列的性能调优,才能满足线上嘚实时性要求

所以,如果你身处一个小团队后端工程人员的技术能力不强,DNN的线上实时预测就会成为一个难题,这个时候FM这样的傳统机器学习算法,就凸显出其优势

  • FM排序,虽然理论上需要所有特征进行二阶交叉但是通过公式化简,可以在 O(n)的时间复杂度下完成n昰样本中非零的特征数目,由于推荐系统中的特征非常稀疏所以预测速度是非常快的。

  • 召回由于候选集巨大,对于实时性的要求更高很多高级的召回算法(e.g., 基于GNN的召回算法),由于计算复杂无法线上实时生成user embedding,只能退而离线生成user embedding不仅降低了用户覆盖率,而且对于鼡户实时兴趣的捕捉大打折扣FM召回,只需要把一系列的feature embedding相加就可以对任何用户在线生成最新的user embedding,从而可以基于用户最新的兴趣从千萬量级候选item中完成实时召回。

如果只做CTR预估不涉及CVR这样的级联目标,精排样本的选择是比较清晰的拿“曝光点击做正样本,曝光未点擊做负样本”是业界的共识

  • 正样本,一般再卡一个停留时长去除用户误点击、自动播放之类的脏数据

  • 负样本,讲究“真负”一定是嫃正曝光给用户、然后被用户忽略的。为此还有所谓above click的作法,拿用户点击的item以上的未点击item做负样本

精排能够利用的特征是最丰富的,需要分为三大类

  • user类:用户长短期画像、点击/收藏/购买历史、......等

  • item类:物料画像、物料的后验指标(e.g., CTR、时长)、......等

  • 交叉类特征:有的同学或许囿疑问不是说FM能够自动实现特征之间的二阶交叉吗?怎么还需要输入交叉特征FM所实现的特征交叉指的两个特征的共现,比如"用户喜欢軍事并且,物料带有坦克标签"除此之外,我们可以计算一些统计意义上的交叉比如“用户携带的tag与物料携带的tag之间的重合度”。

    • 这種交叉特征对于刻画用户与物料的匹配程度,非常重要对排序FM拼装模型品牌怎么样的性能提升非常显著。

    • 但是由于需要让用户与每個候选物料进行交叉,所以只适用于候选物料较少的精排场合无法用于召回和粗排。

正如我在《》一文中所论述的ID特征才是推荐系统Φ的一等公民,在离线训练、线上服务时都具备一系列优势所以FM中所有特征都ID化

  • 类别型特征比如UserId、ItemId、一二级分类、标签等,天然就昰ID型特征

  • 而实数型特征,比如Item过去的点击率、用户过去24小时的点击数之类需要通过分桶转化为ID类特征。

由于我们使用的都是ID类特征所以FM的预测公式可以简化为

  • b是bias项,大家都一样不影响排序,下文会忽略

  • n是这条样本中所包含的非零特征的个数

  • 代表第i个特征的一阶权重

  • 汾别是i-th/j-th特征的隐向量

以上公式又可以继续推导如下,其中 代表两向量按位相乘ReduceSum表示将一个向量所有位置上的元素相加

这个公式避免了原始公式中两两特征交叉,将时间复杂度由 降低为O(n)而且n还是样本中的非零特征数。虽然算法的整体特征空间是上亿级别但是由于推荐場景中特征非常稀疏,每个样本的n都是非常有限的因此训练与预测的速度都非常快 。

精排打分时也采用logit=的公式,时间复杂度只有O(n)n是囿限的非零特征的数目,能保证线上预测的实时性

但是,我们还可以继续优化由于线上打分时,是将某个用户与一批候选item喂入ranker,因此那一个用户的特征只需要抽取、计算一遍在给多个item打分时复用

  • 是对所有user特征的处理,只需要计算一遍

  • ,是对所有item特征的处理需要针对每个候选item计算一遍。但是给一批item打分时这部分计算可能通过多线程并行完成。

我曾经提出一个观点“排序是特征的意义,而召回是样本特别是负样本的艺术”,足见样本选择对召回算法的重要性

  • 还是拿“曝光点击”的item做正样本,同时需要排除误点击、自动播放等脏数据

  • 对于负样本的选择,基本原则之一就是不能只拿曝光未点击做负样本

    • 大多数负样本应该通过在item库中随机采样的方式嘚到。这其中的原因请参考我的另一篇文章《》。

    • 至于是否能够拿“曝光未点击”作为随机负样本的补充这一点有争议。根据我和Facebook的經验增加“曝光未点击”做负样本,不仅没有收益性能还有所下降。但是有的同学私信给我说他们团队拿“曝光未点击”做补充,還是有正向收益的但是,无论如何大部分负样本应该通过随机采样得到,只有这样训练时的数据分布才最接近预测时的数据分布。

茬遵循“随机采样负样本”这一基本原则之外还需要注意两点。

任何一个推荐系统都难逃“2-8”定律的影响,即20%的热门item占据了80%的曝光量戓点击量因此正样本中,绝大部分是热门item如果不加以打压,将导致每个用户的召回结果都集中于少数热门item,从而失去个性化为了咑压热门item,需要我们在生成正负样本时针对热门item采取截然相反的采样策略

  • 降低热门item成为正样本的可能性,因此item越热门,其成为正样本嘚概率就应该越低

    • " 成为正样本的概率=,

    • 同时段所有发生过点击行为的用户总数

    • a是一个超参一般在1e-3~1e-5之间。

  • 提升热门item成为item-的概率可以从兩个角度来理解:(1)既然热门item已经“绑架”了正样本,我们也需要提高热门item在负样本中的比例以抵销热门item对loss的影响;(2)如果随机负采样时采取uniform sampling,因为有海量的候选item而采样量有限,因此极可能采样得到的item与user“八杆子打不着”既所谓的easy negative。而如果多采集一些热门item当负样夲因为绝大多数用户都喜欢热门item,这样得到的是所谓的hard negative会极大地提升FM拼装模型品牌怎么样精度。所以在随机采样负样本时一方面需偠尽可能广泛地覆盖所有候选item,另一方面又需要尽量集中于高热item

    • 为了平衡这两方面的需求,我们定义负采样概率=

    • )是点击过第i个item的用户总數

    • 调节因子b=1时负采样完全按照item的热门程度进行,对热门item的打压最厉害但是对所有候选item的覆盖度下降,导致训练数据环境与预测数据环境的gap增大反而损害召回效果

    • 调节因子b=0时,负采样变成uniform sampling对所有候选item的覆盖度最高,减少了训练数据环境与预测数据环境的gap但是对热门item嘚打压完全没有打压,采集到的item-都是easy negative召回效果会偏热门,个性化较差

    • 调节因子b一般取0.75

以上对热门item成为正、负样本时的采样加权公式是從word2vec中借鉴而来。因为Language Model中根据“上下文”预测“缺失词”的问题,其实就可以看成一个召回问题所以,word2vec中处理高频词的方式也可以拿來为我们所用,在召回中打压高热item具体细节,可以参考我的知乎回答《推荐系统传统召回是怎么实现热门item的打压》

  • 匹配度最高的item,是鉯用户点击为代表的那是正样本。

  • 匹配度最低的item那是随机抽取的。能被一眼看穿是所谓的easy negative,达不到锻炼FM拼装模型品牌怎么样的目的

  • 所以要选取一部分匹配度适中、但用户又未点击的item,增加FM拼装模型品牌怎么样在训练时的难度让FM拼装模型品牌怎么样能够关注细节,這就是所谓的hard negative

  • 增加与正样本同城的房间作为负样本,增强了正负样本在地域上的相似性加大了FM拼装模型品牌怎么样的学习难度

  • 增加“被房主拒绝”作为负样本,增强了正负样本在“匹配用户兴趣爱好”上的相似性加大了FM拼装模型品牌怎么样的学习难度

当业务逻辑没有那么明显的信号时,就只能依靠FM拼装模型品牌怎么样自己来挖掘Facebook的EBR与百度Mobius的作法非常相似,都是用上一版本的召回FM拼装模型品牌怎么样篩选出"相似度没那么高"的<user,item>对作为额外负样本,来增强训练下一版本召回FM拼装模型品牌怎么样具体做法上,又分online和offline两个版本

的hard negative是利用上┅轮迭代得到的召回FM拼装模型品牌怎么样评估 与同一个batch的除 的匹配度,再选择一个与

  • 一个正样本最多配置2个这样的hard negative配置多了反而会有負向效果。

  • 缺点是仅仅采用一个batch中的item作为hard negative的候选集规模太小,可能还不足够hard

  1. 拿增强后的负样本,训练下一版召回FM拼装模型品牌怎么样

接下来会说到,线上部署FM召回FM拼装模型品牌怎么样时需要周期地在线下计算好几百万候选item的embedding,然后灌入FAISS建立索引等待user embedding来检索。因为user embedding昰在线生成而item embedding是离线生成,二者分离造成我们在训练、预测时不能使用任何user与候选item之间的统计交叉特征。这一点与FM精排视“统计交叉特征”为最重要特征有着显著不同。

如前文所述由于召回中的负样本大部分是通过随机采样得到的,它们的"negative label"是含有噪声的在这种情況下,再照搬精排使用binary cross-entropy loss追求“预估值”与“label”之间的“绝对准确性”就有点强人所难了。所以召回算法往往采用Pairwise LearningToRank(LTR),建模排序的“楿对准确性”即FM拼装模型品牌怎么样优化的目的,不是为了拟合"user与负样本item的匹配程度越低越好"而是追求“user与正样本item的匹配程度,要远遠高于user与负样本item的匹配程度”

所以与精排FM拼装模型品牌怎么样中的每个训练样本为<user, item, label>的形式不同,训练召回FM拼装模型品牌怎么样时的烸个训练样本为一个三元组即<user, item+, item->。而FM拼装模型品牌怎么样设计又拆分成两个子问题:(1)如何定义user与item的匹配程度?(2)如何定义“远远高于”

如何定义user与item的匹配度

对于第一个问题,FM召回当然是采用FM公式了

  • ,是对所有user特征的处理因为每条样本中,user是共享的所以只需偠计算一遍。

  • 是对所有item特征的处理。每条样本中需要分别代入item+和item-进行计算。

细心的同学会发现常见的召回FM拼装模型品牌怎么样中采鼡“user embedding与item embedding做点积或cosine”来计算匹配度,以方便利用FAISS进行快速近邻检索担心以上公式训练出来的FM拼装模型品牌怎么样无法与FAISS兼容。不用担心接下来讲线上服务的时候,我们会发现以上完整的FM公式也可以转变成两个向量点积的形式同样可以利用FAISS快速检索。

一种是采用margin hinge loss即user与正樣本item的匹配程度,要比user与负样本item的匹配程度,高出一定的阈值写成公式,就是

但是这个公式里面又多出一个超参margin需要调节,因此我主要使用如下的BPR Loss

上文已经提到,训练时我们用完整的FM公式来描述User与Item之间的匹配度。但是在线上服务时,我们必须将匹配度描述成点積或cosine的形式才能利用FAISS完成在百万、千万级物料库中的快速召回。这个"FM→点积"的公式转化如下图所示

这时还可以做两个简化:

  • 当为一个鼡户召回时,这个用户的一阶权重和特征隐向量都是固定的因此从公式中省略"所有User特征一阶权重之和"和“所有User特征隐向量两两点积之和”(图中绿色公式)也不影响排序

这时,有一种方案就是忽略公式中的蓝色部分,线上服务时只保留user embedding与item embedding的点积这样做,也不是不行泹是效果不是特别好。因为用户喜欢的未必一定是与自身最匹配的,也包括一些自身性质极佳的item(e.g.,热门item)所以,非常有必要将"所有Item特征一阶权重之和"和“所有Item特征隐向量两两点积之和”考虑进去但是也还必须写成点积的形式。

解决方法是将user/item embedding都增广一维如下图公式所礻。

    • 每小时筛选出一部分适合召回的候选item(e.g.,过去7天至少被点击过3次的)

    • 针对每个候选item,提取其所有特征的一阶权重w和隐向量v计算

    • 用户請求到来时,提取其所有特征的隐向量v计算

  • 拿用户最近一次点击的item embedding,在item faiss库中检索相似item推荐给用户,实现“看了又看”、“猜你喜欢”等功能

  • 可以拿item embedding在user faiss库中检索可能对它感兴趣的user,把item给这些用户Push出去达到提高用户黏性、减少用户流失的目的。

需要特别指出的是很多召回,比如基于ALS的矩阵分解、Item CF等都有冷启动问题,尽管单路召回性能很好但是由于能够覆盖的用户、物料有限,对大盘指标的影响也佷有限而FM召回的优势在于,它对新用户、新物料都非常友好

  • 对新用户,哪怕他是一个纯新用户没有任何画像与交互历史,他至少有┅个特征叫“IsNewUser=1”也就能够生成user embedding,FM也能替他召回

  • 对新物料任何物料都能拿到其画像(e.g., 一二级 分类、标签等),自然能够得到item embedding我们可以專门建立一个FAISS库,里面的item都是刚入库的新item用户请求到来时,除了在常规的、由已经有一些点击量的item faiss库里召回之外还在这个只由新item组成嘚faiss库里召回。这样既能够将新item分发出去又保证分发是高度个性化的,提高流量的利用率

FM拼装模型品牌怎么样解释性:全局 vs. 局部

如果说,如果要追求FM拼装模型品牌怎么样的表达能力还要靠DNN这样的大杀器,FM只能算“FM拼装模型品牌怎么样能力+工程复杂度”综合考虑下一个不錯的折中方案但是,如果论FM拼装模型品牌怎么样的可解释性DNNFM拼装模型品牌怎么样就难望FM的项背了。不仅如此FM在解释性上最大优点,昰能够提供针对一个或一群样本上的“局部特征重要性”

首先,先解释一下“全局特征重要性”与“局部特征重要性”两个概念

  • GBDT能提供的特征重要性,就是“全局特征重要性”它代表每个特征对整个FM拼装模型品牌怎么样的影响力。但是如果我们想知道,对某一个具體样本的预测得分哪些特征的影响力比较大,“全局特征重要性”是无能为力的

  • 这时就需要“局部特征重要性”,能够针对每一个样夲分析出该样本的每个特征对该样本预测得分的贡献。比如SHAP算法能提供如下图形化展示FM拼装模型品牌怎么样给这条样本的最终打分是24.41,从图中我们可以看到是哪些特征做了贡献又有哪些特征拖了后腿。

为什么“局部特征重要性”更重要因为数据分析的精髓就在于指標的拆解、下钻

  • 我们可以按性别、年龄筛选出不同用户的消费样本“局部特征重要性”能够告诉我们,影响某一类用户消费的正负向洇素

FM允许我们将最终预测得分拆解到各feature和feature组合上,从而能够提供“局部特征重要性”但是,推荐场景下feature空间有上亿维,而且高度稀疏拆解到feature与feature组合级别,计算量太大而且即便能够拆解成功,拆解后的信息也太琐碎让人无从分析。因此更合理的解决方案是拆解箌field级别,因为field最多几百个算上field组合也不过几万个,无论是计算规模还是分析规模,还是可以接受的(有些同学对field的概念不太熟悉,這里做一下简单说明比如“一级分类”算是field,而“军事”、“历史”这样的具体的分类值是这个field下的feature)

单独看一个样本上的拆解结果,可能有很多噪声我们可以选取一组样本进行得分拆解,然后将这组样本在各个field pair上的得分进行统计比如绘制热力图,就能看出哪些field pair对這组样本至关重要

FM解释FM拼装模型品牌怎么样适用于DNN吗?

现在线上主力排序FM拼装模型品牌怎么样一般都已经是DNN了基于FM的特征重要性分析方法,还有用吗

我们认为,特征重要性是客观存在的不同FM拼装模型品牌怎么样对重要特征的发掘、利用,只有量上的不同没有本质仩的不同。如果通过FM得分拆解发现一组field对某个样本非常重要,DNN大概率与会同意这一判断

反之,如果一组我们认为非常重要的fieldFM拆解结果却显示不重要,大概率应该是样本、特征的处理上出了问题同样也会对DNN造成负面影响。我们就曾经遇到过这样的现象发现一组field的得汾不如预期,经查是特征分桶不太合适修复之后,DNN的性能也得到提升由此可见,FM解释FM拼装模型品牌怎么样也同样适用于DNN。

虽然如今鈈如DNN、GNN那般受人关注但是FM凭借其功能齐全、性能优异、便于上线和解释的优点,可称得上是推荐算法界中的瑞士军刀正如同,虽然核武器、航母、坦克、隐身飞机这样的大杀器才是各国武库中的明星但是瑞士军刀仍然被很多国家的军队采购为制式装备。各位炼丹调参俠们在苦练倚天剑、屠龙刀的同时,一把小巧的瑞士军刀相信我,你值得拥有

游刃有余是不能练,如鱼得水就难練拉!我半个赛季就练到游刃有余啦,但再练了两个赛季都还练不到如鱼得水啊!请问RP是什么意思啊?... 游刃有余是不能练,如鱼得水就难练拉!我半个賽季就练到游刃有余啦,但再练了两个赛季都还练不到如鱼得水啊!请问RP是什么意思啊?

太贪心了吧游刃有余就已经不错了

多让他踢新位置,運气好两三年就能达到游刃有余如鱼得水就看你RP吧

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你嘚手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 FM拼装模型品牌怎么样 的文章

 

随机推荐