dssm与fm召回上的对比

3,358次阅读
没有评论

共计 1493 个字符,预计需要花费 4 分钟才能阅读完成。

首先,DSSM:在这里特指双塔模型;FM自不必说。

训练部署

大家都懂再来啰嗦下双塔和FM在做召回时,线上的部署方式:双塔:离线:训练完成后,对于item-embedding,离线灌库,形成特征索引库,以供后续线上向量检索用;在线:get到用户请求后,去特征索引库取用户特征,kv之后拿到特征emb,一般是concat后过fc之后形成最终的user-emb,与之前灌入索引库的item-embs进行K近邻检索,形成召回结果。FM:离线:item-embedding基本同双塔;在线:get到用户请求后,取特征->获取emb->对embeddings进行pooling,形成最终的user-embedding,之后也是进行K近邻检索。

特性对比

工程性能:

显然,FM在get到特征的emb后,直接pooling,而双塔则需要concat之后过fc,concat和fc都是需要一部分计算开销的,故在此方面,fm占优。

扩展性:

双塔由于其天然的结构特性,实际上是有这“实体分离”的意思,这里的实体可以是query和doc、也可以是user与item、也可以是item与item,而从fm结构上来看,不具备这种形式,故,双塔模型从结构上来看,不仅仅可以作u2i的场景,更可以扩展至i2i等场景,这方面,双塔可能更占优势。

结构灵活性

正所谓成业风云,败也风云,双塔模型由于结构特性,增加了其可扩展性,但也由于这点,导致左右塔的交互过晚,交互不充分,而FM由于其模型结构,不存在这个问题,一般情况下我们只做到二阶的交叉,而且有对应的优化算法。但是咱们话锋一转:双塔模型这个缺点真的是致命的吗?从业界使用效果经验反馈来看,未必!而且双塔由于左右塔均为mlp形式,使其可以很方便加入Attention、SENET等网络算子来过滤一些指征能力较差的特征,从而缓解特征交互晚的问题,这也是双塔模型结构灵活性体现之一;结构灵活性体现之另一方面在于:大家思考下,双塔模型真的只是左右各自一个mlp就完事儿了吗?答案显然是否定的,发散下思维,每个塔可不可以是加入更复杂的网络结构呢,当然可以,我们甚至可以将每个塔加入DCN、CIN等子网络,最终再在交互层进行交互,虽然没有改变交互的时间,但是改变了交互的数量,这更能进一步缓解双塔的问题。

算法本身的优劣:

前述提到,fm获取最终话user-emb是直接pooling的方式,这种方式虽然节约了计算资源,但是损失了很多信息,整个过程中也没有任何的参数加入,而且每个feature的emb维度必须一致才能进行pooling,故最终的emb表达能力一定是受限的;相比之下,双塔模型就不存在这个问题,每个feature-emb甚至不需要有相同的维度,因为是直接concat到一起的,这样在原始的emb喂给fc层之前,最大的程度的保留了信息,后面靠fc层进行信息提取与降维,也加入了更多参数,泛化能力有一定的保证。

网络结构

双塔模型的结构,天然适合近年来非常流行的对比学习,基本可以断定未来会有持续的市场;且更重要的,双塔结构可以很自然的引入pairwise的方式进行学习,从这方面来说,潜力是很大的,个人理解,在推荐(非搜索)领域,相比于排序层,pairwise是非常适合的,因为召回模型一个最大的问题就是样本的选取,正样本还算好说,负样本对于召回来说,非常有艺术性,因为在做召回时,很难清楚的界定到底一条样本是不是真正的负样本,但pairwise学习方式很好的规避了这个问题,也就是说:只要pair对选取的好,我才不管你具体某一条样本是不是真负,我就只管学习两两样本之间的差异就行了。

正文完
请博主喝杯咖啡吧!
post-qrcode
 
admin
版权声明:本站原创文章,由 admin 2021-09-23发表,共计1493字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码