摘要:本篇文章的重點在于改進資訊瓶頸的優化機制,并且圍繞着高緯空間中互資訊難以估計,以及資訊瓶頸優化機制中的權衡難題這兩個點進行講解。
本文分享自華為雲社群《【雲駐共創】美文賞析:大佬對變分蒸餾的跨模态行人重識别的工作》,作者:啟明。
論文講解:《Farewell to Mutual Information: Variational Distillation for CrossModal Person Re-identification》
論文概述
本篇文章的重點在于改進資訊瓶頸的優化機制,并且圍繞着高緯空間中互資訊難以估計,以及資訊瓶頸優化機制中的權衡難題這兩個點進行講解。
資訊瓶頸研究背景
此報告一共分為3個部分,為了便于了解,我們先介紹一下資訊瓶頸的研究背景。
就“資訊瓶頸”這個概念而言,在2000年左右的時候才正式被學者提出,其理想狀态下的目标,是獲得一個最小充分标準。意思就是,把所有那些對任務有幫助的判别性資訊全提取出來,同時又過濾掉備援性的資訊。從實踐的角度來說,資訊瓶頸的部署就是直接優化下圖紅色框出部分即可:
迄今為止,資訊瓶頸作為一種資訊論指導下的表征學習方法,已經被廣泛應用于多個領域,包括計算機視覺、自然語言處理、神經科學等等,當然還有一些學者已經把資訊瓶頸用于揭開神經網絡黑箱的問題上。
但是,互資訊有3個不足之處:
1. 其有效性嚴重依賴互資訊估算精度
雖然資訊瓶頸有着先進的構思和理念,但是它的有效性嚴重依賴于互資訊的估算精度。根據現在大量的理論分析,以及目前很多的工作在實踐中的嘗試,我們可以知道在高維空間中,算互資訊其實是非常有力的。
從上圖表達式上來看,
v代表着觀察量,大家可以把它直接了解成一個高次元的特征圖;
z代表是代表它的一個表征,可以把它了解成是一個經過資訊瓶頸壓縮得到的一個低緯度的表征。
現在我們需要算它們兩個之間的互資訊。
理論上來說我們需要知道這三個分布才可以實作互資訊的計算(如上圖)。但是很可惜的是,對于觀察量其本身的潛在分布,我們隻能有限個資料點,而并不能通過這些有限個資料點去觀測到其具體的潛在分布,更不用說空間變量z的相關資訊了。
那麼,如果我們用一個代參的估計器在解空間去猜呢?也不是很可行。因為其可信度不是很高,而且去年ICLR(國際表征學習大會)上有很多篇工作已經證明了,互資訊估計器很大可能隻是一個噱頭。
2. 預測性能與簡潔性之間難以權衡
另外一個比較嚴重的問題是,資訊平台優化本質上是一種權衡。這意味着,這種機制會把表征的判别性和簡潔性放到天平的兩側(如上圖)。
想消除備援資訊,那麼也會附帶的造成部分判定性資訊的損失;但如果你想保留更多的判别性資訊,那麼也會有相當部分的備援資訊跟着被儲存下來。這樣一來,就會使得資訊瓶頸最開始定的目标成為不可能實作的目标。
或是咱們從優化目标上來看。假設我們給一個非常大的β,這意味着模型此時更傾向于做删減。顯而易見,壓縮力度是提上來了,但是此時模型就沒怎麼儲存判定性。
同樣的,假如說現在給一個非常小的β(假設是10^(-5)),那麼相對來說模型就更傾向于完成第一項互資訊給的目标。但此時模型就不管“去備援”的事了。
是以我們在選取β的過程中,其實就是權衡兩個目标在不同任務下的重要性,也就印證了文章開頭講的問題,資訊瓶頸的優化的本質是一種權衡。
3. 對多視圖問題乏力
除上述2個問題之外,我們還可以發現,資訊瓶頸雖然可以通過任務給定的标簽,對任務所包含的資訊進行二進制化定義,也就是說我們可以根據是否對任務有幫助來定義判别性資訊(紅色部分)和備援資訊(藍色部分)。
但是任務涉及到多視圖的資料的時候,資訊瓶頸沒有确切的依據從多視圖的角度把資訊再次寫出來,後果就是使得它對視圖變化比較敏感,或者說,就是缺乏應對多視圖問題的能力。
變分資訊瓶頸工作介紹
說完傳統的資訊瓶頸,我們再引入一篇裡程碑式的工作:《變分資訊瓶頸》。此工作發表在2017年的ICLR上面,其一個突出貢獻,是引入了“變分推斷”(如下圖):把互資訊轉化成了熵的形式。雖然這篇工作沒有很好的解決我們前面提到的問題,但這個思路幾乎啟發了後續的所有相關工作。
把互資訊轉化到熵,是一個非常大的進步。但是還是有幾點不足之處:
1. 表征判别性能與簡潔性之間的trade-off沒得到解決
遺憾的是變分資訊瓶頸,也沒能解決優化機制中判别性與簡潔性之間的權衡難題。被優化的天平依然随着λ擺動。
2. 無法保證變分上界的有效性
第二個問題就是變分資訊瓶頸優化的時候,其實是優化其找的一個上界,但上界的有效性是值得商榷的。因為它需要空間變量z的一個鮮豔分布Q(z)去逼近一個潛在分布P(z)。然而,這在實際中這其實是很難保證的。
3. 涉及重參數、重采樣等複雜操作
第三點就是優化這一項變分推斷的結果,會涉及到很多複雜的操作(重參數、重采樣等這些不确定性很高的操作),會給訓練過程增加一定的波動,使得訓練可能不是很穩定,而且複雜度較高。
研究方法
上面說的幾個問題,是變分資訊瓶頸針對方法的通病,一定程度上阻礙了資訊瓶頸的時間應用。那麼,接下來講解一下相應的解決思路,從本質上解決前面提到的所有問題。
充分性
首先需要引入“充分性”概念:z包含所有關于y的判别性資訊。
它要求資訊瓶頸的編碼過程不允許有判别性資訊的損失,也就是說v經過資訊瓶頸到達z之後,隻允許消除備援資訊,當然這是一個比較理想化的要求(如上圖)。
有了“充分性”概念之後,我們把觀察量和其表征之間的互資訊進行拆分,可以得到藍色的備援資訊和紅色的判别性資訊,再根據資訊處理不等式可以得到下面這行的結果。此結果意義比較大,它說明我們想要獲得最小充分标準,也就是最優标準,需要經曆三個子過程。
第一個子過程,其實是在提高表征z所包含的判别性資訊總量的上限。為什麼這樣說?因為z所包含的所有内容都來源于它的觀察量。是以提高觀察量,它自己的判别性資訊總量的上限,也就是拉高了z的它自己的上限。
而第二個子過程就是讓表征z去逼近自己的判别性上限。這兩項其實對應了充分性的要求。
第三個子過程的條件互資訊,如前面所說,它代表目标所包含的備援資訊,是以最小化這一項就對應了最簡性的目标。此處,簡單說明一下“條件互資訊”,它代表的是z中所包含的僅和v相關且與y無關的資訊,簡單來說,就是和任務沒有關系的備援資訊。其實從前面的變分資訊瓶頸可以看到第一個子過程,其實優化一個條件熵,也就是用觀察量v初始的特征圖和标簽算一個交叉熵,然後進行優化。是以這一項它本質上和給定的任務是一緻的,是以暫且不需要特殊處理。
至于另外兩項的優化目标,他們本質上是等價的。而且值得注意的一點是這種等價關系,意味着提升表征的判别性的過程中,也在消除備援。把原來曾經對立的兩個目标拉到了天平同一側,直接就擺脫了資訊瓶頸原有的一個權衡難題,使得資訊瓶頸随着最小充分标準理論上是可行的。
定理一和引理一
定理一:最小化I(v;y) − I(z;y) 等價于最小化 v,z 關于任務目标y條件熵的內插補點,即:
minI(v;y)−I(z;y) ⇔ min H(y|z) − H(y|v),
其中條件熵定義為H(y|z):=−∫p(z)dz∫p(y|z)log p(y|z)dy .
引理一:當表征z對任務目标y做出的預測與其觀察量 v的相同時,表征 z對于任務目标 y具備充分性,即:
為了達到前面制定的目标,還需要避免高維空間中互資訊的估算,是以文章中提出了非常詳細的重點的定理和引理這兩項内容。
為了友善了解,可以看上面的邏輯圖。定理一通過對藍色的互資訊的優化,直接轉化成條件熵之間的差。也就是說,如果想實作上面兩個(藍色的)目标,可以轉變為最小化條件熵的差即可。
而引理一,在此基礎上把上面的結果轉化成了一項KL散度,而 KL散度裡面其實就是兩個logits。
也就是實踐當中隻需要優化這麼一項簡單的KL散度,就能同時達到表征的充分性和最簡性。照比傳統的資訊瓶頸來說,還是簡單很多的。
網絡結構本身很簡單:一個編碼器一個資訊瓶頸,再加一個KL散度。考慮到它的形式,将這方法也命名為變分自蒸餾(Variational Self-Distillation),簡稱VSD。
和互資訊瓶頸原有的優化機制做一個對比,可以發現VSD有三個比較突出的優點:
- 無需進行互資訊估算且更精确地拟合
- 解決優化時的權衡難題
- 不涉及重參數、采樣等繁瑣操作
Consistency
僅儲存判别性且滿足視圖間一緻性的資訊,以增強表征對于視圖變化的魯棒性。
定義:表征 z1, z2 滿足視圖間一緻性,當且僅當 I(z1;y) = I(v1v2;y) = I(z2;y)。
在有了定理一和引理一之後,接下來的任務是要把變分自蒸餾擴充到多視圖的學習背景下。
如上圖,這是一個最基本的架構。兩張圖像x1,x2,輸入到一個編碼器中,得到兩個原始的高維特征圖v1和v2,然後把v1和v2送到資訊瓶頸,得到兩個壓縮過的低次元表征z1和z2。
如上圖所示,此項互資訊是同一視圖下的觀察量和其表征之間的互資訊。但拆分的時候要注意和VSD中的處理的差別,因為這裡對資訊的劃分依據是它是否反映了視圖間的共性,而不再是判别性和備援性的要求,是以它拆分出來的結果有I(Z1;V2) = i(v2;v1|y) + I(z1;y)。
之後再根據視圖是否滿足判别性要求,對層次的視圖間共性的資訊進行二次劃分,得到兩項備援資訊和判别資訊(如上圖)。
如果要想提升表征對于視圖變化的魯棒性,以及進而提升任務的精度,隻需要保持I(z1;y)(紅色部分)就可以了,I(v1;z1|v2)(藍色部分)和I(v2;v1|y)(綠色部分)都要丢掉。優化的目标如下:
定理二:給定兩個滿足充分性的觀察量 v1, v2, 其對應的表征 z1和 z2 滿足視圖間一緻性,當且僅當滿足此條件:I(v1;z1|v2) + I(v2;z2|v1)≤0 and I(v2;v1|y) + I(v1;v2|y) ≤ 0
定理二可用來闡述視圖間一緻性的本質。視圖間一緻性在本質上就是要求消除視圖特異性資訊,也消除和任務沒有關系的備援資訊來最大化的提升表征。
兩種方法
消除視圖特異性資訊
變分互學習(Variational Mutual Learning, VML,對應上圖藍色部分):最小化 z1, z2 預測分布之間的JS散度以消除其所包含的視圖特異性資訊,具體目标如下:
消除備援資訊
變分交叉蒸餾(Variational Cross-Distillation, VCD,對應上圖紅色部分):在留存的視圖一緻性資訊中,通過交叉地優化觀察量與不同視圖表征之間的KL散度提純判别性資訊,同時剔除備援資訊,具體目标如下( v1 與 z1 同理):
上圖是這兩種方法的處理的結構圖。原本是有特異性和一緻性,根據VML來把資訊進行二進制劃分,再用變分互學習把特性的資訊全部消除掉了,然後剩下的橙色的一緻性資訊還有兩塊:備援資訊和判決資訊。這個時候就需要變分交叉蒸餾,把備援資訊(綠色部分)分别消掉,隻保留判别性資訊(紅色的部分)。
實驗結果
接下來我們來分析一下文章中的實驗部分。為了驗證方法的有效性,我們把前文中提到的三種方法:變分自蒸餾、交叉蒸餾,還有互學習,應用到跨模态行人群識别的問題。
跨模态行人群識别問題,是計算機學的子問題,核心目标是為給定的人像比對另一個模态下的照片。舉例來說,以下圖綠色框标記出來的紅外圖像來說,我們希望在一個圖像庫中找到對應同一個人的可見光圖像,要麼是用紅外光去找可見光,或者用可見光去找紅外光。
架構總覽
模型結構總覽:
模型總體一共包括三條獨立的分支,且每條分支僅包含一個編碼器和一個資訊瓶頸。具體結構見下圖。
這裡值得注意的一點是,由于上下兩個分支,橙色的部分隻接受和處理紅外光東西,藍色的隻接受和處理可見光的東西,是以他們不涉及多視圖,因而用VSD和它們綁定即可。
中間這條分支訓練的時候,會同時接受并處理兩個模态的資料。是以訓練的時候,用VCD,就是變分交叉蒸餾和變分互學習協同訓練分析。
損失函數總覽:
損失函數由兩部分構成,即論文中提出的變分蒸餾,以及 Re-ID 最常用的訓練限制。注意 VSD 隻限制單模态分支,而 VCD 協同 VML 一起限制跨模态分支。
實驗标準:SYSU-MM01 & RegDB
SYSU-MM01:
資料集共包括 491 個目标的 287,628 張可見光圖像以及 15,792 張紅外光圖像。每個目标的圖像都來源于 6 個不重疊攝像頭分别在室内和戶外進行拍攝的拍攝結果。
評測标準包含全場景查詢( all-search )和室内查詢( indoorsearch )。論文中所有實驗結果都采用标準評測準則。
RegDB:
資料集共包括 412 個目标,且每個目标對應十張在同一時刻拍攝的可見光圖像以及紅外光圖像。
評測标準包括可見光搜紅外(visible-to-infrared)以及紅外搜可見光(infrared-to-visible)。最終評測結果為十次實驗的平均精度,且每次實驗都開展于随機劃分的評估集。
結果分析
我們把跨模态行人群識别的相關工作大體分為了4類:Network Design(網絡架構設計)、Metric Design(度量設計)、Generative(生成類)、Representation(表征學習類)。
此方法作為第一份探索表征學習的工作,在不涉及生存過程以及複雜的網絡結構的條件下,性能還能這麼大幅度的領先競争對手。而且也正是個原因,此文章提出的變分蒸餾損失可以非常輕松的融入到不同類别的方法,挖掘更大的潛力。
在另外一個資料集上,我們可以看到一個類似的結果。
接下來我們将選一些代表性的消融實驗,分析一下方法在實踐中的有效性。
開始之前我們需要明确,接下來所有的實驗:觀察量v的次元統一設定成Re-ID社群常用的2048;表征的次元就預設成256;資訊瓶頸統一采用GS互資訊估計器。
消融實驗:單一模态分支條件下,變分蒸餾 vs 資訊瓶頸
在不考慮多視圖條件下,僅關注表征的充分性。
如上圖,我們可以觀察到變分自蒸餾可以帶來巨額的性能提升。28.69至59.62,非常直覺的數,說明了變分自蒸餾可以有效的提升表征的判别性,大量去除備援資訊的同時,提煉出更多有價值的資訊。
消融實驗:多模态分支條件下,變分蒸餾 vs 資訊瓶頸
我們再來看多視圖下面的結果。當我們隻用跨模态分支做測試的時候,發現兩個現象:
一是,變分蒸餾的方法的性能是有所下降的。剛剛是59,而現在隻有49。這裡我們推測是被抛棄的一些模态特異性資訊。中間分值保留同時滿足兩個特點資訊,是以會先抛去那些模态特異性資訊。但對被抛棄的模态特異性資訊裡面,也具備相當的判别性,是以就滿足模态一緻性的代價,即,判别性損失帶來的精度下降。
二是傳統資訊瓶頸的性能,在多模态的條件下,變化其實并不是很大。剛剛是28,現在是24。我們認為是傳統的資訊瓶頸并不能很好的去辨識一緻性和特異性資訊,因為其根本就不關注多視圖問題,也根本就沒有能力去處理這個問題。是以說多視圖的條件并不會給其帶來顯著性的波動。
消融實驗:三分支條件下,變分蒸餾 vs 資訊瓶頸
在雙分支的基礎上,再添加了中間這條分支之後,模型的總體性能基本沒有變化。我們可以得出以下結論:
上下兩條分分支,隻要滿足了判别性資訊,資訊就可以得以儲存下來。
而中間這條分支儲存的資訊要滿足兩個要求。其中一個是滿足判别性要求,也就是說中間這條分支所儲存的資訊,其實是上下兩個資訊的一個子集。
反觀資訊瓶頸,三個分支能給它帶來的提升還是比較明顯的。因為它哪條分支都不能完整的儲存判别性資訊,更不要說再去顧及“多視圖”這個事情。
消融實驗:不同壓縮率的情況下,“充分性”對比
我們再看表征的壓縮率對性能的影響。按照Re-ID設計的統一标準,原始的特征圖次元設計成2048。
我們通過調整表征v對模型總體的性能産生的變化。當次元小于256的時候,性能會随着次元的上升不斷的升高,我們推測是因為當壓縮率壓縮太厲害的時候,模型再怎麼強,都沒有那麼多通道用來儲存足夠的判别性資訊,就容易導緻非充分的現象。
而當次元超過256的時候,發現性能反而開始下降。關于這一點我們認為是多出來的那部分通道,反而使得一部分備援資訊也可以保留下來,這樣就造成了整體判别性和泛化性的事情降低。此時這種現象被稱之為“備援”(Redundancy)。
為了更好的展示不同方法的差别,我們用TFNE把不同的特征空間合并到了一個平面上(如下圖)。
我們先針對充分性展開分析,就是VSD和傳統資訊瓶頸的對比。上标“V”“I”代表的是可見光和紅外光下的資料,而下标的 Sp代表的是View specific,也就是說他們取自于單模态的分析。
我們可以看到傳統資訊瓶頸的特征空間可以說是混亂不堪,說明模型根本就沒有辦法清晰的分辨不同目标所屬的類别。換句話來說,就是判别性資訊損失嚴重;而VSD情況完全相反是,雖然說不同模态之間的特征空間還是有不小的差别,因為所儲存的判決性資訊就相當一部分屬于模态特異性資訊,但是能看到幾乎每一個錯誤都是清晰分明,說明模型在VSD的幫助下可以更好的滿足充分性。
我們再來看下面這張圖,下标的sh代表他們來自于shared branch,他們來自于多模态的分支,上标“V”“I”依然代表了可見光以及紅外光的資料點。
同樣的資訊瓶頸的特征空間,在多視圖的條件下依然是混亂不堪。而且如果不作說明的話,其實基本無法分辨上下這兩張圖到底哪個是單模态,哪個是多模态。這也就驗證了前面的觀點:傳統的資訊瓶頸根本沒有能力去應對多視圖的問題。
經過變分交叉蒸餾處理的特征空間,雖然照比VSD有一些松散(因為視圖的要求難免造成一些判别性資訊的損失),但是單看兩個模态的特征空間的重合度是很高的,側面說明方法對一緻性資訊提出了有效性。
接下來,我們把不同模态的資料投射到同一個特征空間,用橙色和藍色分别代表紅外光圖像資料點和可見光圖像資料點。
我們可以看到在變分交叉蒸餾作用的幫助下,不同模态的特征空間幾乎完全吻合。對比資訊瓶頸的結果,可以非常直覺的說明變分交叉蒸餾的有效性。
代碼複現
性能對比:Pytorch vs Mindspore
無論是用PyTorch還是用MindSpore,它們都是用來訓練模型,而性能測試則是需要用得到的模型把特征提取出來,送到對應資料及官方支援的測試檔案,是以這個結果的對比肯定是公平的。
我們能看到無論是baseline,還是從整個架構來看(由于右下角的實驗現在隻跑了一半,我隻能先放一個中間),無論從精度上來說,還是從訓練的時長來說,MindSpore得出來的模型還是比PyTorch是要好不少。
如果對MindSpore感興趣可以前往學習一下:https://www.huaweicloud.com/product/modelarts.html
本文整理自【内容共創系列】IT人加薪新思路,認證華為雲簽約作者,赢取500元稿酬和流量扶持!→檢視活動詳情
點選關注,第一時間了解華為雲新鮮技術~