嵌入列如何为嵌入向量分配数字?

时间:2018-02-15 08:43:24

标签: tensorflow

我有一个项目,我使用数据,我们有数字功能和字符串功能来制作二进制分类器。我正在阅读有关tensorflow中的功能列的以下说明:https://www.tensorflow.org/get_started/feature_columns

我有一个问题是要确切了解嵌入列对String功能的作用: 在张量流示例中,我们有一个特征,其值在[“dog”,“spoon”,“scissors”,“guitar”]中。我们使用分类列将字符串转换为整数,这些整数是查找表的索引,其中每个字符串最终映射到低维向量(使用随机浮点数初始化)。据说嵌入向量的赋值发生在训练期间,嵌入列增加了模型的能力,因为嵌入向量可以从训练数据中学习类别之间的新关系。

embedding columns in tensorflow

我的问题是:嵌入列是否设法创建表示字符串之间相似性的向量作为“向量学习类别之间的新关系”?例如,如果我们将“doghouse”添加到上面的示例词汇表中,“dog”和“doghouse”的嵌入向量之间的距离将短于其他单词的向量。

如果我进一步提出问题,我们可以有一个字符串分类功能,其值为[“红色圆圈”,“红色方块”,“蓝色圆圈”,“蓝色方块”],问题将是:将嵌入向量表示与颜色和形状相似的类别之间的关系?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

取决于您的培训数据。

培训模型时会学习嵌入。如果包含“dog”和“doghouse”的示例非常相似,我希望嵌入会很接近。当训练数据中的语义接近时,嵌入很接近。

如果训练模型在动物和其他物体之间进行辨别(例如),那么这两个词应该相当远。

对于第二部分,假设你有合理的训练样例反映了你想要的字符串关系,你应该得到反映这种关系的嵌入。查看this paper他们培训嵌入的位置,以反映单词之间的许多关系(例如,资本与国家/地区)。