如何在嵌入之上构建对称相似性模型?

数据挖掘 喀拉斯 词嵌入 相似
2022-02-12 23:34:03

我有两个相等长度的向量,它们来自两个相同的嵌入层。

我想计算它们的相似性,并且我不相信嵌入层足以仅使用点积(例如,不同的坐标可能依赖于整体相似性)。我想使用好的和坏的对的例子来学习这一点,而不是实际学习初始嵌入。

我想做的是以某种方式使用另一层组合这两个向量,然后将该层连接到输出层以获得最终决定(相似/不相似)。

简单的方法是添加另一个层,并将两个连接的嵌入向量完全连接到这个新层。缺点是模型不是对称的,这使得搜索空间比应有的更大。

有没有更好的办法?

到目前为止我的想法:

  1. 对这两个向量进行交叉乘积,然后对输出进行学习(很容易,但可能需要学习的权重太多)。n×n

  2. 创建两个对称的神经网络,其中权重是对称的(就像彼此的镜像一样)。直观地说,这可以允许来自两侧的任意坐标组合来馈送下一层(如何在 keras 中均衡权重?)。

有没有更好的办法?

加分项:除了对称性之外,如何激发传递性和反身性?通过添加大量琐碎的示例?(x,x)

1个回答

这是一个有趣的问题!令人惊讶的是,我从未阅读过关于这个特定问题的具体科学论文。在这里,您想学习一个将两个输入向量转换为标量的对称函数。在更一般的设置中,我们可以在文献中找到对置换不变函数的一些需求(参见Set TransformerAggregation Schemes for Graph Neural Network)。基本上,您有两种选择:

  1. 正如您所指出的,您可以采用任何非对称函数,例如串联 + 前馈网络,并使用 (x,y) 和 (y,x) 对进行训练。但是,可能有更聪明的方法......
  2. 设计一个排列不变的架构。在这里,您的机会是您只有 2 个嵌入可悲的是,你说他们的共同点产品不能被信任。然后,我可能会建议对您的嵌入应用一些线性/非线性变换,即定义一个可训练矩阵,并计算新空间中的点积。通过使用示例对训练,您将找到嵌入的合适转换,使得点积eiejQvi=Qeivj=QejQ(ei,ej)vivj符合真实的相似性。您当然可以使用更复杂的变换(例如多个非线性变换)。关键是使用相同的参数来转换两个嵌入可以确保对称性。

加分点:我不确定你的问题,但我在(2)中的命题可能自然地涉及及物性和自反性。