前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >推荐系统(八)——推荐系统离散特征表征无embedding table

推荐系统(八)——推荐系统离散特征表征无embedding table

作者头像
秋枫学习笔记
发布2022-09-19 11:52:21
3540
发布2022-09-19 11:52:21
举报
文章被收录于专栏:秋枫学习笔记秋枫学习笔记

本文是针对推荐系统中离散特征的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

现存的基于one-hot的编码方式,几乎都是基于table来look up的。当词汇很多的时候,会导致table很大,会有很多参数在table上,并且one-hot这种只适用于已知离散特征类别数的情况,例如“我们假设在一个系统里面,车的类型我们观察到只有火车和轿车,因此one-hot为2维,但是有一天突然出来一个摩托车,这样使得泛化性受限”。

hash+one-hot

通过hash的方法可以降低所需要的的维度。

  • 假设原来one-hot对应1的位置为s,那么这里通过一个hash函数将其映射到H(s)位置,这个hash函数对应的维度为m,使m小于原来的one-hot维度,则可以减小所用encoding维度。但是这里会存在一个问题:hash过程中可能会冲突
  • 后续提出了改进方案:将一个hash函数增多至k个hash函数,经过k次hash将每次hash得到的m维向量拼接。

方法

上述无论是单纯用one-hot还是one-hot+hash都是基于one-hot的,并且需要embedding table。而本文所提方法不需要embedding table,并且速度更快。

encoding设计

encoding设计作者主要遵循四个准则:

  • 唯一性:每个离散特征的表达必须是唯一的
  • 等相似性:不同特征编码的表示需要具有相同的相似度。比如:二进制编码,7为0111, 8为1000, 9为1001,显然从这里可以发现8和9的编码更相似,而7和8,9差异更大,这是不好的。
  • 高维性:高维的向量可以更有助于分类
  • 高香农熵:让每个维度都起作用,反例:one-hot,除了两个是1的地方对应的位置不同,其他地方都是0,就是浪费了很多维度。

DHE(Dense Hash Encoding)

假设特征的值是整数,因为就算是字符串也可以通过hash映射到数字。

  • 和「背景」中提到的方法类似,先将原有的特征通过k个全域哈希(universal hash)函数映射为k个向量,每个向量m维,元素值在[1,2,...m]中的整数,然后进行拼接。
  • 然后通过变换(标准化),将每个m维整数向量变换为实数向量。
    • uniform distribution。先通过简单的归一化,将原有m维向量归一化到[-1,1]
    • Gaussian Distribution。上述归一化后,通过Box-Muller变换方法进行变换。

decoding设计

decoding阶段也和之前的方法有所不同,之前的方法直接经过1层变换(具体看图1)就解码了。本文采用DNN来进行解码。主要考虑到DNN拟合能力强,可以用较少的参数拟合那些又宽又浅的层。

  • ReLU的加入效果并不好,经过各种尝试,利用Mish activation激活函数更好
f(x)=x \cdot tanh(ln(1+e^x))
  • 加入BN可以提升效果
  • 加入dropout效果不好,网络采用瓶颈结构会欠拟合

side feature

通过训练,模型记住了这些特征,而加入side feature可以进一步提升它的泛化性,对于没见过的特征值,能有更好的泛化能力。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秋枫学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
    • 只用one-hot
      • hash+one-hot
      • 方法
        • encoding设计
          • DHE(Dense Hash Encoding)
            • decoding设计
              • side feature
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档