深度学习:词嵌入Embedding

article/2025/10/20 14:48:18

http://blog.csdn.net/pipisorry/article/details/76095118

词嵌入

词嵌入其实就是将数据的原始表示表示成模型可处理的或者是更dense的低维表示(lz)。

One-hot Embedding

        假设一共有m个物体,每个物体有自己唯一的id,那么从物体的集合到\mathbb R^m有一个trivial的嵌入,就是把它映射到\mathbb R^m中的标准基,这种嵌入叫做One-hot embedding/encoding.

[数据预处理:独热编码(One-Hot Encoding)]

一般使用的低维embedding

        应用中一般将物体嵌入到一个低维空间\mathbb R^n(n \ll m) ,只需要再compose上一个从\mathbb R^m\mathbb R^n的线性映射就好了。每一个n\times m 的矩阵M都定义了\mathbb R^m\mathbb R^n的一个线性映射: x \mapsto Mx。当x 是一个标准基向量的时候,Mx对应矩阵M中的一列,这就是对应id的向量表示。

这个概念用神经网络图来表示如下:

        从id(索引)找到对应的One-hot encoding,然后红色的weight就直接对应了输出节点的值(注意这里没有activation function),也就是对应的embedding向量。

Note:

1 M随机初始化并且是可训练的,查找x对应的embedding表示其实 等价于 找x在下面这个网络中的权重,而这些权重是可训练的,且对应于矩阵M。

2  关于嵌入维度数量(New Embedding维度)的一般经验法则:

embedding_dimensions =  number_of_categories**0.25

也就是说,嵌入矢量维数应该是类别数量的 4 次方根。如词汇量为 81,建议维数为 3。

低维向量嵌入在tensorflow中的实现:tf.nn.embedding_lookup()

    embedding_map = tf.get_variable(  # 默认参数trainable = True,可训练name="embedding_map",shape=[self.config.vocab_size, self.config.embedding_size],initializer=self.initializer)seq_embeddings = tf.nn.embedding_lookup(embedding_map, self.input_seqs)

和下面类似:

matrix = np.random.random([1024, 64])  # 64-dimensional embeddings
ids = np.array([0, 5, 17, 33])
print matrix[ids]  # prints a matrix of shape [4, 64] 

从id类特征(category类)使用embedding_lookup的角度来讲:

1、onehot编码神经网络处理不来。embedding_lookup虽然是随机化地映射成向量,看起来信息量相同,但其实却更加超平面可分。

2、embedding_lookup不是简单的查表,id对应的向量是可以训练的(带有label信息),训练参数个数应该是 category num*embedding size,也就是说lookup是一种全连接层。详见 brain of mat kelcey

3、word embedding其实是有了一个距离的定义,即出现在同一上下文的词的词向量距离应该小,这样生成向量比较容易理解。autoencode、pca等做一组基变换,也是假设原始特征值越接近越相似。但id值的embedding应该是没有距离可以定义,没有物理意义,只是一种特殊的全连接层。

4、用embedding_lookup做id类特征embedding由google的deep&wide提出。阿里 第七章 人工智能,7.6 DNN在搜索场景中的应用(作者:仁重) 中提下了面对的困难,主要是参数数量过多(引入紫色编码层)和要使用针对稀疏编码特别优化过的全连接层( Sparse Inner Product Layer )等。

5、在分类模型中用这种id类特征,主要是希望模型把这个商品记住。但id类特征维度太高,同一个商品的数据量也不大,因此也常常用i2i算法产出的item embedding来替代id特征。

[tf.nn.embedding_lookup函数原理?]

[求通俗讲解下tensorflow的embedding_lookup接口的意思?]

[tf.nn.embedding_lookup]

[what-does-tf-nn-embedding-lookup-function-do]

某小皮

        词嵌入有其它很多方法如word2vec,bert等,embedding lookup只是其中一种。我们可以只使用简单的embedding lookup让模型自己去训练;也可以将embedding lookup中的矩阵先通过word2vec训练好进行初始化,再通过embedding lookup训练;或者只使用vord2vec进行初始化后,embedding lookup设置成不训练。

Word2vec

[深度学习:词嵌入之word2vec]

其它的Word Representation

 

Word level representation from characters embeddings    Bidirectional LSTM on top of word representation to extract contextual representation of each word

右图中的context应该是指句子的上下文。

[Sequence Tagging with Tensorflow]

 

句子embedding

1 词向量直接求平均或者最大值:对句子中所有单词直接求平均, 每个单词的权重相同, 得到sentence embedding。

2 使用每个词的TF-IDF值为权重, 加权平均, 得到sentence embedding。

sif sentence embedding使用预训练好的词向量, 使用加权平均的方法, 对句子中所有词对应的词向量进行计算, 得到整个句子的embedding向量:模型的输入是一个已有的word embedding,然后通过加权求平均的方法求得sentence的embedding,最后使用主成分分析去掉一些special direction,即在完成词加权平均之后,移除所有行为向量的公共主成分:v_s -= u*u^t*v_s。

        其中v_s表示加权平均之后的结果,u表示所有句子向量进行特征分解之后,最大特征值对应的特征向量,相当于所有句子向量的最大主成分,这样就把所有行为链路中彼此相关的一部分去除,只保留反应序列特性的成分。
[论文阅读 A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SEN- TENCE EMBEDDINGS]

[A simple but tough-to-beat baseline for sentence embedding]

 

 

词向量维度的选择

On the Dimensionality of Word Embedding

词向量集合的距离度量:PIP loss,基于此可以选择最优词向量维度

文章分析了LSA, Word2vec, Glove对于不同任务的最优维度


[On the Dimensionality of Word Embedding]

from: http://blog.csdn.net/pipisorry/article/details/76095118

ref: [tensorflow对嵌入概念的解释]

[深度学习、NLP 和表示法(Chris Olah 的博客)]

[TensorFlow Embedding Projector]

 


http://chatgpt.dhexx.cn/article/xpVl6VGb.shtml

相关文章

什么是embedding(把物体编码为一个低维稠密向量),pytorch中nn.Embedding原理及使用

文章目录 使embedding空前流行的word2vec句子的表达训练样本损失函数输入向量表达和输出向量表达 v w v_{w} vw​ 从word2vec到item2vec讨论环节pytorch中nn.Embedding原理及使用pytorch中nn.Embedding原理及使用一些注意的点 参考 简单来说,embedding就是用一个低维…

讲清楚embedding到底在干什么

要搞清楚embeding先要弄明白他和one hot encoding的区别,以及他解决了什么one hot encoding不能解决的问题,带着这两个问题去思考,在看一个简单的计算例子 以下引用 YJango的Word Embedding–介绍 https://zhuanlan.zhihu.com/p/27830489 On…

一文读懂Embedding

文章目录 一、**什么是Embedding?**二、One-Hot编码三、**怎么理解Embedding****四、Word Embedding** 一、什么是Embedding? “Embedding”直译是嵌入式、嵌入层。 简单来说,我们常见的地图就是对于现实地理的Embedding,现实的…

Embedding的理解

Embedding 嵌入,我们可以将其理解为一种降维行为。可以将高维数据映射到低维空间来解决稀疏输入数据的问题。 它主要有以下三个目的: 在 embedding 空间中查找最近邻,这可以很好的用于根据用户的兴趣来进行推荐。作为监督性学习任务的输…

BERT的三个Embedding详解

BERT将输入文本中的每一个词(token)送入token embedding层从而将每一个词转换成向量形式 两个嵌入层,segment embeddings和 position embeddings token embedding token embedding 层是要将各个词转换成固定维度的向量。在BERT中,每个词会被…

Embedding层的理解

Embedding层的理解 转载自:原文:深入理解 Embedding层的本质_罗小丰同学的博客-CSDN博客_embedding层 首先,我们有一个one-hot编码的概念。 假设,我们中文,一共只有10个字。。。只是假设啊,那么我们用0-…

Embedding理解与代码实现

Embedding 字面理解是 “嵌入”,实质是一种映射,从语义空间到向量空间的映射,同时尽可能在向量空间保持原样本在语义空间的关系,如语义接近的两个词汇在向量空间中的位置也比较接近。 下面以一个基于Keras的简单的文本情感分类问…

深度学习中Embedding层有什么用?

2019年03月24日15:23:32更新: 由于CSDN图片经常显示不出来,本文最新链接请点击:https://fuhailin.github.io/Embedding/ 博主所有博客写作平台已迁移至:https://fuhailin.github.io/ ,欢迎收藏关注。 这篇博客翻译自国…

pytorch nn.Embedding的用法和理解

(2021.05.26补充)nn.Embedding.from_pretrained()的使用: >>> # FloatTensor containing pretrained weights >>> weight torch.FloatTensor([[1, 2.3, 3], [4, 5.1, 6.3]]) >>> embedding nn.Embedding.from…

EMBEDDING层作用

embedding层作用:①降维②对低维的数据进行升维时,可能把一些其他特征给放大了,或者把笼统的特征给分开了。 Embedding其实就是一个映射,从原先所属的空间映射到新的多维空间中,也就是把原先所在空间嵌入到一个新的空…

彻底理解embedding

本文转载自https://blog.csdn.net/weixin_42078618/article/details/84553940,版权问题请联系博主删除 首先,我们有一个one-hot编码的概念。 假设,我们中文,一共只有10个字。。。只是假设啊,那么我们用0-9就可以表示…

深度学习中的embedding

整理翻译自google developer的机器学习入门课程,介绍了embedding的应用方式和如何计算embedding,后面还配有通过tensorflow DNN训练embedding练习加深理解。 分类输入数据(Categorical Input Data) 分类数据是指表示来自有限选择集的一个或多个离散项的…

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

[1] 名词理解 embedding层:嵌入层,神经网络结构中的一层,由embedding_size个神经元组成,[可调整的模型参数]。是input输入层的输出。 词嵌入:也就是word embedding…根据维基百科,被定义为自然语言处理NLP中…

用万字长文聊一聊 Embedding 技术

作者:qfan,腾讯 WXG 应用研究员 随着深度学习在工业届不断火热,Embedding 技术便作为“基本操作”广泛应用于推荐、广告、搜索等互联网核心领域中。Embedding 作为深度学习的热门研究方向,经历了从序列样本、图样本、再到异构的多…

Embedding技术

1、Embedding 是什么 Embedding是用一个低维稠密的向量来“表示”一个对象(这里的对象泛指一切可推荐的事物,比如商品、电影、音乐、新闻等),同时表示一词意味着Embedding能够表达相应对象的某些特征,同时向量之间的距…

什么是embedding?

本文转自:https://www.jianshu.com/p/6c977a9a53de    简单来说,embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。这个embedding向量的性质是能使距离相近的向量对应的物体…

Pairwise-ranking loss代码实现对比

Multi-label classification中Pairwise-ranking loss代码 定义 在多标签分类任务中,Pairwise-ranking loss中我们希望正标记的得分都比负标记的得分高,所以采用以下的形式作为损失函数。其中 c c_ c​是正标记, c − c_{-} c−​是负标记。…

【论文笔记】API-Net:Learning Attentive Pairwise Interaction for Fine-Grained Classification

API-Net 简介创新点mutual vector learning(互向量学习)gate vector generation(门向量生成器)pairwise interaction(成对交互) 队构造(Pair Construction)实验结果总结 简介 2020年…

白话点云dgcnn中的pairwise_distance

点云DGCNN中对于代码中pairwise_distance的分析与理解 2021年5月7日:已经勘误,请各位大佬不惜赐教。 一点一点读,相信我,我能讲清楚。 这个是本篇文章所要讨论的代码段 总体上把握,这个代码计算出了输入点云每对点之…

推荐系统[四]:精排-详解排序算法LTR (Learning to Rank): poitwise, pairwise, listwise相关评价指标,超详细知识指南。

搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术细节以及项目实战(含码源) 专栏详细介绍:搜索推荐系统专栏简介:搜索推荐全流程讲解(召回粗排精排重排混排)、系统架构、常见问题、算法项目实战总结、技术…