Embedding向量化的一些理解

7,299次阅读
没有评论

共计 880 个字符,预计需要花费 3 分钟才能阅读完成。

:grin:有个同事某一天问我embedding向量化的过程,巴拉巴拉一堆,在日常写代码就两步

  1. 构建向量矩阵
  2. 查询

但是向量化的真正意图是什么?或者说为什么要进行向量化?

个人觉得应该先从onehot说起,在日常的工程中经常会遇到各种各样的id类特征,这些特征类别量很大,比如用户的id会有好多亿,如果你直接使用onehot那么你的特征在这一个上面就已经上亿了,可以想象百度凤巢说自己的特征都是几十亿,这些id类特征贡献了很多。

onehot说起来很简单,在工程中如果你使用的是简单的模型如LR,并且你有足够的数据量和计算能力,那么你直接使用onehot没啥毛病。

从onehot到embedding过程实际上很简单

Embedding向量化的一些理解

上图就是一个embedding向量化的过程,本质上就是一个查表的过程,onehhot中的第i位为1的值就相当于索引把对应的数据查询出来就是一个embedding向量化的过程。

那是不是输入需要输入这么长的onehot?当然不需要啦,只要给出索引就可以了,查表,查表,查表

任何一个经过向量化处理之后就可以衍生一些有意思的事情,这个本质上应该是向量的特性,只不过在不同的业务场景上意义实质化了。

比如之前在做商品推荐,用户的点击序列就可以拿来做word2vec,当然你也可以去做graph embedding 处理,这里就不展开来讲了。item经过处理之后就可以得到向量,此时我们可以计算向量之间的相似度,就可以得到商品的关联商品。

扯远一点,大规模向量化相似度计算可以使fasis,之前组内同事还分享过,可以抽空自己总结一下。

知乎上有人总结了下面三点embedding的好处,我在补充一下第二点的说明。

  1. 在 embedding 空间中查找最近邻,这可以很好的用于根据用户的兴趣来进行推荐。
  2. 作为监督性学习任务的输入。
  3. 用于可视化不同离散变量之间的关系。

在深度神经网络中你如果直接接入onehot,那么你需要训练的参数维度也是爆炸式增长的,这个在深度模型中是一个困扰。所以在保留相同信息的基础上使用embedding作为输入是一个可靠的选择。

尾部

还有没有其他可以补充的,欢迎回复

 

正文完
请博主喝杯咖啡吧!
post-qrcode
 
admin
版权声明:本站原创文章,由 admin 2019-07-20发表,共计880字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码