李遠沐,王展青
(武漢理工大學 理學院,武漢 430000)
人類往往可以通過學習少量的標注樣本就能獲得識別某種事物的能力,哪怕是四五歲的孩子,看了幾張老虎的圖片之后也能準確的識別老虎.而一般的深度學習系統往往需要大量的已標注訓練數據才能擁有有限的識別能力,人類和深度學習系統之間的這種顯著的差距喚起了人們對小樣本學習的研究興趣[4-6].小樣本學習關注的是如何從很少的訓練樣本中學習到有用的信息,其目的是學習一個在訓練樣本很少時仍具有良好泛化能力的分類器.目前主流的小樣本學習方法大致分為三大類:基于模型的方法[24],基于度量的方法[5]和基于優化的方法[25].
小樣本學習的難點在于由于訓練樣本很少,難以從中提取出足夠的特征來滿足模型需要,所以需要充分利用擁有的有限標注樣本樣本,利用深度學習模型提取其中的“深度特征”.近年來深度神經網絡(DNN)的許多巨大突破[1-3]都相當的依賴于規模龐大的標注訓練集,小樣本領域缺乏足夠的樣本來更新傳統DNN模型中大量的參數,因而無法訓練到理想的模型.同時DNN極度依賴網絡的訓練過程,在訓練集較小,網絡較深時,極易出現過擬合.而且少量的標注樣本并不能代表數據真實的分布,導致得到的分類器方差較大,從而導致模型泛化能力不強,常用的微調(Fine-tuning)技術在小樣本學習也會產生過擬合.為了使得少量標注樣本得到充分利用,本文引入具有數據高效性的高斯過程模型,同時賦予其深度結構用于提取樣本深度抽象特征用于改善模型的推斷和學習質量,從理論和實驗兩個方面來選擇合適的模型訓練方法.
本文提出了基于深度高斯過程的小樣本學習模型,利用多層的高斯過程模型,充分的提取樣本深度特征,得到一種改進的基于度量的小樣本學習方法,在小批量手寫體字符識別領域表現優秀.
以高斯過程[7]為代表的貝葉斯非參數模型都具有數據高效性的優點,往往只需較少的數據,就能推斷出擬合函數的分布情況,而且這種推斷一般發生在測試階段,顯著減少了訓練階段的工作量,而且訓練得到的模型在測試時仍然可以靈活進行調整.同時高斯過程模型具備很好的度量不確定性的能力,并且Neal[8]早在1998年就證明了單層具有無限節點的神經網絡等價于一個具有特定協方差函數的高斯過程.為了使模型同時具有參數模型和非參數模型的特性[17,18],Damianou和Neil[9]于2013年通過結合深度神經網絡和高斯過程提出了深度高斯過程(DGP).深度高斯過程是一種具有類似于DNN結構的深度模型,善于處理抽象特征.相比于標準的DNN,DGP只有少量的核參數和變分參數,因此可以通過少量的訓練數據去學習復雜的函數.同時,DGP作為一個非參模型,數據的生成過程不依賴于DNN那樣龐大的參數集,而且不同于DNN通過引入非線性函數使得DNN獲得處理非線性問題的能力,DGP是通過隨機高斯函數的組合自動的獲得處理非線性的能力,這種處理能力在針對劇烈變化的數據(數據集越小,數據的波動越明顯)時優勢尤為明顯.同時,DNN的架構往往依賴于主觀經驗,難以得出最優的選擇策略.而DGP因為保留了很多單層高斯模型的優點,比如關于核參數來優化邊緣似然函數,有效的避免了過擬合的發生,同時可以自適應的選擇網絡結構.DGP作為一個貝葉斯模型,擁有許多優良的概率特性,這使得它在小數據集上能有不錯的表現.基于以上幾點,我們考慮將DGP模型運用于小樣本學習,用于提取抽象特征和刻畫細節特征.
關于如何訓練DGP,因為推斷過程中存在一個很難處理的復雜積分,所以DGP的精確推斷是不可行的,因此人們提出了許多近似算法[9-12,19-21].變分推斷(VI)就是一種常用的近似方法,但是傳統的VI往往選擇簡單的高斯分布作為后驗分布的近似分布,因為在大部分的情況真實后驗都不是高斯分布,這在很大程度上限制了模型的表達能力.在變分推斷框架中,似然函數被分為ELBO和近似后驗和真實后驗的KL散度,后者往往可以看做是一個正則項,為了改善推斷效果,需要盡可能減少這個正則項的影響,一個方法是去尋找更緊的下界[23],而本文從另一個角度出發,通過尋找更加復雜和靈活的變分分布來減輕正則項的影響.引入標準化流方法(Normalizating Flow[13]),通過對一個簡單的分布反復的施加一系列的可逆變換,得到靈活且復雜度可控的后驗分布族,結合變分推斷方法,得到一個易處理的變分下界,通過優化這個下界來更新核參數和變分參數.
隨機過程早已在機器學習領域有了廣泛的應用.在具備一些觀測數據的情況下,在隨機過程的框架下運用貝葉斯規則去推斷預測分布,可以使模型具備高效使用數據的能力,而這正好是神經網絡所缺乏的.高斯過程(GP)可以由一個均值函數和一個協方差函數完全共同決定(高斯過程存在性定理),其中協方差函數蘊含了我們對想要建模函數的先驗假設,例如光滑性.
設X={xi|i=1,…,N},xi∈d對應的目標值為ti,且T={ti|i=1,…,N}.已知集合D={(xi,ti)|i=1,…,N},對于新的數據點x′,我們希望找到其對應的目標值t′的預測分布.設目標函數為f,并記FN=[f1,…,fN]=[f(x1),…,f(xN)],以及FN+1=[f1,…,fN+1]=[f(x1),…,f(xN+1)],其中x′=xN+1.目標函數f的高斯過程先驗可以隱式的表示為:
(1)
由多元聯合高斯分布的性質,可得預測分布
(2)
其中HN和HN+1是兩個歸一化常數.ΣN和ΣN+1的關系為
(3)
其中K=[k(x′,x1;Θ),…,k(x′,xN;Θ)]T,Kx′x′=k(x′,x′;Θ),K為核函數.最后得出預測分布為
p(fN+1|D,xN+1,Θ)=N(KTΣ-1t,Kx′x′-KTΣ-1K)
(4)
雖然DNN在手寫體分類領域取得了巨大的成功,但是當訓練數據不足時,由于其海量的參數,DNN很容易產生過擬合現象.DGP相比于DNN,其參數數量要少的多,并且具有貝葉斯性質,是一個很理想的用于小樣本學習的模型.我們知道,在機器學習領域,往往都希望訓練和測試在完全相同的條件下進行,然而DNN模型的訓練過程和測試過程相對獨立.針對這兩個問題,本文借鑒KNN模型的思想提出深度高斯匹配網絡(Deep Gaussian Processes Matching Network)用于小批量手寫字符分類.
為了提升神經網絡模型的表達能力,引入深度結構,Hinton等人提出了深度神經網絡.同樣為了改善高斯模型,通過對隨機過程而不是函數進行組合,并引入深度結構,Diamianou通過堆疊幾個高斯過程模型得到深度高斯過程模型.深度高斯模型是一種包含多個隱藏層的深度有向圖模型,并且運用高斯過程來控制層與層之間的映射關系.相比于標準的參數化的深度神經網絡中預先給定的非線性函數,深度高斯過程層與層之間的的映射關系有更強的表達能力和數據依賴性(data dependent).而且相較于DNN,DGP模型的參數較少(只有少量的核超參數和變分參數).并且作為一個貝葉斯模型,DGP可以有效的避免DNN中當數據不足時出現的過擬合現象.而從高斯模型中繼承到的隨機性質,使得DGP能夠很好的處理數據的不確定性的問題.
記具有L個隱藏層的DGP模型的輸入為x,輸出為y,模型定義如下

f1~GP(μ1,k(·)1),h1=f1(h0)+ε1,u1=f1(z0)
(5)
fl~GP(μl,k(·)l),hl=fl(hl-1)+εl,ul=fl(zl-1)
(6)
fL~GP(μL,k(·)L),hL=fL(hL-1)+εL,uL=fL(zL-1)
(7)
有時為了減少變分參數的數量,常常把高斯噪聲項置于核函數之內.需要注意的是,每一個高斯函數都有它自己對應的核函數和核參數,故而一層中有可能會出現多個核.此時模型的聯合分布為:
(8)
通過對所有的隱變量積分,可以得出作為模型目標函數的邊緣似然函數.為簡便起見,所有概率分布中都省略了核參數σ.但是所得的仍是一個復雜的積分,使得推斷很難進行,所以需要近似的方法,如變分推斷[9-11]和期望傳播[12].
余弦距離常常也被稱為余弦相似度,是用兩個向量之間夾角的余弦作為作為兩向量差異程度的度量.當X=(x1,x2,…,xn),Y=(y1,y2,…,yn)時,X和Y的余弦相似度為
(9)
余弦相似度往往對絕對的數值不敏感,而是注重兩個向量方向上的差異,即余弦相似度更多的是體現兩者的相對差異.

第1步.使用如下結構的卷積神經網絡,分別提取測試集和支撐集中圖像的抽象特征,將105×105大小的圖片扁平化為長度為4096的向量.

圖1 本文使用的卷積神經網絡結構
第2步.將兩個DGP結構作為編碼函數,將得到的特征向量嵌入到特征空間中去.然后計算測試圖像特征與支撐集中圖像特征的余弦距離,完成圖像分類,具體如下.
為了得到一個類似于KNN的端到端的手寫體字符識別模型,類似于文獻[5],引入注意力核,基于k近鄰方法的思想,有:
(10)
其中yi為只有一個維度為1,其余全是0的向量.注意力核為:
(11)

圖2 深度高斯匹配網絡
其中φ和ψ是由深度高斯過程模型參數化的編碼函數,其參數可以通過對訓練集分類的準確度進行調整.φ和ψ的作用是提取圖像的抽象特征,并將x*和xi嵌入到特征空間中去.
為了確保訓練過程和測試過程發生在相同的條件下,首先在原數據集D中采樣一個小數據集W,對于W中的每一類,隨機的選擇K個樣本去構造支撐集S,同時隨機選擇一些樣本作為訓練集T.由于層與層之間存在復雜的相關性,本文引入偽數據,使用稀疏化方法來簡化DGP模型層級之間的相關性.接下來使用隨機梯度下降法,通過極大化識別率來更新參數嵌入函數的參數和偽數據的位置,利用log函數為增函數的特點,所得目標函數為:
(12)
模型需要學習的參數有偽點和各層各節點的核參數:
其中L為模型的層數,Dl為第l層的結點數.如果偽輸出和偽輸入都要學習得到的話,由于更多的參數會提高過擬合發生的幾率,模型會損失一部分貝葉斯模型的標準化優勢.結合先驗信息,我們知道偽點應當與輸入點有類似的結構,可以一定程度緩解這個問題.合適的參數初始值可以有效的避免模型陷入局部最優,本文基于最優K均值為所有的輸入點聚類,將K個聚類中心作為偽點的初始選擇.除了第一層之外,在之后的各層中由于缺乏偽數據的先驗信息,而且往往并非簡單的標準正態分布,我們假設偽輸入采樣于一個由標準化流構造的復雜靈活的分布.
為了在下文中闡明模型推斷的細節,我們關注特定的模型.為了簡便起見,先考慮單層的情況,誤差可以通過變分推斷方法在層與層之間傳播.其層與層之間的推斷方式如下,常常將輸入x也視為隱變量,記f=f(x),為了簡潔起見,省略偽數據,此時模型的邊緣似然函數為:
(13)
變分推斷是根據兩個分布之間的KL散度值來尋找一個接近真實后驗分布的近似后驗分布,近似分布往往被限制為一些易處理的分布族,如高斯分布.以這種方式將復雜的推斷問題變為極小化分布間KL散度的優化問題.在邊緣似然函數中運用Jensen不等式可以獲得相同的目標函數,同時假設各個近似分布之間滿足均值場假設,即q(f,x)=q(f)q(x).此時,模型的真實邊緣似然函數為:
(14)
式(14)中的期望為關于變分分布的期望,兩邊同時取對數,根據Jensen不等式,有:
(15)
一般情況下,為了計算的簡便,都會用一些簡單的分布去近似真實的后驗分布,而且往往會假設近似分布滿足類似于均值場這樣的簡單結構特征.這在很大程度上影響了變分方法的推斷效果,常會導致對預測分布方差的低估,使得做出的決策不可靠,同時,有限容量的近似后驗分布族會導致模型參數的MAP估計退化成有偏估計.為了解決這個問題,本文從標準化流方法構造的靈活且任意復雜的分布族中選取近似分布,使得近似分布更有可能接近真實后驗分布.
由下界可知,我們希望變分分布可以盡可能的接近于真實z的后驗分布,但是如果僅僅是基于變分分布為相互獨立高斯分布的先驗假設或者其他的平均場假設的話,這是很難實現的.事實上,這就是變分方法最大的局限所在,近似分布族不夠靈活,哪怕是在一個近似的區域內也無法得到真實后驗的一個很好的近似.一個真正理想的變分分布族應該是非常的靈活,并且包含真實后驗.標準化流就是通過一系列的可逆變換來對一個簡單的密度函數進行轉換,最后得到一個更復雜的表達力更強更加復雜的概率分布.
如果我們假設隨機變量f的分布函數為p(f),f′=g(f),使用反函數定理和鏈式法則,得到f′的密度分布函數p(f′)為:
(16)
通過這些簡單可逆函數的堆疊,我們可以構造出任意復雜的密度函數.
fM=gM…g2g1(f0)
(17)
(18)
之所以這樣做除了因為通過對簡單分布進行非線性變換后可以得到更復雜的分布之外,由于統計學家LOTUS曾提出,關于變換后分布求期望時,可以不知道變換后的分布的具體形式,僅僅由原始的簡單分布和變換函數便可求得這個期望,即:
EpM(fM)[h(fM)]=Ep0(f0)[h(gMgM-1…g1(f0))]
(19)
而且如果h和pM無關的話,還不需要計算雅克比行列式.考慮平面流q(f)=f+v·ρ(wTf+b),其中參數Ω={w,v,b}.若設ζ(f)=ρ′(wTf+b),那么此時雅克比行列式:
(20)
那么由初始密度函數q0(f0)通過一系列可逆變換獲得的變分分布可以表示為:
(21)
此時,我們用長度為M的流來參數化近似后驗分布,即設q(x)?qM(xM),q(f)?qM(fM),可以將式(15)的變分下界寫成:

(22)
每一層都以類似的方式進行推斷.本文提出的識別算法流程如下,并且在下一節中在真實的數據集上驗證了算法的有效性.
算法流程如下所示.
算法1.基于深度高斯過程的小批量手寫字符識別算法
參數.模型(核)參數,變分參數
Whilenot convergeddo
X← 小批量訓練數據
基于圖1的CNN結構初步提取圖片特征
利用DGP深度編碼圖片特征
基于式(10)的注意力核進行特征匹配
x0~q0(x),f0~q0(f)


Endwhile
關于模型中的噪聲項,我們發現在優化Damianou[9]給出的目標函數時,由于較強的模型假設,導致模型極易發生噪聲退化的情況,即信噪比趨于零.為了緩解這一問題,我們使用聚合性噪聲來代替簡單的加性噪聲[h,ε]即將其也看成隱變量.
為了說明本文模型在小樣本手寫字符分類問題上的表現,我們在Omniglot數據集上進行實驗.其中Omniglot數據集包含來自50個不同地區字母表的1623個手寫體字符,每個字符由20個不同的人手寫得到.本文的實驗平臺為python3.6,高斯過程模型基于GPflow平臺實現,利用tensorflow的自動求導功能進行參數優化.實驗環境為酷睿i5處理器,頻率為2.6GHz,RAM為8G.首先,通過誤差曲線來對比本文訓練算法和傳統訓練算法的性能.圖3顯示了訓練集和測試集上的基于困惑度的誤差曲線,我們發現相比于傳統的DGP模型,本文提出的DGPMN模型收斂速度快,而且誤差較低.MNIST是常用的手寫體數字數據集,圖4為將MNIST數據集投影到優化后的二元隱空間的圖像,不同類別的數據點用不同的顏色表示,不同類的數據點之間的區分度越大說明隱空間的優化效果越好,結果顯示本文訓練算法的優化效果較傳統DGP好.

圖3 訓練集和測試集的誤差收斂圖(左:DGPMN,右:DGP)

圖4 二元隱空間投影圖
為了說明本文模型的效果,分別使用基于像素匹配的方法(pixels)和經典卷積孿生網絡(CNN-S)網絡以及本文模型進行多次對比實驗.對于Omniglot數據集,我們選擇其中的30個地區的字母表作為訓練集,其中有964個類.剩余的20個地區的字母表作為測試集,其中有659個類.這意味著測試過程中模型遇到的都是從未見過的樣本.訓練過程中,每次迭代都從964個類中隨機選取20個類,從中選取5個作為支撐集.測試時,從659個類中隨機選M個類,每個類提供K個樣本來泛化模型,即所謂的M-Way K-shot學習任務,隨機猜中正確結果的概率為1/M.結果顯示,本文模型在我們比較關心的20通道單樣本學習任務中相比于傳統的CNN-S網絡將預測準確率從88%提高到了94.7%
表1 本文模型在Omniglot數據集上的表現
Table 1 Performance of our model on Omniglot

模型5-way1-shot5-shot15-way1-shot5-shot20-way1-shot5-shotPIXELS41.6%63%38%52%25.1%41.8%CNN-S96.7%98.7%90%95%88%93.4%DGPMN97.8%98.5%94.5%96%94.7%95.5%
在小樣本學習中,由于訓練集較小,此時,微調網絡的結果會比重新訓練網絡好很多.但是我們發現,本文模型并不依賴于網絡的微調操作,這可以有效的避免由微調帶來的過擬合現象,實驗結果如表1所示,其中N表示未使用微調,Y表示使用了微調.

圖5 微調對模型預測Omniglot效果的影響
手寫字符圖像相對簡單,為了進一步說明本文模型的效果,我們在MiniImage數據集上進行實驗.MiniImage數據集是從ImageNet數據集中提取出來的一個針對小樣本學習問題的數據集,比常用的CIFAR10數據集要復雜.MiniImage數據集包含60000張84×84大小的彩色圖片,共100類,每類有600個樣本.我們將其中80類作為訓練集,另外的20類作為測試集,并進行對比實驗,結果表2所示.
表2 本文模型在MiniImage數據集上的表現
Table 2 Performance of our model on MiniImage

模型PIXELSCNN-SDGPMN5-way1-shot22.0%43.2%46.7%5-shot26.1%47.8%56.7%
DGP模型作為一個強大的貝葉斯模型,同時具有信念網絡的深度結構和高斯模型的概率性質,在處理小樣本手寫字符識別問題上有較好的表現.基于采樣來訓練DGP盡管很靈活,但是難以優化,而且在模型較深時極易陷入局部最優.本文基于標準化流構造靈活的變分分布,同時使用最優K均值聚類方法選擇偽點,改善了深度高斯過程模型的訓練效果.相比于比較淺的模型,較深的模型一旦訓練好必定有更強的預測能力,所以探索更加可行的DGP模型的訓練方法是非常有意義的.如何通過并行計算技術提高模型的計算效率也是一個重要的研究方向.