一文看懂推荐系统:排序16:Dual Augmented Two-tower Model和张俊林的SENet,都是为了加入特征交叉想,增强重要特征,去掉噪声,类似于attention的骚操作

一文看懂推荐系统:排序16:Dual Augmented Two-tower Model和张俊林的SENet,都是为了加入特征交叉想,增强重要特征,去掉噪声,类似于attention的骚操作

提示:最近系统性地学习推荐系统的课程。我们以小红书的场景为例,讲工业界的推荐系统。
我只讲工业界实际有用的技术。说实话,工业界的技术远远领先学术界,在公开渠道看到的书、论文跟工业界的实践有很大的gap,
看书学不到推荐系统的关键技术。
看书学不到推荐系统的关键技术。
看书学不到推荐系统的关键技术。

王树森娓娓道来**《小红书的推荐系统》**
GitHub资料连接:http://wangshusen.github.io/
B站视频合集:https://space.bilibili.com/1369507485/channel/seriesdetail?sid=2249610

基础知识:
【1】一文看懂推荐系统:概要01:推荐系统的基本概念
【2】一文看懂推荐系统:概要02:推荐系统的链路,从召回粗排,到精排,到重排,最终推荐展示给用户
【3】一文看懂推荐系统:召回01:基于物品的协同过滤(ItemCF),item-based Collaboration Filter的核心思想与推荐过程
【4】一文看懂推荐系统:召回02:Swing 模型,和itemCF很相似,区别在于计算相似度的方法不一样
【5】一文看懂推荐系统:召回03:基于用户的协同过滤(UserCF),要计算用户之间的相似度
【6】一文看懂推荐系统:召回04:离散特征处理,one-hot编码和embedding特征嵌入
【7】一文看懂推荐系统:召回05:矩阵补充、最近邻查找,工业界基本不用了,但是有助于理解双塔模型
【8】一文看懂推荐系统:召回06:双塔模型——模型结构、训练方法,召回模型是后期融合特征,排序模型是前期融合特征
【9】一文看懂推荐系统:召回07:双塔模型——正负样本的选择,召回的目的是区分感兴趣和不感兴趣的,精排是区分感兴趣和非常感兴趣的
【10】一文看懂推荐系统:召回08:双塔模型——线上服务需要离线存物品向量、模型更新分为全量更新和增量更新
【11】一文看懂推荐系统:召回09:地理位置召回、作者召回、缓存召回
【12】一文看懂推荐系统:排序01:多目标模型
【13】一文看懂推荐系统:排序02:Multi-gate Mixture-of-Experts (MMoE)
【14】一文看懂推荐系统:排序03:预估分数融合
【15】一文看懂推荐系统:排序04:视频播放建模
【16】一文看懂推荐系统:排序05:排序模型的特征
【17】一文看懂推荐系统:排序06:粗排三塔模型,性能介于双塔模型和精排模型之间
【18】一文看懂推荐系统:特征交叉01:Factorized Machine (FM) 因式分解机
【19】一文看懂推荐系统:物品冷启01:优化目标 & 评价指标
【20】一文看懂推荐系统:物品冷启02:简单的召回通道
【21】一文看懂推荐系统:物品冷启03:聚类召回
【22】一文看懂推荐系统:物品冷启04:Look-Alike 召回,Look-Alike人群扩散
【23】一文看懂推荐系统:物品冷启05:流量调控
【24】一文看懂推荐系统:物品冷启06:冷启的AB测试
【25】推荐系统最经典的 排序模型 有哪些?你了解多少?
【26】一文看懂推荐系统:排序07:GBDT+LR模型
【27】一文看懂推荐系统:排序08:Factorization Machines(FM)因子分解机,一个特殊的案例就是MF,矩阵分解为uv的乘积
【28】一文看懂推荐系统:排序09:Field-aware Factorization Machines(FFM),从FM改进来的,效果不咋地
【29】一文看懂推荐系统:排序10:wide&deep模型,wide就是LR负责记忆,deep负责高阶特征交叉而泛化
【30】一文看懂推荐系统:排序11:Deep & Cross Network(DCN)
【31】一文看懂推荐系统:排序12:xDeepFM模型,并不是对DeepFM的改进,而是对DCN的改进哦
【32】一文看懂推荐系统:排序13:FNN模型(FM+MLP=FNN),与PNN同属上海交大张楠的作品
【33】一文看懂推荐系统:排序14:PNN模型(Product-based Neural Networks),和FNN一个作者,干掉FM,加上LR+Product
【34】一文看懂推荐系统:排序15:DeepFM模型(Factorization-Machine),xDeepFM可不是对DeepFM的改编哦,而是对DCN的改编
【35】一文看懂推荐系统:经典双塔模型:微软DSSM模型(Deep Structured Semantic Models),无特征交互,后来美团改进了


提示:文章目录


前言

之前我们说了DSSM模型是没有特征交互的双塔模型

后来美团的一篇文章《A Dual Augmented Two-tower Model for Online Large-scale Recommendation》,
设计了Adaptive-Mimic Mechanism,
其中最主要的是设计了mimic loss,
该loss的主要作用是让增强向量来拟合相应query或着item在另一个塔中所有正样本的输出向量表示
增强向量代表了来自另一个塔的有用信息,
在训练增强向量的过程中需要使用stop gradient策略来冻结梯度。

从论文介绍来看增强向量更多地是表征用户的历史点击序列/物品的历史点击用户

那么是否可以将这两个序列特征进行简单池化or聚类就有不错的效果,
即结构的收益也许可以通过特征来近似拿到。

且论文一共有4个loss,直观感觉训练难度会比较大,但是不妨碍这篇论文结构上是比较创新的。


双塔改建计划

针对DSSM,双塔最大的缺点就在于,user&item两侧信息交叉得太晚
等到最终能够通过dot或cosine交叉的时候,
user & item embedding已经是高度浓缩的了,
一些细粒度的信息已经在塔中被损耗掉,永远失去了与对侧信息交叉的机会。

所以,双塔改建最重要的一条主线就是:
如何保留更多的信息在tower的final embedding中,
从而有机会和对侧塔得到的embedding交叉?

围绕着这条主线,勤劳的互联网打工人设计出很多的改进方案。

双塔重地,闲人免进

这种思路以张俊林大佬的SENet为代表。

既然把信息“鱼龙混杂”一古脑地喂入塔,其中的噪声造成污染,
导致很多细粒度的重要信息未能“幸存”到final dot product那一刻。

SENet的思路就是,在将信息喂入塔之前,插入SEBlock。
SEBlock动态学习各特征的重要性,增强重要信息
弱化甚至过滤掉原始特征中的噪声,
从而减少信息在塔中传播过程中的污染与损耗,
能够让可能多的重要信息“撑”到final dot product那一刻。

在这里插入图片描述

senet的主要效果是信息提纯,让最有效的信息保留,不重要的信息忽略,
这样在最后计算cos的时候的交互才是最好的,避免了乱七八糟的信息进行交互了。

SEnet 在推荐上,主要两个工作:
在这里插入图片描述
squeeze:这个步骤就是讲embedding 求平均变为1维,比如你有十个特征,那么对应的embedding压缩后变成10维的变量

excitation:简单的通过两层mlp输出指定的dense,这个输出的大小与输入的特征个数有关,
比如你的特征有4个,那么mlp输出维度为4
,然后与原始的embdding相乘累加,看起来就是attention 的意思,无非就是算权重的方式不一样

(1)特征emb编码压缩,对每个emb编码取平均值,得到一个数值z,所有特征的z组成向量Z
(2)对Z作用两个MLP神经网络,主要意义在特征交叉,得到每个特征emb编码的权重值a

将SENet引入推荐系统,用来对特征重要性进行动态判断。

所谓动态,指的是比如对于某个特征,
在某个输入组合里可能是没用的,但是换一个输入组合,很可能是重要特征。
它重要不重要,不是静态的,而是要根据当前输入,动态变化的。

强化那些重要特征,弱化甚至清除掉

本质就是attention的意思

另一条路就是美团整的dual augmented two-Tower

可以看到这篇论文是发表在dlp-kdd上的一篇关于双塔召回的论文,
这篇论文其实比较偏工业界的风格,
主要的创新点其实就两个地方,我们一起来看看吧。

许多现代推荐系统都有非常大的物品库,
处理大规模检索的一个常见工业方法是使用双塔模型从内容特征中学习query和item的表示。

然而,该模型缺乏两塔之间的信息交互,
此外,类别数据的不平衡也影响了模型的性能。

在美团的首页推荐场景下,负责给所有的业务进行导流和推荐任务

在首页推荐场景下,物品类别是严重不平衡的。
举个例子来说,外卖这个类别的商品数量就比较多,
也就是说,如果不加区分的对所有的物品进行训练,
那么就会导致整个模型的效果受主要类别主导,
模型的训练就跟少量的类别关系没那么大了,
这些少样类别几乎不会对模型的训练造成影响。

另外,做双塔的各位都知道,一个比较难受的问题就是query塔跟item塔没有进行交互,
唯一一次交互式在计算相似度(cos/内积)的时候。
在这里插入图片描述

该论文提出了双重增强双塔模型来解决以上两个问题。

论文设计了Adaptive-Mimic Mechanism,来为每一个query和item学习一个增强向量
增强向量代表了来自另一个塔的有用信息;
此外,论文还在训练阶段引入了Category Alignment Loss来缓解类别不平衡的问题

二、模型结构

在这里插入图片描述

2.1 Embedding层

这个就不在进行过多的介绍了,query跟item的特征都经过embedding结构生成稠密的特征。

2.2 Dual Augmented layer

对于query和item,都假设带有一个对应的增强向量au和av,
并与Embedding层得到的Embedding进行concat,作为两个塔的输入。

如对于uid=253,city=SH,gender=male的用户,以及iid=149,price=10,class=cate的item,对应的模型输入为:

在这里插入图片描述

做过双塔的都知道,在模型经过多层dnn后,
需要在最后进行l2正则,为什么要做正则呢,
很多文章都解释过了,这里就简单提几点:

1.为了模型训练更稳定
2.为了检索一致性,归一化后在点积=cos相似度 等价于hnsw中的欧式距离

所以接下来的操作就是:

在这里插入图片描述

我们可以从图中看到,增强向量跟着dnn进入了双塔结构,但是这个增强向量还有另外的作用。

这里直接用简单的话来讲解,
我们可以看到au可以看作是query侧的增强向量
除了跟着模型一起训练以外,还扮演着对于所有item塔中所有正样本的输出向量表示。

可以这么理解,我们前面不是说了吗,
我们没办法在双塔中进行特征交叉,
因为得不到彼此的信息表示,那么我们为什么不自己构造出一个伪的item表示呢,
其实au就是候选item的一种假设,是我们用来进行特征交互的假设向量。

你可能觉得,太好了,
如果我们直接假设一个彼此向量就好了,这个想法太天衣无缝了?
错了,
我们必须要对这个增强向量进行限制才行,
既然他是我们对另一侧的假设向量,这个vec就不能太飘,所以我们需要用一个loss进行限制:

在这里插入图片描述
以loss_u为例,
如果y=0,则没有损失,
若y=1,则增强向量必须要跟另一个塔的输出向量越接近,则损失越小。

也就是说,增强向量是对该query或item所有可能匹配的正样本信息的综合表示。

而在训练增强向量的过程中,需要使用stop gradient策略来冻结pu和pv。

2.3 Category Alignment

前面提到了两个问题,一个是特征交叉,另一个是类别不平衡问题。

在美团这种场景下,类别是严重不平衡的,
我们不能让模型被主要类别带偏了。

同时也要让较少的类别参与到模型的训练中。

论文提出了Category Alignment Loss,
可以将数量较多的类别中学习到的信息迁移到数量较小的类别中

CAL计算主类别和其他类别的协方差矩阵二阶矩,降低类别间的差距:

在这里插入图片描述
在这里插入图片描述

2.4 模型训练和损失函数

这部分就很简单了,双塔召回嘛,无非就是采样+loss设计的问题:
在这里插入图片描述
加入上述的mimic loss和Category Alignment Loss后,总的loss计算如下:
在这里插入图片描述


总结

提示:如何系统地学习推荐系统,本系列文章可以帮到你

(1)找工作投简历的话,你要将招聘单位的岗位需求和你的研究方向和工作内容对应起来,这样才能契合公司招聘需求,否则它直接把简历给你挂了
(2)你到底是要进公司做推荐系统方向?还是纯cv方向?还是NLP方向?还是语音方向?还是深度学习机器学习技术中台?还是硬件?还是前端开发?后端开发?测试开发?产品?人力?行政?这些你不可能啥都会,你需要找准一个方向,自己有积累,才能去投递,否则面试官跟你聊什么呢?
(3)今日推荐系统学习经验:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰露可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值