https://www.jiqizhixin.com/articles/2019-03-27-7

经常提到的Embedding层有什么用?

在深度学习实验中经常会遇Eembedding层,然而网络上的介绍可谓是相当含糊。比如 Keras中文文档中对嵌入层 Embedding的介绍除了一句 “嵌入层将正整数(下标)转换为具有固定大小的向量”之外就不愿做过多的解释。那么我们为什么要使用嵌入层 Embedding呢? 主要有这两大原因:

1、使用One-hot 方法编码的向量会很高维也很稀疏。假设我们在做自然语言处理(NLP)中遇到了一个包含2000个词的字典,当使用One-hot编码时,每一个词会被一个包含2000个整数的向量来表示,其中1999个数字是0,如果字典再大一点,这种方法的计算效率会大打折扣。

2、训练神经网络的过程中,每个嵌入的向量都会得到更新。通过上面的图片我们就会发现在多维空间中词与词之间有多少相似性,这使我们能可视化的了解词语之间的关系,不仅仅是词语,任何能通过嵌入层 Embedding 转换成向量的内容都可以这样做。

上面说的概念可能还有些不清楚,那我们就举个例子看看嵌入层 Embedding 对下面的句子怎么处理的。Embedding的概念来自于word embeddings,如果您有兴趣内容,可以查询 word2vec 。

deep learning is very deep

使用嵌入层embedding 的第一步是通过索引对该句子进行编码,这里我们给每一个不同的单词分配一个索引,上面的句子就会变成这样:

1、2、3、4、1

接下来会创建嵌入矩阵,我们要决定每一个索引需要分配多少个“潜在因子”,这大体上意味着我们想要多长的向量,通常使用的情况是长度分配为32和50。在这篇文章中,为了保持文章可读性这里为每个索引指定6个潜在因子。嵌入矩阵就会变成这样:

嵌入矩阵

这样,我们就可以使用嵌入矩阵而不是庞大的one-hot编码向量来保持每个向量更小。简而言之,嵌入层embedding在这里做的就是把单词“deep”用向量[.32, .02, .48, .21, .56, .15]来表达。然而并不是每一个单词都会被一个向量来代替,而是被替换为用于查找嵌入矩阵中向量的索引。其次这种方法面对大数据时也能有效计算。由于在深度神经网络的训练过程中嵌入向量也会被更新,我们就可以探索在高维空间中哪些词语之间具有相似性,再通过使用t-SNE 这样的降维技术就可以将这些相似性可视化。

不仅是词嵌入

前面的例子表明,单词嵌入在自然语言处理领域非常重要。通过单词嵌入,我们可以使用语言捕捉关系。并且,嵌入层可以用来嵌入比单词更多的东西。在目前的研究项目中,可使用嵌入层来嵌入用户在线行为。将索引分配给用户行为,如“门户网站Y上的页面类型X的页面视图”或“滚动X像素”。然后,这些索引用于构建一系列用户行为。

在“传统”机器学习模型(支持向量机、随机森林、梯度提升树)与深度学习模型(深度神经网络、递归神经网络)的比较中,我发现这种嵌入方法对于深度神经网络非常有效。

“传统”机器学习模型依赖于特征工程的表格输入。这意味着,作为研究人员,我们决定特征是什么。在这种情况下,特征可能是:访问的主页数量、完成的搜索数量、鼠标滚动的像素总量。然而,在进行特征工程时,很难捕捉空间(时间)维度。通过使用深度学习嵌入层,我们可以通过提供一系列用户行为(作为索引)作为模型的输入来有效地捕捉这个空间维度。

在我的研究中,递归神经网络表现最好。从“传统”特征工程模型来看,梯度提升树表现最佳。其他研究探索了在MOOCs中使用嵌入层来编码学生行为( Piech等人.2016 )和电子商务中用户行为建模( Tamhane等人.2017年)。

推荐系统

嵌入层还可以用来处理推荐系统中的稀疏矩阵问题。

推荐系统的使用非常广泛,我们也都不陌生。最常见的例子是亚马逊的产品推荐和 Netflix’s 的项目推荐系统。Netflix还曾举办过一场价值100万美元的竞赛,为他们的推荐系统寻找最佳的协同过滤算法。

推荐系统有两种主要类型,区分这两种类型很重要。

基于内容的过滤:这种类型的过滤是基于有关项目或者产品的数据。例如,让用户填写一份关于他们喜欢什么电影的调查。如果他们说他们喜欢科幻电影,系统便推荐他们去看科幻电影。在这种情况下,所有项目都必须有大量元信息可用。

协同过滤:让系统找到像你一样的人,看看他们喜欢什么,假设你也喜欢同样的东西。和你一样的人=以相似的方式评价你看的电影的人。在大型的数据集中,这比元数据方法工作得好得多。本质上,询问人们的行为不如观察他们的实际行为好。

要解决这个问题,我们可以创建一个巨大的矩阵,将所有用户对所有电影的评价进行比较。然而,在许多情况下,这将产生一个极其稀疏的矩阵。想想你的Netflix账户。你看过的电影占他们总供应量的百分比是多少?这可能是一个相当小的百分比。然后,通过梯度下降,可以训练一个神经网络来预测每个用户对每部电影的评价有多高。如果你想更多地了解深度学习在推荐系统中的应用,可以关注我们,并加入我们的社群,提出你想了解的内容。

深研资料

原文链接:

https://towardsdatascience.com/deep-learning-4-embedding-layers-f9a02d55ac12

word2vec:

https://arxiv.org/pdf/1301.3781.pdf

t-SNE:

https://lvdmaaten.github.io/tsne/

嵌入层编码学生行为:

https://stanford.edu/~cpiech/bio/papers/deepKnowledgeTracing.pdf

电子商务用户行为建模:

https://link.springer.com/chapter/10.1007/978-3-319-57529-2_42

关于embedding的理解:

https://towardsdatascience.com/neural-network-embeddings-explained-4d028e6f0526

https://www.tensorflow.org/guide/embedding

https://github.com/WillKoehrsen/wikipedia-data-science/blob/master/notebooks/Book%20Recommendation%20System.ipynb

Embedding层相关推荐

  1. 深入理解 Embedding层的本质

    继上文https://blog.csdn.net/weixin_42078618/article/details/82999906探讨了embedding层的降维效果,时隔一个月,分享一下嵌入层在NP ...

  2. 【文本分类】深入理解embedding层的模型、结构与文本表示

    [1] 名词理解   embedding层:嵌入层,神经网络结构中的一层,由embedding_size个神经元组成,[可调整的模型参数].是input输入层的输出.   词嵌入:也就是word em ...

  3. embedding层和全连接层的区别是什么 一般说embedding层,实现方式就是一个没有bias的fc层

    embedding层和全连接层的区别是什么 一般说embedding层,实现方式就是一个没有bias的fc层

  4. word2vec的词向量神经网络的embedding层的关系

    自己之前学习了一波word2vec的词向量&&神经网络的embedding,关于这2者的原理和实践,可以参看我之前的博客: 利用神经网络的embedding层处理类别特征 (一)理解w ...

  5. 在Keras的Embedding层中使用预训练的word2vec词向量

    文章目录 1 准备工作 1.1 什么是词向量? 1.2 获取词向量 2 转化词向量为keras所需格式 2.1 获取所有词语word和词向量 2.2 构造"词语-词向量"字典 2. ...

  6. 点击率预测模型Embedding层的学习和训练

    导读: 本文将简要介绍推荐模型的发展历史,现状,和下一步的研究趋势.并重点介绍针对embedding数据的模型训练及优化.主要包含以下几大部分内容: CTR预测模型(CTR Models) 连续值处理 ...

  7. 利用神经网络的embedding层处理类别特征

    类别特征在现实里十分常见,处理的方法也很多,最常见的思路是转为one-hot编码,当然这种处理方式比较粗暴,在许多算法里效果也不是很好.还有的处理方式寻找类别特征的最优切分,这个需要特定工具的支持,如 ...

  8. pytorch embedding层详解(从原理到实战)

    做nlp很多时候要用到嵌入层,pytorch中自带了这个层 什么是embedding层 这是一个写的比较好的 我用最通俗的语言给你讲 在nlp里,embedding层就是把单词表['你','好','吗 ...

  9. keras.layers.Embedding层介绍

    本层应用,就是把稀疏矩阵变成一个密集矩阵,也称为查表,因为他们之间是一个一一映射关系.与其对应的是one-hot编码,multi-hot编码,对于特征维度过大的应用,直接使用会造成维度灾难. Embe ...

  10. [阿里DIN] 从论文源码学习 之 embedding层如何自动更新

    [阿里DIN] 从论文源码学习 之 embedding层如何自动更新 文章目录 [阿里DIN] 从论文源码学习 之 embedding层如何自动更新 0x00 摘要 0x01 DIN源码 1.1 问题 ...

最新文章

  1. 进程 线程 协程_进程,线程,协程那些事
  2. 大规模业务服务器开发总结
  3. 计算机基础知识关于进制,计算机基础知识-- 进制和编码
  4. javaWEB总结(9):自定义HttpServlet
  5. LeetCode 1260. 二维网格迁移(二维转一维)
  6. ubuntu终端执行shell脚本报command not found解决方法
  7. AD9在PCB中放大元件后,元件表面出现网格
  8. 【工科数学分析】2021-10-01-工科数学分析叒复习(一)
  9. 批处理当前文件夹下所有文件和子文件夹中的文件
  10. 如何恢复RAW格式移动硬盘的数据
  11. 网课查题微信公众号如何搭建步骤
  12. 【数字图像处理matlab】(HSI变换融合算法)
  13. 计算机无法连接到宽带,win10提示无法连接到宽带连接不能建立到远程计算机怎么解决...
  14. http工作中常见的状态码
  15. 什么是MeasurementStudio?
  16. 基于硬件定时器的软件定时器
  17. 【干货】我的机器学习入门路线图
  18. java 各版本下载官方网站
  19. Vue来回切换几次页面后,echart/页面越来越卡
  20. 试总结计算机整机组装的方法和流程,项目9 组装计算机整机.ppt

热门文章

  1. 新手学Python之学习官网教程(十三: What Now)
  2. 机器学习实战教程(六):线性回归
  3. 2023年有实力的长沙前端培训机构排名都在这里了!
  4. postgreSQL 更新语句 关于字段不存在问题
  5. 国内最让人失望的景点有哪些?哪些景点冷门却又十分好玩、值得一去,数据来为你揭晓...
  6. 激光灯 | 大致几种通讯方式
  7. PTA 游泳池改造 (30 分)
  8. mysql手工注入imformation_SQL 注入总结
  9. Svm算法原理及实现
  10. 使用记事本编写运行Java程序