CZHash[1] 是一篇 zero-shot hashing 的工作,有在 multi-label 数据集上做实验。经与作者[3]确认,这里记录此文的实验设置,对照原文 IV.B 节看,本文符号有所不同。
Dataset
一个完整的数据集,如 MIR-Flickr25k,记为 O = { o i } i = 1 n = { v i , t i , l i } i = 1 n O=\{o_i\}_{i=1}^n=\{v_i,t_i,l_i\}_{i=1}^n O={oi}i=1n={vi,ti,li}i=1n, v i v_i vi 是第 i 张 image, t i t_i ti 是 text, l i l_i li 是 label。记 class set 为 C = { c k } k = 1 K C=\{c_k\}_{k=1}^K C={ck}k=1K,共 K 个类。因为是 multi-label 数据,假设 l i l_i li 是 multi-hot 的 0/1 向量。
Setting (a)
谓之 cross-modal hashing baseline experiments,是普通的 cross-modal retrieval 的划分。O 分成两部分:retrieval set D D D 和 query set Q Q Q。其中 D D D 同时用作 training set,且全部都是 labeled 的。这和 DCMH[4] 的划分不同。
Setting (b)
谓之 cross-modal zero-shot hashing experiments,将 C 分成 seen classes S ⊂ C S\subset C S⊂C 和 unseen classes U ⊂ C U\subset C U⊂C 两部分, S ∪ U = C S\cup U=C S∪U=C, S ∩ U = ∅ S\cap U=\emptyset S∩U=∅。其中 S 占 C 的 80%、U 占 20%。
其限制 training set 中只能有 seen classes、test set 只有 unseen classes。有两种可行的方案:
- training 和 test set 各筛掉不合法的 data,伪代码:
其中# filter training set training_set_b := {} for each o in training_set: if o.l has NO intersection with U: add o to training_set_b # filter test set test_set_b := {} for each o in test_set: if o.l has NO intersection with S: add o to test_set_b
training_set
即 D,test_set
即 Q,将training_set_b
记为 D ( b ) D^{(b)} D(b)、test_set_b
记为 Q ( b ) Q^{(b)} Q(b)。此时 training set 缩水了,但 retrieval database 还可以是整个 D。 - 不筛数据,而是筛 labels,将 training data 的 label 中属于 U 的、test data 的 label 中属于 S 的置零,伪代码:
这样 data 就不会变少。# modify training set labels training_set_b := training_set for each o in training_set_b: for each u in U: o.l[u] := 0 # modify test set labels test_set_b := test_set for each o in test_set_b: for each s in S: o.l[s] := 0
经确认,作者表示用的是第二种方案,即改 labels。
Setting (c)
谓之 semi-supervised cross-modal zero-shot experiments,就是将 D ( b ) D^{(b)} D(b) 分成两部分:
- labeled part D L ( c ) D_L^{(c)} DL(c),占 D ( b ) D^{(b)} D(b) 的 70%;
- unlabeled part D U ( c ) D_U^{(c)} DU(c),占另外 30%;
这样划分就是类似 DCMH[4] 的分法,即 retrieval database 分 labeled 和 unlabeled 两部分。
Setting (d)
谓之 semi-supervised cross-modal zero-shot hashing experiments with different label spaces for different modalities,原文说它基于 (c) 的 training set 又在 image 和 text 分别拣 80% 作为 seen classes,那 class set 岂不是缩了两次?我怀疑这点,又是提出两种可能的做法:
- 基于 (a) 的 training set 做,即类似 © 先将 D 分成 D L ( a ) D_L^{(a)} DL(a) 和 D U ( a ) D_U^{(a)} DU(a) 两部分(注意 D L ( a ) D_L^{(a)} DL(a) 不同于 D L ( c ) D_L^{(c)} DL(c),因为 D L ( a ) D_L^{(a)} DL(a) 中的 labels 还是完整的,而 D L ( c ) D_L^{(c)} DL(c) 中的只剩 80% 的类了),然后用 (b) 中改 labels 的做法改 D L ( a ) D_L^{(a)} DL(a) 的 labels。这样,分别从 image 和 text 的角度,class set 就只缩了一次,还有 80% 的类。
- 基于 © 的 training set 做,即用 (b) 改 labels 的策略改 D L ( c ) D_L^{(c)} DL(c) 的 labels。这样 class set 就缩了两次(因为 D L ( c ) D_L^{(c)} DL(c) 继承自 D ( b ) D^{(b)} D(b),而 D ( b ) D^{(b)} D(b) 的 class set 是已经缩过一次的),training data 的 label 就只剩 80 % × 80 % = 64 % 80\%\times 80\%=64\% 80%×80%=64% 的类了。
经确认,作者表示是基于 (c) 的,即确实缩两次。
Class Attribute Vectors
IV.A 节讲到,attribute vectors 是用 word2vec 生成 500-d 的 word embeddings,但是常用的预训练 word emb 没有 500-d 的,所以要重新训练一个 word2vec 模型,需要确定训练用的 corpus。
经确认,作者说用 Wikipedia 做训练 corpus。应该是 [5]?