本文是针对推荐系统中离散特征的embedding方法提出了新的改进方案。这里主要会涉及到one-hot编码和hash,不明白的小伙伴可以先学习一下。
Learning to Embed Categorical Features without Embedding Tables for Recommendation https://dl.acm.org/doi/pdf/10.1145/3447548.3467304
embedding在推荐系统中也是属于重要的一步,好的embedding可以节省空间,时间,并且达到好的推荐效果。现存的embedding方法可以统一概括为以下步骤:
现存的大部分embedding都是基于one-hot,这里以one-hot为例,先将原始数据例如“性别包含男,女”则one-hot就是2维,到这就是encoding,然后得到男或女的one-hot后通过word2vec等embedding方法对其进行变换,因为有的one-hot特征维度会很高,很稀疏,因此需要对其进行变换,到这就是decoding。
图1
现存的基于one-hot的编码方式,几乎都是基于table来look up的。当词汇很多的时候,会导致table很大,会有很多参数在table上,并且one-hot这种只适用于已知离散特征类别数的情况,例如“我们假设在一个系统里面,车的类型我们观察到只有火车和轿车,因此one-hot为2维,但是有一天突然出来一个摩托车,这样使得泛化性受限”。
通过hash的方法可以降低所需要的的维度。
上述无论是单纯用one-hot还是one-hot+hash都是基于one-hot的,并且需要embedding table。而本文所提方法不需要embedding table,并且速度更快。
encoding设计作者主要遵循四个准则:
假设特征的值是整数,因为就算是字符串也可以通过hash映射到数字。
decoding阶段也和之前的方法有所不同,之前的方法直接经过1层变换(具体看图1)就解码了。本文采用DNN来进行解码。主要考虑到DNN拟合能力强,可以用较少的参数拟合那些又宽又浅的层。
通过训练,模型记住了这些特征,而加入side feature可以进一步提升它的泛化性,对于没见过的特征值,能有更好的泛化能力。