前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Embedding是什么?

Embedding是什么?

作者头像
何武凡
发布2023-03-09 17:22:26
7570
发布2023-03-09 17:22:26
举报
背景

在nlp领域,如何把词进行编码成数字,从而能输入到数学模型是需要考虑的:

索引编码:

  • 整数编码,特征之间的关系无法捕捉

one-hot编码的缺点:

  • 对于具有非常多类型的类别变量,变换后的向量维数过于巨大,且过于稀疏。
  • 映射之间完全独立,并不能表示出不同类别之间的关系。

Embedding是什么

嵌入是将正整数(索引值)转换为固定尺寸的稠密向量。这句话来着keras文档中对embedding层的解释,非常概括,不太容易理解,但确实概括了要干的事情。

比如一句话,“我爱中国”对应的索引为[0,1,2,3],要将这个索引转化为固定大小且稠密的向量来表示,而不是稀疏的one-hot编码。可以表示为[[0.2, 0.5], [0.6,-0.1], [0.8, 0.4], [0.5, 0.5]],。

词嵌入通常是8-1024维度,根据数据量的大小来调整,高维度的嵌入能更好的捕捉词之间的关系,但是需要更多的数据来训练。

Embedding是如何实现的

通过Embedding层实现,embedding层可以看作是一张从索引映射到稠密向量的查找表,当使用embedding层的时候,embedding层和神经网络其他层一样,权重是随机初始化的。根据你的训练任务,embedding层通过反向传播逐渐调整。

embedding层的具体结构即全连接网络,输入为整数索引,隐含层是embedding的维度,隐含层的权重就是词嵌入。skip-gram模型的前半部分即词嵌入。

例如在tensorflow中,用于句子分类时的嵌入层,输入是整数索引,经过嵌入层、池化层、全连接输入训练可以得到嵌入层权重,即词嵌入。

代码语言:javascript
复制
embedding_dim=16
model = Sequential([  
	vectorize_layer,  
	Embedding(vocab_size, embedding_dim, name="embedding"),  
	GlobalAveragePooling1D(),  Dense(16, activation='relu'),  
	Dense(1)
	])

应用

最常用的就是词嵌入表达,但是万物可嵌入。Embedding在输入数据没有较好的数据表示时,能将输入数据根据下游任务转化为可学习的高维度向量表示,比如输入的为单词、图片或者输入的为空间位置等。

mnist数据集中的图片,可以通过嵌入层来表示,如下图所示,每个点代表一个图片(10000*784),通过嵌入层,将图片的像素点转化为稠密的向量,然后通过t-SNE/pca降维,可以看到图片的空间分布。(generated by copilot)

在进行特征工程时,很难捕捉空间(时间)维度。通过使用深度学习嵌入层,我们可以通过提供一系列用户行为(作为索引)作为模型的输入来有效地捕捉这个空间维度。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2cy4t3peazy8s


  1. Word embeddings  |  Text  |  TensorFlow ↩︎
  2. 嵌入层 Embedding - Keras 中文文档 ↩︎
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Embedding是什么
  • Embedding是如何实现的
  • 应用
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档