一,通过raw feature学习到S,然后固定不动指导哈希码学习
- JDSH:
Motivation
1,学习到简单的 S,这个 S 不单单是 S_I + S_T,这样把模态割裂的方式是不好的,应该把模态互相融合,你中有我,我中有你,一个I与所有I的相似度乘以对应的pair中的一个T与所有T的相似度然后相加。构成一个S_fusion(这与DGCPN相似,DGCPN只是进行相乘的时候做了一个KNN.)
2,接下来就是精炼S,离最大sim近的那些就拉近一些,离最小sim近的那些就推远一些。这就有两个问题:如何设置界限和如何拉近和推远?
先讲界限,
根据分布,可以发现实际分布左边近似于高斯分布左边,实际分布右边近似于拉普拉斯分布右边,所以就可以把这两个分布的均值当做界限,这里要加上方差,把范围限制地更小一些:
再讲拉近和推远,
通过赋予权重的方式进行拉近和推远:
3,然后就可以利用新学到的S指导哈希码的学习
二,S在哈希码迭代学习的时候不停变动
- SRCH
对无监督学习的精彩总结:
1,利用raw data的几何特征,然后学习到的S固定不动。
缺点:这个解决方案显然是次优的,因为原始特征通常不是为最近邻搜索而设计的,它们之间的距离可能有很大的偏差。
2,学习到的S,保持跨模态一致性,而不是将不同模态割裂开来。
为什么要跨模态一致性:两个样本在不同的模态下会出现相似度的不一致,从而混淆了训练过程,所以学习到一个模态融合的 S 便显得重要。
3,训练的时候保持数据语义连接的稀疏性
为什么要保持图的稀疏性:稀疏相似图节省了训练时间,而紧密连接的相似图可能会引入不必要的噪声。在这个意义上,我们需要在训练时简化相似图,只保留显式连接。
motivation
1,我们这个算法就是解决第一个问题,同时优化第三个问题,尽量保持稀疏性。
2,如何不断更新S:
初始化:通过KNN算法,构造初始的S矩阵(貌似是这样)
取最相近的 k 个节点。
解释一下,C指的是权重,是通过度来计算,a指的是KNN初始化时候的度。度越大,权重C越小(参考GCN里面的原理,度越大,为边提供的信息越少)。
这里把Z和B都弄成模态统一的。
这里的g可以取V和T,分成两部分一模一样的公式形式,但是输入不同模态的数据来求。
3,如何保持稀疏性:
(详细原因不甚了解)
4,为了更好地提高我们的模型的鲁棒性,加入了自编码模块:
为了学习互相独立的哈希码B.