个人学习笔记,写得可能比较意识流,各位斟酌食用,理解有误的恳请指正
这是一个多标签零次学习任务(ML-ZSL),对一个输入预测多个unseen类标签。
引入知识图谱来描述多个标签之间的关系。
模型学习一个信息传播机制来建模seen和unseen的类标签之间的相互依赖关系。
多标签分类的常见做法:
然而,第1、2种方法都没办法直接用到ML-ZSL上去,因为它们没办法泛化到unseen类标签上。
反倒是第三种方法通过利用语义空间的标签表达,可以比较容易的适配ML-ZSL。
虽然已经有ML-ZSL的方法提出了,但是这些方法都没有用到结构化的知识。
Fig.1 阐述了知识图谱如何帮助多标签的建模。
有一些工作在多标签任务上使用结构化的知识,通常做法为:
本文引入结构化的知识图谱和标签传播机制
D = { ( x i , y i ) } i = 1 N \mathcal{D}=\left\{\left(\mathbf{x}^{i}, \mathbf{y}^{i}\right)\right\}_{i=1}^{N} D={(xi,yi)}i=1N :训练集
N N N :训练样本数
S \mathcal{S} S :训练标签集
U \mathcal{U} U :不可见标签集
训练时, y i ∈ { 0 , 1 } ∣ S ∣ \mathbf{y}^{i} \in\{0,1\}^{|S|} yi∈{0,1}∣S∣ ; 测试时, y ~ ∈ { 0 , 1 } ∣ S ∣ + ∣ U ∣ \tilde{\mathbf{y}} \in\{0,1\}^{|\mathcal{S}|+|\mathcal{U}|} y~∈{0,1}∣S∣+∣U∣
类的语义向量:用 distributed word embedding 表示, W = { w v } v = 1 ∣ S ∣ + ∣ U ∣ \mathbf{W}=\left\{\mathbf{w}_{v}\right\}_{v=1}^{|\mathcal{S}|+|\mathcal{U}|} W={wv}v=1∣S∣+∣U∣ , w v ∈ R d e m b \mathbf{w}_{v} \in \mathbb{R}^{d_{e m b}} wv∈Rdemb , d e m b d_{e m b} demb 是word embedding的维度。在本文总使用GloVe作为word embedding,并且 d e m b = 300 d_{e m b}=300 demb=300 .
上面两步用数学语言来表示:
h v ( 0 ) = F I ( x , w v ) u v ( t ) = tanh ( A v ⊤ [ h 1 ( t − 1 ) ⊤ … h ∣ S ∣ ( t − 1 ) ⊤ ] ⊤ ) h v ( t ) = G R U C e l l ( u v ( t ) , h v ( t − 1 ) ) \begin{aligned} \mathbf{h}_{v}^{(0)} &=\mathbf{F}_{I}\left(\mathbf{x}, \mathbf{w}_{v}\right)\\ \mathbf{u}_{v}^{(t)} &=\tanh \left(\mathbf{A}_{v}^{\top}\left[\mathbf{h}_{1}^{(t-1) \top} \ldots \mathbf{h}_{|S|}^{(t-1) \top}\right]^{\top}\right) \\ \mathbf{h}_{v}^{(t)} &=G R U C e l l\left(\mathbf{u}_{v}^{(t)}, \mathbf{h}_{v}^{(t-1)}\right) \end{aligned} hv(0)uv(t)hv(t)=FI(x,wv)=tanh(Av⊤[h1(t−1)⊤…h∣S∣(t−1)⊤]⊤)=GRUCell(uv(t),hv(t−1))
GRUCell的更新过程为:
z v ( t ) = σ ( W z u v ( t ) + U z h v ( t − 1 ) + b z ) r v ( t ) = σ ( W r u v ( t ) + U r h v ( t − 1 ) + b r ) h ~ v ( t ) = tanh ( W h u v ( t ) + U h ( r v ( t − 1 ) ⊙ h v ( t − 1 ) ) + b h ) h v ( t ) = ( 1 − z v ( t ) ) ⊙ h v ( t − 1 ) + z v ( t ) ⊙ h ~ v ( t ) \begin{aligned} \mathbf{z}_{v}^{(t)} &=\sigma\left(\mathbf{W}^{z} \mathbf{u}_{v}^{(t)}+\mathbf{U}^{z} \mathbf{h}_{v}^{(t-1)}+\mathbf{b}^{z}\right) \\ \mathbf{r}_{v}^{(t)} &=\sigma\left(\mathbf{W}^{r} \mathbf{u}_{v}^{(t)}+\mathbf{U}^{r} \mathbf{h}_{v}^{(t-1)}+\mathbf{b}^{r}\right) \\ \tilde{\mathbf{h}}_{v}^{(t)} &=\tanh \left(\mathbf{W}^{h} \mathbf{u}_{v}^{(t)}+\mathbf{U}^{h}\left(\mathbf{r}_{v}^{(t-1)} \odot \mathbf{h}_{v}^{(t-1)}\right)+\mathbf{b}^{h}\right) \\ \mathbf{h}_{v}^{(t)} &=\left(1-\mathbf{z}_{v}^{(t)}\right) \odot \mathbf{h}_{v}^{(t-1)}+\mathbf{z}_{v}^{(t)} \odot \tilde{\mathbf{h}}_{v}^{(t)} \end{aligned} zv(t)rv(t)h~v(t)hv(t)=σ(Wzuv(t)+Uzhv(t−1)+bz)=σ(Wruv(t)+Urhv(t−1)+br)=tanh(Whuv(t)+Uh(rv(t−1)⊙hv(t−1))+bh)=(1−zv(t))⊙hv(t−1)+zv(t)⊙h~v(t)
其中 W , U , b \mathbf{W}, \mathbf{U}, \mathbf{b} W,U,b 都是可学习的。
p v ( t ) = F O ( h v ( t ) ) p_{v}^{(t)}=\mathbf{F}_{O}\left(\mathbf{h}_{v}^{(t)}\right) pv(t)=FO(hv(t))
本节阐述如何合理地将邻接节点的信息结合起来,构建A矩阵。
在A中,邻接节点的权重设为非零,不相邻的节点权重设为0。
不是为相同类型/关系的边分配相同的传播权重,而是分配产生传播权重的相同关系函数 F R k \mathbf{F}_R^k FRk,其中k表示边类型,即相同类型的边有相同类型的关联函数:
a v u = F R k ( w v , w u ) \mathbf{a}_{v u}=\mathbf{F}_{R}^{k}\left(\mathbf{w}_{v}, \mathbf{w}_{u}\right) avu=FRk(wv,wu)
传播机制如下图:
这样,这个F函数学习了一个从语义Word Embedding空间到传播矩阵的一个映射,从而有依据地建模关联边之间依赖关系。
用在ZSL中,可以从语义空间学习可以让模型生成unseen类的类标签。
loss:binary cross-entropy(BCE)
L = 1 N 1 ∣ S ∣ ∑ i , v , t α ( t ) ( ( y v i log p v ( t ) + ( 1 − y v i ) log ( 1 − p v ( t ) ) ) \mathcal{L}=\frac{1}{N} \frac{1}{|\mathcal{S}|} \sum_{i, v, t} \alpha(t)\left(\left(y_{v}^{i} \log p_{v}^{(t)}+\left(1-y_{v}^{i}\right) \log \left(1-p_{v}^{(t)}\right)\right)\right. L=N1∣S∣1i,v,t∑α(t)((yvilogpv(t)+(1−yvi)log(1−pv(t)))
其中, α ( t ) = 1 / ( T − t + 1 ) \alpha(t)=1 /(T-t+1) α(t)=1/(T−t+1) ,它是随着t的增加而增大的,表示越靠后的越准确,并且这个loss是把每一步t的置信度都进行加权了。
但是,测试时,只用最后步骤T的置信度 p v ( T ) p_{v}^{(T)} pv(T) 作为输出。
对于ML-ZSL,把A扩展到 A ~ ∈ R ( ∣ S ∣ + ∣ U ∣ ) d h i d × ( ∣ S ∣ + ∣ U ∣ ) d h i d \tilde{A} \in \mathbb{R}^{(|\mathcal{S}|+|\mathcal{U}|) d_{h i d} \times(|\mathcal{S}|+|\mathcal{U}|) d_{h i d}} A~∈R(∣S∣+∣U∣)dhid×(∣S∣+∣U∣)dhid ,编码知识图谱中unseen的类标签的关系。
那么,更新向量就变成:
u v ( t ) = tanh ( A ~ v ⊤ [ h 1 ( t − 1 ) ⊤ … h ( ∣ S ∣ + ∣ y ∣ ) ( t − 1 ) T ⊤ ) , ∀ v ∈ S ∪ U \mathbf{u}_{v}^{(t)}=\tanh \left(\tilde{\mathbf{A}}_{v}^{\top}\left[\mathbf{h}_{1}^{(t-1) \top} \ldots \mathbf{h}_{(|S|+|y|)}^{(t-1)} T^{\top}\right), \forall v \in \mathcal{S} \cup \mathcal{U}\right. uv(t)=tanh(A~v⊤[h1(t−1)⊤…h(∣S∣+∣y∣)(t−1)T⊤),∀v∈S∪U
输入输出函数与3.2节一致。
ML-ZSL传播机制如图4所示。
总的来说,这个过程,其实是学习一个带有知识图谱的多标签分类器。
Word Embedding:WordNet
标签关联类型,3种:
对于pos、neg的标签相似度用WUP相似度计算。
在下面的实验中,KG一共有5步,即T=5.
数据集:NUS-WIDE(特别为ML-ZSL使用的)和Microsoft COCO(MS-COCO)
NUS-WIDE(网络图片数据集)
从图片中,使用ResNet-152来提取出2048-d的图像特征x。
数据集划分:
MS-COCO:
先来看ML的效果。
图片的标签tag都有排序,选择Top K的标签,这里K=3
验证集用来选一个合适的概率阈值来预测标签。
指标:precision(P)和recall(R)和F1
NUS-WIDE
unseen类:81个
seen:1000