序列及多任务排序

一.DIN

1.结构模型

Embedding layer

这个层的作用是把高维稀疏的输入转成低维稠密向量, 每个离散特征下面都会对应着一个embedding词典, 维度是D×KD×K, 这里的DD表示的是隐向量的维度, 而KK表示的是当前离散特征的唯一取值个数, 这里为了好理解,这里举个例子说明,就比如上面的weekday特征:

pooling layer and Concat layer

pooling层的作用是将用户的历史行为embedding这个最终变成一个定长的向量,因为每个用户历史购买的商品数是不一样的, 也就是每个用户multi-hot中1的个数不一致,这样经过embedding层,得到的用户历史行为embedding的个数不一样多,也就是上面的embedding列表t_{i}​不一样长, 那么这样的话,每个用户的历史行为特征拼起来就不一样长了。 而后面如果加全连接网络的话,我们知道,他需要定长的特征输入。 所以往往用一个pooling layer先把用户历史行为embedding变成固定长度(统一长度),所以有了这个公式:

                                        e_{i} = pooling(e_{i1},e_{i2},...e_{ik})

这里的e_{ij}是用户历史行为的那些embedding。e_{i}就变成了定长的向量, 这里的i表示第i个历史特征组(是历史行为,比如历史的商品id,历史的商品类别id等), 这里的k表示对应历史特种组里面用户购买过的商品数量,也就是历史embedding的数量,看上面图里面的user behaviors系列,就是那个过程了。 Concat layer层的作用就是拼接了,就是把这所有的特征embedding向量,如果再有连续特征的话也算上,从特征维度拼接整合,作为MLP的输入。

MLP

这个就是普通的全连接,用了学习特征之间的各种交互。

Loss

由于这里是点击率预测任务, 二分类的问题,所以这里的损失函数用的负的log对数似然:

                        L = -\frac{1}{N}\sum_{(x,y)\epsilon S}^{}(y log p(x)+(1-y)log(1-p(x)))

2.相关代码演示

导入相关包


模拟数据生成

构建DIN模型

代码中的模型结构相对简单,仅包含了基本的特征嵌入和全连接层,没有体现出 DIN 模型针对大规模稀疏数据和复杂用户行为的优化。

二.MMOE

1.MMOE模型的理论

2.MMOE结构

Multi-gate Mixture-of-Experts(MMOE)的魅力就在于在OMOE的基础上,对于每个任务都会涉及一个门控网络,这样,对于每个特定的任务,都能有一组对应的专家组合去进行预测。更关键的时候,参数量还不会增加太多。公式如下:

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        y_{k}=h^{k}(f^{k}(x))

wheref^{k}(x) = \sum_{i=1}^{n}g_{}^{k}(x)_{i}f_{i}(x). 这里的kk表示任务的个数。 每个门控网络是一个注意力网络:        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        g^{k}(x) = softmax(W_{gkX})

   W_{gk}\epsilon R^{n*d}表示权重矩阵, n是专家的个数, d是特征的维度。

3.简单代码演示

导入相关库


生成模拟数据

定义MMOE模型

结果

参数调优困难

MMOE 模型有多个超参数需要调整,如专家网络的数量、每个专家网络的神经元数量、门控网络的结构等。这些超参数的不同组合会对模型的性能产生很大影响,需要进行大量的实验和调优才能找到最优的参数设置。例如,不同的数据集和任务可能需要不同的专家网络数量和结构,很难有一个通用的参数配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值