ML-Embeddings-嵌套-机器学习原理

什么是Embedding嵌套?

下面是谷歌官方定义:
一种分类特征,以连续值特征表示。通常,嵌套是指将高维度向量映射到低维度的空间。例如,您可以采用以下两种方式之一来表示英文句子中的单词:

  • 表示成包含百万个元素(高维度)的稀疏向量,其中所有元素都是整数。向量中的每个单元格都表示一个单独的英文单词,单元格中的值表示相应单词在句子中出现的次数。由于单个英文句子包含的单词不太可能超过 50 个,因此向量中几乎每个单元格都包含 0。少数非 0 的单元格中将包含一个非常小的整数(通常为 1),该整数表示相应单词在句子中出现的次数。
  • 表示成包含数百个元素(低维度)的密集向量,其中每个元素都包含一个介于 0 到 1 之间的浮点值。这就是一种嵌套。

嵌套本质上是降维,是化稀疏为密集。


嵌套的概念

嵌套是一种映射,将稀疏不连续的对象映射到实数向量。

比如下面是300维度的英语单词嵌套:

blue:  (0.01359, 0.00075997, 0.24608, ..., -0.2524, 1.0048, 0.06259)
blues:  (0.01396, 0.11887, -0.48963, ..., 0.033483, -0.10007, 0.1158)
orange:  (-0.24776, -0.12359, 0.20986, ..., 0.079717, 0.23865, -0.014213)
oranges:  (-0.35609, 0.21854, 0.080944, ..., -0.35413, 0.38511, -0.070976)

向量中的这些单独的维度并没有什么具体意义,它们是向量的位置、距离关系的整体图式表达,以便于机器学习使用。

嵌套对于机器学习的输入非常重要。分类器Classifier、神经网络Neura networks普遍工作于实数向量Real number vector。训练Train最好是基于密集向量dense vector,全部所有数值共同定义对象。但是,对于机器学习来说,很多重要的输入比如文本的单词,都没有自然的向量表现形式,嵌套函数就是这么一个标准且有效的函数,可以把稀疏离散discrete/sparse的对象变为连续的向量表示法。

嵌套也作为机器学习的输出值。由于嵌套将物体映射为向量,应用程序可以使用向量空间相似的方法,强健且灵活的估算物体之间的相似性。一个通用的用途就是发现最近邻对象。

比如上面的单词向量,下面是每个单词的三个最近邻单词,用角度来展示:

blue:  (red, 47.6°), (yellow, 51.9°), (purple, 52.4°)
blues:  (jazz, 53.3°), (folk, 59.1°), (bluegrass, 60.6°)
orange:  (yellow, 53.5°), (colored, 58.0°), (bright, 59.9°)
oranges:  (apples, 45.3°), (lemons, 48.3°), (mangoes, 50.4°)

最后一行数字告诉应用程序oranges和apples比较近似(分离45.3度),而和lemons,mangoes稍微区别大一些(48.3,50.4)。


Tensorflow中的嵌套Embedding

为了创建单词的嵌套,我们首先把文本划分为单词,并为每个词汇指定一个整数张量。假设这已经完成,word_ids表示包含这些整数的向量。比如句子,I have a cat.被划分为['I','have','a','cat',','],对应的word_ids张量是形状shape[5],由5个整数组成,比如[32,177,4,23,16]。要把这些单词映射为向量,我们需要使用tf.nn.embedding_lookup来生成嵌套变量。

word_embeddings = tf.get_variable(“word_embeddings”,
    [vocabulary_size, embedding_size])
embedded_word_ids = tf.nn.embedding_lookup(word_embeddings, word_ids)

如上,张量embedded_word_ids的形状变为[5,embedding_size],包含了5个嵌套(密集矢量)对应每个单词。训练结束后,word_embeddings将包含所有词汇单词的嵌套。

#如果Embedding_size=3,那么embedded_word_ids可能是
[[0.438890,0.782233,0.52721],
 [0.645432,0.523233,0.62333],
 [0.412333,0.124522,0.67223],
 [0.145333,0.133422,0.67223],
 [0.988888,0.765556,0.13344],
]

嵌套可以被多种网络类型训练,各种损失函数和数据集。例如,一个使用卷积神经网络RNN依赖词库去预测某个单词后面的下一个单词,或者使用两个网络进行语言翻译。


视觉化嵌套Visualizing Embeddings

Tensorboard中包含的嵌套投影器Embedding projector,它可以交互的显示嵌套,他可以从模型中读取嵌套并渲染到3D空间。

Embedding projector有三个面板:

  • Data panel
  • Projections panel
  • Inspector panel

此处省去很多内容的翻译...

ML-Embeddings-嵌套-机器学习原理_第1张图片
ML-Embeddings-嵌套-机器学习原理_第2张图片

探索人工智能的新边界

如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,感谢转发~


END

你可能感兴趣的:(ML-Embeddings-嵌套-机器学习原理)