Embedding小结

目录

何为嵌入(嵌套,Embedding)

特点

神经网络中的Embedding

可能的应用

Ref


 

何为嵌入(嵌套,Embedding)

嵌入是从离散对象(例如字词)到实数向量的映射。

嵌入是一种相对低维的空间,您可以将高维矢量映射到这种低维空间里。通过使用嵌入,可以让在大型输入(比如代表字词的稀疏矢量)上进行机器学习变得更加容易。

试想,在N分类任务中,每个标签是由N长度的one-hot向量组成,其中有许多冗余,他的表示是稀疏的,我们可以将其映射到一个更加紧凑的空间来表示,如【1,1,2,1,1,7,1】-> 0.1, 0.3, 0.4】,Embedding干的就是这中间的映射。

在理想情况下,嵌入可以将语义上相似的不同输入映射到嵌入空间里的邻近处,以此来捕获输入的语义。一个模型学习到的嵌入,也可以被其他模型重用。

PS:Embedding的概念来自于word embeddings

嵌入的概念还是蛮简单的,但是要是去了解NLP中的嵌入机制,恐怕就需要费些时间了。

特点

嵌入所得向量中的各个维度通常没有固有含义,机器学习所利用的是向量的位置和相互之间的距离这些整体模式 PS:从空间上表达向量或者物体之间的关系,非常有意思!)

简单的讲,就是指“中国”Embedding后的向量在向量空间上与“中国人”的距离近,但与“李狗嗨“这三个字的Embedding向量距离比较远。这种向量空间上的距离远近就代表了我们所说的整体关系(中国人与中国有紧密联系,但与日剧里的”李狗嗨“关系就比较远)。

 

神经网络中的Embedding

Embedding这种是一种映射,但他到底是什么呢?我认为结果不一,只要这种方法可将高维一一映射到低维就是一种Embedding

现在大部分都指的是通过神经网络学习到了一种映射,他将原始的字词映射到一个Embedding空间,在这个空间中的向量之间的互相联系可以一定程度上表示字词之间的语义联系(这里的字词可以换为任何概念,只要你想将他进行Embedding操作)

Tensorflow中提供的Keras模型中有Embedding层可供我们直接调用使用。

一般我们指定该层的1输入向量的维度(input_length)、2 输入整数矩阵中的最大数值(input_dim)与3想要得到的输出向量的维度(output_dim)即可在自己的神经网络中使用Embedding操作,注意这只可作为网络第一层使用。

model = Sequential()

model.add(Embedding(1000, 64, input_length=10))

# 模型输入为一个整数矩阵,维度为[batch_size,input_length]
# 该整数矩阵中最大的值不可高于1000,如单词的索引标号
# 模型输出维度为  (batch_size, 10, 64)

input_array = np.random.randint(1000, size=(32, 10))

model.compile('rmsprop', 'mse')

output_array = model.predict(input_array)

assert output_array.shape == (32, 10, 64)



 

PS

如果你想查看这些Embedding后的向量,可以进一步采用PCA/T-SNE/自定义方法对他们分解降维到3维或者2维直观查看。

利用Tensorboard查看可参考:

https://www.jianshu.com/p/d5339d04aa17

另外,如果要深入了解词向量Embedding的话,建议去学习下NLP相关的文章。

 

可能的应用

注意Embedding的特点,就可以知道它的可用在物品搜索,自然语言处理,推荐系统。

具体推荐看https://zhuanlan.zhihu.com/p/53058456

 

Ref

深度学习中Embedding层有什么用

https://www.cnblogs.com/fujian-code/p/8967340.html

 

神奇的Embeddingbanana

https://zhuanlan.zhihu.com/p/53058456

 

文本表示学习-词嵌入入门理解

http://www.scofield7419.xyz/2017/09/25/%E6%96%87%E6%9C%AC%E8%A1%A8%E7%A4%BA%E5%AD%A6%E4%B9%A0-%E8%AF%8D%E5%B5%8C%E5%85%A5%E5%85%A5%E9%97%A8%E7%90%86%E8%A7%A3/

 

tf.keras.layers.Embedding API解释

https://www.tensorflow.org/api_docs/python/tf/keras/layers/Embedding

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值