Zero-shot Learning零樣本學習 論文閱讀(三)——Semantic Autoencoder for Zero-Shot Learning

River_J777發表於2020-12-27

Zero-shot Learning零樣本學習 論文閱讀(三)——Semantic Autoencoder for Zero-Shot Learning

Semantic Autoencoder for Zero-Shot Learning提出的演算法被簡稱為SAE,首次引入了自編碼器結構,一定程度上解決了zero-shot learning中主要問題之一的領域漂移(domain shift)問題,直接導致之後的新方法大都採用了這種自編碼器的結構。

背景

領域漂移(domain shift)

領域漂移問題首次被提出是在《Transductive Multi-View Zero-Shot Learning》這篇文章中,簡單來說就是同一屬性在不同的類別中,視覺特徵的差異可能很大。比如,斑馬和豬都有尾巴,那麼在類別語義表示中,對於“有尾巴”這一屬性,斑馬和豬都是值“1”,但是在圖片資料中,兩者尾巴的視覺特徵卻差異很大,如果用豬的圖片來訓練,需要預測的是斑馬,就很難達到預期的目標。

自編碼器

自編碼器(Autoencoder)是一種利用反向傳播演算法使得輸出值等於輸入值的神經網路,它先將輸入壓縮成潛在空間表徵,然後通過這種表徵來重構輸出。
例如,我們輸入一張圖片,通過encoder將其現壓縮成潛在表徵(Latent Representation),再通過decoder將潛在表徵重構成圖片作為輸出。
在這裡插入圖片描述
因此,自編碼器由兩部分組成:

  1. 編碼器,將輸入壓縮成潛在空間表徵,用函式 h = f ( x ) h=f(x) h=f(x)表示;
  2. 解碼器,重構潛在空間表徵得到輸出,用函式 s = g ( h ) s=g(h) s=g(h)表示。

自編碼器就可以用函式 g ( f ( x ) ) = s g(f(x))=s g(f(x))=s表示, x x x是輸入, s s s是輸出,讓 x x x s s s相近。
那麼,讓輸出和輸入的東西一樣,那這個自編碼器還有什麼用呢?
其實,我們的目的在於,通過訓練輸出值等於輸入值的自編碼器,讓潛在表徵 h h h作為有價值的屬性。
通常,為了從自編碼器獲得有用特徵,我們會限制h的維度使其小於輸入x,使得自編碼器能學習到資料中最重要的特徵。

演算法原理

思路

在這裡插入圖片描述

在傳統的自編碼器的目標函式 m i n W , W ∗ ∥ X − W ∗ W X ∥ F 2 min_{W,W^*}\|X-W^*WX\|^2_F minW,WXWWXF2中,為了使中間層能夠表徵屬性,在這個目標函式中加入一個約束 W X = S WX=S WX=S S S S為屬性對應的語義向量,即 m i n W , W ∗ ∥ X − W ∗ W X ∥ F 2 , s . t . W X = S min_{W,W^*}\|X-W^*WX\|^2_F,s.t.WX=S minW,WXWWXF2,s.t.WX=S,以此來最優化求解。

設定

X ∈ R d ∗ N \quad X \in R^{d * N} XRdN 代表 d d d 維共 N N N 個特徵向量組成的矩陣,投影矩陣 W ∈ R k ∗ d , W \in R^{k * d}, WRkd, 將特徵向量投影到語義空間, 得到latent representation S ∈ R k ∗ N , S \in R^{k * N}, SRkN, 假設 k < d k<d k<d,通過一個投影矩陣 W ∗ ∈ R k ∗ d , W^{*} \in R^{k * d}, WRkd, 將語義向量投影到特徵空間。 Y = { y 1 , y 2 , … … y s } Y=\left\{y_{1}, y_{2}, \ldots \ldots y_{s}\right\} Y={y1,y2,ys} 為s個可見類標籤的標籤向量, Z = { z 1 , z 2 , … … , z u } Z=\left\{z_{1}, z_{2}, \ldots \ldots,z_{u}\right\} Z={z1,z2,,zu} 為u個不可見類標籤的標籤向量, Y ∩ Z = ϕ Y \cap Z=\phi YZ=ϕ S Y = { s 1 , s 2 , … . s s } S_{Y}=\left\{s_{1}, s_{2}, \ldots . s_{s}\right\} SY={s1,s2,.ss} 為可見類標籤的prototype的集合, S Z = { s 1 , s 2 , … . . s u } S_{Z}=\left\{s_{1}, s_{2}, \ldots . . s_{u}\right\} SZ={s1,s2,..su} 為不可
見類標籤的prototype的集合, X Y = { ( x i , y i , s i ) } ∈ R d ∗ N X_{Y}=\left\{\left(x_{i}, y_{i}, s_{i}\right)\right\} \in R^{d * N} XY={(xi,yi,si)}RdN 為擁有N個k維訓練樣本 x i x_{i} xi 的訓練 集,測試集 X Z = { ( x i , y i , s i ) } X_{Z}=\left\{\left(x_{i}, y_{i}, s_{i}\right)\right\} XZ={(xi,yi,si)} 其中 y i , s i y_{i}, s_{i} yi,si 未知.

演算法原理

在這裡插入圖片描述

上圖表示了本文中的自編碼器結構,以傳統的自編碼器的思想,本問題的目標函式為 m i n W , W ∗ ∥ X − W ∗ W X ∥ F 2 min_{W,W^*}\|X-W^*WX\|^2_F minW,WXWWXF2
為了使中間層能夠表徵屬性,在這個目標函式中加入一個約束 W X = S WX=S WX=S S S S是實現定義好的屬性對應的語義向量,目標函式為: m i n W , W ∗ ∥ X − W ∗ W X ∥ F 2 , s . t . W X = S min_{W,W^*}\|X-W^*WX\|^2_F,s.t.WX=S minW,WXWWXF2,s.t.WX=S
考慮到zero-shot learning旨在提高大規模計算機視覺的速度,為了減少引數數量,設定 W ∗ = W T W^*=W^T W=WT,則目標函式可以化為 :
m i n W ∥ X − W T S ∥ F r o 2 , s . t . W X = S min_{W}\|X-W^TS\|^2_{Fro},s.t.WX=S minWXWTSFro2,s.t.WX=S
顯然,約束 W X = S WX=S WX=S有點過於強了,所以將其變為一個軟約束加入目標函式:
m i n W ∥ X − W T S ∥ F r o 2 + λ ∥ W X = S ∥ F r o 2 min_{W}\|X-W^TS\|^2_{Fro}+\lambda \|WX=S\|^2_{Fro} minWXWTSFro2+λWX=SFro2
其中, λ \lambda λ為超引數
顯然這是一個凸優化問題,通過對 W W W求導,令導數為零,求解 W W W即可。
∂ ( ∥ X − W ⊤ S ∥ F r o 2 + λ ∥ W X − S ∥ F r o 2 ) ∂ W \frac{\partial\left(\left\|X-W^{\top} S\right\|_{F r o}^{2}+\lambda\|W X-S\|_{F r o}^{2}\right)}{\partial W} W(XWSFro2+λWXSFro2)
= ∂ ( t r ( ( X ⊤ − S ⊤ W ) ⊤ ( X ⊤ − S ⊤ W ) + λ ( W X − S ) ⊤ ( W X − S ) ) ) ∂ W =\frac{\partial\left(t r\left(\left(X^{\top}-S^{\top} W\right)^{\top}\left(X^{\top}-S^{\top} W\right)+\lambda(W X-S)^{\top}(W X-S)\right)\right)}{\partial W} =W(tr((XSW)(XSW)+λ(WXS)(WXS)))
= ∂ ( t r ( W ⊤ S S ⊤ W − 2 W ⊤ S X ⊤ + λ ( X ⊤ W ⊤ W X − 2 S ⊤ W X ) ) ∂ W =\frac{\partial\left(t r\left(W^{\top} S S^{\top} W-2 W^{\top} S X^{\top}+\lambda\left(X^{\top} W^{\top} W X-2 S^{\top} W X\right)\right)\right.}{\partial W} =W(tr(WSSW2WSX+λ(XWWX2SWX))
= ∂ t r ( W ⊤ S S ⊤ W ) ∂ W − 2 ∂ t r ( W ⊤ S X ⊤ ) ∂ W + λ ∂ t r ( X ⊤ W ⊤ W X ) ∂ W − 2 λ ∂ t r ( S ⊤ W X ) ∂ W =\frac{\partial t r\left(W^{\top} S S^{\top} W\right)}{\partial W}-2 \frac{\partial t r\left(W^{\top} S X^{\top}\right)}{\partial W}+\lambda \frac{\partial t r\left(X^{\top} W^{\top} W X\right)}{\partial W}-2 \lambda \frac{\partial t r\left(S^{\top} W X\right)}{\partial W} =Wtr(WSSW)2Wtr(WSX)+λWtr(XWWX)2λWtr(SWX)
= ∂ t r ( X ⊤ S W ) ∂ W + λ ∂ t r ( W X X ⊤ W ⊤ ) ∂ W − 2 λ ∂ t r ( X S ⊤ W ) ∂ W =\frac{\partial t r\left(X^{\top} S W\right)}{\partial W}+\lambda \frac{\partial t r\left(W X X^{\top} W^{\top}\right)}{\partial W}-2 \lambda \frac{\partial t r\left(X S^{\top} W\right)}{\partial W} =Wtr(XSW)+λWtr(WXXW)2λWtr(XSW)
= 2 S S ⊤ W − 2 S X ⊤ + 2 λ W X X ⊤ − 2 λ S X ⊤ =2 S S^{\top} W-2 S X^{\top}+2 \lambda W X X^{\top}-2 \lambda S X^{\top} =2SSW2SX+2λWXX2λSX
= 0 =0 =0
A = S S ⊤ , B = λ X X ⊤ , C = ( 1 + λ ) S X ⊤ A=S S^{\top}, B=\lambda X X^{\top}, C=(1+\lambda) S X^{\top} A=SS,B=λXX,C=(1+λ)SX
則等式可以寫作:
A W + W B = C \quad A W+W B=C AW+WB=C
此為著名的Sylvester方程的標準形式,可利用Bartels-Stewart algorithm求解,值得注意的是,Bartels-Stewart algorithm演算法的複雜度為 o ( d 3 ) o(d^3) o(d3) ,與訓練集大小無關,因此在大規模資料集上同樣可以表現優異。

具體流程

對於測試特徵向量 x i x_i xi,有兩種方式給出預測,其中距離度量記作 D ( x , y ) D(x,y) D(x,y)

  1. S Z j S_{Z_{j}} SZj 為未見類標籤集中第 j j j 個類在屬性空間中對應的屬性向量,也就是原型prototype
    Φ ( x i ) = argmin ⁡ j D ( W x i , S Z j ) \Phi\left(x_{i}\right)=\operatorname{argmin}_{j} D\left(W x_{i}, S_{Z_{j}}\right) Φ(xi)=argminjD(Wxi,SZj)
  2. s i s_{i} si 為不可見標籤集中的一個元素
    Φ ( x i ) = argmin ⁡ j D ( x i , W s j ) \Phi\left(x_{i}\right)=\operatorname{argmin}_{j} D\left(x_{i}, W s_{j}\right) Φ(xi)=argminjD(xi,Wsj)
    Φ ( x i ) \Phi\left(x_{i}\right) Φ(xi) 的值為輸出的預測值。

實驗結果表明兩種形式輸出非常相似。

參考文獻

[1]Kodirov E , Xiang T , Gong S . Semantic Autoencoder for Zero-Shot Learning[J]. 2017.

相關文章