做过深度学习的小伙伴,大家应该多多少少都听说过Embedding,这么火的Embedding到底是什么呢?这篇文章就用来介绍Embedding。另外,基于深度学习的推荐系统方法或者论文还没有结束,我打算穿插进行讲解,毕竟,深度学习出来的推荐框架的算法实在是太相像了,很难有大的不同。所以,这一篇就聊聊Embedding。

初识Embedding

Embedding又被成为向量化,或者向量的映射。Embedding(嵌入)也是拓扑学里面的词,在深度学习领域经常和Manifold(流形)搭配使用。在之前的Embedding的操作,往往都是将稀疏的向量转换成稠密的向量,以便于交给后面的神经网络处理。其实,Embedding还有更多应用场景,以及更多的实现方法,后面会慢慢谈到这些方法。Embedding可以看做是用低维稠密向量表示一个对象,可以是单词,可以是用户,可以是电影,可以是音乐,可以是商品等等。只要这个向量能够包含,或者表达所表示对象的特征,同时能够通过向量之间的距离反应对象之间的关系或者相似性,那么Embedding的作用就体现出来了。

Example

如下图所示,就是Embedding在自然语言处理当中,对单词Embedding的一种刻画:

上图中从king到queen,与从man到woman的距离向来那个几乎相同,说明Embedding之间的向量运算能够包含词之间的语义关系信息,同理,图中的词性例子当中,从进行时态到过去时态也是相同的距离。Embedding可以在大量预料的输入前提下,发掘出一些通用的常识,比如首都-国家之间的关系。

通过这个例子,我们可以了解到,在词向量空间当中,即使是完全不知道一个词向量的含义下,仅依靠语义关系加词向量运算就可以推断出这个词的词向量。Embedding就这样从一个空间表达对象,同时还可以表示对象之间的关系。

应用

除了在自然语言处理中对单词进行Embedding之外,我们可以对物品进行Embedding。比如在影视作品推荐当中,“神探夏洛克”与“华生”在Embedding向量空间当中会比较近,“神探夏洛克”与“海绵宝宝”在向量空间中会比较远。另外,如果在电商推荐领域,“桌子”和“桌布”在向量空间中会比较紧,“桌子”和“滑雪板”在向量空间中会比较远。

不同领域在使用这些语义资料进行训练的时候也会有不同,比如电影推荐会将用户观看的电影进行Embedding,而电商会对用户购买历史进行Embedding。

深度学习推荐系统中的Embedding

一般来说,推荐系统当中会大量使用Embedding操作:

  1. 使用one-hot对类别,id等类型进行编码会导致特征向量极其稀疏,使用Embedding可以将高维稀疏的特征向量转化为低维稠密的特征向量。
  2. Embedding具有很强的表达能力,在Graph Embedding提出之后,Embedding可以引入任何信息进行编码,包含大量有价值的信息。
  3. Embedding可以表达对象之间的关系,可以对物品、用户的相似度进行计算,在推荐系统的召回层经常使用,尤其是在局部敏感哈希(Locality-Sensitive Hashing)等快速最近邻搜索提出之后,Embedding被用来对物品进行快速筛选,到几百或几千的量级之后再进行神经网络的精排。

常见方法

  • Word2Vec
  • Item2Vec
  • Node2Vec

等等方法,以及文中提到的局部敏感哈希,也会在后续的系列文章逐步更新介绍。

参考

深度学习推荐系统 王喆编著

怎么形象理解embedding这个概念? - 刘斯坦的回答 - 知乎

最新文章

  1. 【原】SDWebImage源码阅读(五)
  2. [Linux]Linux系统调用列表
  3. JavaScript数独求解器
  4. java web 学习 --第三天(Java三级考试)
  5. .net学习笔记---xml基础知识
  6. 我的Linux对拍脚本
  7. 两个正在运行的activity之间的通信
  8. hdu 4539(状态压缩dp)
  9. 从零开始学ios开发(十九):Application Settings and User Defaults(上)
  10. highcharts 多数据+切换
  11. 8 Pratical Examples of Linux “Touch” Command--reference
  12. $.cookie is not a function
  13. hdu 1150 Machine Schedule(最小顶点覆盖)
  14. OC纯代码全手工打造ScroolView实现翻页
  15. MYSQL性能优化--分库分表
  16. ajax核心技术1---XMLHttpRequset对象的使用
  17. Immutable(不可变)集合
  18. 小T牛 绿色版 18.08.0100
  19. 如何简单实现接口自动化测试(基于 python) 原博主地址https://blog.csdn.net/gitchat/article/details/77849725
  20. SQL2005中的事务与锁定(九)-(1)- 转载

热门文章

  1. jQuery 第七章 实例方法 位置图形
  2. LNMP 一键安装脚本
  3. Spring简介以及配置信息
  4. Dapr DotNet5 HTTP 调用
  5. Java基础教程——缓冲流
  6. std::unique_ptr使用incomplete type的报错分析和解决
  7. 华为交换机eNSP删除Vlan的详细步骤
  8. 冲刺随笔——Day_Eight
  9. python虚拟环境相关设置备忘
  10. PyQt(Python+Qt)学习随笔:QTableView的gridStyle属性