摘要
现有的跨模态检索方法都是基于batch的。
当今的数据都是以流方式传递,批处理对于这种方式的学习效率是很低的。
所以现有的在线哈希方式可以应用于CMH.
然而这些在线方式不能解决两大困难:
1,哈希码的快速更新。2,模态间关系的分析。
我们的方法可以有效地解决上述两个问题,分别通过如下的两种方式:
1,为了解决无效率地哈希码的更新,可以把哈希码拆成有效率的永久SLC矩阵
和转换矩阵。时间复杂度就和总的数据库的尺寸无关了。
2,并且我们的方法可以编码潜在语义关系,提升了异质性数据之间的关联。
关于拆分哈希码的深入解释
OCMH把不同模态共享的哈希码拆分成共享潜在编码SLC和转换矩阵。
- SLC被所有的模态共享,旧的编码无须改变,只需要把新的数据的哈希码不断
添加进来即可。
- 新数据提供的改善信息则可以被动态转换矩阵保留。相当于把哈希码又映射到一个
新的空间。这个新空间的意义在于旧的哈希码无须改变,只需要改变转换矩阵,就
可以视作对旧的哈希码进行更新,并且训练这个转换矩阵的时间复杂度极低。
提出方法
其中H是SLC,Vm就是各个模态的动态转移矩阵。
优化策略
1.优化Vm
通过整个loss对Vm求导,得到
其中,
- 证明一:计算CH和Em的时间复杂度为O(Nt),与新数据的大小成线性关系。
,代表旧的哈希码的内积。带(t)的就是新的哈希码的内积。
可以看出旧的哈希码的内积在上一个迭代中已做了保留,无须计算新的哈希码。
而新的哈希码的内积需要重新计算。故时间复杂度就是O(Nt).
同理,计算Em的时间复杂度也是O(Nt).
2.优化![H^{(t)}](https://latex.csdn.net/eq?H%5E%7B%28t%29%7D)
通过整个loss对求导,可以得到
的公式:
3.优化W2
把Vm带入到整体的损失函数中,可以得到以下的式子:
.............................(1)
其中,
再对W2进行求导为0,可以得到:
4.优化W1
把W1的式子带入到(1)当中,可以得到:
为了避免平凡解,我们对W1进行了约束,
然后我们就可以通过解决上述的特征值问题得到W1.
(怎么解决特征值问题?)
整体算法
由于Vm已经被旧的数据给优化过了,所以我们不需要太多的迭代优化Vm,
H同理,所以我们把迭代次数设置3.
并且通过证明(博客中不详述),上述更新所有的变量的时间复杂度都为O(Nt).