深度学习-生成模型-预训练方法:Embedding(Tranform Object To Vector)
- 一、Embedding概述
- 二、Embedding与Ont-Hot编码
- 三、Word Embedding
- 1、传统的自然语言处理系统
- 2、词向量(Word Embedding)空间语言模型(Vector space models, VSMs)
- 3、CBOW模型
- 4、Skip-Gram 模型
- 四、Embedding可视化
一、Embedding概述
- 近年来,NLP自然语言处理、推荐系统,以及计算机视觉已成为目前工业界算法岗的主流方向,无论在哪个领域,对“Embedding”这个词概念的理解都是每个庞大知识体系的基石。
- “Embedding”直译是嵌入式、嵌入层。它能把万物嵌入万物,是沟通两个世界的桥梁!
- 用数学的话来说:“它是单射且同构的”
- 地图就是对于现实地理的Embedding,现实的地理地形的信息其实远远超过三维,但是地图通过颜色和等高线等来最大化表现现实的地理信息。
- 通过Embedding,我们在现实世界里的文字、图片、语言、视频就能转化为计算机能识别、能使用的语言,且转化的过程中信息不丢失。
- 简单来说,embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。
- 这个embedding向量的性质是能使距离相近的向量对应的物体有相近的含义,比如 Embedding(复仇者联盟)和Embedding(钢铁侠)之间的距离就会很接近,但 Embedding(复仇者联盟)和Embedding(乱世佳人)的距离就会远一些。
- 除此之外Embedding甚至还具有数学运算的关系,比如 Embedding(马德里)-Embedding(西班牙)+Embedding(法国)≈Embedding(巴黎)
- 从另外一个空间表达物体,甚至揭示了物体间的潜在关系,这种感觉类似“傅里叶变换”。
- Embedding能够用低维向量对物体进行编码还能保留其含义的特点非常适合深度学习。
- 在传统机器学习模型构建过程中,我们经常使用one hot encoding对离散特征,特别是id类特征进行编码,但由于one hot encoding的维度等于物体的总数,比如阿里的商品one hot encoding的维度就至少是千万量级的。这样的编码方式对于商品来说是极端稀疏的,甚至用multi hot encoding对用户浏览历史的编码也会是一个非常稀疏的向量。
- 而深度学习的特点以及工程方面的原因使其不利于稀疏特征向量的处理(计算量太过庞大)。因此如果能把物体编码为一个低维稠密向量再喂给DNN,自然是一个高效的基本操作。
二、Embedding与Ont-Hot编码
- One-hot 编码是一种最普通常见的表示离散数据的表示,首先我们计算出需要表示的离散或类别变量的总个数 N,然后对于每个变量,我们就可以用 N-1 个 0 和单个 1 组成的 vector 来表示每个类别。
- Ont-Hot编码有两个很明显的缺点:
- 对于具有非常多类型的类别变量,变换后的向量维数过于巨大,且过于稀疏。
- 映射之间完全独立,并不能表示出不同类别之间的关系。
- 比如:其实我们这篇文章,虽然100W字,但是其实我们整合起来,有99W字是重复的,只有1W字是完全不重复的。
- 那我们用100W X 10W的岂不是白白浪费了99W X 10W的矩阵存储空间。
- 那怎么办???这时,Embedding层就出现了!
- Embedding 有以下 3 个主要目的:
- 在 embedding 空间中查找最近邻,这可以很好的用于根据用户的兴趣来进行推荐。
- 作为监督性学习任务的输入。
- 用于可视化不同离散变量之间的关系。
- 假设:我们有一个2 x 6的矩阵,然后乘上一个6 x 3的矩阵后,变成了一个2 x 3的矩阵。
- 这个过程,我们把一个A中的12个元素的矩阵变成C中6个元素的矩阵。
- Embedding层,在某种程度上,就是用来降维的,降维的原理就是矩阵乘法。
三、Word Embedding
1、传统的自然语言处理系统
- 传统的自然语言处理系统把词(word)当作一个离散的原子符号。比如,猫可以使用Id537来表示,Id143表示狗。这些编码是任意的,这些编码对于系统处理不同的单词并没有提供有用的信息。这就意味着,如果系统已经学习了什么是“猫”的信息,但这个系统处理什么是“狗”是并没有提供很大的帮助(比如:他们都是动物,有四条腿,宠物,等)。这种词的表示是独立的,离散的 id 使得数据之间并没有很大的关联,通常也意味着我们需要更多的数据去成功的训练统计模型。
- 然而,向量(vector representation)克服了这些缺点。
2、词向量(Word Embedding)空间语言模型(Vector space models, VSMs)
- 向量空间模型(Vector space models, VSMs)使用一个连续的空间表示词(words/embed), 它把语义相关的单词都映射在了附近为位置。
- 在NLP中,VSM拥有很长很丰富的历史,但是所有的方法,在很大的程度上都有这些或者那样的分布式假设(Distributional Hypothesis), 及指出了出现在相同上下文的词具有相同的语意。
- 基于这种假设可以划分两种不同的类别:Count-Based Methods (e.g. Latent Semantic Analysis), 和 Predictive-Based Methods (e.g. neural probabilistic language models)
- 从最原始的文本去学习词向量,Word2vec是一个特别有效的预测模型(Predictive-Based Model)。它具有两个版本,Continuous Bag-of-Words 模型(CBOW) 和 Skip-Gram 模型。从算法的角度来看,这两个模型都是相似的。
- 对于这两种模型,对于数据集比较小的情况CBOW性能要比Skip-Gram模型好,但是对于数据集比较大时,其性能要差一些。
3、CBOW模型
- CBOW模型是给定周围的上下文预测(surrounding context)一个中心词(center word)。比如,给定“The cat sits on the mat”, 我们把[“The” , “cat”, “sits”, “on”, “mat”]为上下文,而我们需要去预测和生成的中心词为”jumped”。
4、Skip-Gram 模型
- Skip-Gram模型:是给定中心词预测它周围的词,它与CBOW模型刚好是相反的。
四、Embedding可视化
- Embedding 最酷的一个地方在于它们可以用来可视化出表示的数据的相关性,当然要我们能够观察,需要通过降维技术来达到 2 维或 3 维。最流行的降维技术是:t-Distributed Stochastic Neighbor Embedding (TSNE)。
- 我们可以定义维基百科上所有书籍为原始 37,000 维,使用 neural network embedding 将它们映射到 50 维,然后使用 TSNE 将它们映射到 2 维,其结果如下:
- 我们可以清楚地看到属于同一类型的书籍的分组。虽然它并不完美,但惊奇的是,我们只用 2 个数字就代表维基百科上的所有书籍,而在这些数字中仍能捕捉到不同类型之间的差异。这代表着 embedding 的价值。
- 静态图的问题在于我们无法真正探索数据并调查变量之间的分组或关系。 为了解决这个问题,TensorFlow开发了 projector,这是一个在线应用程序,可以让我们可视化并与 embedding 交互。 结果如下:
Word Embedding
Semantic Embedding
Document Embedding
参考资料:
一文读懂Embedding的概念,以及它和深度学习的关系词向量与Embedding究竟是怎么回事?词向量与Embedding究竟是怎么回事?