One-Shot Learning with a Hierarchical Nonparametric Bayesian Model
該篇文章通過分層貝葉斯模型學習利用單一訓練樣本來學習完成分類任務,模型通過影響一個類別的均值和方差,可以將已經學到的類別信息用到新的類別當中。模型能夠發現如何組合一組類別,將其歸屬為一個有意義的父類。對一個對象進行分類需要知道在一個合適的特征空間中每一維度的均值和方差,這是一種基於相似性的度量方法,均值代表類別的基本標准,逆方差對應於類別相似性矩陣的各維度權重。One-Shot學習看起來似乎是不可能的,這是因為單一的樣本只提供了相應類別的均值信息,而沒有方差信息。如果給每個維度附以相同的權重或使用錯誤相似性矩陣,結果必定是不可靠的。
作者的模型利用從先前學習到的類別信息抽象出來的更高階信息來估計新類別的基本標准以及適宜的相似性矩陣。隨着所觀測到的樣本數的增多,這種估計的精度也隨之提高。為了說明,考慮一下,當人類看到一個不熟悉動物時,如牛羚,很容易聯想到馬、牛、羊或是更為相似的物種。這是因為這些相似的物種有着更為相似的原型——馬、牛、羊看起來相互長得更像,而並不像個什么家具或是汽車等。
通過高維輸入空間學習相似性矩陣已經成為機器學習領域一項重要任務。許多之前的工作主要針對於通過許多帶標簽的樣本來學習相似性矩陣,沒有試圖去解決One-Shot學習問題。雖然啟發於人類的學習過程,但本文方法也意指於廣泛應用於機器分類和AI任務。從少量帶標簽樣本學習並進行有效的推理任務是非常重要的。本文的方法是:無參數的先驗可以使得在監督或無監督模式下的任何時候都能夠生成新的類別。共軛分布集成大部分參數並能夠進行快速推理。
1. 分層貝葉斯模型
考慮觀測一個有$N $個獨立同分布的輸入特征向量$\{x^1,...,x^N\} $,$x^n\in R^D $,$D $是特征的維度。假定這$N $個對象被分配到$C $個基類(level-1),我們通過一個長度為$N $的向量$z^b $來表示這種分配關系,即$z_{n}^b\in \{1,...,C\} $。同樣,我們也假設這個$C $基類屬於$K $個超類(level-2)當中,我們用一個長度為$C $的向量$z^s $來表示這種關系,$z_{c}^s\in \{1,...,K\} $。
對於任一基類$c $,假設其觀測到的特征向量服從高斯分布$N(x|\mu,1/\tau) $,則有
$$
P(x^n|z_{n}^b=c,\theta^1)=\prod_{d=1}^D N(x_{d}^n|\mu_{d}^c,1/\tau_{d}^c)
$$
其中$\theta^1=\{\mu^c,\tau^c\}_{c=1}^C $表示level-1的類別參數。
然后我們假定$\{\mu^c,\tau^c\} $服從共軛的正態—伽馬分布。level-1的c類屬於level-2的k類可以表示為$k=z_{c}^s $,用$\theta^2=\{\mu^k,\tau^k,\alpha^k\}_{k=1}^K $表示level-2的參數。那么$P(\mu^{c},\tau^c|\theta^2,z^s)=\prod_{d=1}^D P(\mu_{d}^c,\tau_{d}^c|\theta^2,z^s) $
對於每個維度$d$
$$
P(\mu_{d}^c,\tau_{d}^c|\theta^2)=P(\mu_{d}^c|\tau_{d}^c,\theta^2)P(\tau_{d}^c,\theta^2)=N(\mu_{d}^c|\mu_{d}^k,1/(\nu \tau_{d}^c)\Gamma (\tau_{d}^c|\alpha_{d}^k,\alpha_{d}^k/\tau_{d}^k))
$$
其中
$$
\Gamma(\tau|\alpha^k,\alpha^k/\tau^k)=\frac{(\alpha^k/\tau^k)^{\alpha^k}}{\Gamma(\alpha^k)}\tau^{\alpha^k-1} \exp \Big(-\tau\frac{\alpha^k}{\tau^k}\Big)
$$
這樣的初始化能夠給我們的模型以直觀的解釋,因為$E[\mu^c]=\mu^k $且$E[\tau^c]=\tau^k $,因此level-2的參數$\theta^2 $正好對應於level-1參數$\theta^1 $的期望,參數$\alpha^k $進一步控制着$\tau^c $圍繞均值的變化。對於level-2層參數$\theta^2 $,我們假設下列的共軛先驗:
\[
P(\mu_{d}^k)=N(\mu_d^k|0,1/\tau^0),\;P(\alpha_d^k|\alpha^0)=Exp(\alpha_d^k|\alpha^0),\;P(\tau_d^k|\theta^0)=IG(\tau_d^k|\alpha^0,b^0)
\]
$Exp(x|\alpha) $是參數為$\alpha $的指數分布,$IG(x|\alpha,\beta) $是參數為$\alpha $和$\beta $的逆伽馬分布。我們進一步假設level-3參數$\theta^3=\{\alpha^0,\tau^0\} $服從彌散伽馬分布$\Gamma(1,1) $
2. Chinese Restaurant Process
至此,我們已經假設我們的模型分為兩層$z=\{z^s,z^b\} $,然而,如果我們沒有獲得任何的level-1和level-2的類標簽,我們就需要推斷可能的類結構分布。我們假定服從無參數的兩層嵌套Chinese-Restaurant Prior(CPR)分布。Chinese Restaurant Process是定義在整數部分的一種分布。想象一下這個過程,當顧客進入一個沒有桌子數量限制的飯店,那么第$n$個顧客坐在桌子$k$的概率可以用下列分布來刻畫:
$$
P(z_n=k|z_1,...,z_{n-1})=
\begin{cases}
\frac{n^k}{n-1+\gamma} & n^k>0 \\
\frac{\gamma}{n-1+\gamma} &k\;is\;new
\end{cases}
$$
$n^k $是桌子$k$之前所有的顧客數,$\gamma $是集中參數。
嵌套CRP,即$nCRP(\gamma) $是將$CRP $擴展成樹每層划分的嵌套序列,在這種情況下,每個觀測值$n $首先通過上述方程分配到父類$z_n^s $,然后再一次按照上述方程將其分配到父類$z_n^s $下的基類$z_b^s $。最后假定$\gamma \sim \Gamma(1,1) $。不像傳統的分層貝葉斯模型,本文的模型參數和分層參數都是共享的。
3. 推理
模型參數在各個層上的推理都是采用$MCMC $的方法。當模型的樹結構沒有給定時,推理中首先固定,然后采樣模型參數$\theta $,固定$\theta $去采樣類別分配,兩個過程交替進行。
采樣level-1和level-2參數:
給定level-2參數$\theta^2 $和$z $,條件分布$P(\mu^c,\tau^c|\theta^2,z,x) $是$Normal-Gamma $分布,這使得我們很容易去采樣level-1的參數$\{\mu^c,\tau^c\} $。給定$z,\;\theta^1,\;\theta^3 $后,$\mu^k,\;\tau^k $服從高斯和逆伽馬分布,同樣很容易采樣就得。唯一復雜一點的是采樣$\alpha^k $,因為
$$
p(\alpha^k|z,\theta^1,\theta^3,\tau^k)\propto \frac{(\alpha^k/\tau^k)^{\alpha^k n_k}}{\Gamma(\alpha^k)^{n_k}}\exp\Big(-\alpha^k\Big(\alpha^0+S^k/\tau^k-T^k\Big)\Big)
$$
其中$S^k=\sum_{c:z(c)=k}\tau^c $且$T^k=\sum_{c:z(c)=k}\log(\tau^c) $,若$\alpha^k $較大,上述概率密度近似於伽馬密度,因此,我們可以用$Metropolis-Hastings $方法。我們生成一個新的候選變量
$$
\alpha^*\sim Q(\alpha^*|\alpha^k)\;with\;Q(\alpha^*|\alpha^k)=\Gamma(\alpha^*|t,t/\alpha^k)
$$
然后用$M-H $方法進行采樣。
采樣$z $:
給定模型參數$\theta=\{\theta^1,\theta^2\} $后,$z_n $的后驗分布為:
$$
p(z_n|\theta,z_{-n},x^n)\propto p(x^n|\theta,z_n)p(z_n|z_{-n})
$$
其中$z_{-n} $是指$z$中除了$n$以后的所有觀測值。
當計算所創建出的新基類的概率時,我們能夠進一步利用分層模型的共軛性。由於服從正態—伽馬先驗的$p(\mu^c,\tau^c) $是一個正態分布的共軛先驗,因此,我們能夠很容易計算下列邊緣似然概率:
$$
p(x^n|\theta^2,z_n)=\int_{\mu^c,\tau^c}p(x^n,\mu^c,\tau^c|\theta^2,z_n)=\int_{\mu^c,\tau^c}p(x^n|\mu^c,\tau^c)p(\mu^c,\tau^c|\theta^2,z_n)
$$
積掉基類參數$\theta^1 $能夠讓我們更有效地從樹結構中進行采樣。當計算新父類下$x^n $的概率時,它的參數可以從先驗分布中采樣獲得。
4. One-Shot Learning
考慮觀察到一個新類$c^* $的新樣本$x^* $,在level-2參數$\theta^2 $當前設置以及當前樹結構確定的情況下,我們能夠首先推斷出這個新類是屬於哪個父類,例如我們能夠計算$z_c^* $的后驗分布。如果沒有相匹配的父類,就創建自己的父類。當給定一個推斷出的$z_c^* $時,我們就能夠求得新類的均值和相似性矩陣$\{\mu^*,\tau^*\} $。我們可以通過計算新的測試輸入$x^t $屬於新類$c^* $的條件概率來測試HB模型的泛化性能。
$$
p(c^*|x^t)=\frac{p(x^t|z_c^*)p(z_c^*)}{\sum_z p(x^t|z)p(z)}
$$
這里,先驗概率可以由$nCRP(\gamma) $來確定,log似然形式如下:
$$
\log p(x^t|c^*)=\frac{1}{2}\sum_d \log(\tau_d^*)-\frac{1}{2}\sum_d \tau_d^*(x_d^t-\mu_d^*)^2+C
$$
$C $是一個常數,不依賴於任何參數。
5. MNIST實驗
本文首先研究了HB模型泛化單個樣本——手寫體9的能力。首先采用900幅圖片(0-8每個數字100幅)來訓練HB模型,然后給定一個數字9,模型能夠發現新的類別與4和7所在的類別很相近,因此新類能夠通過4和7所在類別的均值和相似矩陣來計算自己的參數。
參考文獻:
Salakhutdinov, Ruslan, Joshua B. Tenenbaum, and Antonio Torralba. "One-Shot Learning with a Hierarchical Nonparametric Bayesian Model." ICML Unsupervised and Transfer Learning. 2012.