欢迎关注主页个人介绍及相关链接,获取更多算法源码材料
用友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。具体可以参考:
参考资料:
张俊林大佬给出了一个embedding的总结:
推荐系统排序环节的特征Embedding建模
推荐系统中稀疏特征 Embedding 的优化表示方法