我有两个相等长度的向量,它们来自两个相同的嵌入层。
我想计算它们的相似性,并且我不相信嵌入层足以仅使用点积(例如,不同的坐标可能依赖于整体相似性)。我想使用好的和坏的对的例子来学习这一点,而不是实际学习初始嵌入。
我想做的是以某种方式使用另一层组合这两个向量,然后将该层连接到输出层以获得最终决定(相似/不相似)。
简单的方法是添加另一个层,并将两个连接的嵌入向量完全连接到这个新层。缺点是模型不是对称的,这使得搜索空间比应有的更大。
有没有更好的办法?
到目前为止我的想法:
对这两个向量进行交叉乘积,然后对输出进行学习(很容易,但可能需要学习的权重太多)。
创建两个对称的神经网络,其中权重是对称的(就像彼此的镜像一样)。直观地说,这可以允许来自两侧的任意坐标组合来馈送下一层(如何在 keras 中均衡权重?)。
有没有更好的办法?
加分项:除了对称性之外,如何激发传递性和反身性?通过添加大量琐碎的示例?