论文:
论文地址:https://dl.acm.org/doi/pdf/10.1145/3340531.3412728
论文题目:《MiNet: Mixed Interest Network for Cross-Domain Click-Through Rate Prediction》
不知不觉已经来到了第四十篇文章了,也就是过了快一年了,希望到今年秋招的时候可以写到80篇。
一 、背景
在uc信息流新闻推荐中常常会穿插着一些广告,如图所示:
可以看到,用户在浏览新闻的时候,下面会有广告位进行展示,新闻跟广告是属于两个不同的领域内容,但是这两者不是完全分离的,在有些场景下是有一些联系的,比如说用户在浏览一些关于娱乐性质的新闻后,大概率会点击跟游戏相关的广告。
由于新闻跟广告属于不同domain的内容,所以我们想在预估广告ctr的时候把用户在新闻侧的兴趣迁移到广告ctr预估任务中,通过这种兴趣迁移的方法,可以解决内容跨域,数据稀疏和冷启动等问题,通过用户在新闻领域的兴趣建模来补充ads侧的兴趣,这也是因为用户通常在新闻领域种的ctr往往是远高于ads侧的ctr的,也就是说在news侧,用户的兴趣点更容易被挖掘。所以本文的主要目的就是将用户在source domain(原始域:news)中的兴趣迁移到target domain(目标域:ads)。
既然我们知道了,用户在news侧的兴趣可以通过迁移的技术运用到ads侧,我们现在就来看看在这种跨域ctr预估中,用户的兴趣是怎么划分的。
1. Long-term interest across domains(用户长期跨域兴趣):这部分主要是对用户的画像信息,比如age,gender,city等信息进行建模,并用这些信息来表示用户的长期跨域兴趣,因为用户在news和ads两个domain中的画像信息是一样的。
2. Short-term interest from the source domain(用户在原始域中的短期兴趣):用户在新闻域中的短期兴趣,这部分兴趣通常是通过捕获用户在最近的一次session中点击的news来表示
3. Short-term interest in the target domain(用户在目标域中的短期兴趣):用户在广告域中的短期兴趣,这部分的兴趣通常通过捕获用户在最近点击的ads来表示。
尽管我们对用户的兴趣划分看似很完美,但是也存在着几个问题:
1.不是所有用户点击过的ads都对当前的target ads有影响
2.不是所有用户点击过的news都对当前的target ads有影响
3.模型必须有能力将news侧的兴趣迁移到ads侧
4.三种类型的用户兴趣的相对重要性可能会因不同的目标广告而异。 例如,如果目标广告与最近点击的广告相似,则对目标域的短期兴趣应该更为重要; 如果目标广告与最近点击的新闻和广告都不相关,则长期兴趣应该更为重要。
5.目标广告的表示形式和三种用户兴趣类型的表示形式可能具有不同的 dimensions(由于特征数量不同)。 dimensions差异自然会增强或削弱某些表示的影响,这当然是我们不希望出现的。
下面我们带着3类用户兴趣和五个问题来看看作者是怎么解决的吧。
二、MiNet模型
跟之前一样,我们先来简单的看看这个模型的最关键的两个地方:item attention和interest attention。前面我们已经说了,用户点击过的ads并不是所有的都会对当前的ads有影响,news也一样,所以作者设计了一种item attention的结构来解决这个问题,提取做出真正有作用的ads和news。而对于这三个兴趣怎么融合的问题,作者则是设计了一个interest attention的结构来融合着三部分的兴趣。
2.1 一些符号的定义
:用户画像的向量的concate
: source域的兴趣向量
: tager域的兴趣向量
基本上我们只需要记住这三个向量就可以知道整个跨域ctr预估是怎么做的了
2.2 Feature Embedding
这部分就是一个embedding层,就不展开解释了
2.3 Long-term Interest across Domains
我们要知道这个across domain中真正跨域的那个东西是什么?当然是用户本身了,所以这部分就是用用户的画像的embedding信息来表示的:
也就是说把用户画像中所有特征作embedding后concat在一起
2.4 Short-term Interest from the Source Domain
前面我们也说了,用户的短期兴趣一般是由她最近点击的序列来表示的,所以在原始域,也就是news中用户的短期兴趣当然使用用户最近点击过的新闻来建模了:
其中,是每个news经过attention计算出来的weight,是对应的news。
attention score的计算如下:
这里我提一嘴,这里我们对点击过的序列进行建模,为什么直接采用的是weight sum pooling,而不采用rnn或者gru等结构来建模呢?可能是考虑到用户在这段时间内的兴趣并没有跳跃式的变化,所以直接采用pooling的方法就可以表示出用户在这时候的短期兴趣了;另一方面,由于attention结构的存在,即使用户的兴趣在这个很短的时间内出现了变化,也能捕获到用户在这时候的兴趣点。
上面只是简单的attention操作,但是仅仅利用news序列进行建模是有问题的,对于不同的target ads和不同的users,同样的news序列建模出来的短期兴趣是一样的,所以为了避免出现这种情况,我们把user信息和target ads信息加入了attention结构中了,这样建模出来的兴趣向量就会跟user和target ads相关联了:
其中,qt是target ads的向量,pu是用户向量,我们来重点说一下这个参数M,M起什么作用呢?为了把用户在news上的兴趣迁移到ads上面,M矩阵就是来干这个事情的通过M矩阵将news侧的信息转移到ads侧,然后在跟qt进行element-wise product,这就实现了兴趣的迁移。
这里论文对于M有一个计算复杂度的优化:
M的大小为Dt×Ds,这时候采用矩阵分解的技术,将M分解为M1×M2,其中M1的大小为Dt×C,M2的大小为C×Ds,如果C比较小的话,参数的数量会从Dt×Ds减少到(Dt+Ds)×C。
2.5 Short-term Interest in the Target Domain
这部分跟2.4完全一样,只是少了个兴趣迁移的操作,因为ads本来就是target 域:
2.6 Interest-Level Attention
上面的短期兴趣的attention都是item attention的level,都是兴趣内本身的attention操作,interest-level attention操作主要是为了融合三个兴趣,主要是将用户的长短期兴趣进行结合,具体的结合方式跟MMoE的gate的方式类似,我的理解就是通过门来生成每一类兴趣的weight,但是不对weight做归一化的操作:
论文对于三个兴趣的加权还是有一些思考的,作者认为,每一个兴趣的权值都必须大于等于1,所以在relu后加了个exp,让三个兴趣的weight都大于等于1,这么做的目的是:如果说qt的的dimension比pu大很多,这时候如果使用的sigmoid激活函数,会让weight小于1,这时候会让pu的weight大小小于一,而且会变得很小,这就不符合预期了,所以采用exp函数确保每一个兴趣的权值都大于1.
关于这部分,可以再联想到din中attention的使用,为什么不做softmax呢?
2.7 Prediction
在mt上面加多层DNN就完事了:
2.8 Model Learning
当然,模式优化的肯定是news跟ads两部分:
网友评论