推荐系统炼丹笔记:Embedding在内存问题上的一种解法

本文探讨了深度学习推荐系统中因大量类别特征导致的Embedding内存问题,提出商余数技巧和使用互补分割构建合成Embedding的解决方案,以减少内存开销并保持模型效果。通过实验验证,这种方法有效减少了Embedding表的大小,同时在模型损失和精确度方面保持了性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作  者:一元  
公众号:炼丹笔记  

很多朋友都会发现,修改embedding的大小能对深度模型带来非常大的影响,往往越大的embedding能带来更佳的效果,但是却因为Embedding内存的问题,没法直接用,或者只能采用Hash Trick的技巧来弥补,真的是遗憾啊,太遗憾了,想哭。不急不急,本文就带大家一起学习一下Embedding的内存问题的一种解法

现代的基于深度学习的推荐系统利用了成百上千种不同的类别特征(Categorical Features),每一种分类都有数百万种,从点击到发布。为了符合类别数据中的自然多样性,Embedding将每个类别映射到嵌入到一个稠密的向量中。由于每个类别特征可能包含上千万个不同的可能类别(例如电商的商品个数很多都是上亿的),因此嵌入表在训练和推理过程中会出现内存瓶颈。

本文提出了一种新的方法,利用探索类别集合的互补划分为每个类别生成一个唯一的嵌入向量。基于每个互补分区存储多个较小的嵌入表,并结合每个表中的嵌入,可以以较小的内存开销为每个类别定义一个唯一的嵌入。这种方法可以解释为使用特定的固定码本(codebook)来确保每个类别的表示的唯一性。实验结果证明了该方法对于减少嵌入表的大小在模型损失和精确度方面的有效性,同时在参数上保留了相似的减少。

商余数技巧

1 问题

每个类别被映射到一个embedding向量表,数学上就是, 我们令

v2-546d71e3aef921a1942d3db726bc3d51_b.jpg

2 解决方法

2.1 Hash Trick

v2-bfc837c3b06010b22f35cdd110fd6ddf_b.jpg

我们的Embedding可以通过下面的方式得到:

v2-9ca9d0c6fd1d2ad6c29dfc958c6abef2_b.jpg

对应算法如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值