ctr预估模型embedding层的一些骚操作

欢迎关注主页个人介绍及相关链接,获取更多算法源码材料

2023数据资源入表白皮书,推荐系统源码下载-CSDN博客

用友BIP数据资产入表解决方案白皮书,推荐系统源码下载-CSDN博客

在ctr模型预估中,对不同层级的参数的优化引入了不同的问题,底层embedding需要学习更好的特征表征,中间的特征交互层,需要提出更好的特征交互的操作,例如fm、pnn这种,上层输出需要解决输出和目标如何更好的对应,引申出了包括multi-task这个重要的方向。对于embedding层,目的是学习到更好的表征,同时需要考虑节约成本,于是又有了embedding 压缩的需求,同时不同的特征维度不一致,信息含量不一样,需要的embedding的维度可能也有差异,如何根据特征信息容量决定embedding的维度也是研究方向。下面就看一看embeddding层的一些可能的操作吧。

1:autodis:

Yuki:一种CTR预估中连续特征的Embedding学习框架 - AutoDis

本质是对连续特征进行离散化操作,整体思路是每个连续特征对应一组meta embeddings ,里面包含了k个embedding。每个feature通过全联接softmax到一个k维 的概率,进行加权平均,但是引入了超参,例如到底多少个meta embedding合适呢?

这里有同学用pytorch进行了实现:

import torch
import torch.nn as nn


class AudisEconder(nn.Module):
    r"""Args:
        in_dim: the dimension of input tensor
        out_dim: the dimension of output tensor
        H_j: the number of Meta_embeddings
        alpha: the factor of skip-connection
        t: Temperature Coefficient
    """
    def __init__(self, in_dim, out_dim, H_j=20, alpha=0.1, t=1e-5):

        super(AudisEconder, self).__init__()
        self.in_dim = in_dim
        self.out_dim = out_dim
        self.w_j = nn.Linear(in_dim, H_j)
        self.leak_relu = nn.LeakyReLU()
        self.W_j = nn.Linear(H_j, H_j)
        self.alpha = alpha
        self.t = t
        self.softmax = nn.Softmax(dim=-1)
        self.ME = nn.Parameter(torch.randn(H_j, out_dim))

    def forward(self, x):
        h_j = self.leak_relu(self.w_j(x))
        x_hat_j = self.W_j(h_j) + self.alpha * h_j
        x_hat_j_h = self.softmax(x_hat_j / self.t)
        e_j = x_hat_j_h @ self.ME
        return e_j



if __name__ == '__main__':
    input = torch.rand(16, 10)
    model = AudisEconder(in_dim=10, out_dim=128)
    out = model(input)
    print(out.shape)

文章的实验在公开的数据集是有千分位的提升,但是在公司框架进行实验好像有点复杂呀,这里看看后续安排是否进行代码尝试。有人指出超参 太多不好调

2:论文“Res-embedding for Deep Learning Based Click-Through Rate Prediction Modeling”

阿里的论文:

简单说就是每个item对应一个central embedding和residual embedding。central embedding由他周围的item决定,residual embedding则由item自己决定。感觉里面融合了 聚类的思想, central embedding 相当于类中心embedding,这个用以表征item的共性,然后 residual embedding 用以表征 item 的个性

3:AMTL:设计孪生掩码层高效学习维度自适应的Embedding

阿里妈妈技术:CIKM 2021 | AMTL:设计孪生掩码层高效学习维度自适应的Embedding

这个方向是变长embedding的范围了,这块说实话我感觉业界用的应该并不是很多的,当然应该是有尝试,其场景也是为了减少存储,同时不降低效果, 所以如果你的模型参数很少,大概率还不用考虑这些。

4:Learning Effective and Efficient Embedding via an Adaptively-Masked Twins-based Layer

embedding长度自适应学习,通过mask掩码的方式,掩码向量的长度和待学习向量的长度是一样的,mask向量某一位为0,则特征向量对应位的value就不起作用了,相当于特征向量的长度就变短了。起初我还在想变短之后向量如何进行使用,其实还是正常 运算,只是有些位的value为0,相当于就是使用了长度更短的embedding

5:Adaptive Low-Precision Training for Embeddings in Click-Through Rate Prediction

CTR预估中占用参数量最大的就是embedding table,尤其user、item等特征的embedding表,由于实体数量很大,导致这些特征的embedding表非常大,占用了非常巨大的存储开销。因此,对embedding table进行压缩是一个值得研究的领域。

本文采用量化的思想压缩ctr模型中的embedding table。具体可以参考:

AAAI'23 | 两篇大厂CTR预估最新工作

参考资料:

张俊林大佬给出了一个embedding的总结:

推荐系统排序环节的特征Embedding建模

张俊林:推荐系统排序环节的特征Embedding建模

推荐系统中稀疏特征 Embedding 的优化表示方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值