Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Rutger Ruizendaal作者萝卜兔编辑整理

经常提到的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

极验
极验

极验是全球顶尖的交互安全技术服务商,于2012年在武汉成立。全球首创 “行为式验证技术” ,利用生物特征与人工智能技术解决交互安全问题,为企业抵御恶意攻击防止资产损失提供一站式解决方案。

入门Embedding词嵌入推荐系统
101
相关数据
Amazon机构

亚马逊(英语:Amazon.com Inc.,NASDAQ:AMZN)是一家总部位于美国西雅图的跨国电子商务企业,业务起始于线上书店,不久之后商品走向多元化。目前是全球最大的互联网线上零售商之一,也是美国《财富》杂志2016年评选的全球最大500家公司的排行榜中的第44名。

https://www.amazon.com/
相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

协同过滤技术

协同过滤(英语:Collaborative Filtering),简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。协同过滤又可分为评比(rating)或者群体过滤(social filtering)。其后成为电子商务当中很重要的一环,即根据某顾客以往的购买行为以及从具有相似购买行为的顾客群的购买行为去推荐这个顾客其“可能喜欢的品项”,也就是借由社区的喜好提供个人化的信息、商品等的推荐服务。除了推荐之外,近年来也发展出数学运算让系统自动计算喜好的强弱进而去芜存菁使得过滤的内容更有依据,也许不是百分之百完全准确,但由于加入了强弱的评比让这个概念的应用更为广泛,除了电子商务之外尚有信息检索领域、网络个人影音柜、个人书架等的应用等。

词嵌入技术

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

梯度提升技术

梯度提升是用于回归和分类问题的机器学习技术,其以弱预测模型(通常为决策树)的集合的形式产生预测模型。 它像其他增强方法一样以阶段式方式构建模型,并且通过允许优化任意可微损失函数来推广它们。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

随机森林技术

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。而"Random Forests"是他们的商标。这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合Breimans的"Bootstrap aggregating"想法和Ho的"random subspace method" 以建造决策树的集合。

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

特征工程技术

特征工程是利用数据所在领域的相关知识来构建特征,使得机器学习算法发挥其最佳的过程。它是机器学习中的一个基本应用,实现难度大且代价高。采用自动特征工程方法可以省去采用人工特征工程的需求。Andrew Ng 说“挖掘特征是困难、费时且需要专业知识的事,应用机器学习其实基本上是在做特征工程。”

支持向量机技术

在机器学习中,支持向量机是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

大数据技术技术

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

降维技术

降维算法是将 p+1 个系数的问题简化为 M+1 个系数的问题,其中 M<p。算法执行包括计算变量的 M 个不同线性组合或投射(projection)。然后这 M 个投射作为预测器通过最小二乘法拟合一个线性回归模型。两个主要的方法是主成分回归(principal component regression)和偏最小二乘法(partial least squares)。

查询技术

一般来说,查询是询问的一种形式。它在不同的学科里涵义有所不同。在信息检索领域,查询指的是数据库和信息系统对信息检索的精确要求

word2vec技术

Word2vec,为一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络,用来训练以重新建构语言学之词文本。网络以词表现,并且需猜测相邻位置的输入词,在word2vec中词袋模型假设下,词的顺序是不重要的。 训练完成之后,word2vec模型可用来映射每个词到一个向量,可用来表示词对词之间的关系。该向量为神经网络之隐藏层。 Word2vec依赖skip-grams或连续词袋(CBOW)来建立神经词嵌入。Word2vec为托马斯·米科洛夫(Tomas Mikolov)在Google带领的研究团队创造。该算法渐渐被其他人所分析和解释。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
这文章从https://blog.csdn.net/u010412858/article/details/77848878抄了不少啊……就算你比原文章多翻译了一个章节,好歹标明下出处,别标原创