嵌入对于机器学习的输入非常重要。更一般地,分类器和神经网络用于实数向量。他们操练最好的密集向量,其中所有值都有助于定义一个对象。然而,机器学习的许多重要输入,例如文字,没有自然的向量表示。嵌入函数是将这些离散输入对象转换为有用的连续向量的标准和有效方法。
嵌入作为机器学习的输出也很有价值。由于嵌入将对象映射到向量,因此应用程序可以使用向量空间中的相似性(例如,欧几里德距离或向量之间的角度)作为对象相似性的鲁棒性强且灵活的度量。一个常见用途是找到最近的邻居。例如,使用与上述相同的文字嵌入,这里是每个文字的三个近邻和相应的角度:
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°)
这将告诉一个应用程序,苹果和橙子(相距45.3°)在某种程度上比柠檬和橙子(相距48.3°)相似。
在TensorFlow中嵌入
要在TensorFlow中创建文字嵌入,我们首先将文本分割成文字,然后为词汇表中的每个单词分配一个整数。假设这已经完成,那word_ids
是这些整数的一个向量。例如,“I have a cat.”这个句子可以被分解[“I”, “have”, “a”, “cat”, “.”]
,然后相应的word_ids
张量就会形成[5]
并由5个整数组成。为了将这些单词id映射到向