对非语言概念使用嵌入?

时间:2019-05-13 17:06:47

标签: machine-learning deep-learning embedding one-hot-encoding data-representation

使用嵌入的较大的一键编码矢量来表示汽车制造商和模型是否有意义?另外,嵌入在概念上将代表什么?例如,福特F-150与丰田Tacoma有多相似?

2 个答案:

答案 0 :(得分:1)

是的,这很有意义。

您可以将嵌入视为输入在不同空间中的表示。有时您想执行降维,因此嵌入的维数低于输入的维数。在其他时候,您只是希望您的嵌入能够很好地描述您的输入,以便您的模型(例如神经网络)可以轻松将其与所有其他输入区分开(这在分类任务中特别有用)。

如您所见,嵌入只是一个向量,它比输入本身更好地描述了您的输入。在这种情况下,我们通常用 features 一词来指代嵌入。


但是,也许您要问的是有些不同。您想知道嵌入是否可以表示汽车之间的相似性。从理论上讲,是的。假设您具有以下嵌入:

Car A: [0 1]
Car B: [1 0]

嵌入的第一个元素是制造者。 0代表丰田,1代表法拉利。第二个要素是模型。 0代表F-150,1代表458 Italia。您如何计算这两辆车之间的相似度?

余弦相似度 基本上,您可以计算嵌入空间中这两个向量之间的角度的余弦值。这里的嵌入是二维的,因此我们在一个平面上。而且,两个嵌入是正交的,因此它们之间的夹角为90°,余弦为0。因此它们的相似度为0:根本不相似!

假设您有:

Car A: [1 0]
Car B: [1 1]

在这种情况下,制造商是相同的。尽管型号不同,但您可能希望这两辆车比前两辆更加相似。如果计算它们的嵌入之间的夹角的余弦值,将得到0.707左右,该值大于0。这两个汽车的确更相似。

好吧,这并不容易。这完全取决于您如何设计模型以及如何学习嵌入,即您提供哪些数据作为系统输入。

答案 1 :(得分:1)

TLDR:是的,这很有道理。不,它与著名的Word2Vec嵌入不同。


当人们谈论在矢量表示中嵌入数据时,他们实际上是指他们显式/隐式构造的设计矩阵的factorization

Word2Vec为例。设计矩阵表示一个人工构造的预测问题,其中周围环境中的单词用于预测中心单词(SkipGram)。这等效于分解上下文和中心单词的交叉表矩阵,该矩阵用正点向互信息填充。 [1]

现在,我们想回答这个问题:福特F-150与丰田Tacoma有多相似?

首先,我们必须确定我们的数据是否允许我们使用监督方法。如果是,那么可以使用一些算法,例如传统的Feed-forward neural networkfactorization machine。您可以通过使用预测标签来使用这些算法来定义一个热点空间中的特征相似性,例如单击汽车租赁网站上的详细信息页面。然后,具有相似向量的模型意味着人们在同一会话中单击其详细信息页面。也就是说,响应行为模拟了功能的相似性。

如果未标记数据集,您仍然可以尝试预测要素的同时出现。这是Word2Vec的新颖之处,即使用上下文窗口中的共现标记的未标记句子巧妙地定义预测问题。在这种情况下,矢量仅表示特征的共现。它们可以用作降维技术,以提取密集特征以处理管道中的另一个预测问题。

如果您想节省一些脑力,而您的功能恰好是所有因素,则可以在软件包中应用现有算法,例如LDANMFSVD,并使用二进制分类的损失函数,例如hinge loss。大多数编程语言都为其库提供由几行代码组成的API。

以上所有方法均为matrix factorization。还有更深,更复杂的tensor factorization方法。但是我会让你自己对它们进行研究。

参考

  1. http://papers.nips.cc/paper/5477-neural-word-embedding-as-implicit-matrix-factorization.pdf